Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dependency nock to v12 #60422

Merged
merged 4 commits into from
Mar 19, 2020
Merged

Update dependency nock to v12 #60422

merged 4 commits into from
Mar 19, 2020

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Mar 17, 2020

This PR contains the following updates:

Package Type Update Change
nock dependencies major 10.0.6 -> 12.0.3
nock devDependencies major 10.0.6 -> 12.0.3

Release Notes

nock/nock

v12.0.3

Compare Source

Bug Fixes

v12.0.2

Compare Source

Bug Fixes

v12.0.1

Compare Source

Bug Fixes

v12.0.0

Compare Source

BREAKING CHANGES

When checking types of strings, Nock will no longer recognize the String constructor, only string primitives.

Features

v11.9.1

Compare Source

Bug Fixes
  • revert breaking changes from v11.9.0 (062c10e)

v11.9.0

Compare Source

Features

v11.8.2

Compare Source

Bug Fixes

v11.8.1

Compare Source

Bug Fixes

v11.8.0

Compare Source

Bug Fixes
Features

v11.7.2

Compare Source

Bug Fixes
  • Fix a regression due to Jest having different globals (#​1850) (c7363e5)

v11.7.1

Compare Source

Bug Fixes

v11.7.0

Compare Source

Features

v11.6.0

Compare Source

Features

v11.5.0

Compare Source

Features

v11.4.0

Compare Source

Features

v11.3.6

Compare Source

Bug Fixes

v11.3.5

Compare Source

Bug Fixes

v11.3.4

Compare Source

Bug Fixes

v11.3.3

Compare Source

Bug Fixes

v11.3.2

Compare Source

Upgrading from Nock 10 to Nock 11

Bug fixes and internal improvements

Nock 11 includes many under-the-hood improvements, including a fully offline
test suite and 100% test coverage. The codebase was also converted to ES6
syntax and formatted with Prettier. Leaning on the test coverage, some
substantial refactors have begun.

Many bug fixes are included. See the detailed changelog below or the
compare view for details.

Fabulous new features for developers
  1. The library ships with TypeScript definitions. (Added in v11.3)
  2. Add support for the http.request signatures added in Node 10.9
  3. Scopes can be filtered using the system environment or any external factor
    using e.g. .conditionally(() => true)
  4. In-flight modifications to headers are preserved in mock requests.
  5. Recorded mocks can be stringified using custom code in the afterRecord()
    post-processing hook. When afterRecord() returns a string, the
    recorder will no longer attempt to re-stringify it. (Added in v11.3)
  6. Reply functions passed to .reply() can now be async/promise-returning.
  7. Specifying reply headers, either via .reply() or .defaultReplyHeaders(),
    can now be done consistently using an object, Map, or flat array.
Breaking changes

For many developers no code changes will be needed. However, there are several
minor changes to the API, and it's possible that you will need to update your
code for Nock to keep working properly. It's unlikely that your tests will
falsely pass; what's more probable is that your tests will fail until the
necessary changes are made.

  1. Nock 11 requires Node 8 or later. Nock supports and tests all the "current"
    and "maintenance" versions of Node. As of now, that's Node 8, 10, and 12.

  2. In Nock 10, when reply() was invoked with a function, the return values were
    handled ambiguously depending on their types.

    Consider the following example:

    const scope = nock('http://example.com')
      .get('/')
      .reply(200, () => [500, 'hello world'])

    In Nock 10, the 200 was ignored, the 500 was interpreted as the status
    code, and the body would contain 'hello world'. This caused problems
    when the goal was to return a numeric array, so in Nock 11, the 200 is
    properly interpreted as the status code, and [500, 'hello world'] as the
    body.

    These are the correct calls for Nock 11:

    const scope = nock('http://example.com')
      .get('/')
      .reply(500, 'hello world')
    
    const scope = nock('http://example.com')
      .get('/')
      .reply(500, () => 'hello world')

    The .reply() method can be called with explicit arguments:

    .reply() // `statusCode` defaults to `200`.
    .reply(statusCode) // `responseBody` defaults to `''`.
    .reply(statusCode, responseBody) // `headers` defaults to `{}`.
    .reply(statusCode, responseBody, headers)

    It can be called with a status code and a function that returns an array:

    .reply(statusCode, (path, requestBody) => responseBody)
    .reply(statusCode, (path, requestBody) => responseBody, headers)

    Alternatively the status code can be included in the array:

    .reply((path, requestBody) => [statusCode])
    .reply((path, requestBody) => [statusCode, responseBody])
    .reply((path, requestBody) => [statusCode, responseBody, headers])
    .reply((path, requestBody) => [statusCode, responseBody], headers)

    .reply() can also be called with an async or promise-returning function. The
    signatures are identical, e.g.

    .reply(async (path, requestBody) => [statusCode, responseBody])
    .reply(statusCode, async (path, requestBody) => responseBody)

    Finally, an error-first callback can be used, e.g.:

    .reply((path, requestBody, cb) => cb(undefined, [statusCode, responseBody]))
    .reply(statusCode, (path, requestBody, cb) => cb(undefined, responseBody))
  3. In Nock 10, errors in user-provided reply functions were caught by Nock, and
    generated HTTP responses with status codes of 500. In Nock 11 these errors
    are not caught, and instead are re-emitted through the request, like any
    other error that occurs during request processing.

    Consider the following example:

    const scope = nock('http://example.com')
      .post('/echo')
      .reply(201, (uri, requestBody, cb) => {
        fs.readFile('cat-poems.txt', cb) // Error-first callback
      })

    When fs.readFile() errors in Nock 10, a 500 error was emitted. To get the
    same effect in Nock 11, the example would need to be rewritten to:

    const scope = nock('http://example.com')
      .post('/echo')
      .reply((uri, requestBody, cb) => {
        fs.readFile('cat-poems.txt', (err, contents) => {
          if (err) {
            cb([500, err.stack])
          } else {
            cb([201, contents])
          }
        })
      })
  4. When .reply() is invoked with something other than a whole number status
    code or a function, Nock 11 raises a new error Invalid ... value for status code.

  5. Callback functions provided to the .query method now receive the result of querystring.parse instead of qs.parse.

    In particular, querystring.parse does not interpret keys with JSON
    path notation:

    querystring.parse('foo[bar]=baz') // { "foo[bar]": 'baz' }
    qs.parse('foo[bar]=baz') // { foo: { bar: 'baz' } }
  6. In Nock 10, duplicate field names provided to the .query() method were
    silently ignored. We decided this was probably hiding unintentionally bugs
    and causing frustration with users. In Nock 11, attempts to provide query
    params more than once will throw a new error
    Query parameters have aleady been defined. This could happen by calling
    .query() twice, or by calling .query() after specifying a literal query
    string via the path.

    nock('http://example.com')
      .get('/path')
      .query({ foo: 'bar' })
      .query({ baz: 'qux' }) // <-- will throw
      .reply()
    
    nock('http://example.com')
      .get('/path?foo=bar')
      .query({ baz: 'qux' }) // <-- will throw
      .reply()
  7. Paths in Nock have always required a leading slash. e.g.

    const scope = nock('http://example.com')
      .get('/path')
      .reply()

    In Nock 10, if the leading slash was missing the mock would never match. In
    Nock 11, this raises an error.

  8. The reqheaders parameter should be provided as a plain object, e.g.
    nock('http://example.com', { reqheaders: { X-Foo: 'bar' }}). When the
    headers are specified incorrectly as e.g. { reqheaders: 1 }, Nock 10 would
    behave in unpredictable ways. In Nock 11, a new error
    Headers must be provided as an object is thrown.

    nock('http://example.com', { reqheaders: 1 })
      .get('/')
      .reply()
  9. In Nock 10, the ClientRequest instance wrapped the native on method
    and aliased once to it. In Nock 11, this been removed and request.once
    will correctly call registered listeners...once.

  10. In Nock 10, when the method was not specified in a call to nock.define(),
    the method would default to GET. In Nock 11, this raises an error.

  11. In very old versions of nock, recordings may include a response status
    code encoded as a string in the reply field. In Nock 10 these strings could
    be non-numeric. In Nock 11 this raises an error.

Updates to the mock surface
  1. For parity with a real response, a mock request correctly supports all
    the overrides to request.end(), including request.end(cb) in Node 12.
  2. For parity with a real response, errors from the .destroy() method
    are propagated correctly. (Added in v11.3)
  3. For parity with a real response, the .complete property is set when
    ending the response.
  4. For parity with a real Socket, the mock Socket has an unref() function
    (which does nothing).

If you discover bugs in this release, please open a bug report on the Nock repo. 🐛


Detailed changelog

##### BREAKING CHANGES
  • uncaught errors thrown inside of user provided reply functions, whether async or not, will no longer be caught, and will no longer generate a successful response with a status code of 500. Instead, the error will be emitted by the request just like any other unhandled error during the request processing.
  • The only argument passed to the Interceptor.query callback now receives the output from querystring.parse instead of qs.parse. This means that instead of nested objects the argument will be a flat object.
  • interceptor: Attempting to call Interceptor.query twice throws an error.
  • interceptor: Providing a duplicate search parameter to the query
    method throws an error instead of ignoring subsequent values.
  • Drop support for Node 6
Features
Bug Fixes
Code Refactoring

v11.3.1

Compare Source

v11.3.0

Compare Source

v11.2.0

Compare Source

v11.1.0

Compare Source

v11.0.0

Compare Source


Renovate configuration

📅 Schedule: At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻️ Rebasing: Never, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by WhiteSource Renovate. View repository job log here.

@renovate renovate bot added release_note:skip Skip the PR/issue when compiling release notes renovate Renovate dependency update with major version updates renovate:major Renovate dependency update with major version updates Team:Operations Team label for Operations Team v7.7.0 v8.0.0 labels Mar 17, 2020
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-operations (Team:Operations)

@renovate
Copy link
Contributor Author

renovate bot commented Mar 18, 2020

PR has been edited

👷 This PR has received other commits, so Renovate will stop updating it to avoid conflicts or other problems. If you wish to abandon your changes and have Renovate start over you may click the "rebase" checkbox in the PR body/description.

@spalger
Copy link
Contributor

spalger commented Mar 18, 2020

@elasticmachine merge upstream

@kibanamachine
Copy link
Contributor

💚 Build Succeeded

History

To update your PR or re-run it, just comment with:
@elasticmachine merge upstream

Copy link
Contributor

@spalger spalger left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@spalger spalger merged commit b9d2aff into master Mar 19, 2020
spalger added a commit to spalger/kibana that referenced this pull request Mar 19, 2020
* Update dependency nock to v12

* update yarn.lock file

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: spalger <[email protected]>
Co-authored-by: Elastic Machine <[email protected]>
@renovate renovate bot deleted the renovate/nock branch March 19, 2020 00:59
spalger added a commit that referenced this pull request Mar 19, 2020
* Update dependency nock to v12

* update yarn.lock file

Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: spalger <[email protected]>
Co-authored-by: Elastic Machine <[email protected]>

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renovate Bot <[email protected]>
Co-authored-by: spalger <[email protected]>
Co-authored-by: Elastic Machine <[email protected]>
@spalger
Copy link
Contributor

spalger commented Mar 19, 2020

7.x/7.7: d83b977

gmmorris added a commit to gmmorris/kibana that referenced this pull request Mar 19, 2020
* master: (35 commits)
  [Alerting] Adds navigation by consumer and alert type to alerting (elastic#58997)
  Introduce search interceptor (elastic#60523)
  [ML] Add functional tests for file data visualizer (elastic#60413)
  [APM] Optimize service map query (elastic#60412)
  [SIEM][Detection Engine] Adds lists feature flag and list values to the REST interfaces
  Enhancement/update esdocs datasource (elastic#59512)
  [junit] only include stdout in report for failures (elastic#60530)
  Update dependency nock to v12 (elastic#60422)
  upgrade execa to get stdout/stderr in error messages (elastic#60537)
  skip flaky suite (elastic#60471)
  [Ingest] Agent Config Details - Data sources list ui (elastic#60429)
  [SIEM] Create ML Rules (elastic#58053)
  skip flaky suite (elastic#60559)
  fix agent type (elastic#60554)
  Fixed default message for index threshold includes both threshold values (elastic#60545)
  [Ingest] Add support for `yaml` field types (elastic#60440)
  Solved the issue for a GROUP BY expression validation (elastic#60558)
  [Maps] Mark instance state as readonly (elastic#60557)
  Move ui/indices into es_ui_shared plugin. (elastic#60186)
  ServiceNow action improvements (elastic#60052)
  ...
gmmorris added a commit to gmmorris/kibana that referenced this pull request Mar 19, 2020
* master: (64 commits)
  [Alerting] Adds navigation by consumer and alert type to alerting (elastic#58997)
  Introduce search interceptor (elastic#60523)
  [ML] Add functional tests for file data visualizer (elastic#60413)
  [APM] Optimize service map query (elastic#60412)
  [SIEM][Detection Engine] Adds lists feature flag and list values to the REST interfaces
  Enhancement/update esdocs datasource (elastic#59512)
  [junit] only include stdout in report for failures (elastic#60530)
  Update dependency nock to v12 (elastic#60422)
  upgrade execa to get stdout/stderr in error messages (elastic#60537)
  skip flaky suite (elastic#60471)
  [Ingest] Agent Config Details - Data sources list ui (elastic#60429)
  [SIEM] Create ML Rules (elastic#58053)
  skip flaky suite (elastic#60559)
  fix agent type (elastic#60554)
  Fixed default message for index threshold includes both threshold values (elastic#60545)
  [Ingest] Add support for `yaml` field types (elastic#60440)
  Solved the issue for a GROUP BY expression validation (elastic#60558)
  [Maps] Mark instance state as readonly (elastic#60557)
  Move ui/indices into es_ui_shared plugin. (elastic#60186)
  ServiceNow action improvements (elastic#60052)
  ...
jloleysens added a commit to jloleysens/kibana that referenced this pull request Mar 19, 2020
…-cluster-replication

* 'master' of github.com:elastic/kibana: (89 commits)
  Sort by name when fetching alerts and connectors (elastic#60506)
  Make slack param validation handle empty messages (elastic#60468)
  [Alerting] Adds navigation by consumer and alert type to alerting (elastic#58997)
  Introduce search interceptor (elastic#60523)
  [ML] Add functional tests for file data visualizer (elastic#60413)
  [APM] Optimize service map query (elastic#60412)
  [SIEM][Detection Engine] Adds lists feature flag and list values to the REST interfaces
  Enhancement/update esdocs datasource (elastic#59512)
  [junit] only include stdout in report for failures (elastic#60530)
  Update dependency nock to v12 (elastic#60422)
  upgrade execa to get stdout/stderr in error messages (elastic#60537)
  skip flaky suite (elastic#60471)
  [Ingest] Agent Config Details - Data sources list ui (elastic#60429)
  [SIEM] Create ML Rules (elastic#58053)
  skip flaky suite (elastic#60559)
  fix agent type (elastic#60554)
  Fixed default message for index threshold includes both threshold values (elastic#60545)
  [Ingest] Add support for `yaml` field types (elastic#60440)
  Solved the issue for a GROUP BY expression validation (elastic#60558)
  [Maps] Mark instance state as readonly (elastic#60557)
  ...

# Conflicts:
#	x-pack/legacy/plugins/cross_cluster_replication/public/np_ready/app/components/auto_follow_pattern_form.js
#	x-pack/legacy/plugins/cross_cluster_replication/public/np_ready/app/components/follower_index_form/follower_index_form.js
#	x-pack/legacy/plugins/cross_cluster_replication/public/np_ready/app/components/follower_index_form/follower_index_form.test.js
#	x-pack/legacy/plugins/cross_cluster_replication/public/np_ready/app/services/auto_follow_pattern_validators.js
#	x-pack/legacy/plugins/cross_cluster_replication/public/np_ready/app/services/input_validation.js
jloleysens added a commit to jloleysens/kibana that referenced this pull request Mar 19, 2020
…ole/cleanup

* 'master' of github.com:elastic/kibana: (47 commits)
  [Remote clusters] Update copy (elastic#60382)
  Sort by name when fetching alerts and connectors (elastic#60506)
  Make slack param validation handle empty messages (elastic#60468)
  [Alerting] Adds navigation by consumer and alert type to alerting (elastic#58997)
  Introduce search interceptor (elastic#60523)
  [ML] Add functional tests for file data visualizer (elastic#60413)
  [APM] Optimize service map query (elastic#60412)
  [SIEM][Detection Engine] Adds lists feature flag and list values to the REST interfaces
  Enhancement/update esdocs datasource (elastic#59512)
  [junit] only include stdout in report for failures (elastic#60530)
  Update dependency nock to v12 (elastic#60422)
  upgrade execa to get stdout/stderr in error messages (elastic#60537)
  skip flaky suite (elastic#60471)
  [Ingest] Agent Config Details - Data sources list ui (elastic#60429)
  [SIEM] Create ML Rules (elastic#58053)
  skip flaky suite (elastic#60559)
  fix agent type (elastic#60554)
  Fixed default message for index threshold includes both threshold values (elastic#60545)
  [Ingest] Add support for `yaml` field types (elastic#60440)
  Solved the issue for a GROUP BY expression validation (elastic#60558)
  ...
gmmorris added a commit to gmmorris/kibana that referenced this pull request Mar 19, 2020
* master: (39 commits)
  [SIEM][CASE]  Configuration page action bar (elastic#60608)
  [Remote clusters] Update copy (elastic#60382)
  Sort by name when fetching alerts and connectors (elastic#60506)
  Make slack param validation handle empty messages (elastic#60468)
  [Alerting] Adds navigation by consumer and alert type to alerting (elastic#58997)
  Introduce search interceptor (elastic#60523)
  [ML] Add functional tests for file data visualizer (elastic#60413)
  [APM] Optimize service map query (elastic#60412)
  [SIEM][Detection Engine] Adds lists feature flag and list values to the REST interfaces
  Enhancement/update esdocs datasource (elastic#59512)
  [junit] only include stdout in report for failures (elastic#60530)
  Update dependency nock to v12 (elastic#60422)
  upgrade execa to get stdout/stderr in error messages (elastic#60537)
  skip flaky suite (elastic#60471)
  [Ingest] Agent Config Details - Data sources list ui (elastic#60429)
  [SIEM] Create ML Rules (elastic#58053)
  skip flaky suite (elastic#60559)
  fix agent type (elastic#60554)
  Fixed default message for index threshold includes both threshold values (elastic#60545)
  [Ingest] Add support for `yaml` field types (elastic#60440)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release_note:skip Skip the PR/issue when compiling release notes renovate:major Renovate dependency update with major version updates renovate Renovate dependency update with major version updates Team:Operations Team label for Operations Team v7.7.0 v8.0.0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants