@pact-foundation/pact 16.5.0 → 17.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/README.md +19 -0
- package/package.json +11 -10
- package/src/dsl/verifier/proxy/hooks.d.ts +23 -8
- package/src/dsl/verifier/proxy/hooks.js +32 -42
- package/src/dsl/verifier/proxy/hooks.js.map +1 -1
- package/src/dsl/verifier/proxy/hooks.spec.js +87 -86
- package/src/dsl/verifier/proxy/hooks.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/index.d.ts +1 -0
- package/src/dsl/verifier/proxy/index.js +1 -0
- package/src/dsl/verifier/proxy/index.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.d.ts +2 -1
- package/src/dsl/verifier/proxy/proxy.js +9 -13
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -1
- package/src/dsl/verifier/verifier.js +10 -2
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +1 -0
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [17.0.1](https://github.com/pact-foundation/pact-js/compare/v17.0.0...v17.0.1) (2026-07-01)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Fixes and Improvements
|
|
9
|
+
|
|
10
|
+
* **verifier:** run beforeEach/afterEach once per interaction without desyncing on hook failure ([#1865](https://github.com/pact-foundation/pact-js/issues/1865)) ([fed47e2](https://github.com/pact-foundation/pact-js/commit/fed47e220af427d654f8b192333e6d6425118425)), closes [#1864](https://github.com/pact-foundation/pact-js/issues/1864)
|
|
11
|
+
|
|
12
|
+
## [17.0.0](https://github.com/pact-foundation/pact-js/compare/v16.5.0...v17.0.0) (2026-06-25)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### ⚠ BREAKING CHANGES
|
|
16
|
+
|
|
17
|
+
* drop node 20, test against node 26 (#1813)
|
|
18
|
+
|
|
19
|
+
* drop node 20, test against node 26 ([#1813](https://github.com/pact-foundation/pact-js/issues/1813)) ([bdf71f7](https://github.com/pact-foundation/pact-js/commit/bdf71f758cb410f2795b46dc36d173a1399feac3))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Features
|
|
23
|
+
|
|
24
|
+
* enable scarf download analytics ([#1859](https://github.com/pact-foundation/pact-js/issues/1859)) ([c1d5593](https://github.com/pact-foundation/pact-js/commit/c1d5593ff0580f8439550c0e3ba7300c6c8f608a))
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Fixes and Improvements
|
|
28
|
+
|
|
29
|
+
* ESM import issue ([#1860](https://github.com/pact-foundation/pact-js/issues/1860)) ([f6b204c](https://github.com/pact-foundation/pact-js/commit/f6b204c6bec219b94db8370eee4c44258253be09))
|
|
30
|
+
|
|
5
31
|
## [16.5.0](https://github.com/pact-foundation/pact-js/compare/v16.4.0...v16.5.0) (2026-05-24)
|
|
6
32
|
|
|
7
33
|
|
package/README.md
CHANGED
|
@@ -300,6 +300,25 @@ See [CONTRIBUTING](CONTRIBUTING.md).
|
|
|
300
300
|
</a>
|
|
301
301
|
<br />
|
|
302
302
|
|
|
303
|
+
## Anonymized analytics
|
|
304
|
+
|
|
305
|
+
Pact JS uses [Scarf](https://scarf.sh/) to collect [anonymized installation analytics](https://github.com/scarf-sh/scarf-js?tab=readme-ov-file#as-a-user-of-a-package-using-scarf-js-what-information-does-scarf-js-send-about-me). These analytics help support the maintainers of this library and ONLY run during installation. To [opt out](https://github.com/scarf-sh/scarf-js?tab=readme-ov-file#as-a-user-of-a-package-using-scarf-js-how-can-i-opt-out-of-analytics), you can set the `scarfSettings.enabled` field to `false` in your project's `package.json`:
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
// package.json
|
|
309
|
+
{
|
|
310
|
+
// ...
|
|
311
|
+
"scarfSettings": {
|
|
312
|
+
"enabled": false
|
|
313
|
+
}
|
|
314
|
+
// ...
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
Alternatively, you can set the environment variable `SCARF_ANALYTICS` to `false` as part of the environment that installs your npm packages, e.g., `SCARF_ANALYTICS=false npm install`.
|
|
319
|
+
|
|
320
|
+
For more information, see [docs.pact.io/telemetry](https://docs.pact.io/telemetry).
|
|
321
|
+
|
|
303
322
|
[spec]: https://github.com/pact-foundation/pact-specification
|
|
304
323
|
[10xx]: https://github.com/pact-foundation/pact-js/tree/10.x.x
|
|
305
324
|
[9xx]: https://github.com/pact-foundation/pact-js/tree/9.x.x
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pact-foundation/pact",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "17.0.1",
|
|
4
4
|
"description": "Pact for all things Javascript",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"url": "git+https://github.com/pact-foundation/pact-js.git"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
|
-
"node": ">=
|
|
36
|
+
"node": ">=22"
|
|
37
37
|
},
|
|
38
38
|
"keywords": [
|
|
39
39
|
"pact",
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
},
|
|
105
105
|
"dependencies": {
|
|
106
106
|
"@pact-foundation/pact-core": "^19.2.0",
|
|
107
|
+
"@scarf/scarf": "^1.4.0",
|
|
107
108
|
"axios": "^1.12.2",
|
|
108
109
|
"body-parser": "^2.2.0",
|
|
109
110
|
"chalk": "4.1.2",
|
|
@@ -111,7 +112,7 @@
|
|
|
111
112
|
"graphql": "^16.11.0",
|
|
112
113
|
"graphql-tag": "^2.12.6",
|
|
113
114
|
"http-proxy": "^1.18.1",
|
|
114
|
-
"https-proxy-agent": "^
|
|
115
|
+
"https-proxy-agent": "^7.0.6",
|
|
115
116
|
"js-base64": "^3.7.8",
|
|
116
117
|
"lodash": "^4.17.21",
|
|
117
118
|
"ramda": "^0.32.0",
|
|
@@ -120,17 +121,17 @@
|
|
|
120
121
|
"stack-utils": "^2.0.6"
|
|
121
122
|
},
|
|
122
123
|
"devDependencies": {
|
|
123
|
-
"@babel/cli": "
|
|
124
|
-
"@babel/core": "
|
|
125
|
-
"@babel/preset-env": "
|
|
126
|
-
"@biomejs/biome": "2.4.
|
|
127
|
-
"@tsconfig/
|
|
124
|
+
"@babel/cli": "8.0.1",
|
|
125
|
+
"@babel/core": "8.0.1",
|
|
126
|
+
"@babel/preset-env": "8.0.2",
|
|
127
|
+
"@biomejs/biome": "2.4.16",
|
|
128
|
+
"@tsconfig/node22": "22.0.5",
|
|
128
129
|
"@types/express": "4.17.25",
|
|
129
130
|
"@types/http-proxy": "1.17.17",
|
|
130
131
|
"@types/lodash": "4.17.24",
|
|
131
132
|
"@types/nock": "11.1.0",
|
|
132
|
-
"@types/node": "24.
|
|
133
|
-
"@types/ramda": "0.
|
|
133
|
+
"@types/node": "24.13.2",
|
|
134
|
+
"@types/ramda": "0.32.0",
|
|
134
135
|
"@types/stack-utils": "2.0.3",
|
|
135
136
|
"@vitest/coverage-v8": "3.2.4",
|
|
136
137
|
"commit-and-tag-version": "12.7.3",
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* actions
|
|
2
|
+
* `beforeEach`/`afterEach` are driven off the provider-state setup/teardown
|
|
3
|
+
* requests the core makes to `/_pactSetup`. For each interaction the core sends
|
|
4
|
+
* one or more "setup" actions, runs the interaction, then sends one or more
|
|
5
|
+
* "teardown" actions.
|
|
6
|
+
*
|
|
7
|
+
* We track the interaction boundary with a single `insideInteraction` flag that
|
|
8
|
+
* flips on the setup<->teardown edges, rather than counting requests. This is:
|
|
9
|
+
* - idempotent under retries: the core retries a failed state-change request,
|
|
10
|
+
* and a duplicate "setup" while already inside an interaction is a no-op; and
|
|
11
|
+
* - self-healing: it cannot accumulate error and latch into a broken state.
|
|
12
|
+
*
|
|
13
|
+
* Hook failures are recorded on `HooksState.errors` and the state-change request
|
|
14
|
+
* is still answered with a success, so a throwing hook never turns into a non-2xx
|
|
15
|
+
* response (which the core would retry, desyncing interaction tracking). The
|
|
16
|
+
* verifier surfaces any recorded errors once verification completes, so a failing
|
|
17
|
+
* hook still fails the build.
|
|
6
18
|
*/
|
|
7
19
|
import type { RequestHandler } from 'express';
|
|
8
20
|
import type { Hook } from './types';
|
|
9
21
|
export type HooksState = {
|
|
10
|
-
|
|
22
|
+
insideInteraction: boolean;
|
|
23
|
+
errors: Error[];
|
|
11
24
|
};
|
|
12
|
-
export declare const
|
|
13
|
-
export declare const
|
|
14
|
-
|
|
25
|
+
export declare const createHooksState: () => HooksState;
|
|
26
|
+
export declare const registerHooks: (hooks: {
|
|
27
|
+
beforeEach?: Hook;
|
|
28
|
+
afterEach?: Hook;
|
|
29
|
+
}, hooksState: HooksState) => RequestHandler;
|
|
@@ -3,53 +3,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.registerHooks = exports.createHooksState = void 0;
|
|
7
7
|
const logger_1 = __importDefault(require("../../../common/logger"));
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const registerBeforeHook = (beforeEach, hooksState) => async ({ body }, _res, next) => {
|
|
18
|
-
if (body?.action === 'setup' && hooksState.setupCounter === 1) {
|
|
19
|
-
logger_1.default.debug("executing 'beforeEach' hook");
|
|
20
|
-
try {
|
|
21
|
-
await beforeEach();
|
|
22
|
-
next();
|
|
23
|
-
}
|
|
24
|
-
catch (e) {
|
|
25
|
-
const error = e instanceof Error ? e : new Error(String(e));
|
|
26
|
-
logger_1.default.error(`error executing 'beforeEach' hook: ${error.message}`);
|
|
27
|
-
logger_1.default.debug(`Stack trace was: ${error.stack}`);
|
|
28
|
-
next(new Error(`error executing 'beforeEach' hook: ${error.message}`));
|
|
29
|
-
}
|
|
8
|
+
const createHooksState = () => ({
|
|
9
|
+
insideInteraction: false,
|
|
10
|
+
errors: [],
|
|
11
|
+
});
|
|
12
|
+
exports.createHooksState = createHooksState;
|
|
13
|
+
const runHook = async (name, hook, hooksState) => {
|
|
14
|
+
logger_1.default.debug(`executing '${name}' hook`);
|
|
15
|
+
try {
|
|
16
|
+
await hook();
|
|
30
17
|
}
|
|
31
|
-
|
|
32
|
-
|
|
18
|
+
catch (e) {
|
|
19
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
20
|
+
logger_1.default.error(`error executing '${name}' hook: ${error.message}`);
|
|
21
|
+
logger_1.default.debug(`Stack trace was: ${error.stack}`);
|
|
22
|
+
hooksState.errors.push(new Error(`error executing '${name}' hook: ${error.message}`));
|
|
33
23
|
}
|
|
34
24
|
};
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
if (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
const error = e instanceof Error ? e : new Error(String(e));
|
|
45
|
-
logger_1.default.error(`error executing 'afterEach' hook: ${error.message}`);
|
|
46
|
-
logger_1.default.debug(`Stack trace was: ${error.stack}`);
|
|
47
|
-
next(new Error(`error executing 'afterEach' hook: ${error.message}`));
|
|
48
|
-
}
|
|
25
|
+
const registerHooks = (hooks, hooksState) => async ({ body }, _res, next) => {
|
|
26
|
+
const action = body?.action;
|
|
27
|
+
if (action === 'setup' && !hooksState.insideInteraction) {
|
|
28
|
+
// rising edge: the first "setup" of a new interaction
|
|
29
|
+
hooksState.insideInteraction = true;
|
|
30
|
+
if (hooks.beforeEach)
|
|
31
|
+
await runHook('beforeEach', hooks.beforeEach, hooksState);
|
|
49
32
|
}
|
|
50
|
-
else {
|
|
51
|
-
|
|
33
|
+
else if (action === 'teardown' && hooksState.insideInteraction) {
|
|
34
|
+
// falling edge: the first "teardown" after the interaction ran
|
|
35
|
+
hooksState.insideInteraction = false;
|
|
36
|
+
if (hooks.afterEach)
|
|
37
|
+
await runHook('afterEach', hooks.afterEach, hooksState);
|
|
52
38
|
}
|
|
39
|
+
// Always continue with a successful response. A hook failure must never
|
|
40
|
+
// become a non-2xx state-change response, or the core will retry it and
|
|
41
|
+
// desync interaction tracking. Failures are surfaced by the verifier later.
|
|
42
|
+
next();
|
|
53
43
|
};
|
|
54
|
-
exports.
|
|
44
|
+
exports.registerHooks = registerHooks;
|
|
55
45
|
//# sourceMappingURL=hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.ts"],"names":[],"mappings":";;;;;;AAoBA,oEAA4C;AAQrC,MAAM,gBAAgB,GAAG,GAAe,EAAE,CAAC,CAAC;IACjD,iBAAiB,EAAE,KAAK;IACxB,MAAM,EAAE,EAAE;CACX,CAAC,CAAC;AAHU,QAAA,gBAAgB,oBAG1B;AAEH,MAAM,OAAO,GAAG,KAAK,EACnB,IAAgC,EAChC,IAAU,EACV,UAAsB,EACP,EAAE;IACjB,gBAAM,CAAC,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,gBAAM,CAAC,KAAK,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,gBAAM,CAAC,KAAK,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,UAAU,CAAC,MAAM,CAAC,IAAI,CACpB,IAAI,KAAK,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,OAAO,EAAE,CAAC,CAC9D,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEK,MAAM,aAAa,GACxB,CACE,KAA8C,EAC9C,UAAsB,EACN,EAAE,CACpB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC7B,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;IAE5B,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACxD,sDAAsD;QACtD,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,UAAU;YAClB,MAAM,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,MAAM,KAAK,UAAU,IAAI,UAAU,CAAC,iBAAiB,EAAE,CAAC;QACjE,+DAA+D;QAC/D,UAAU,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACrC,IAAI,KAAK,CAAC,SAAS;YACjB,MAAM,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,wEAAwE;IACxE,wEAAwE;IACxE,4EAA4E;IAC5E,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAxBS,QAAA,aAAa,iBAwBtB"}
|
|
@@ -2,100 +2,101 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const vitest_1 = require("vitest");
|
|
4
4
|
const hooks_1 = require("./hooks");
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
const doRequest =
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
// biome-ignore lint/suspicious/noExplicitAny: partial mock object — only body is needed to exercise the hook logic
|
|
12
|
-
const request = {
|
|
13
|
-
body: {
|
|
14
|
-
action,
|
|
15
|
-
},
|
|
16
|
-
};
|
|
5
|
+
// Mimics the proxy: a single hooks middleware handles every `/_pactSetup`
|
|
6
|
+
// request. `doRequest` drives it with a given action and resolves once the
|
|
7
|
+
// middleware calls next().
|
|
8
|
+
const doRequest = (action, handler) => {
|
|
9
|
+
// biome-ignore lint/suspicious/noExplicitAny: partial mock — only body is needed
|
|
10
|
+
const request = { body: { action } };
|
|
17
11
|
return new Promise((resolve) => {
|
|
18
|
-
// biome-ignore lint/suspicious/noExplicitAny: null
|
|
19
|
-
|
|
20
|
-
// biome-ignore lint/suspicious/noExplicitAny: null passed as res mock; only body is exercised
|
|
21
|
-
hookRequestHandler(request, null, resolve);
|
|
22
|
-
});
|
|
12
|
+
// biome-ignore lint/suspicious/noExplicitAny: null res mock; only body is exercised
|
|
13
|
+
handler(request, null, () => resolve());
|
|
23
14
|
});
|
|
24
15
|
};
|
|
25
|
-
describe('Verifier', () => {
|
|
16
|
+
describe('Verifier hooks', () => {
|
|
26
17
|
afterEach(() => {
|
|
27
18
|
vitest_1.vi.restoreAllMocks();
|
|
28
19
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
});
|
|
20
|
+
it('runs beforeEach and afterEach once per interaction (multiple "given" states)', async () => {
|
|
21
|
+
const state = (0, hooks_1.createHooksState)();
|
|
22
|
+
const beforeEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
23
|
+
const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
24
|
+
const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
|
|
25
|
+
// Interaction with two "given" states: setup x2, teardown x2
|
|
26
|
+
await doRequest('setup', handler);
|
|
27
|
+
await doRequest('setup', handler);
|
|
28
|
+
await doRequest('teardown', handler);
|
|
29
|
+
await doRequest('teardown', handler);
|
|
30
|
+
expect(beforeEach).toHaveBeenCalledOnce();
|
|
31
|
+
expect(afterEach).toHaveBeenCalledOnce();
|
|
42
32
|
});
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
33
|
+
it('runs the hooks once for each of several interactions', async () => {
|
|
34
|
+
const state = (0, hooks_1.createHooksState)();
|
|
35
|
+
const beforeEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
36
|
+
const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
37
|
+
const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
|
|
38
|
+
// Interaction 1 (two states)
|
|
39
|
+
await doRequest('setup', handler);
|
|
40
|
+
await doRequest('setup', handler);
|
|
41
|
+
await doRequest('teardown', handler);
|
|
42
|
+
await doRequest('teardown', handler);
|
|
43
|
+
// Interaction 2 (one state)
|
|
44
|
+
await doRequest('setup', handler);
|
|
45
|
+
await doRequest('teardown', handler);
|
|
46
|
+
// Interaction 3 (three states)
|
|
47
|
+
await doRequest('setup', handler);
|
|
48
|
+
await doRequest('setup', handler);
|
|
49
|
+
await doRequest('setup', handler);
|
|
50
|
+
await doRequest('teardown', handler);
|
|
51
|
+
await doRequest('teardown', handler);
|
|
52
|
+
await doRequest('teardown', handler);
|
|
53
|
+
expect(beforeEach).toHaveBeenCalledTimes(3);
|
|
54
|
+
expect(afterEach).toHaveBeenCalledTimes(3);
|
|
56
55
|
});
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
56
|
+
// Regression for #1864: a failing beforeEach used to desync a global counter,
|
|
57
|
+
// silently disabling the hooks for every subsequent interaction.
|
|
58
|
+
it('keeps running hooks for later interactions after a hook throws, and records the error', async () => {
|
|
59
|
+
const state = (0, hooks_1.createHooksState)();
|
|
60
|
+
const beforeEach = vitest_1.vi
|
|
61
|
+
.fn()
|
|
62
|
+
.mockRejectedValueOnce(new Error('transient failure'))
|
|
63
|
+
.mockResolvedValue(undefined);
|
|
64
|
+
const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
65
|
+
const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
|
|
66
|
+
// Three single-state interactions; beforeEach throws on the first.
|
|
67
|
+
for (let i = 0; i < 3; i++) {
|
|
68
|
+
await doRequest('setup', handler);
|
|
69
|
+
await doRequest('teardown', handler);
|
|
70
|
+
}
|
|
71
|
+
expect(beforeEach).toHaveBeenCalledTimes(3);
|
|
72
|
+
expect(afterEach).toHaveBeenCalledTimes(3);
|
|
73
|
+
expect(state.errors).toHaveLength(1);
|
|
74
|
+
expect(state.errors[0].message).toContain('beforeEach');
|
|
75
|
+
});
|
|
76
|
+
// A throwing hook must never turn into a non-2xx response (the proxy must keep
|
|
77
|
+
// serving), or the core would retry the request and desync tracking.
|
|
78
|
+
it('still calls next() when a hook throws', async () => {
|
|
79
|
+
const state = (0, hooks_1.createHooksState)();
|
|
80
|
+
const beforeEach = vitest_1.vi.fn().mockRejectedValue(new Error('boom'));
|
|
81
|
+
const handler = (0, hooks_1.registerHooks)({ beforeEach }, state);
|
|
82
|
+
// doRequest resolves only when next() is called.
|
|
83
|
+
await expect(doRequest('setup', handler)).resolves.toBeUndefined();
|
|
84
|
+
});
|
|
85
|
+
// The core retries a failed state-change request: a duplicate "setup" before
|
|
86
|
+
// any "teardown" must not re-fire beforeEach nor desync the interaction state.
|
|
87
|
+
it('is idempotent under a retried setup request', async () => {
|
|
88
|
+
const state = (0, hooks_1.createHooksState)();
|
|
89
|
+
const beforeEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
90
|
+
const afterEach = vitest_1.vi.fn().mockResolvedValue(undefined);
|
|
91
|
+
const handler = (0, hooks_1.registerHooks)({ beforeEach, afterEach }, state);
|
|
92
|
+
await doRequest('setup', handler);
|
|
93
|
+
await doRequest('setup', handler); // retried/duplicate setup
|
|
94
|
+
await doRequest('teardown', handler);
|
|
95
|
+
// next interaction
|
|
96
|
+
await doRequest('setup', handler);
|
|
97
|
+
await doRequest('teardown', handler);
|
|
98
|
+
expect(beforeEach).toHaveBeenCalledTimes(2);
|
|
99
|
+
expect(afterEach).toHaveBeenCalledTimes(2);
|
|
99
100
|
});
|
|
100
101
|
});
|
|
101
102
|
//# sourceMappingURL=hooks.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.spec.ts"],"names":[],"mappings":";;AACA,mCAA4B;AAE5B,
|
|
1
|
+
{"version":3,"file":"hooks.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/hooks.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./hooks"), exports);
|
|
17
18
|
__exportStar(require("./proxy"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0CAAwB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import http from 'node:http';
|
|
2
|
+
import { type HooksState } from './hooks';
|
|
2
3
|
import type { ProxyOptions } from './types';
|
|
3
4
|
export declare const waitForServerReady: (server: http.Server) => Promise<http.Server>;
|
|
4
|
-
export declare const createProxy: (config: ProxyOptions, stateSetupPath: string, messageTransportPath: string) => http.Server;
|
|
5
|
+
export declare const createProxy: (config: ProxyOptions, stateSetupPath: string, messageTransportPath: string, hooksState: HooksState) => http.Server;
|
|
@@ -21,7 +21,7 @@ const waitForServerReady = (server) => new Promise((resolve, reject) => {
|
|
|
21
21
|
});
|
|
22
22
|
exports.waitForServerReady = waitForServerReady;
|
|
23
23
|
// Get the Proxy we'll pass to the CLI for verification
|
|
24
|
-
const createProxy = (config, stateSetupPath, messageTransportPath) => {
|
|
24
|
+
const createProxy = (config, stateSetupPath, messageTransportPath, hooksState) => {
|
|
25
25
|
const app = (0, express_1.default)();
|
|
26
26
|
const proxy = new http_proxy_1.default();
|
|
27
27
|
logger_1.default.trace(`Setting up state proxy with path: ${stateSetupPath}`);
|
|
@@ -36,18 +36,14 @@ const createProxy = (config, stateSetupPath, messageTransportPath) => {
|
|
|
36
36
|
}));
|
|
37
37
|
app.use(body_parser_1.default.urlencoded({ extended: true }));
|
|
38
38
|
app.use('/{*splat}', body_parser_1.default.raw({ type: '*/*' }));
|
|
39
|
-
// Hooks
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
app.use(stateSetupPath, (0, hooks_1.
|
|
47
|
-
}
|
|
48
|
-
if (config.afterEach) {
|
|
49
|
-
logger_1.default.trace("registered 'afterEach' hook");
|
|
50
|
-
app.use(stateSetupPath, (0, hooks_1.registerAfterHook)(config.afterEach, hooksState));
|
|
39
|
+
// Hooks. Tracking is only needed when a hook is registered; both hooks share
|
|
40
|
+
// the same interaction-boundary tracking, so they are registered together.
|
|
41
|
+
if (config.beforeEach || config.afterEach) {
|
|
42
|
+
if (config.beforeEach)
|
|
43
|
+
logger_1.default.trace("registered 'beforeEach' hook");
|
|
44
|
+
if (config.afterEach)
|
|
45
|
+
logger_1.default.trace("registered 'afterEach' hook");
|
|
46
|
+
app.use(stateSetupPath, (0, hooks_1.registerHooks)({ beforeEach: config.beforeEach, afterEach: config.afterEach }, hooksState));
|
|
51
47
|
}
|
|
52
48
|
// Trace req/res logging
|
|
53
49
|
if (config.logLevel === 'debug' || config.logLevel === 'trace') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,8DAAqC;AACrC,sDAA8B;AAC9B,4DAAmC;AACnC,oEAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ describe('#toServerOptions', () => {
|
|
|
59
59
|
expect(res.agent?.proxy?.toString()).toBe(expectedProxy);
|
|
60
60
|
});
|
|
61
61
|
it('prefers HTTPS_PROXY to HTTP_PROXY', () => {
|
|
62
|
-
process.env.
|
|
62
|
+
process.env.HTTP_PROXY = 'http://ignored.proxy/';
|
|
63
63
|
const expectedProxy = 'http://expected.proxy/';
|
|
64
64
|
process.env.HTTPS_PROXY = expectedProxy;
|
|
65
65
|
const res = toServerOptions();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxyRequest.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxyRequest.spec.ts"],"names":[],"mappings":";;AAAA,6CAAuC;
|
|
1
|
+
{"version":3,"file":"proxyRequest.spec.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxyRequest.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -96,8 +96,11 @@ class Verifier {
|
|
|
96
96
|
if ((0, lodash_1.isEmpty)(this.config)) {
|
|
97
97
|
return Promise.reject(new configurationError_1.default('No configuration provided to verifier'));
|
|
98
98
|
}
|
|
99
|
-
// Start the verification CLI proxy server
|
|
100
|
-
|
|
99
|
+
// Start the verification CLI proxy server. The hooks state is owned here so
|
|
100
|
+
// that any beforeEach/afterEach failures recorded during verification can be
|
|
101
|
+
// surfaced once it completes.
|
|
102
|
+
const hooksState = (0, proxy_1.createHooksState)();
|
|
103
|
+
const server = (0, proxy_1.createProxy)(this.config, this.stateSetupPath, this.messageTransportPath, hooksState);
|
|
101
104
|
logger_1.default.trace(`proxy created, waiting for startup`);
|
|
102
105
|
// Run the verification once the proxy server is available
|
|
103
106
|
return (0, proxy_1.waitForServerReady)(server)
|
|
@@ -109,6 +112,11 @@ class Verifier {
|
|
|
109
112
|
.then((result) => {
|
|
110
113
|
logger_1.default.trace('Verification completed, closing server');
|
|
111
114
|
server.close();
|
|
115
|
+
if (hooksState.errors.length > 0) {
|
|
116
|
+
throw new Error(`Provider verification hooks failed:\n${hooksState.errors
|
|
117
|
+
.map((e) => ` - ${e.message}`)
|
|
118
|
+
.join('\n')}`);
|
|
119
|
+
}
|
|
112
120
|
return result;
|
|
113
121
|
})
|
|
114
122
|
.catch((e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIH,wDAA2B;AAC3B,2EAEoC;AACpC,mCAAuC;AACvC,8DAA0D;AAC1D,0CAAkD;AAClD,yFAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ const logger_1 = __importDefault(require("../../common/logger"));
|
|
|
9
9
|
const verifier_1 = require("./verifier");
|
|
10
10
|
const mockState = vitest_1.vi.hoisted(() => ({ executed: false }));
|
|
11
11
|
vitest_1.vi.mock('./proxy', () => ({
|
|
12
|
+
createHooksState: () => ({ insideInteraction: false, errors: [] }),
|
|
12
13
|
createProxy: () => ({
|
|
13
14
|
close: () => {
|
|
14
15
|
mockState.executed = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}
|