@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactionWithRequest.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithRequest.ts"],"names":[],"mappings":";;;AAIA,uEAAoE;AACpE,uDAAoD;AAQpD,MAAa,sBAAsB;IAGvB;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":"interactionWithRequest.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithRequest.ts"],"names":[],"mappings":";;;AAIA,uEAAoE;AACpE,uDAAoD;AAQpD,gDAA+D;AAC/D,8DAAuE;AAEvE,MAAa,sBAAsB;IAGvB;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,OAA+B;QAE/B,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,iCAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,iDAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;CACF;AA3BD,wDA2BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const interactionWithRequest_1 = require("./interactionWithRequest");
|
|
5
|
+
const matchers_1 = require("../../v3/matchers");
|
|
6
|
+
describe('InteractionWithRequest', () => {
|
|
7
|
+
let withStatus;
|
|
8
|
+
let withResponseMatchingRules;
|
|
9
|
+
let interaction;
|
|
10
|
+
let pact;
|
|
11
|
+
let cleanupFn;
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
withStatus = vitest_1.vi.fn();
|
|
14
|
+
withResponseMatchingRules = vitest_1.vi.fn();
|
|
15
|
+
interaction = {
|
|
16
|
+
withStatus,
|
|
17
|
+
withResponseMatchingRules,
|
|
18
|
+
};
|
|
19
|
+
pact = {
|
|
20
|
+
pactffiCreateMockServerForTransport: vitest_1.vi.fn().mockReturnValue(1234),
|
|
21
|
+
mockServerMatchedSuccessfully: vitest_1.vi.fn().mockReturnValue(true),
|
|
22
|
+
mockServerMismatches: vitest_1.vi.fn().mockReturnValue([]),
|
|
23
|
+
cleanupMockServer: vitest_1.vi.fn().mockReturnValue(true),
|
|
24
|
+
writePactFile: vitest_1.vi.fn(),
|
|
25
|
+
cleanupPlugins: vitest_1.vi.fn(),
|
|
26
|
+
};
|
|
27
|
+
cleanupFn = vitest_1.vi.fn();
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => {
|
|
30
|
+
vitest_1.vi.restoreAllMocks();
|
|
31
|
+
});
|
|
32
|
+
describe('#willRespondWith', () => {
|
|
33
|
+
it('calls withStatus with a plain number', () => {
|
|
34
|
+
const req = new interactionWithRequest_1.InteractionWithRequest(pact, interaction, { consumer: 'A', provider: 'B' }, cleanupFn);
|
|
35
|
+
req.willRespondWith(200);
|
|
36
|
+
expect(withStatus).toHaveBeenCalledOnce();
|
|
37
|
+
expect(withStatus).toHaveBeenCalledWith(200);
|
|
38
|
+
expect(withResponseMatchingRules).not.toHaveBeenCalled();
|
|
39
|
+
});
|
|
40
|
+
it('calls withStatus with the example value from a StatusCodeMatcher', () => {
|
|
41
|
+
const req = new interactionWithRequest_1.InteractionWithRequest(pact, interaction, { consumer: 'A', provider: 'B' }, cleanupFn);
|
|
42
|
+
const matcher = (0, matchers_1.matchStatus)(200, matchers_1.HTTPResponseStatusClass.Success);
|
|
43
|
+
req.willRespondWith(matcher);
|
|
44
|
+
expect(withStatus).toHaveBeenCalledOnce();
|
|
45
|
+
expect(withStatus).toHaveBeenCalledWith(200);
|
|
46
|
+
});
|
|
47
|
+
it('calls withResponseMatchingRules with status class matcher FFI format', () => {
|
|
48
|
+
const req = new interactionWithRequest_1.InteractionWithRequest(pact, interaction, { consumer: 'A', provider: 'B' }, cleanupFn);
|
|
49
|
+
const matcher = (0, matchers_1.matchStatus)(200, matchers_1.HTTPResponseStatusClass.Success);
|
|
50
|
+
req.willRespondWith(matcher);
|
|
51
|
+
expect(withResponseMatchingRules).toHaveBeenCalledOnce();
|
|
52
|
+
const rulesJson = JSON.parse(withResponseMatchingRules.mock.calls[0][0]);
|
|
53
|
+
expect(rulesJson).toEqual({
|
|
54
|
+
status: {
|
|
55
|
+
$: {
|
|
56
|
+
matchers: [{ match: 'statusCode', status: 'success' }],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
it('calls withResponseMatchingRules with specific status code matcher format', () => {
|
|
62
|
+
const req = new interactionWithRequest_1.InteractionWithRequest(pact, interaction, { consumer: 'A', provider: 'B' }, cleanupFn);
|
|
63
|
+
const matcher = (0, matchers_1.matchStatus)(200, [200, 201]);
|
|
64
|
+
req.willRespondWith(matcher);
|
|
65
|
+
expect(withResponseMatchingRules).toHaveBeenCalledOnce();
|
|
66
|
+
const rulesJson = JSON.parse(withResponseMatchingRules.mock.calls[0][0]);
|
|
67
|
+
expect(rulesJson).toEqual({
|
|
68
|
+
status: {
|
|
69
|
+
$: {
|
|
70
|
+
matchers: [{ match: 'statusCode', status: [200, 201] }],
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
it('does not call withResponseMatchingRules for a plain number', () => {
|
|
76
|
+
const req = new interactionWithRequest_1.InteractionWithRequest(pact, interaction, { consumer: 'A', provider: 'B' }, cleanupFn);
|
|
77
|
+
req.willRespondWith(201);
|
|
78
|
+
expect(withResponseMatchingRules).not.toHaveBeenCalled();
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=interactionWithRequest.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactionWithRequest.spec.js","sourceRoot":"","sources":["../../../../src/v4/http/interactionWithRequest.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { PactV4Options, TestFunction, V4InteractionWithResponse } from './types';
|
|
3
3
|
export declare class InteractionWithResponse implements V4InteractionWithResponse {
|
|
4
4
|
private pact;
|
|
5
5
|
private opts;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Rules, TemplateHeaders, TemplateQuery } from '../../v3';
|
|
3
3
|
import type { V4RequestBuilder } from './types';
|
|
4
4
|
export declare class RequestBuilder implements V4RequestBuilder {
|
|
5
5
|
protected interaction: ConsumerInteraction;
|
|
@@ -7,6 +7,7 @@ export declare class RequestBuilder implements V4RequestBuilder {
|
|
|
7
7
|
query(query: TemplateQuery): V4RequestBuilder;
|
|
8
8
|
headers(headers: TemplateHeaders): V4RequestBuilder;
|
|
9
9
|
jsonBody(body: unknown): V4RequestBuilder;
|
|
10
|
+
xmlBody(body: unknown): V4RequestBuilder;
|
|
10
11
|
binaryFile(contentType: string, file: string): V4RequestBuilder;
|
|
11
12
|
/**
|
|
12
13
|
* Sets the request body as multipart/form-data content.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.RequestBuilder = void 0;
|
|
4
4
|
const ramda_1 = require("ramda");
|
|
5
|
+
const matchingRules_1 = require("../../common/matchingRules");
|
|
5
6
|
const matchers_1 = require("../../v3/matchers");
|
|
6
7
|
const _1 = require(".");
|
|
7
|
-
const matchingRules_1 = require("../../common/matchingRules");
|
|
8
8
|
class RequestBuilder {
|
|
9
9
|
interaction;
|
|
10
10
|
// tslint:disable:no-empty-function
|
|
@@ -41,6 +41,10 @@ class RequestBuilder {
|
|
|
41
41
|
this.interaction.withRequestBody((0, matchers_1.matcherValueOrString)(body), 'application/json');
|
|
42
42
|
return this;
|
|
43
43
|
}
|
|
44
|
+
xmlBody(body) {
|
|
45
|
+
this.interaction.withRequestBody((0, matchers_1.matcherValueOrString)(body), 'application/xml');
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
44
48
|
binaryFile(contentType, file) {
|
|
45
49
|
const body = (0, _1.readBinaryData)(file);
|
|
46
50
|
this.interaction.withRequestBinaryBody(body, contentType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestBuilder.js","sourceRoot":"","sources":["../../../../src/v4/http/requestBuilder.ts"],"names":[],"mappings":";;;AACA,iCAA0C;
|
|
1
|
+
{"version":3,"file":"requestBuilder.js","sourceRoot":"","sources":["../../../../src/v4/http/requestBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const v4_1 = require("../../v4");
|
|
5
|
+
const requestBuilder_1 = require("./requestBuilder");
|
|
6
|
+
describe('V4 RequestBuilder', () => {
|
|
7
|
+
let withRequestBody;
|
|
8
|
+
let interaction;
|
|
9
|
+
let builder;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
withRequestBody = vitest_1.vi.fn();
|
|
12
|
+
interaction = { withRequestBody };
|
|
13
|
+
builder = new requestBuilder_1.RequestBuilder(interaction);
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
vitest_1.vi.restoreAllMocks();
|
|
17
|
+
});
|
|
18
|
+
describe('#xmlBody', () => {
|
|
19
|
+
it('calls withRequestBody with application/xml content type', () => {
|
|
20
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build((el) => {
|
|
21
|
+
el.appendElement('item', new Map(), 'value');
|
|
22
|
+
});
|
|
23
|
+
builder.xmlBody(body);
|
|
24
|
+
expect(withRequestBody).toHaveBeenCalledOnce();
|
|
25
|
+
expect(withRequestBody).toHaveBeenCalledWith(body, 'application/xml');
|
|
26
|
+
});
|
|
27
|
+
it('supports XmlBuilder with matchers', () => {
|
|
28
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'items').build((el) => {
|
|
29
|
+
el.eachLike('item', new Map(), (item) => item.appendText('value'));
|
|
30
|
+
});
|
|
31
|
+
builder.xmlBody(body);
|
|
32
|
+
expect(withRequestBody).toHaveBeenCalledOnce();
|
|
33
|
+
expect(withRequestBody).toHaveBeenCalledWith(body, 'application/xml');
|
|
34
|
+
});
|
|
35
|
+
it('returns the builder for chaining', () => {
|
|
36
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build(() => { });
|
|
37
|
+
const result = builder.xmlBody(body);
|
|
38
|
+
expect(result).toBe(builder);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=requestBuilder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestBuilder.spec.js","sourceRoot":"","sources":["../../../../src/v4/http/requestBuilder.spec.ts"],"names":[],"mappings":";;AACA,mCAA4B;AAC5B,iCAAsC;AACtC,qDAAkD;AAElD,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,IAAI,eAAyC,CAAC;IAC9C,IAAI,WAAgC,CAAC;IACrC,IAAI,OAAuB,CAAC;IAE5B,UAAU,CAAC,GAAG,EAAE;QACd,eAAe,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,WAAW,GAAG,EAAE,eAAe,EAAoC,CAAC;QACpE,OAAO,GAAG,IAAI,+BAAc,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/D,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC/C,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAChE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC/C,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -6,6 +6,7 @@ export declare class RequestWithPluginBuilder extends RequestBuilder implements
|
|
|
6
6
|
query(query: TemplateQuery): V4RequestWithPluginBuilder;
|
|
7
7
|
headers(headers: TemplateHeaders): V4RequestWithPluginBuilder;
|
|
8
8
|
jsonBody(body: unknown): V4RequestWithPluginBuilder;
|
|
9
|
+
xmlBody(body: unknown): V4RequestWithPluginBuilder;
|
|
9
10
|
binaryFile(contentType: string, file: string): V4RequestWithPluginBuilder;
|
|
10
11
|
/**
|
|
11
12
|
* Sets the request body as multipart/form-data content for plugin-based interactions.
|
|
@@ -19,6 +19,10 @@ class RequestWithPluginBuilder extends requestBuilder_1.RequestBuilder {
|
|
|
19
19
|
super.jsonBody(body);
|
|
20
20
|
return this;
|
|
21
21
|
}
|
|
22
|
+
xmlBody(body) {
|
|
23
|
+
super.xmlBody(body);
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
22
26
|
binaryFile(contentType, file) {
|
|
23
27
|
super.binaryFile(contentType, file);
|
|
24
28
|
return this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestWithPluginBuilder.js","sourceRoot":"","sources":["../../../../src/v4/http/requestWithPluginBuilder.ts"],"names":[],"mappings":";;;AACA,qDAAkD;AAGlD,MAAa,wBACX,SAAQ,+BAAc;IAGtB,cAAc,CACZ,WAAmB,EACnB,QAAgB;QAEhB,IAAI,CAAC,WAAW,CAAC,oCAAoC,CACnD,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAoB;QACxB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAwB;QAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAa;QACpB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,WAAmB,EAAE,IAAY;QAC1C,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CACX,WAAmB,EACnB,IAAY,EACZ,YAAoB,EACpB,QAAiB;QAEjB,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAY;QACxB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"requestWithPluginBuilder.js","sourceRoot":"","sources":["../../../../src/v4/http/requestWithPluginBuilder.ts"],"names":[],"mappings":";;;AACA,qDAAkD;AAGlD,MAAa,wBACX,SAAQ,+BAAc;IAGtB,cAAc,CACZ,WAAmB,EACnB,QAAgB;QAEhB,IAAI,CAAC,WAAW,CAAC,oCAAoC,CACnD,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAoB;QACxB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAwB;QAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAa;QACpB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAEpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,WAAmB,EAAE,IAAY;QAC1C,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CACX,WAAmB,EACnB,IAAY,EACZ,YAAoB,EACpB,QAAiB;QAEjB,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAY;QACxB,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAE9B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArFD,4DAqFC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const v4_1 = require("../../v4");
|
|
5
|
+
const requestWithPluginBuilder_1 = require("./requestWithPluginBuilder");
|
|
6
|
+
describe('V4 RequestWithPluginBuilder', () => {
|
|
7
|
+
let withRequestBody;
|
|
8
|
+
let interaction;
|
|
9
|
+
let builder;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
withRequestBody = vitest_1.vi.fn();
|
|
12
|
+
interaction = { withRequestBody };
|
|
13
|
+
builder = new requestWithPluginBuilder_1.RequestWithPluginBuilder(interaction);
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
vitest_1.vi.restoreAllMocks();
|
|
17
|
+
});
|
|
18
|
+
describe('#xmlBody', () => {
|
|
19
|
+
it('delegates to parent and calls withRequestBody with application/xml', () => {
|
|
20
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build((el) => {
|
|
21
|
+
el.appendElement('item', new Map(), 'value');
|
|
22
|
+
});
|
|
23
|
+
builder.xmlBody(body);
|
|
24
|
+
expect(withRequestBody).toHaveBeenCalledOnce();
|
|
25
|
+
expect(withRequestBody).toHaveBeenCalledWith(body, 'application/xml');
|
|
26
|
+
});
|
|
27
|
+
it('returns a V4RequestWithPluginBuilder for chaining', () => {
|
|
28
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build(() => { });
|
|
29
|
+
const result = builder.xmlBody(body);
|
|
30
|
+
expect(result).toBe(builder);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=requestWithPluginBuilder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestWithPluginBuilder.spec.js","sourceRoot":"","sources":["../../../../src/v4/http/requestWithPluginBuilder.spec.ts"],"names":[],"mappings":";;AACA,mCAA4B;AAC5B,iCAAsC;AACtC,yEAAsE;AAEtE,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,IAAI,eAAyC,CAAC;IAC9C,IAAI,WAAgC,CAAC;IACrC,IAAI,OAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE;QACd,eAAe,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,WAAW,GAAG,EAAE,eAAe,EAAoC,CAAC;QACpE,OAAO,GAAG,IAAI,mDAAwB,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/D,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAC/C,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
-
import type {
|
|
2
|
+
import type { Rules, TemplateHeaders } from '../../v3';
|
|
3
3
|
import type { V4ResponseBuilder } from './types';
|
|
4
4
|
export declare class ResponseBuilder implements V4ResponseBuilder {
|
|
5
5
|
protected interaction: ConsumerInteraction;
|
|
6
6
|
constructor(interaction: ConsumerInteraction);
|
|
7
7
|
headers(headers: TemplateHeaders): V4ResponseBuilder;
|
|
8
8
|
jsonBody(body: unknown): V4ResponseBuilder;
|
|
9
|
+
xmlBody(body: unknown): V4ResponseBuilder;
|
|
9
10
|
binaryFile(contentType: string, file: string): V4ResponseBuilder;
|
|
10
11
|
/**
|
|
11
12
|
* Sets the response body as multipart/form-data content.
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResponseBuilder = void 0;
|
|
4
4
|
const ramda_1 = require("ramda");
|
|
5
|
-
const _1 = require(".");
|
|
6
|
-
const matchers_1 = require("../../v3/matchers");
|
|
7
5
|
const matchingRules_1 = require("../../common/matchingRules");
|
|
6
|
+
const matchers_1 = require("../../v3/matchers");
|
|
7
|
+
const _1 = require(".");
|
|
8
8
|
class ResponseBuilder {
|
|
9
9
|
interaction;
|
|
10
10
|
constructor(interaction) {
|
|
@@ -20,6 +20,10 @@ class ResponseBuilder {
|
|
|
20
20
|
this.interaction.withResponseBody((0, matchers_1.matcherValueOrString)(body), 'application/json');
|
|
21
21
|
return this;
|
|
22
22
|
}
|
|
23
|
+
xmlBody(body) {
|
|
24
|
+
this.interaction.withResponseBody((0, matchers_1.matcherValueOrString)(body), 'application/xml');
|
|
25
|
+
return this;
|
|
26
|
+
}
|
|
23
27
|
binaryFile(contentType, file) {
|
|
24
28
|
const body = (0, _1.readBinaryData)(file);
|
|
25
29
|
this.interaction.withResponseBinaryBody(body, contentType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseBuilder.js","sourceRoot":"","sources":["../../../../src/v4/http/responseBuilder.ts"],"names":[],"mappings":";;;AACA,iCAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"responseBuilder.js","sourceRoot":"","sources":["../../../../src/v4/http/responseBuilder.ts"],"names":[],"mappings":";;;AACA,iCAA0C;AAC1C,8DAA8E;AAE9E,gDAAyD;AACzD,wBAAmC;AAGnC,MAAa,eAAe;IAChB,WAAW,CAAsB;IAE3C,YAAY,WAAgC;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,OAAO,CAAC,OAAwB;QAC9B,IAAA,yBAAiB,EAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAa;QACpB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAA,+BAAoB,EAAC,IAAI,CAAC,EAC1B,kBAAkB,CACnB,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAa;QACnB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAA,+BAAoB,EAAC,IAAI,CAAC,EAC1B,iBAAiB,CAClB,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,WAAmB,EAAE,IAAY;QAC1C,MAAM,IAAI,GAAG,IAAA,iBAAc,EAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;OASG;IACH,aAAa,CACX,WAAmB,EACnB,IAAY,EACZ,YAAoB,EACpB,QAAiB;QAEjB,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACxC,WAAW,EACX,IAAI,EACJ,YAAY,EACZ,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAY;QACxB,IAAA,6BAAa,EAAC,KAAK,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,IAAA,iCAAiB,EAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,WAAmB,EAAE,IAAY;QACpC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AApFD,0CAoFC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const v4_1 = require("../../v4");
|
|
5
|
+
const responseBuilder_1 = require("./responseBuilder");
|
|
6
|
+
describe('V4 ResponseBuilder', () => {
|
|
7
|
+
let withResponseBody;
|
|
8
|
+
let interaction;
|
|
9
|
+
let builder;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
withResponseBody = vitest_1.vi.fn();
|
|
12
|
+
interaction = { withResponseBody };
|
|
13
|
+
builder = new responseBuilder_1.ResponseBuilder(interaction);
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
vitest_1.vi.restoreAllMocks();
|
|
17
|
+
});
|
|
18
|
+
describe('#xmlBody', () => {
|
|
19
|
+
it('calls withResponseBody with application/xml content type', () => {
|
|
20
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build((el) => {
|
|
21
|
+
el.appendElement('item', new Map(), 'value');
|
|
22
|
+
});
|
|
23
|
+
builder.xmlBody(body);
|
|
24
|
+
expect(withResponseBody).toHaveBeenCalledOnce();
|
|
25
|
+
expect(withResponseBody).toHaveBeenCalledWith(body, 'application/xml');
|
|
26
|
+
});
|
|
27
|
+
it('supports XmlBuilder with matchers', () => {
|
|
28
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'items').build((el) => {
|
|
29
|
+
el.eachLike('item', new Map(), (item) => item.appendText('value'));
|
|
30
|
+
});
|
|
31
|
+
builder.xmlBody(body);
|
|
32
|
+
expect(withResponseBody).toHaveBeenCalledOnce();
|
|
33
|
+
expect(withResponseBody).toHaveBeenCalledWith(body, 'application/xml');
|
|
34
|
+
});
|
|
35
|
+
it('returns the builder for chaining', () => {
|
|
36
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build(() => { });
|
|
37
|
+
const result = builder.xmlBody(body);
|
|
38
|
+
expect(result).toBe(builder);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=responseBuilder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseBuilder.spec.js","sourceRoot":"","sources":["../../../../src/v4/http/responseBuilder.spec.ts"],"names":[],"mappings":";;AACA,mCAA4B;AAC5B,iCAAsC;AACtC,uDAAoD;AAEpD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,gBAA0C,CAAC;IAC/C,IAAI,WAAgC,CAAC;IACrC,IAAI,OAAwB,CAAC;IAE7B,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,WAAW,GAAG,EAAE,gBAAgB,EAAoC,CAAC;QACrE,OAAO,GAAG,IAAI,iCAAe,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/D,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAChD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAChE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAChD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ResponseBuilder } from './responseBuilder';
|
|
2
|
-
import type {
|
|
2
|
+
import type { V4ResponseBuilder, V4ResponseWithPluginBuilder } from './types';
|
|
3
3
|
export declare class ResponseWithPluginBuilder extends ResponseBuilder implements V4ResponseWithPluginBuilder {
|
|
4
4
|
pluginContents(contentType: string, contents: string): V4ResponseBuilder;
|
|
5
5
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const v4_1 = require("../../v4");
|
|
5
|
+
const responseWithPluginBuilder_1 = require("./responseWithPluginBuilder");
|
|
6
|
+
describe('V4 ResponseWithPluginBuilder', () => {
|
|
7
|
+
let withResponseBody;
|
|
8
|
+
let interaction;
|
|
9
|
+
let builder;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
withResponseBody = vitest_1.vi.fn();
|
|
12
|
+
interaction = { withResponseBody };
|
|
13
|
+
builder = new responseWithPluginBuilder_1.ResponseWithPluginBuilder(interaction);
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
vitest_1.vi.restoreAllMocks();
|
|
17
|
+
});
|
|
18
|
+
describe('#xmlBody', () => {
|
|
19
|
+
it('calls withResponseBody with application/xml content type', () => {
|
|
20
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build((el) => {
|
|
21
|
+
el.appendElement('item', new Map(), 'value');
|
|
22
|
+
});
|
|
23
|
+
builder.xmlBody(body);
|
|
24
|
+
expect(withResponseBody).toHaveBeenCalledOnce();
|
|
25
|
+
expect(withResponseBody).toHaveBeenCalledWith(body, 'application/xml');
|
|
26
|
+
});
|
|
27
|
+
it('returns the builder for chaining', () => {
|
|
28
|
+
const body = new v4_1.XmlBuilder('1.0', 'UTF-8', 'root').build(() => { });
|
|
29
|
+
const result = builder.xmlBody(body);
|
|
30
|
+
expect(result).toBe(builder);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=responseWithPluginBuilder.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseWithPluginBuilder.spec.js","sourceRoot":"","sources":["../../../../src/v4/http/responseWithPluginBuilder.spec.ts"],"names":[],"mappings":";;AACA,mCAA4B;AAC5B,iCAAsC;AACtC,2EAAwE;AAExE,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,IAAI,gBAA0C,CAAC;IAC/C,IAAI,WAAgC,CAAC;IACrC,IAAI,OAAkC,CAAC;IAEvC,UAAU,CAAC,GAAG,EAAE;QACd,gBAAgB,GAAG,WAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,WAAW,GAAG,EAAE,gBAAgB,EAAoC,CAAC;QACrE,OAAO,GAAG,IAAI,qDAAyB,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,WAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/D,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAEtB,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,EAAE,CAAC;YAChD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,IAAI,GAAG,IAAI,eAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAErC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/src/v4/http/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { JsonMap } from '../../common/jsonTypes';
|
|
2
|
-
import type { Matcher, Path, Rules, SpecificationVersion, TemplateHeaders, TemplateQuery, V3MockServer, V3ProviderState, V3Request, V3Response } from '../../v3';
|
|
2
|
+
import type { Matcher, Path, Rules, SpecificationVersion, StatusCodeMatcher, TemplateHeaders, TemplateQuery, V3MockServer, V3ProviderState, V3Request, V3Response } from '../../v3';
|
|
3
3
|
export type V4ProviderState = V3ProviderState;
|
|
4
4
|
export type V4MockServer = V3MockServer;
|
|
5
5
|
export type V4Request = V3Request;
|
|
@@ -37,6 +37,10 @@ export interface PactV4Options {
|
|
|
37
37
|
* The host to run the mock service, defaults to 127.0.0.1
|
|
38
38
|
*/
|
|
39
39
|
host?: string;
|
|
40
|
+
/**
|
|
41
|
+
* If the mock server should handle CORS pre-flight requests. Defaults to true
|
|
42
|
+
*/
|
|
43
|
+
cors?: boolean;
|
|
40
44
|
}
|
|
41
45
|
export type TemplateHeaderArrayValue = string[] | Matcher<string>[];
|
|
42
46
|
export type Comment = string;
|
|
@@ -59,13 +63,14 @@ export interface V4InteractionWithCompleteRequest {
|
|
|
59
63
|
withCompleteResponse(response: V4Response): V4InteractionWithResponse;
|
|
60
64
|
}
|
|
61
65
|
export interface V4InteractionWithRequest {
|
|
62
|
-
willRespondWith(status: number
|
|
66
|
+
willRespondWith(status: number | StatusCodeMatcher<number>, builder?: V4ResponseBuilderFunc): V4InteractionWithResponse;
|
|
63
67
|
}
|
|
64
68
|
export type V4RequestBuilderFunc = (builder: V4RequestBuilder) => void;
|
|
65
69
|
export interface V4RequestBuilder {
|
|
66
70
|
query(query: TemplateQuery): V4RequestBuilder;
|
|
67
71
|
headers(headers: TemplateHeaders): V4RequestBuilder;
|
|
68
72
|
jsonBody(body: unknown): V4RequestBuilder;
|
|
73
|
+
xmlBody(body: unknown): V4RequestBuilder;
|
|
69
74
|
binaryFile(contentType: string, file: string): V4RequestBuilder;
|
|
70
75
|
multipartBody(contentType: string, filename: string, mimePartName: string, boundary?: string): V4RequestBuilder;
|
|
71
76
|
matchingRules(rules: Rules): V4RequestBuilder;
|
|
@@ -74,6 +79,7 @@ export interface V4RequestBuilder {
|
|
|
74
79
|
export interface V4ResponseBuilder {
|
|
75
80
|
headers(headers: TemplateHeaders): V4ResponseBuilder;
|
|
76
81
|
jsonBody(body: unknown): V4ResponseBuilder;
|
|
82
|
+
xmlBody(body: unknown): V4ResponseBuilder;
|
|
77
83
|
binaryFile(contentType: string, file: string): V4ResponseBuilder;
|
|
78
84
|
multipartBody(contentType: string, filename: string, mimePartName: string, boundary?: string): V4ResponseBuilder;
|
|
79
85
|
matchingRules(rules: Rules): V4ResponseBuilder;
|
|
@@ -94,12 +100,13 @@ export interface V4InteractionWithPlugin {
|
|
|
94
100
|
withRequest(method: string, path: Path, builder?: V4PluginRequestBuilderFunc): V4InteractionWithPluginRequest;
|
|
95
101
|
}
|
|
96
102
|
export interface V4InteractionWithPluginRequest {
|
|
97
|
-
willRespondWith(status: number
|
|
103
|
+
willRespondWith(status: number | StatusCodeMatcher<number>, builder?: V4PluginResponseBuilderFunc): V4InteractionWithPluginResponse;
|
|
98
104
|
}
|
|
99
105
|
export interface V4RequestWithPluginBuilder {
|
|
100
106
|
query(query: TemplateQuery): V4RequestWithPluginBuilder;
|
|
101
107
|
headers(headers: TemplateHeaders): V4RequestWithPluginBuilder;
|
|
102
108
|
jsonBody(body: unknown): V4RequestWithPluginBuilder;
|
|
109
|
+
xmlBody(body: unknown): V4RequestWithPluginBuilder;
|
|
103
110
|
binaryFile(contentType: string, file: string): V4RequestWithPluginBuilder;
|
|
104
111
|
multipartBody(contentType: string, filename: string, mimePartName: string, boundary?: string): V4RequestWithPluginBuilder;
|
|
105
112
|
body(contentType: string, body: Buffer): V4RequestWithPluginBuilder;
|
|
@@ -109,6 +116,7 @@ export interface V4RequestWithPluginBuilder {
|
|
|
109
116
|
export interface V4ResponseWithPluginBuilder {
|
|
110
117
|
headers(headers: TemplateHeaders): V4ResponseBuilder;
|
|
111
118
|
jsonBody(body: unknown): V4ResponseBuilder;
|
|
119
|
+
xmlBody(body: unknown): V4ResponseBuilder;
|
|
112
120
|
binaryFile(contentType: string, file: string): V4ResponseBuilder;
|
|
113
121
|
multipartBody(contentType: string, filename: string, mimePartName: string, boundary?: string): V4ResponseBuilder;
|
|
114
122
|
matchingRules(rules: Rules): V4ResponseBuilder;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
2
2
|
import type { JsonMap } from '../../common/jsonTypes';
|
|
3
3
|
import type { Path } from '../../v3';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Comment, CustomComment, PactV4Options, PluginConfig, V4InteractionWithCompleteRequest, V4InteractionWithPlugin, V4InteractionWithRequest, V4Request, V4RequestBuilderFunc, V4UnconfiguredInteraction } from './types';
|
|
5
5
|
export declare class UnconfiguredInteraction implements V4UnconfiguredInteraction {
|
|
6
6
|
protected pact: ConsumerPact;
|
|
7
7
|
protected interaction: ConsumerInteraction;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UnconfiguredInteraction = void 0;
|
|
4
|
+
const matchers_1 = require("../../v3/matchers");
|
|
4
5
|
const interactionWithPlugin_1 = require("./interactionWithPlugin");
|
|
5
|
-
const requestBuilder_1 = require("./requestBuilder");
|
|
6
6
|
const interactionWithRequest_1 = require("./interactionWithRequest");
|
|
7
|
-
const
|
|
7
|
+
const requestBuilder_1 = require("./requestBuilder");
|
|
8
8
|
class UnconfiguredInteraction {
|
|
9
9
|
pact;
|
|
10
10
|
interaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unconfiguredInteraction.js","sourceRoot":"","sources":["../../../../src/v4/http/unconfiguredInteraction.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"unconfiguredInteraction.js","sourceRoot":"","sources":["../../../../src/v4/http/unconfiguredInteraction.ts"],"names":[],"mappings":";;;AAMA,gDAAyD;AACzD,mEAAgE;AAChE,qEAAkE;AAClE,qDAAkD;AAclD,MAAa,uBAAuB;IAGtB;IACA;IACA;IACA;IALZ,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;IAC9B,CAAC;IAEJ,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,OAAO,CAAC,OAAO,GAAG,IAAI;QACpB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAErC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAgC;QACtC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAExD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS,CACP,KAAa,EACb,IAAY,EACZ,KAAa;QAEb,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAE7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mBAAmB,CAAC,QAAmB;QACrC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IAED,WAAW,CACT,MAAc,EACd,IAAU,EACV,OAA8B;QAE9B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,+CAAsB,CAC/B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,MAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,6CAAqB,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CACf,CAAC;IACJ,CAAC;CACF;AA1FD,0DA0FC"}
|
package/src/v4/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { V4UnconfiguredGraphQLInteraction } from './graphql/types';
|
|
1
2
|
import { PactV4Options, type V4UnconfiguredInteraction } from './http/types';
|
|
2
|
-
import type { V4ConsumerPact } from './types';
|
|
3
3
|
import type { V4UnconfiguredAsynchronousMessage, V4UnconfiguredSynchronousMessage } from './message/types';
|
|
4
|
-
import type {
|
|
4
|
+
import type { V4ConsumerPact } from './types';
|
|
5
5
|
export declare class PactV4 implements V4ConsumerPact {
|
|
6
6
|
private opts;
|
|
7
7
|
private pact;
|
|
@@ -12,6 +12,7 @@ export declare class PactV4 implements V4ConsumerPact {
|
|
|
12
12
|
addAsynchronousInteraction(): V4UnconfiguredAsynchronousMessage;
|
|
13
13
|
addGraphQLInteraction(): V4UnconfiguredGraphQLInteraction;
|
|
14
14
|
}
|
|
15
|
-
export
|
|
15
|
+
export * from '../xml';
|
|
16
16
|
export * from './graphql';
|
|
17
17
|
export * from './message/index';
|
|
18
|
+
export { PactV4 as Pact, PactV4Options as PactOptions };
|
package/src/v4/index.js
CHANGED
|
@@ -16,11 +16,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.Pact = exports.PactV4 = void 0;
|
|
18
18
|
const pact_core_1 = require("@pact-foundation/pact-core");
|
|
19
|
-
const unconfiguredInteraction_1 = require("./http/unconfiguredInteraction");
|
|
20
19
|
const package_json_1 = require("../../package.json");
|
|
21
|
-
const message_1 = require("./message");
|
|
22
20
|
const v3_1 = require("../v3");
|
|
23
21
|
const graphql_1 = require("./graphql");
|
|
22
|
+
const unconfiguredInteraction_1 = require("./http/unconfiguredInteraction");
|
|
23
|
+
const message_1 = require("./message");
|
|
24
24
|
const asynchronousMessage_1 = require("./message/asynchronousMessage");
|
|
25
25
|
class PactV4 {
|
|
26
26
|
opts;
|
|
@@ -68,6 +68,7 @@ class PactV4 {
|
|
|
68
68
|
}
|
|
69
69
|
exports.PactV4 = PactV4;
|
|
70
70
|
exports.Pact = PactV4;
|
|
71
|
+
__exportStar(require("../xml"), exports);
|
|
71
72
|
__exportStar(require("./graphql"), exports);
|
|
72
73
|
__exportStar(require("./message/index"), exports);
|
|
73
74
|
//# sourceMappingURL=index.js.map
|
package/src/v4/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAGoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0DAGoC;AACpC,qDAAmE;AACnE,8BAA6C;AAC7C,uCAA2D;AAG3D,4EAAyE;AACzE,uCAA2D;AAC3D,uEAAgF;AAOhF,MAAa,MAAM;IAGG;IAFZ,IAAI,CAAgB;IAE5B,YAAoB,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QACrC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,yBAAoB,CAAC,wBAAwB,EAC/D,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,MAAM,CAC7B,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,iDAAuB,CAChC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAC5B,IAAI,CAAC,IAAI,EACT,GAAG,EAAE;YACH,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,yBAAyB,CACvB,WAAmB;QAEnB,OAAO,IAAI,wCAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAC5C,IAAI,CAAC,IAAI,EACT,GAAG,EAAE;YACH,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,0BAA0B;QACxB,OAAO,IAAI,qDAA+B,CACxC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,EACpC,IAAI,CAAC,IAAI,EACT,GAAG,EAAE;YACH,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;IAED,qBAAqB;QACnB,OAAO,IAAI,wCAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAC5B,IAAI,CAAC,IAAI,EACT,GAAG,EAAE;YACH,sGAAsG;YACtG,kGAAkG;YAClG,mEAAmE;YACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AA1ED,wBA0EC;AAKkB,sBAAI;AAHvB,yCAAuB;AACvB,4CAA0B;AAC1B,kDAAgC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ConsumerPact, AsynchronousMessage as PactCoreAsynchronousMessage } from '@pact-foundation/pact-core';
|
|
2
2
|
import type { AnyJson, JsonMap } from '../../common/jsonTypes';
|
|
3
|
-
import type {
|
|
4
|
-
import type { AsynchronousMessage as PactCoreAsynchronousMessage, ConsumerPact } from '@pact-foundation/pact-core';
|
|
5
|
-
import type { PactV4Options } from '../http/types';
|
|
3
|
+
import type { Metadata } from '../../dsl/message';
|
|
6
4
|
import type { Rules } from '../../v3/types';
|
|
5
|
+
import type { PactV4Options } from '../http/types';
|
|
6
|
+
import type { AsynchronousMessage, Comment, CustomComment, PluginConfig, TransportConfig, V4AsynchronousMessageBuilder, V4AsynchronousMessageBuilderFunc, V4AsynchronousMessageWithContent, V4AsynchronousMessageWithPlugin, V4AsynchronousMessageWithPluginContents, V4AsynchronousMessageWithTransport, V4UnconfiguredAsynchronousMessage } from './types';
|
|
7
7
|
type Message = {
|
|
8
8
|
requestIsBinary: boolean;
|
|
9
9
|
interaction: PactCoreAsynchronousMessage;
|