@pact-foundation/pact 16.4.0 → 17.0.0
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 +35 -0
- package/README.md +41 -12
- package/package.json +19 -31
- package/scripts/ci/build-and-test.sh +0 -3
- package/scripts/install-plugins.js +104 -0
- package/src/common/graphQL/graphQL.js +1 -1
- package/src/common/graphQL/graphQL.js.map +1 -1
- package/src/common/matchingRules.d.ts +7 -1
- package/src/common/matchingRules.js +21 -1
- package/src/common/matchingRules.js.map +1 -1
- package/src/common/net.spec.js +27 -63
- package/src/common/net.spec.js.map +1 -1
- package/src/common/request.js +1 -1
- package/src/common/request.js.map +1 -1
- package/src/common/request.spec.js +14 -58
- package/src/common/request.spec.js.map +1 -1
- package/src/dsl/apolloGraphql.spec.js +3 -43
- package/src/dsl/apolloGraphql.spec.js.map +1 -1
- package/src/dsl/graphql.d.ts +1 -1
- package/src/dsl/graphql.js +4 -4
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/graphql.spec.js +22 -62
- package/src/dsl/graphql.spec.js.map +1 -1
- package/src/dsl/interaction.d.ts +2 -2
- package/src/dsl/interaction.js +1 -1
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/interaction.spec.js +40 -70
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +1 -2
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +95 -96
- package/src/dsl/matchers.spec.js.map +1 -1
- package/src/dsl/message.d.ts +1 -1
- package/src/dsl/options.d.ts +1 -1
- package/src/dsl/verifier/proxy/hooks.spec.js +16 -14
- package/src/dsl/verifier/proxy/hooks.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/messages.js +1 -1
- package/src/dsl/verifier/proxy/messages.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.js +1 -1
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +14 -47
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.js +4 -4
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.spec.js +6 -48
- package/src/dsl/verifier/proxy/proxy.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.d.ts +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.js +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +18 -53
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.d.ts +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js +16 -50
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +12 -49
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/types.d.ts +2 -2
- package/src/dsl/verifier/verifier.d.ts +4 -0
- package/src/dsl/verifier/verifier.js +6 -6
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +46 -96
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
- package/src/httpPact/ffi.d.ts +1 -1
- package/src/httpPact/ffi.js +1 -1
- package/src/httpPact/ffi.js.map +1 -1
- package/src/httpPact/ffi.spec.js +18 -60
- package/src/httpPact/ffi.spec.js.map +1 -1
- package/src/httpPact/index.d.ts +1 -1
- package/src/httpPact/index.js +7 -7
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js +46 -89
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/index.d.ts +25 -25
- package/src/index.js +28 -28
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +3 -3
- package/src/messageConsumerPact.js +12 -5
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +15 -58
- package/src/messageConsumerPact.spec.js.map +1 -1
- package/src/messageProviderPact.js +3 -3
- package/src/messageProviderPact.js.map +1 -1
- package/src/messageProviderPact.spec.js +48 -84
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/pact.integration.spec.js +12 -51
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/display.d.ts +1 -1
- package/src/v3/display.js.map +1 -1
- package/src/v3/ffi.js +5 -1
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.js +1 -36
- package/src/v3/ffi.spec.js.map +1 -1
- package/src/v3/graphql/graphQL.d.ts +2 -2
- package/src/v3/graphql/graphQL.js +2 -2
- package/src/v3/graphql/graphQL.js.map +1 -1
- package/src/v3/graphql/index.d.ts +1 -1
- package/src/v3/graphql/index.js +1 -1
- package/src/v3/graphql/index.js.map +1 -1
- package/src/v3/index.d.ts +4 -12
- package/src/v3/index.js +4 -12
- package/src/v3/index.js.map +1 -1
- package/src/v3/matchers.d.ts +14 -2
- package/src/v3/matchers.js +19 -1
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +125 -57
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.js +10 -5
- package/src/v3/pact.js.map +1 -1
- package/src/v3/pact.spec.js +94 -0
- package/src/v3/pact.spec.js.map +1 -0
- package/src/v3/types.d.ts +18 -2
- package/src/v3/types.js +22 -1
- package/src/v3/types.js.map +1 -1
- package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +2 -2
- package/src/v4/graphql/graphQLInteractionWithRequest.js +1 -1
- package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -1
- package/src/v4/graphql/graphQLRequestBuilder.d.ts +1 -1
- package/src/v4/graphql/index.d.ts +3 -3
- package/src/v4/graphql/index.js +1 -1
- package/src/v4/graphql/index.js.map +1 -1
- package/src/v4/graphql/types.d.ts +1 -1
- package/src/v4/http/index.js +7 -2
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/index.spec.d.ts +1 -0
- package/src/v4/http/index.spec.js +73 -0
- package/src/v4/http/index.spec.js.map +1 -0
- package/src/v4/http/interactionWithCompleteRequest.d.ts +2 -2
- package/src/v4/http/interactionWithPlugin.d.ts +2 -2
- package/src/v4/http/interactionWithPlugin.js +2 -2
- package/src/v4/http/interactionWithPlugin.js.map +1 -1
- package/src/v4/http/interactionWithPluginRequest.d.ts +4 -3
- package/src/v4/http/interactionWithPluginRequest.js +6 -1
- package/src/v4/http/interactionWithPluginRequest.js.map +1 -1
- package/src/v4/http/interactionWithPluginResponse.d.ts +1 -1
- package/src/v4/http/interactionWithRequest.d.ts +4 -3
- package/src/v4/http/interactionWithRequest.js +6 -1
- package/src/v4/http/interactionWithRequest.js.map +1 -1
- package/src/v4/http/interactionWithRequest.spec.d.ts +1 -0
- package/src/v4/http/interactionWithRequest.spec.js +82 -0
- package/src/v4/http/interactionWithRequest.spec.js.map +1 -0
- package/src/v4/http/interactionWithResponse.d.ts +1 -1
- package/src/v4/http/requestBuilder.d.ts +2 -1
- package/src/v4/http/requestBuilder.js +5 -1
- package/src/v4/http/requestBuilder.js.map +1 -1
- package/src/v4/http/requestBuilder.spec.d.ts +1 -0
- package/src/v4/http/requestBuilder.spec.js +42 -0
- package/src/v4/http/requestBuilder.spec.js.map +1 -0
- package/src/v4/http/requestWithPluginBuilder.d.ts +1 -0
- package/src/v4/http/requestWithPluginBuilder.js +4 -0
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -1
- package/src/v4/http/requestWithPluginBuilder.spec.d.ts +1 -0
- package/src/v4/http/requestWithPluginBuilder.spec.js +34 -0
- package/src/v4/http/requestWithPluginBuilder.spec.js.map +1 -0
- package/src/v4/http/responseBuilder.d.ts +2 -1
- package/src/v4/http/responseBuilder.js +6 -2
- package/src/v4/http/responseBuilder.js.map +1 -1
- package/src/v4/http/responseBuilder.spec.d.ts +1 -0
- package/src/v4/http/responseBuilder.spec.js +42 -0
- package/src/v4/http/responseBuilder.spec.js.map +1 -0
- package/src/v4/http/responseWithPluginBuilder.d.ts +1 -1
- package/src/v4/http/responseWithPluginBuilder.spec.d.ts +1 -0
- package/src/v4/http/responseWithPluginBuilder.spec.js +34 -0
- package/src/v4/http/responseWithPluginBuilder.spec.js.map +1 -0
- package/src/v4/http/types.d.ts +11 -3
- package/src/v4/http/unconfiguredInteraction.d.ts +2 -2
- package/src/v4/http/unconfiguredInteraction.js +2 -2
- package/src/v4/http/unconfiguredInteraction.js.map +1 -1
- package/src/v4/index.d.ts +4 -3
- package/src/v4/index.js +3 -2
- package/src/v4/index.js.map +1 -1
- package/src/v4/message/asynchronousMessage.d.ts +4 -4
- package/src/v4/message/asynchronousMessage.js +2 -2
- package/src/v4/message/asynchronousMessage.js.map +1 -1
- package/src/v4/message/index.d.ts +4 -4
- package/src/v4/message/index.js +2 -2
- package/src/v4/message/index.js.map +1 -1
- package/src/v4/types.d.ts +1 -1
- package/src/xml/index.d.ts +4 -0
- package/src/xml/index.js +21 -0
- package/src/xml/index.js.map +1 -0
- package/src/xml/xmlBuilder.js.map +1 -0
- package/src/{v3/xml → xml}/xmlElement.d.ts +1 -1
- package/src/{v3/xml → xml}/xmlElement.js +1 -1
- package/src/xml/xmlElement.js.map +1 -0
- package/src/xml/xmlElement.spec.d.ts +1 -0
- package/src/{v3/xml → xml}/xmlElement.spec.js +41 -45
- package/src/xml/xmlElement.spec.js.map +1 -0
- package/src/xml/xmlNode.js.map +1 -0
- package/src/{v3/xml → xml}/xmlText.d.ts +1 -1
- package/src/xml/xmlText.js.map +1 -0
- package/scripts/install-plugins +0 -106
- package/src/v3/xml/xmlBuilder.js.map +0 -1
- package/src/v3/xml/xmlElement.js.map +0 -1
- package/src/v3/xml/xmlElement.spec.js.map +0 -1
- package/src/v3/xml/xmlNode.js.map +0 -1
- package/src/v3/xml/xmlText.js.map +0 -1
- /package/src/v3/{xml/xmlElement.spec.d.ts → pact.spec.d.ts} +0 -0
- /package/src/{v3/xml → xml}/xmlBuilder.d.ts +0 -0
- /package/src/{v3/xml → xml}/xmlBuilder.js +0 -0
- /package/src/{v3/xml → xml}/xmlNode.d.ts +0 -0
- /package/src/{v3/xml → xml}/xmlNode.js +0 -0
- /package/src/{v3/xml → xml}/xmlText.js +0 -0
package/src/v3/pact.js
CHANGED
|
@@ -4,16 +4,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.PactV3 = void 0;
|
|
7
|
-
const ramda_1 = require("ramda");
|
|
8
7
|
const pact_core_1 = require("@pact-foundation/pact-core");
|
|
8
|
+
const ramda_1 = require("ramda");
|
|
9
9
|
const fs = require("node:fs");
|
|
10
10
|
const package_json_1 = require("../../package.json");
|
|
11
|
+
const logger_1 = __importDefault(require("../common/logger"));
|
|
11
12
|
const matchingRules_1 = require("../common/matchingRules");
|
|
12
|
-
const types_1 = require("./types");
|
|
13
|
-
const matchers_1 = require("./matchers");
|
|
14
13
|
const display_1 = require("./display");
|
|
15
|
-
const logger_1 = __importDefault(require("../common/logger"));
|
|
16
14
|
const ffi_1 = require("./ffi");
|
|
15
|
+
const matchers_1 = require("./matchers");
|
|
16
|
+
const types_1 = require("./types");
|
|
17
17
|
const readBinaryData = (file) => {
|
|
18
18
|
try {
|
|
19
19
|
const body = fs.readFileSync(file);
|
|
@@ -171,7 +171,12 @@ class PactV3 {
|
|
|
171
171
|
async executeTest(testFn) {
|
|
172
172
|
const scheme = this.opts.tls ? 'https' : 'http';
|
|
173
173
|
const host = this.opts.host || '127.0.0.1';
|
|
174
|
-
const
|
|
174
|
+
const cors = this.opts.cors ?? true;
|
|
175
|
+
const config = JSON.stringify({ corsPreflight: cors });
|
|
176
|
+
const port = this.pact.pactffiCreateMockServerForTransport(host, scheme, config, this.opts.port);
|
|
177
|
+
if (port <= 0) {
|
|
178
|
+
throw new Error(`Failed to start mock server: received error code ${port}`);
|
|
179
|
+
}
|
|
175
180
|
const server = { port, url: `${scheme}://${host}:${port}`, id: 'unknown' };
|
|
176
181
|
let val;
|
|
177
182
|
let error;
|
package/src/v3/pact.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pact.js","sourceRoot":"","sources":["../../../src/v3/pact.ts"],"names":[],"mappings":";;;;;;AAAA,iCAA+B;
|
|
1
|
+
{"version":3,"file":"pact.js","sourceRoot":"","sources":["../../../src/v3/pact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const pact_1 = require("./pact");
|
|
5
|
+
describe('PactV3', () => {
|
|
6
|
+
afterEach(() => {
|
|
7
|
+
vitest_1.vi.restoreAllMocks();
|
|
8
|
+
});
|
|
9
|
+
describe('#executeTest', () => {
|
|
10
|
+
const buildPactMock = (port) => {
|
|
11
|
+
return {
|
|
12
|
+
addMetadata: vitest_1.vi.fn().mockReturnValue(true),
|
|
13
|
+
newInteraction: vitest_1.vi.fn(),
|
|
14
|
+
pactffiCreateMockServerForTransport: vitest_1.vi.fn().mockReturnValue(port),
|
|
15
|
+
mockServerMatchedSuccessfully: vitest_1.vi.fn().mockReturnValue(true),
|
|
16
|
+
mockServerMismatches: vitest_1.vi.fn().mockReturnValue([]),
|
|
17
|
+
cleanupMockServer: vitest_1.vi.fn().mockReturnValue(true),
|
|
18
|
+
writePactFile: vitest_1.vi.fn(),
|
|
19
|
+
cleanupPlugins: vitest_1.vi.fn(),
|
|
20
|
+
addPlugin: vitest_1.vi.fn(),
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
describe('CORS option', () => {
|
|
24
|
+
it('passes corsPreflight: true by default when cors is not specified', async () => {
|
|
25
|
+
const pactMock = buildPactMock(1234);
|
|
26
|
+
const p = new pact_1.PactV3({ consumer: 'A', provider: 'B' });
|
|
27
|
+
// @ts-expect-error: accessing private field for testing
|
|
28
|
+
p.pact = pactMock;
|
|
29
|
+
await p.executeTest(async () => Promise.resolve());
|
|
30
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
31
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
32
|
+
expect(stub).toHaveBeenCalledOnce();
|
|
33
|
+
const [, , config] = stub.mock.calls[0];
|
|
34
|
+
expect(JSON.parse(config)).toEqual({ corsPreflight: true });
|
|
35
|
+
});
|
|
36
|
+
it('passes corsPreflight: true when cors is explicitly true', async () => {
|
|
37
|
+
const pactMock = buildPactMock(1234);
|
|
38
|
+
const p = new pact_1.PactV3({ consumer: 'A', provider: 'B', cors: true });
|
|
39
|
+
// @ts-expect-error: accessing private field for testing
|
|
40
|
+
p.pact = pactMock;
|
|
41
|
+
await p.executeTest(async () => Promise.resolve());
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
43
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
44
|
+
const [, , config] = stub.mock.calls[0];
|
|
45
|
+
expect(JSON.parse(config)).toEqual({ corsPreflight: true });
|
|
46
|
+
});
|
|
47
|
+
it('passes corsPreflight: false when cors is explicitly false', async () => {
|
|
48
|
+
const pactMock = buildPactMock(1234);
|
|
49
|
+
const p = new pact_1.PactV3({ consumer: 'A', provider: 'B', cors: false });
|
|
50
|
+
// @ts-expect-error: accessing private field for testing
|
|
51
|
+
p.pact = pactMock;
|
|
52
|
+
await p.executeTest(async () => Promise.resolve());
|
|
53
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
54
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
55
|
+
const [, , config] = stub.mock.calls[0];
|
|
56
|
+
expect(JSON.parse(config)).toEqual({ corsPreflight: false });
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('transport scheme', () => {
|
|
60
|
+
it('uses http scheme by default', async () => {
|
|
61
|
+
const pactMock = buildPactMock(1234);
|
|
62
|
+
const p = new pact_1.PactV3({ consumer: 'A', provider: 'B' });
|
|
63
|
+
// @ts-expect-error: accessing private field for testing
|
|
64
|
+
p.pact = pactMock;
|
|
65
|
+
await p.executeTest(async () => Promise.resolve());
|
|
66
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
67
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
68
|
+
const [, transport] = stub.mock.calls[0];
|
|
69
|
+
expect(transport).toBe('http');
|
|
70
|
+
});
|
|
71
|
+
it('uses https scheme when tls is true', async () => {
|
|
72
|
+
const pactMock = buildPactMock(1234);
|
|
73
|
+
const p = new pact_1.PactV3({ consumer: 'A', provider: 'B', tls: true });
|
|
74
|
+
// @ts-expect-error: accessing private field for testing
|
|
75
|
+
p.pact = pactMock;
|
|
76
|
+
await p.executeTest(async () => Promise.resolve());
|
|
77
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
78
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
79
|
+
const [, transport] = stub.mock.calls[0];
|
|
80
|
+
expect(transport).toBe('https');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('when the mock server fails to start', () => {
|
|
84
|
+
it('throws an error when port is 0 or negative', async () => {
|
|
85
|
+
const pactMock = buildPactMock(-3);
|
|
86
|
+
const p = new pact_1.PactV3({ consumer: 'A', provider: 'B' });
|
|
87
|
+
// @ts-expect-error: accessing private field for testing
|
|
88
|
+
p.pact = pactMock;
|
|
89
|
+
await expect(p.executeTest(async () => Promise.resolve())).rejects.toThrow('Failed to start mock server');
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=pact.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pact.spec.js","sourceRoot":"","sources":["../../../src/v3/pact.spec.ts"],"names":[],"mappings":"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"}
|
package/src/v3/types.d.ts
CHANGED
|
@@ -37,9 +37,25 @@ export interface ArrayContainsMatcher extends Matcher<unknown[]> {
|
|
|
37
37
|
export interface ProviderStateInjectedValue<T> extends Matcher<T> {
|
|
38
38
|
expression: string;
|
|
39
39
|
}
|
|
40
|
+
export interface StatusCodeMatcher<T> extends Matcher<T> {
|
|
41
|
+
status: HTTPResponseStatusClass | number[];
|
|
42
|
+
}
|
|
40
43
|
export interface RulesMatcher<T> extends Matcher<T> {
|
|
41
44
|
rules: Matcher<T>[];
|
|
42
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Enum for HTTP response status classes used with the status code matcher.
|
|
48
|
+
* These values correspond to the status code ranges defined in RFC 7231.
|
|
49
|
+
*/
|
|
50
|
+
export declare enum HTTPResponseStatusClass {
|
|
51
|
+
Information = "information",
|
|
52
|
+
Success = "success",
|
|
53
|
+
Redirect = "redirect",
|
|
54
|
+
ClientError = "clientError",
|
|
55
|
+
ServerError = "serverError",
|
|
56
|
+
NonError = "nonError",
|
|
57
|
+
Error = "error"
|
|
58
|
+
}
|
|
43
59
|
/**
|
|
44
60
|
* Part of a request or response where matching rules can be applied
|
|
45
61
|
*/
|
|
@@ -76,7 +92,7 @@ export interface PactV3Options {
|
|
|
76
92
|
*/
|
|
77
93
|
provider: string;
|
|
78
94
|
/**
|
|
79
|
-
* If the mock server should handle CORS pre-flight requests. Defaults to
|
|
95
|
+
* If the mock server should handle CORS pre-flight requests. Defaults to true
|
|
80
96
|
*/
|
|
81
97
|
cors?: boolean;
|
|
82
98
|
/**
|
|
@@ -124,7 +140,7 @@ export interface V3Request {
|
|
|
124
140
|
contentType?: string;
|
|
125
141
|
}
|
|
126
142
|
export interface V3Response {
|
|
127
|
-
status: number
|
|
143
|
+
status: number | StatusCodeMatcher<number>;
|
|
128
144
|
headers?: TemplateHeaders;
|
|
129
145
|
body?: unknown;
|
|
130
146
|
contentType?: string;
|
package/src/v3/types.js
CHANGED
|
@@ -1,10 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SpecificationVersion = void 0;
|
|
3
|
+
exports.HTTPResponseStatusClass = exports.SpecificationVersion = void 0;
|
|
4
4
|
var SpecificationVersion;
|
|
5
5
|
(function (SpecificationVersion) {
|
|
6
6
|
SpecificationVersion[SpecificationVersion["SPECIFICATION_VERSION_V2"] = 3] = "SPECIFICATION_VERSION_V2";
|
|
7
7
|
SpecificationVersion[SpecificationVersion["SPECIFICATION_VERSION_V3"] = 4] = "SPECIFICATION_VERSION_V3";
|
|
8
8
|
SpecificationVersion[SpecificationVersion["SPECIFICATION_VERSION_V4"] = 5] = "SPECIFICATION_VERSION_V4";
|
|
9
9
|
})(SpecificationVersion || (exports.SpecificationVersion = SpecificationVersion = {}));
|
|
10
|
+
/**
|
|
11
|
+
* Enum for HTTP response status classes used with the status code matcher.
|
|
12
|
+
* These values correspond to the status code ranges defined in RFC 7231.
|
|
13
|
+
*/
|
|
14
|
+
var HTTPResponseStatusClass;
|
|
15
|
+
(function (HTTPResponseStatusClass) {
|
|
16
|
+
// Informational responses (100–199)
|
|
17
|
+
HTTPResponseStatusClass["Information"] = "information";
|
|
18
|
+
// Successful responses (200–299)
|
|
19
|
+
HTTPResponseStatusClass["Success"] = "success";
|
|
20
|
+
// Redirects (300–399)
|
|
21
|
+
HTTPResponseStatusClass["Redirect"] = "redirect";
|
|
22
|
+
// Client errors (400–499)
|
|
23
|
+
HTTPResponseStatusClass["ClientError"] = "clientError";
|
|
24
|
+
// Server errors (500–599)
|
|
25
|
+
HTTPResponseStatusClass["ServerError"] = "serverError";
|
|
26
|
+
// Non-error response (< 400)
|
|
27
|
+
HTTPResponseStatusClass["NonError"] = "nonError";
|
|
28
|
+
// Any error response (>= 400)
|
|
29
|
+
HTTPResponseStatusClass["Error"] = "error";
|
|
30
|
+
})(HTTPResponseStatusClass || (exports.HTTPResponseStatusClass = HTTPResponseStatusClass = {}));
|
|
10
31
|
//# sourceMappingURL=types.js.map
|
package/src/v3/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/v3/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,uGAA4B,CAAA;IAC5B,uGAA4B,CAAA;IAC5B,uGAA4B,CAAA;AAC9B,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/v3/types.ts"],"names":[],"mappings":";;;AAEA,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,uGAA4B,CAAA;IAC5B,uGAA4B,CAAA;IAC5B,uGAA4B,CAAA;AAC9B,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B;AAkDD;;;GAGG;AACH,IAAY,uBAeX;AAfD,WAAY,uBAAuB;IACjC,oCAAoC;IACpC,sDAA2B,CAAA;IAC3B,iCAAiC;IACjC,8CAAmB,CAAA;IACnB,sBAAsB;IACtB,gDAAqB,CAAA;IACrB,0BAA0B;IAC1B,sDAA2B,CAAA;IAC3B,0BAA0B;IAC1B,sDAA2B,CAAA;IAC3B,6BAA6B;IAC7B,gDAAqB,CAAA;IACrB,8BAA8B;IAC9B,0CAAe,CAAA;AACjB,CAAC,EAfW,uBAAuB,uCAAvB,uBAAuB,QAelC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
2
|
import type { ASTNode } from 'graphql';
|
|
3
3
|
import type { PactV4Options, V4InteractionWithRequest } from '../http/types';
|
|
4
|
-
import { type
|
|
4
|
+
import { type GraphqlRequest, type V4GraphQLInteractionWithRequest } from './types';
|
|
5
5
|
export declare class GraphQLInteractionWithRequest implements V4GraphQLInteractionWithRequest {
|
|
6
6
|
protected pact: ConsumerPact;
|
|
7
7
|
protected interaction: ConsumerInteraction;
|
|
@@ -4,9 +4,9 @@ exports.GraphQLInteractionWithRequest = void 0;
|
|
|
4
4
|
const lodash_1 = require("lodash");
|
|
5
5
|
const ramda_1 = require("ramda");
|
|
6
6
|
const graphQL_1 = require("../../common/graphQL/graphQL");
|
|
7
|
+
const matchers_1 = require("../../v3/matchers");
|
|
7
8
|
const interactionWithRequest_1 = require("../http/interactionWithRequest");
|
|
8
9
|
const types_1 = require("./types");
|
|
9
|
-
const matchers_1 = require("../../v3/matchers");
|
|
10
10
|
class GraphQLInteractionWithRequest {
|
|
11
11
|
pact;
|
|
12
12
|
interaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphQLInteractionWithRequest.js","sourceRoot":"","sources":["../../../../src/v4/graphql/graphQLInteractionWithRequest.ts"],"names":[],"mappings":";;;AAKA,mCAAqC;AACrC,iCAA+B;AAE/B,0DAGsC;AACtC,2EAAwE;AAExE,mCAIiB;
|
|
1
|
+
{"version":3,"file":"graphQLInteractionWithRequest.js","sourceRoot":"","sources":["../../../../src/v4/graphql/graphQLInteractionWithRequest.ts"],"names":[],"mappings":";;;AAKA,mCAAqC;AACrC,iCAA+B;AAE/B,0DAGsC;AACtC,gDAA0C;AAC1C,2EAAwE;AAExE,mCAIiB;AAEjB,MAAa,6BAA6B;IAK5B;IACA;IACA;IACA;IACA;IANZ,mCAAmC;IACnC,YACY,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACnB,SAAqB,EACrB,cAA8B;QAJ9B,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACnB,cAAS,GAAT,SAAS,CAAY;QACrB,mBAAc,GAAd,cAAc,CAAgB;IACvC,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAS,CAAC,KAAuB;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,qBAAa,CAAC,KAAK,CAAC,CAAC;IAC1D,CAAC;IAED,YAAY,CAAC,QAA0B;QACrC,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,qBAAa,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC;IAEO,eAAe,CACrB,KAAuB,EACvB,IAAmB;QAEnB,MAAM,cAAc,GAAG,IAAA,uBAAa,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,WAAW,CAAC,eAAe,CAC9B,IAAI,CAAC,SAAS,CACZ,IAAA,cAAM,EAAC,oBAAW,EAAE;YAClB,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS;YAC5C,KAAK,EAAE,IAAA,gBAAK,EAAC,IAAA,4BAAkB,EAAC,cAAc,CAAC,EAAE,cAAc,CAAC;YAChE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,SAAS;SACzC,CAAC,CACH,EACD,kBAAkB,CACnB,CAAC;QAEF,OAAO,IAAI,+CAAsB,CAC/B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF;AAhED,sEAgEC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { TemplateHeaders, TemplateQuery } from '../../v3';
|
|
3
3
|
import type { V4GraphQLRequestBuilder } from './types';
|
|
4
4
|
export declare class GraphQLRequestBuilder implements V4GraphQLRequestBuilder {
|
|
5
5
|
protected interaction: ConsumerInteraction;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
|
-
import type {
|
|
3
|
-
import type { PactV4Options } from '../http/types';
|
|
2
|
+
import type { GraphQLVariables } from '../../common/graphQL/graphQL';
|
|
4
3
|
import type { JsonMap } from '../../common/jsonTypes';
|
|
5
4
|
import type { Path } from '../../v3';
|
|
6
|
-
import type {
|
|
5
|
+
import type { PactV4Options } from '../http/types';
|
|
6
|
+
import type { V4GraphQLInteractionWithRequest, V4GraphQLRequestBuilderFunc, V4UnconfiguredGraphQLInteraction } from './types';
|
|
7
7
|
export declare class UnconfiguredGraphQLInteraction implements V4UnconfiguredGraphQLInteraction {
|
|
8
8
|
protected pact: ConsumerPact;
|
|
9
9
|
protected interaction: ConsumerInteraction;
|
package/src/v4/graphql/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UnconfiguredGraphQLInteraction = void 0;
|
|
4
4
|
const matchers_1 = require("../../v3/matchers");
|
|
5
|
-
const graphQLRequestBuilder_1 = require("./graphQLRequestBuilder");
|
|
6
5
|
const graphQLInteractionWithRequest_1 = require("./graphQLInteractionWithRequest");
|
|
6
|
+
const graphQLRequestBuilder_1 = require("./graphQLRequestBuilder");
|
|
7
7
|
class UnconfiguredGraphQLInteraction {
|
|
8
8
|
pact;
|
|
9
9
|
interaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/graphql/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/graphql/index.ts"],"names":[],"mappings":";;;AAOA,gDAAyD;AAEzD,mFAAgF;AAChF,mEAAgE;AAQhE,MAAa,8BAA8B;IAO7B;IACA;IACA;IACA;IAPJ,cAAc,CAAiB;IAEvC,mCAAmC;IACnC,YACY,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACnB,SAAqB;QAHrB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACnB,cAAS,GAAT,SAAS,CAAY;QAE/B,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa,CAAC,SAAiB;QAC7B,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAA2B;QACvC,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,CAAC;QAE1C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,WAAmB;QAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,UAAoB;QACvC,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CACT,MAAc,EACd,IAAU,EACV,OAAqC;QAErC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,6CAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,6DAA6B,CACtC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,CACpB,CAAC;IACJ,CAAC;CACF;AA7DD,wEA6DC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ASTNode } from 'graphql';
|
|
2
|
+
import type { GraphQLVariables } from '../../common/graphQL/graphQL';
|
|
2
3
|
import type { JsonMap } from '../../common/jsonTypes';
|
|
3
4
|
import type { Path, TemplateHeaders, TemplateQuery } from '../../v3';
|
|
4
5
|
import type { V4InteractionWithRequest } from '../http/types';
|
|
5
|
-
import type { GraphQLVariables } from '../../common/graphQL/graphQL';
|
|
6
6
|
export declare enum OperationType {
|
|
7
7
|
Mutation = "Mutation",
|
|
8
8
|
Query = "Query"
|
package/src/v4/http/index.js
CHANGED
|
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.executeTest = exports.readBinaryData = void 0;
|
|
7
7
|
const fs = require("node:fs");
|
|
8
|
-
const display_1 = require("../../v3/display");
|
|
9
8
|
const logger_1 = __importDefault(require("../../common/logger"));
|
|
9
|
+
const display_1 = require("../../v3/display");
|
|
10
10
|
const readBinaryData = (file) => {
|
|
11
11
|
try {
|
|
12
12
|
const body = fs.readFileSync(file);
|
|
@@ -29,7 +29,12 @@ const cleanup = (success, pact, opts, server, cleanupFn) => {
|
|
|
29
29
|
const executeTest = async (pact, opts, testFn, cleanupFn) => {
|
|
30
30
|
const scheme = opts.tls ? 'https' : 'http';
|
|
31
31
|
const host = opts.host || '127.0.0.1';
|
|
32
|
-
const
|
|
32
|
+
const cors = opts.cors ?? true;
|
|
33
|
+
const config = JSON.stringify({ corsPreflight: cors });
|
|
34
|
+
const port = pact.pactffiCreateMockServerForTransport(host, scheme, config, opts.port);
|
|
35
|
+
if (port <= 0) {
|
|
36
|
+
throw new Error(`Failed to start mock server: received error code ${port}`);
|
|
37
|
+
}
|
|
33
38
|
const server = { port, url: `${scheme}://${host}:${port}`, id: 'unknown' };
|
|
34
39
|
let val;
|
|
35
40
|
let error;
|
package/src/v4/http/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/http/index.ts"],"names":[],"mappings":";;;;;;AAAA,8BAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/http/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const _1 = require(".");
|
|
5
|
+
describe('V4 HTTP executeTest', () => {
|
|
6
|
+
afterEach(() => {
|
|
7
|
+
vitest_1.vi.restoreAllMocks();
|
|
8
|
+
});
|
|
9
|
+
const buildPactMock = (port) => {
|
|
10
|
+
return {
|
|
11
|
+
pactffiCreateMockServerForTransport: vitest_1.vi.fn().mockReturnValue(port),
|
|
12
|
+
mockServerMatchedSuccessfully: vitest_1.vi.fn().mockReturnValue(true),
|
|
13
|
+
mockServerMismatches: vitest_1.vi.fn().mockReturnValue([]),
|
|
14
|
+
cleanupMockServer: vitest_1.vi.fn().mockReturnValue(true),
|
|
15
|
+
writePactFile: vitest_1.vi.fn(),
|
|
16
|
+
cleanupPlugins: vitest_1.vi.fn(),
|
|
17
|
+
addPlugin: vitest_1.vi.fn(),
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
const baseOpts = { consumer: 'A', provider: 'B' };
|
|
21
|
+
describe('CORS option', () => {
|
|
22
|
+
it('passes corsPreflight: true by default when cors is not specified', async () => {
|
|
23
|
+
const pactMock = buildPactMock(1234);
|
|
24
|
+
await (0, _1.executeTest)(pactMock, baseOpts, async () => Promise.resolve(), () => { });
|
|
25
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
26
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
27
|
+
expect(stub).toHaveBeenCalledOnce();
|
|
28
|
+
const [, , config] = stub.mock.calls[0];
|
|
29
|
+
expect(JSON.parse(config)).toEqual({ corsPreflight: true });
|
|
30
|
+
});
|
|
31
|
+
it('passes corsPreflight: true when cors is explicitly true', async () => {
|
|
32
|
+
const pactMock = buildPactMock(1234);
|
|
33
|
+
await (0, _1.executeTest)(pactMock, { ...baseOpts, cors: true }, async () => Promise.resolve(), () => { });
|
|
34
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
35
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
36
|
+
const [, , config] = stub.mock.calls[0];
|
|
37
|
+
expect(JSON.parse(config)).toEqual({ corsPreflight: true });
|
|
38
|
+
});
|
|
39
|
+
it('passes corsPreflight: false when cors is explicitly false', async () => {
|
|
40
|
+
const pactMock = buildPactMock(1234);
|
|
41
|
+
await (0, _1.executeTest)(pactMock, { ...baseOpts, cors: false }, async () => Promise.resolve(), () => { });
|
|
42
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
43
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
44
|
+
const [, , config] = stub.mock.calls[0];
|
|
45
|
+
expect(JSON.parse(config)).toEqual({ corsPreflight: false });
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('transport scheme', () => {
|
|
49
|
+
it('uses http scheme by default', async () => {
|
|
50
|
+
const pactMock = buildPactMock(1234);
|
|
51
|
+
await (0, _1.executeTest)(pactMock, baseOpts, async () => Promise.resolve(), () => { });
|
|
52
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
53
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
54
|
+
const [, transport] = stub.mock.calls[0];
|
|
55
|
+
expect(transport).toBe('http');
|
|
56
|
+
});
|
|
57
|
+
it('uses https scheme when tls is true', async () => {
|
|
58
|
+
const pactMock = buildPactMock(1234);
|
|
59
|
+
await (0, _1.executeTest)(pactMock, { ...baseOpts, tls: true }, async () => Promise.resolve(), () => { });
|
|
60
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing vitest mock internals after ConsumerPact cast
|
|
61
|
+
const stub = pactMock.pactffiCreateMockServerForTransport;
|
|
62
|
+
const [, transport] = stub.mock.calls[0];
|
|
63
|
+
expect(transport).toBe('https');
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('when the mock server fails to start', () => {
|
|
67
|
+
it('throws an error when port is 0 or negative', async () => {
|
|
68
|
+
const pactMock = buildPactMock(-3);
|
|
69
|
+
await expect((0, _1.executeTest)(pactMock, baseOpts, async () => Promise.resolve(), () => { })).rejects.toThrow('Failed to start mock server');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=index.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../../src/v4/http/index.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { V4InteractionWithCompleteRequest,
|
|
1
|
+
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
|
+
import type { PactV4Options, V4InteractionWithCompleteRequest, V4InteractionWithResponse, V4Response } from './types';
|
|
3
3
|
export declare class InteractionWithCompleteRequest implements V4InteractionWithCompleteRequest {
|
|
4
4
|
protected cleanupFn: () => void;
|
|
5
5
|
constructor(_pact: ConsumerPact, _interaction: ConsumerInteraction, _opts: PactV4Options, cleanupFn: () => void);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
2
|
import type { Path } from '../../v3';
|
|
3
|
-
import type {
|
|
3
|
+
import type { PactV4Options, PluginConfig, V4InteractionWithPlugin, V4InteractionWithPluginRequest, V4PluginRequestBuilderFunc } from './types';
|
|
4
4
|
export declare class InteractionWithPlugin implements V4InteractionWithPlugin {
|
|
5
5
|
private pact;
|
|
6
6
|
private interaction;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InteractionWithPlugin = void 0;
|
|
4
|
-
const requestWithPluginBuilder_1 = require("./requestWithPluginBuilder");
|
|
5
|
-
const interactionWithPluginRequest_1 = require("./interactionWithPluginRequest");
|
|
6
4
|
const matchers_1 = require("../../v3/matchers");
|
|
5
|
+
const interactionWithPluginRequest_1 = require("./interactionWithPluginRequest");
|
|
6
|
+
const requestWithPluginBuilder_1 = require("./requestWithPluginBuilder");
|
|
7
7
|
class InteractionWithPlugin {
|
|
8
8
|
pact;
|
|
9
9
|
interaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionWithPlugin.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithPlugin.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"interactionWithPlugin.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithPlugin.ts"],"names":[],"mappings":";;;AAKA,gDAAyD;AACzD,iFAA8E;AAC9E,yEAAsE;AAStE,MAAa,qBAAqB;IAGtB;IACA;IACA;IACE;IALZ,mCAAmC;IACnC,YACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACjB,SAAqB;QAHvB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACjB,cAAS,GAAT,SAAS,CAAY;IAC9B,CAAC;IAEJ,+BAA+B;IAC/B,WAAW,CAAC,MAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CACT,MAAc,EACd,IAAU,EACV,OAAoC;QAEpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,mDAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,2DAA4B,CACrC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF;AAjCD,sDAiCC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { V4InteractionWithPluginRequest,
|
|
1
|
+
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
|
+
import type { PactV4Options, V4InteractionWithPluginRequest, V4InteractionWithPluginResponse, V4PluginResponseBuilderFunc } from './types';
|
|
3
|
+
import type { StatusCodeMatcher } from '../../v3';
|
|
3
4
|
export declare class InteractionWithPluginRequest implements V4InteractionWithPluginRequest {
|
|
4
5
|
private pact;
|
|
5
6
|
private interaction;
|
|
6
7
|
private opts;
|
|
7
8
|
protected cleanupFn: () => void;
|
|
8
9
|
constructor(pact: ConsumerPact, interaction: ConsumerInteraction, opts: PactV4Options, cleanupFn: () => void);
|
|
9
|
-
willRespondWith(status: number
|
|
10
|
+
willRespondWith(status: number | StatusCodeMatcher<number>, builder?: V4PluginResponseBuilderFunc): V4InteractionWithPluginResponse;
|
|
10
11
|
}
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InteractionWithPluginRequest = void 0;
|
|
4
4
|
const interactionWithPluginResponse_1 = require("./interactionWithPluginResponse");
|
|
5
5
|
const responseWithPluginBuilder_1 = require("./responseWithPluginBuilder");
|
|
6
|
+
const matchers_1 = require("../../v3/matchers");
|
|
7
|
+
const matchingRules_1 = require("../../common/matchingRules");
|
|
6
8
|
class InteractionWithPluginRequest {
|
|
7
9
|
pact;
|
|
8
10
|
interaction;
|
|
@@ -16,7 +18,10 @@ class InteractionWithPluginRequest {
|
|
|
16
18
|
this.cleanupFn = cleanupFn;
|
|
17
19
|
}
|
|
18
20
|
willRespondWith(status, builder) {
|
|
19
|
-
this.interaction.withStatus(status);
|
|
21
|
+
this.interaction.withStatus((0, matchers_1.reify)(status));
|
|
22
|
+
if ((0, matchers_1.isStatusCodeMatcher)(status)) {
|
|
23
|
+
this.interaction.withResponseMatchingRules(JSON.stringify((0, matchingRules_1.convertStatusMatcherToFFI)(status)));
|
|
24
|
+
}
|
|
20
25
|
if (typeof builder === 'function') {
|
|
21
26
|
builder(new responseWithPluginBuilder_1.ResponseWithPluginBuilder(this.interaction));
|
|
22
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionWithPluginRequest.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithPluginRequest.ts"],"names":[],"mappings":";;;AAIA,mFAAgF;AAChF,2EAAwE;AAQxE,MAAa,4BAA4B;IAK7B;IACA;IACA;IACE;IALZ,mCAAmC;IACnC,YACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACjB,SAAqB;QAHvB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACjB,cAAS,GAAT,SAAS,CAAY;IAC9B,CAAC;IAEJ,eAAe,CACb,
|
|
1
|
+
{"version":3,"file":"interactionWithPluginRequest.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithPluginRequest.ts"],"names":[],"mappings":";;;AAIA,mFAAgF;AAChF,2EAAwE;AAQxE,gDAA+D;AAC/D,8DAAuE;AAEvE,MAAa,4BAA4B;IAK7B;IACA;IACA;IACE;IALZ,mCAAmC;IACnC,YACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACjB,SAAqB;QAHvB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACjB,cAAS,GAAT,SAAS,CAAY;IAC9B,CAAC;IAEJ,eAAe,CACb,MAA0C,EAC1C,OAAqC;QAErC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAA,gBAAK,EAAS,MAAM,CAAC,CAAC,CAAC;QAEnD,IAAI,IAAA,8BAAmB,EAAC,MAAM,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACxC,IAAI,CAAC,SAAS,CAAC,IAAA,yCAAyB,EAAC,MAAM,CAAC,CAAC,CAClD,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,qDAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,IAAI,6DAA6B,CACtC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF;AAjCD,oEAiCC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { PactV4Options, V4InteractionWithPluginResponse, V4MockServer } from './types';
|
|
3
3
|
export declare class InteractionWithPluginResponse implements V4InteractionWithPluginResponse {
|
|
4
4
|
private pact;
|
|
5
5
|
private opts;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { V4InteractionWithRequest,
|
|
1
|
+
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
|
+
import type { PactV4Options, V4InteractionWithRequest, V4InteractionWithResponse, V4ResponseBuilderFunc } from './types';
|
|
3
|
+
import type { StatusCodeMatcher } from '../../v3';
|
|
3
4
|
export declare class InteractionWithRequest implements V4InteractionWithRequest {
|
|
4
5
|
private pact;
|
|
5
6
|
private interaction;
|
|
6
7
|
private opts;
|
|
7
8
|
protected cleanupFn: () => void;
|
|
8
9
|
constructor(pact: ConsumerPact, interaction: ConsumerInteraction, opts: PactV4Options, cleanupFn: () => void);
|
|
9
|
-
willRespondWith(status: number
|
|
10
|
+
willRespondWith(status: number | StatusCodeMatcher<number>, builder?: V4ResponseBuilderFunc): V4InteractionWithResponse;
|
|
10
11
|
}
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InteractionWithRequest = void 0;
|
|
4
4
|
const interactionWithResponse_1 = require("./interactionWithResponse");
|
|
5
5
|
const responseBuilder_1 = require("./responseBuilder");
|
|
6
|
+
const matchers_1 = require("../../v3/matchers");
|
|
7
|
+
const matchingRules_1 = require("../../common/matchingRules");
|
|
6
8
|
class InteractionWithRequest {
|
|
7
9
|
pact;
|
|
8
10
|
interaction;
|
|
@@ -16,7 +18,10 @@ class InteractionWithRequest {
|
|
|
16
18
|
this.cleanupFn = cleanupFn;
|
|
17
19
|
}
|
|
18
20
|
willRespondWith(status, builder) {
|
|
19
|
-
this.interaction.withStatus(status);
|
|
21
|
+
this.interaction.withStatus((0, matchers_1.reify)(status));
|
|
22
|
+
if ((0, matchers_1.isStatusCodeMatcher)(status)) {
|
|
23
|
+
this.interaction.withResponseMatchingRules(JSON.stringify((0, matchingRules_1.convertStatusMatcherToFFI)(status)));
|
|
24
|
+
}
|
|
20
25
|
if (typeof builder === 'function') {
|
|
21
26
|
builder(new responseBuilder_1.ResponseBuilder(this.interaction));
|
|
22
27
|
}
|