bip
bip copied to clipboard
chore(deps): update dependency nock to v13
This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
nock | 9.6.1 -> 13.5.4 |
Release Notes
nock/nock (nock)
v13.5.4
Bug Fixes
v13.5.3
Bug Fixes
v13.5.2
Bug Fixes
v13.5.1
Bug Fixes
v13.5.0
Features
v13.4.0
Features
v13.3.8
Bug Fixes
v13.3.7
Reverts
- Revert "chore(deps-dev): bump @definitelytyped/dtslint from 0.0.163 to 0.0.183" (#2544) (d978acd), closes #2544 #2534
v13.3.6
Bug Fixes
v13.3.5
Bug Fixes
v13.3.4
Bug Fixes
v13.3.3
Bug Fixes
- revert #2350 (Push persisted interceptors to the end instead of ignore on remove) (#2511) (fcea779), closes #2500
v13.3.2
Bug Fixes
v13.3.1
Bug Fixes
v13.3.0
Features
v13.2.9
Bug Fixes
v13.2.8
Bug Fixes
v13.2.7
Bug Fixes
v13.2.6
Reverts
v13.2.5
Bug Fixes
v13.2.4
Bug Fixes
v13.2.3
Bug Fixes
v13.2.2
Bug Fixes
v13.2.1
Bug Fixes
v13.2.0
Features
v13.1.4
Bug Fixes
v13.1.3
Bug Fixes
v13.1.2
Bug Fixes
v13.1.1
Bug Fixes
v13.1.0
Features
v13.0.11
Bug Fixes
v13.0.10
Bug Fixes
v13.0.9
Bug Fixes
v13.0.8
Bug Fixes
- socket: add encrypted attribute for secure requests (#2149) (8de6b69), closes /github.com/nodejs/node/blob/295e766c2782d6d83e33004f7c2204c0a8d52655/lib/_tls_wrap.js#L507-L509
v13.0.7
Bug Fixes
v13.0.6
Bug Fixes
v13.0.5
Bug Fixes
-
overrider: allow calling empty
req.end
multiple times (20e9f8a), closes /github.com/nodejs/node/blob/39a7f7663e8f70fc774105d8fa41b8e4cc69149f/lib/_http_outgoing.js#L816
v13.0.4
Bug Fixes
v13.0.3
Bug Fixes
v13.0.2
Bug Fixes
v13.0.1
Bug Fixes
v13.0.0
See the Migration Guide
Breaking changes
-
Scope.log
has been removed. Use thedebug
library when debugging failed matches. -
socketDelay
has been removed. UsedelayConnection
instead. -
delay
,delayConnection
, anddelayBody
are now setters instead of additive. -
When recording, skipping body matching using
*
is no longer supported bynock.define
. Set the definition body toundefined
instead. -
ClientRequest.abort()
has been updated to align with Node's native behavior. This could be considered a feature, however, it created some subtle differences that are not backwards compatible. Refer to the migration guide for details. -
Playback of a mocked responses will now never happen until the 'socket' event is emitted.
v12.0.3
Bug Fixes
v12.0.2
Bug Fixes
v12.0.1
Bug Fixes
v12.0.0
BREAKING CHANGES
- Require Node 10+ (#1895) (123832e), closes #1895
- Do not return the
nock
global fromcleanAll()
(#1872) (0a4a944), closes #1872 - Drop support for String constructor (#1873) (e33b3e8), closes #1873
When checking types of strings, Nock will no longer recognize the String constructor, only string primitives.
Features
v11.9.1
Bug Fixes
- revert breaking changes from v11.9.0 (062c10e)
v11.9.0
Features
v11.8.2
Bug Fixes
v11.8.1
Bug Fixes
v11.8.0
Bug Fixes
- types: Scope accepts legacy Url not WHATWG (#1879) (e22233b)
- Correct behavior when other libraries override http.get and http.request (#1868) (22e2fca), closes #1836
Features
v11.7.2
Bug Fixes
v11.7.1
Bug Fixes
v11.7.0
Features
-
types: add type for Nock Back
currentMode
(#1794) (ba60fd2), closes /github.com/nock/nock/blob/master/lib/back.js#L282
v11.6.0
Features
v11.5.0
Features
- Throw errors for URL paths without leading slashes, which will never match (#1744) (b7f9f13), closes #1730
v11.4.0
Features
v11.3.6
Bug Fixes
v11.3.5
Bug Fixes
- types: data matcher for body and query. (#1725) (59b345c), closes #1724 #1723 /github.com/Microsoft/TypeScript/issues/1897#issuecomment-338650717 #1723 #1724
v11.3.4
Bug Fixes
v11.3.3
Bug Fixes
v11.3.2
: v11
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
- The library ships with TypeScript definitions. (Added in v11.3)
- Add support for the
http.request
signatures added in Node 10.9 - Scopes can be filtered using the system environment or any external factor
using e.g.
.conditionally(() => true)
- In-flight modifications to headers are preserved in mock requests.
- Recorded mocks can be stringified using custom code in the
afterRecord()
post-processing hook. WhenafterRecord()
returns a string, the recorder will no longer attempt to re-stringify it. (Added in v11.3) - Reply functions passed to
.reply()
can now be async/promise-returning. - 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.
-
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.
-
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 anasync
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))
-
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]) } }) })
-
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. -
Callback functions provided to the
.query
method now receive the result ofquerystring.parse
instead ofqs.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' } }
-
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()
-
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.
-
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()
-
In Nock 10, the
ClientRequest
instance wrapped the nativeon
method and aliasedonce
to it. In Nock 11, this been removed andrequest.once
will correctly call registered listeners...once. -
In Nock 10, when the method was not specified in a call to
nock.define()
, the method would default toGET
. In Nock 11, this raises an error. -
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
- For parity with a real response, a mock request correctly supports all
the overrides to
request.end()
, includingrequest.end(cb)
in Node 12. - For parity with a real response, errors from the
.destroy()
method are propagated correctly. (Added in v11.3) - For parity with a real response, the
.complete
property is set when ending the response. - 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
- interceptor: duplicate query calls throw (#1630) (2a54482), closes #1626
- interceptor: duplicate query keys throw (a2208d1), closes #1623
- Throw error if request headers are not an object (#1574) (8ba0fc7)
- overrider: added support for header modifications before end() (4a4b8ec)
- Add
conditionally()
(#1488) (24e5b47) - reply: Response headers to more closely match Node's functionality. (#1564) (b687592), closes #1553 /github.com/nodejs/node/blob/908292cf1f551c614a733d858528ffb13fb3a524/lib/_http_incoming.js#L245
-
request_overrider: Set
IncomingMessage.client
for parity with real requests (dc71a3b), closes /github.com/nodejs/node/blob/2e613a9c301165d121b19b86e382860323abc22f/lib/_http_incoming.js#L67 - requestoverrider: Add method property to mocked requests (#1561) (4857ae5)
- added noop method
unref
to Socket (#1612) (a75f49f) - Support http.request signatures added in Node 10.9+ (#1588) (e3e6a65), closes #1227
- Throw an error on invalid truthy reply status codes (#1571) (de525a1)
- Async Reply functions (always emit errors) (#1596) (26fc08f), closes #1596
- Drop support for Node 6 (15b3cf0), closes #1297
- types: Add Typescript definitions. (#1676) (
2e56fb0
), closes #1670 - socket: propagate errors from destroy method (#1675) (
de9c40b
), closes #1669
Bug Fixes
-
req.end(cb)
compatibility with Node 12 (#1551) (31623fb) - alias connection to socket. (#1590) (659bf01), closes /github.com/nodejs/node/blob/master/lib/_http_client.js#L640-L641 /github.com/nodejs/node/blob/master/lib/_http_incoming.js#L44-L45
- allow unmocked when providing literal search params. (#1614) (f8d6cbb), closes #1421
- Fix
.matchHeader()
withallowUnmocked
(#1480) (d6667f0) - Fix
req.end(cb)
; prevent TypeError in Node 12 (#1547) (9a494da), closes #1509 - Mock responses should fire when timers are mocked (#1336) (a213169), closes #1335 #1334
- define: Throw error when legacy reply is in wrong format (5d2fb9f)
- package.engines is supposed to be an object (6dc0208)
- request.end accepted arguments (#1591) (ad34222), closes /github.com/nodejs/node/commit/a10bdb51b18dfaad874f3702a1daea51ec2d4514#diff-286202fdbdd74ede6f5f5334b6176b5cL779 #1549
- response.complete must be true after res.end (#1601) (2c4edba)
- Restore behavior of Interceptor.filteringPath (#1543) (560a5d8)
- throw error when leading slash is not present in path (#1391) (28b2d43), closes /github.com/nock/nock/pull/1391#discussion_r250725610
- socket: When Socket#setTimeout gets a callback, should still emit (a07b0ba), closes #1404
- trigger release (#1645) (88e85ac)
- Update and clarify how .reply() can be invoked with functions (#1520) (2e779f0), closes /github.com/nock/nock/pull/1517/files#r280139478 #1222
- define: Throw when method is missing (69ba3c3)
- intercept: Better error message when options is falsy (#1440) (7e44769)
-
intercept: Improve error message when
new ClientMessage()
is invoked with no options (#1386) (6d2a312) - package: update propagate to version 2.0.0 (b729466)
- recorder: allow recording req headers when not outputting objects (#1617) (a952d9b), closes /nodejs.org/api/deprecations.html#deprecations_dep0066
Code Refactoring
v11.3.1
v11.3.0
v11.2.0
v11.1.0
v11.0.0
v10.0.6
Bug Fixes
v10.0.5
Bug Fixes
- package.engines shows incorrect versions and is supposed to be an object (0c4edd6)
v10.0.4
Bug Fixes
- #1266: throw useful error if "method" parameter is not set for .intercept() – thanks @labsvisual (a90f543), closes #1266
v10.0.3
Bug Fixes
v10.0.2
Bug Fixes
v10.0.1
Bug Fixes
v10.0.0
BREAKING CHANGES
- drop official support for Node < 6
There is no intentional change that breaks usage in Node 4, but as we stop testing in this no longer supported Node version we recommend to no update nock if you still rely on Node 4.
The reason why we decided to go ahead and make a breaking version release is that it became increasingly harder to update dependencies to the latest versions as they also drop support for Node 4.
Bug Fixes
Code Refactoring
- update Buffer constructors to from and alloc (c94b89d)
Continuous Integration
- travis: stop testing in Node 4 (139b632)
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.