@pact-foundation/pact 16.3.0 → 16.4.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 +16 -3
- package/CONTRIBUTING.md +2 -2
- package/README.md +6 -2
- package/package.json +25 -28
- package/src/common/graphQL/configurationError.js +2 -22
- package/src/common/graphQL/configurationError.js.map +1 -1
- package/src/common/graphQL/graphQL.d.ts +2 -2
- package/src/common/graphQL/graphQL.js +11 -14
- package/src/common/graphQL/graphQL.js.map +1 -1
- package/src/common/graphQL/graphQLQueryError.js +2 -22
- package/src/common/graphQL/graphQLQueryError.js.map +1 -1
- package/src/common/logger.js +9 -9
- package/src/common/logger.js.map +1 -1
- package/src/common/matchingRules.d.ts +1 -1
- package/src/common/matchingRules.js +21 -21
- package/src/common/matchingRules.js.map +1 -1
- package/src/common/net.js +36 -42
- package/src/common/net.js.map +1 -1
- package/src/common/net.spec.js +41 -53
- package/src/common/net.spec.js.map +1 -1
- package/src/common/request.js +33 -82
- package/src/common/request.js.map +1 -1
- package/src/common/request.spec.js +26 -26
- package/src/common/request.spec.js.map +1 -1
- package/src/common/spec.js +3 -4
- package/src/common/spec.js.map +1 -1
- package/src/dsl/apolloGraphql.js +7 -25
- package/src/dsl/apolloGraphql.js.map +1 -1
- package/src/dsl/apolloGraphql.spec.js +21 -18
- package/src/dsl/apolloGraphql.spec.js.map +1 -1
- package/src/dsl/graphql.d.ts +2 -2
- package/src/dsl/graphql.js +29 -48
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/graphql.spec.js +81 -66
- package/src/dsl/graphql.spec.js.map +1 -1
- package/src/dsl/interaction.d.ts +2 -2
- package/src/dsl/interaction.js +41 -48
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/interaction.spec.js +77 -70
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +1 -1
- package/src/dsl/matchers.js +19 -31
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +199 -208
- package/src/dsl/matchers.spec.js.map +1 -1
- package/src/dsl/message.d.ts +3 -3
- package/src/dsl/options.d.ts +3 -3
- package/src/dsl/verifier/proxy/hooks.d.ts +2 -2
- package/src/dsl/verifier/proxy/hooks.js +42 -112
- package/src/dsl/verifier/proxy/hooks.js.map +1 -1
- package/src/dsl/verifier/proxy/hooks.spec.js +84 -199
- package/src/dsl/verifier/proxy/hooks.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/messages.d.ts +2 -2
- package/src/dsl/verifier/proxy/messages.js +88 -106
- package/src/dsl/verifier/proxy/messages.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.d.ts +1 -1
- package/src/dsl/verifier/proxy/parseBody.js +2 -2
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +31 -76
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.d.ts +2 -2
- package/src/dsl/verifier/proxy/proxy.js +22 -26
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.spec.js +14 -14
- package/src/dsl/verifier/proxy/proxy.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.d.ts +3 -3
- package/src/dsl/verifier/proxy/proxyRequest.js +7 -7
- package/src/dsl/verifier/proxy/proxyRequest.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +49 -64
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.d.ts +3 -3
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js +14 -18
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js +76 -159
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.d.ts +2 -2
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js +23 -72
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +37 -85
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/tracer.d.ts +1 -1
- package/src/dsl/verifier/proxy/tracer.js +42 -35
- package/src/dsl/verifier/proxy/tracer.js.map +1 -1
- package/src/dsl/verifier/proxy/types.d.ts +5 -5
- package/src/dsl/verifier/types.d.ts +3 -3
- package/src/dsl/verifier/verifier.d.ts +1 -1
- package/src/dsl/verifier/verifier.js +49 -56
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +76 -93
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
- package/src/errors/configurationError.js +2 -22
- package/src/errors/configurationError.js.map +1 -1
- package/src/errors/graphQLQueryError.js +2 -22
- package/src/errors/graphQLQueryError.js.map +1 -1
- package/src/errors/matcherError.js +2 -22
- package/src/errors/matcherError.js.map +1 -1
- package/src/errors/verificationError.js +2 -22
- package/src/errors/verificationError.js.map +1 -1
- package/src/httpPact/ffi.d.ts +2 -2
- package/src/httpPact/ffi.js +28 -29
- package/src/httpPact/ffi.js.map +1 -1
- package/src/httpPact/ffi.spec.js +30 -31
- package/src/httpPact/ffi.spec.js.map +1 -1
- package/src/httpPact/index.d.ts +3 -3
- package/src/httpPact/index.js +92 -149
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js +75 -125
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/httpPact/tracing.js +20 -28
- package/src/httpPact/tracing.js.map +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +3 -3
- package/src/messageConsumerPact.js +50 -51
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +50 -49
- package/src/messageConsumerPact.spec.js.map +1 -1
- package/src/messageProviderPact.d.ts +3 -3
- package/src/messageProviderPact.js +68 -85
- package/src/messageProviderPact.js.map +1 -1
- package/src/messageProviderPact.spec.js +75 -66
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/pact.integration.spec.js +250 -268
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/display.d.ts +1 -1
- package/src/v3/display.js +44 -58
- package/src/v3/display.js.map +1 -1
- package/src/v3/ffi.d.ts +2 -2
- package/src/v3/ffi.js +18 -16
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.d.ts +1 -0
- package/src/v3/ffi.spec.js +50 -0
- package/src/v3/ffi.spec.js.map +1 -0
- package/src/v3/graphql/graphQL.d.ts +4 -4
- package/src/v3/graphql/graphQL.js +50 -75
- package/src/v3/graphql/graphQL.js.map +1 -1
- package/src/v3/matchers.d.ts +2 -2
- package/src/v3/matchers.js +112 -147
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +168 -187
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.d.ts +2 -2
- package/src/v3/pact.js +103 -151
- package/src/v3/pact.js.map +1 -1
- package/src/v3/types.d.ts +1 -1
- package/src/v3/xml/xmlBuilder.d.ts +1 -3
- package/src/v3/xml/xmlBuilder.js +7 -9
- package/src/v3/xml/xmlBuilder.js.map +1 -1
- package/src/v3/xml/xmlElement.d.ts +2 -2
- package/src/v3/xml/xmlElement.js +24 -41
- package/src/v3/xml/xmlElement.js.map +1 -1
- package/src/v3/xml/xmlElement.spec.js +23 -25
- package/src/v3/xml/xmlElement.spec.js.map +1 -1
- package/src/v3/xml/xmlNode.js +2 -5
- package/src/v3/xml/xmlNode.js.map +1 -1
- package/src/v3/xml/xmlText.d.ts +1 -1
- package/src/v3/xml/xmlText.js +9 -25
- package/src/v3/xml/xmlText.js.map +1 -1
- package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +4 -4
- package/src/v4/graphql/graphQLInteractionWithRequest.js +21 -17
- package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -1
- package/src/v4/graphql/graphQLRequestBuilder.d.ts +3 -3
- package/src/v4/graphql/graphQLRequestBuilder.js +18 -20
- package/src/v4/graphql/graphQLRequestBuilder.js.map +1 -1
- package/src/v4/graphql/index.d.ts +6 -6
- package/src/v4/graphql/index.js +21 -17
- package/src/v4/graphql/index.js.map +1 -1
- package/src/v4/graphql/types.d.ts +5 -5
- package/src/v4/http/index.d.ts +2 -2
- package/src/v4/http/index.js +48 -93
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/interactionWithCompleteRequest.d.ts +4 -7
- package/src/v4/http/interactionWithCompleteRequest.js +6 -10
- package/src/v4/http/interactionWithCompleteRequest.js.map +1 -1
- package/src/v4/http/interactionWithPlugin.d.ts +3 -3
- package/src/v4/http/interactionWithPlugin.js +14 -11
- package/src/v4/http/interactionWithPlugin.js.map +1 -1
- package/src/v4/http/interactionWithPluginRequest.d.ts +2 -2
- package/src/v4/http/interactionWithPluginRequest.js +11 -8
- package/src/v4/http/interactionWithPluginRequest.js.map +1 -1
- package/src/v4/http/interactionWithPluginResponse.d.ts +2 -2
- package/src/v4/http/interactionWithPluginResponse.js +10 -48
- package/src/v4/http/interactionWithPluginResponse.js.map +1 -1
- package/src/v4/http/interactionWithRequest.d.ts +2 -2
- package/src/v4/http/interactionWithRequest.js +11 -8
- package/src/v4/http/interactionWithRequest.js.map +1 -1
- package/src/v4/http/interactionWithResponse.d.ts +2 -2
- package/src/v4/http/interactionWithResponse.js +10 -48
- package/src/v4/http/interactionWithResponse.js.map +1 -1
- package/src/v4/http/requestBuilder.d.ts +3 -3
- package/src/v4/http/requestBuilder.js +32 -34
- package/src/v4/http/requestBuilder.js.map +1 -1
- package/src/v4/http/requestWithPluginBuilder.d.ts +2 -2
- package/src/v4/http/requestWithPluginBuilder.js +26 -46
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -1
- package/src/v4/http/responseBuilder.d.ts +3 -3
- package/src/v4/http/responseBuilder.js +24 -25
- package/src/v4/http/responseBuilder.js.map +1 -1
- package/src/v4/http/responseWithPluginBuilder.d.ts +1 -1
- package/src/v4/http/responseWithPluginBuilder.js +5 -25
- package/src/v4/http/responseWithPluginBuilder.js.map +1 -1
- package/src/v4/http/types.d.ts +3 -2
- package/src/v4/http/unconfiguredInteraction.d.ts +6 -5
- package/src/v4/http/unconfiguredInteraction.js +31 -26
- package/src/v4/http/unconfiguredInteraction.js.map +1 -1
- package/src/v4/index.d.ts +4 -4
- package/src/v4/index.js +31 -35
- package/src/v4/index.js.map +1 -1
- package/src/v4/message/asynchronousMessage.d.ts +7 -6
- package/src/v4/message/asynchronousMessage.js +157 -190
- package/src/v4/message/asynchronousMessage.js.map +1 -1
- package/src/v4/message/index.d.ts +7 -6
- package/src/v4/message/index.js +188 -217
- package/src/v4/message/index.js.map +1 -1
- package/src/v4/message/types.d.ts +5 -3
- package/src/v4/types.d.ts +3 -3
package/src/v3/display.js
CHANGED
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
-
if (ar || !(i in from)) {
|
|
5
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
-
ar[i] = from[i];
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.displayQuery = displayQuery;
|
|
13
4
|
exports.displayRequest = displayRequest;
|
|
@@ -15,17 +6,17 @@ exports.filterMissingFeatureFlag = filterMissingFeatureFlag;
|
|
|
15
6
|
exports.printMismatch = printMismatch;
|
|
16
7
|
exports.printMismatches = printMismatches;
|
|
17
8
|
exports.generateMockServerError = generateMockServerError;
|
|
18
|
-
|
|
9
|
+
const ramda_1 = require("ramda");
|
|
19
10
|
// TODO: update Matching in the rust core to have a `type` property
|
|
20
11
|
// to avoid having to do this check!
|
|
21
|
-
|
|
12
|
+
const isMismatchingResultPlugin = (obj) => {
|
|
22
13
|
if (obj.error !== undefined &&
|
|
23
14
|
obj.mismatches)
|
|
24
15
|
return true;
|
|
25
16
|
return false;
|
|
26
17
|
};
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
const isPluginContentMismatch = (obj) => {
|
|
19
|
+
const cast = obj;
|
|
29
20
|
if (cast.diff !== undefined ||
|
|
30
21
|
(cast.expected !== undefined &&
|
|
31
22
|
cast.actual !== undefined &&
|
|
@@ -35,86 +26,81 @@ var isPluginContentMismatch = function (obj) {
|
|
|
35
26
|
return false;
|
|
36
27
|
};
|
|
37
28
|
function displayQuery(query) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var key = _a[0], values = _a[1];
|
|
41
|
-
return (0, ramda_1.map)(function (val) { return "".concat(key, "=").concat(val); }, values);
|
|
42
|
-
}, pairs));
|
|
29
|
+
const pairs = (0, ramda_1.toPairs)(query);
|
|
30
|
+
const mapped = (0, ramda_1.flatten)((0, ramda_1.map)(([key, values]) => (0, ramda_1.map)((val) => `${key}=${val}`, values), pairs));
|
|
43
31
|
return (0, ramda_1.join)('&', mapped);
|
|
44
32
|
}
|
|
45
33
|
function displayHeaders(headers, indent) {
|
|
46
|
-
return (0, ramda_1.join)(
|
|
47
|
-
var k = _a[0], v = _a[1];
|
|
48
|
-
return "".concat(k, ": ").concat(v);
|
|
49
|
-
}, (0, ramda_1.toPairs)(headers)));
|
|
34
|
+
return (0, ramda_1.join)(`\n${indent}`, (0, ramda_1.map)(([k, v]) => `${k}: ${v}`, (0, ramda_1.toPairs)(headers)));
|
|
50
35
|
}
|
|
51
|
-
function displayRequest(request, indent) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
output.push("".concat(indent, "Method: ").concat(request.method, "\n").concat(indent, "Path: ").concat(request.path));
|
|
36
|
+
function displayRequest(request, indent = '') {
|
|
37
|
+
const output = [''];
|
|
38
|
+
output.push(`${indent}Method: ${request.method}\n${indent}Path: ${request.path}`);
|
|
55
39
|
if (request.query) {
|
|
56
|
-
output.push(
|
|
40
|
+
output.push(`${indent}Query String: ${displayQuery(request.query)}`);
|
|
57
41
|
}
|
|
58
42
|
if (request.headers) {
|
|
59
|
-
output.push(
|
|
43
|
+
output.push(`${indent}Headers:\n${indent} ${displayHeaders(request.headers, `${indent} `)}`);
|
|
60
44
|
}
|
|
61
45
|
if (request.body) {
|
|
62
|
-
|
|
63
|
-
output.push(
|
|
46
|
+
const body = JSON.stringify(request.body);
|
|
47
|
+
output.push(`${indent}Body: ${body.substr(0, 20)}... (${body.length} length)`);
|
|
64
48
|
}
|
|
65
49
|
return output.join('\n');
|
|
66
50
|
}
|
|
67
51
|
function filterMissingFeatureFlag(mismatches) {
|
|
68
52
|
if (process.env.PACT_EXPERIMENTAL_FEATURE_ALLOW_MISSING_REQUESTS) {
|
|
69
|
-
return mismatches.filter(
|
|
53
|
+
return mismatches.filter((m) => !isMismatchingResultPlugin(m) && m.type !== 'request-mismatch');
|
|
70
54
|
}
|
|
71
55
|
return mismatches;
|
|
72
56
|
}
|
|
73
57
|
function printMismatch(m) {
|
|
74
58
|
if (isPluginContentMismatch(m)) {
|
|
75
|
-
|
|
76
|
-
|
|
59
|
+
const s = [
|
|
60
|
+
`\t${m.path}: ${m.mismatch}\n`,
|
|
77
61
|
m.mismatch
|
|
78
62
|
? ''
|
|
79
|
-
:
|
|
63
|
+
: `\t\tExpected '${m.expected}', got: '${m.actual}${m.diff}'`,
|
|
80
64
|
];
|
|
81
65
|
if (m.diff) {
|
|
82
|
-
s.push(
|
|
83
|
-
s.push(
|
|
66
|
+
s.push(`\t\tDiff:`);
|
|
67
|
+
s.push(`\t\t\t${m.diff}`);
|
|
84
68
|
}
|
|
85
69
|
return s.join('\n\n');
|
|
86
70
|
}
|
|
87
71
|
switch (m.type) {
|
|
88
72
|
case 'MethodMismatch':
|
|
89
|
-
return
|
|
73
|
+
return `Expected ${m.expected}, got: ${m.actual}`;
|
|
90
74
|
default:
|
|
91
75
|
return m.mismatch;
|
|
92
76
|
}
|
|
93
77
|
}
|
|
94
78
|
function printMismatches(mismatches) {
|
|
95
|
-
|
|
79
|
+
const errors = mismatches.map((m) => printMismatch(m));
|
|
96
80
|
return errors.join('\n');
|
|
97
81
|
}
|
|
98
82
|
function generateMockServerError(mismatches, indent) {
|
|
99
|
-
return
|
|
100
|
-
'Mock server failed with the following mismatches:'
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
83
|
+
return [
|
|
84
|
+
'Mock server failed with the following mismatches:',
|
|
85
|
+
...mismatches.map((mismatch, i) => {
|
|
86
|
+
if (isMismatchingResultPlugin(mismatch)) {
|
|
87
|
+
return printMismatches(mismatch.mismatches);
|
|
88
|
+
}
|
|
89
|
+
if (mismatch.type === 'request-mismatch') {
|
|
90
|
+
return `\n${indent}${i}) The following request was incorrect: \n
|
|
91
|
+
${indent}${mismatch.method} ${mismatch.path}
|
|
92
|
+
${mismatch.mismatches
|
|
93
|
+
?.map((d, j) => `\n${indent}${indent}${indent} 1.${j} ${printMismatch(d)}`)
|
|
94
|
+
.join('')}`;
|
|
95
|
+
}
|
|
96
|
+
if (mismatch.type === 'request-not-found') {
|
|
97
|
+
return `\n${indent}${i}) The following request was not expected: ${displayRequest(mismatch.request, `${indent} `)}`;
|
|
98
|
+
}
|
|
99
|
+
if (mismatch.type === 'missing-request') {
|
|
100
|
+
return `\n${indent}${i}) The following request was expected but not received: ${displayRequest(mismatch.request, `${indent} `)}`;
|
|
101
|
+
}
|
|
102
|
+
return `Unknown mismatch: ${mismatch}`;
|
|
103
|
+
}),
|
|
104
|
+
].join('\n');
|
|
119
105
|
}
|
|
120
106
|
//# sourceMappingURL=display.js.map
|
package/src/v3/display.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/v3/display.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/v3/display.ts"],"names":[],"mappings":"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"}
|
package/src/v3/ffi.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
-
import { TemplateHeaders, V3Request, V3Response } from './types';
|
|
1
|
+
import type { ConsumerInteraction } from '@pact-foundation/pact-core';
|
|
2
|
+
import type { TemplateHeaders, V3Request, V3Response } from './types';
|
|
3
3
|
export declare const setRequestDetails: (interaction: ConsumerInteraction, req: V3Request) => void;
|
|
4
4
|
export declare const setResponseDetails: (interaction: ConsumerInteraction, res: V3Response) => void;
|
|
5
5
|
export declare const contentTypeFromHeaders: (headers: TemplateHeaders | undefined, defaultContentType: string) => string;
|
package/src/v3/ffi.js
CHANGED
|
@@ -34,13 +34,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.contentTypeFromHeaders = exports.setResponseDetails = exports.setRequestDetails = void 0;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
const ramda_1 = require("ramda");
|
|
38
|
+
const MatchersV3 = __importStar(require("./matchers"));
|
|
39
|
+
const setRequestDetails = (interaction, req) => {
|
|
40
40
|
interaction.withRequest(req.method, MatchersV3.matcherValueOrString(req.path));
|
|
41
|
-
(0, ramda_1.forEachObjIndexed)(
|
|
41
|
+
(0, ramda_1.forEachObjIndexed)((v, k) => {
|
|
42
42
|
if (Array.isArray(v)) {
|
|
43
|
-
v.forEach(
|
|
43
|
+
v.forEach((header, index) => {
|
|
44
44
|
interaction.withRequestHeader(k, index, MatchersV3.matcherValueOrString(header));
|
|
45
45
|
});
|
|
46
46
|
}
|
|
@@ -48,9 +48,9 @@ var setRequestDetails = function (interaction, req) {
|
|
|
48
48
|
interaction.withRequestHeader(k, 0, MatchersV3.matcherValueOrString(v));
|
|
49
49
|
}
|
|
50
50
|
}, req.headers);
|
|
51
|
-
(0, ramda_1.forEachObjIndexed)(
|
|
51
|
+
(0, ramda_1.forEachObjIndexed)((v, k) => {
|
|
52
52
|
if (Array.isArray(v)) {
|
|
53
|
-
v.forEach(
|
|
53
|
+
v.forEach((vv, i) => {
|
|
54
54
|
interaction.withQuery(k, i, MatchersV3.matcherValueOrString(vv));
|
|
55
55
|
});
|
|
56
56
|
}
|
|
@@ -60,11 +60,11 @@ var setRequestDetails = function (interaction, req) {
|
|
|
60
60
|
}, req.query);
|
|
61
61
|
};
|
|
62
62
|
exports.setRequestDetails = setRequestDetails;
|
|
63
|
-
|
|
63
|
+
const setResponseDetails = (interaction, res) => {
|
|
64
64
|
interaction.withStatus(res.status);
|
|
65
|
-
(0, ramda_1.forEachObjIndexed)(
|
|
65
|
+
(0, ramda_1.forEachObjIndexed)((v, k) => {
|
|
66
66
|
if (Array.isArray(v)) {
|
|
67
|
-
v.forEach(
|
|
67
|
+
v.forEach((header, index) => {
|
|
68
68
|
interaction.withResponseHeader(k, index, MatchersV3.matcherValueOrString(header));
|
|
69
69
|
});
|
|
70
70
|
}
|
|
@@ -74,12 +74,14 @@ var setResponseDetails = function (interaction, res) {
|
|
|
74
74
|
}, res.headers);
|
|
75
75
|
};
|
|
76
76
|
exports.setResponseDetails = setResponseDetails;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
contentType = MatchersV3.
|
|
77
|
+
const contentTypeFromHeaders = (headers, defaultContentType) => {
|
|
78
|
+
let contentType = defaultContentType;
|
|
79
|
+
(0, ramda_1.forEachObjIndexed)((v, k) => {
|
|
80
|
+
if (`${k}`.toLowerCase() === 'content-type') {
|
|
81
|
+
const headerValue = Array.isArray(v) ? v[0] : v;
|
|
82
|
+
contentType = MatchersV3.isMatcher(headerValue)
|
|
83
|
+
? MatchersV3.matcherValueOrString(headerValue.value)
|
|
84
|
+
: MatchersV3.matcherValueOrString(headerValue);
|
|
83
85
|
}
|
|
84
86
|
}, headers || {});
|
|
85
87
|
return contentType;
|
package/src/v3/ffi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../../../src/v3/ffi.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../../../src/v3/ffi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const chai = __importStar(require("chai"));
|
|
37
|
+
const ffi_1 = require("./ffi");
|
|
38
|
+
const matchers_1 = require("./matchers");
|
|
39
|
+
const { expect } = chai;
|
|
40
|
+
describe('V3 Pact FFI', () => {
|
|
41
|
+
describe('#contentTypeFromHeaders', () => {
|
|
42
|
+
it('uses matcher example value when content-type header is a matcher', () => {
|
|
43
|
+
const headers = {
|
|
44
|
+
'Content-Type': (0, matchers_1.regex)(/^application\/json(;\s?charset=[\w-]+)?$/i, 'application/json'),
|
|
45
|
+
};
|
|
46
|
+
expect((0, ffi_1.contentTypeFromHeaders)(headers, 'application/json')).to.eq('application/json');
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=ffi.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffi.spec.js","sourceRoot":"","sources":["../../../src/v3/ffi.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,+BAA+C;AAC/C,yCAAmC;AAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;AAExB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC1E,MAAM,OAAO,GAAG;gBACd,cAAc,EAAE,IAAA,gBAAK,EACnB,2CAA2C,EAC3C,kBAAkB,CACnB;aACF,CAAC;YAEF,MAAM,CAAC,IAAA,4BAAsB,EAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAC/D,kBAAkB,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ASTNode } from 'graphql';
|
|
1
|
+
import type { ASTNode } from 'graphql';
|
|
2
2
|
import { PactV3 } from '../pact';
|
|
3
|
-
import { V3Request, V3Response } from '../types';
|
|
4
|
-
import { JsonMap } from '../../common/jsonTypes';
|
|
5
|
-
import { GraphQLVariables } from '../../common/graphQL/graphQL';
|
|
3
|
+
import type { V3Request, V3Response } from '../types';
|
|
4
|
+
import type { JsonMap } from '../../common/jsonTypes';
|
|
5
|
+
import { type GraphQLVariables } from '../../common/graphQL/graphQL';
|
|
6
6
|
/**
|
|
7
7
|
* Expose a V3 compatible GraphQL interface
|
|
8
8
|
*
|
|
@@ -1,79 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __extends = (this && this.__extends) || (function () {
|
|
3
|
-
var extendStatics = function (d, b) {
|
|
4
|
-
extendStatics = Object.setPrototypeOf ||
|
|
5
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
-
return extendStatics(d, b);
|
|
8
|
-
};
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __assign = (this && this.__assign) || function () {
|
|
18
|
-
__assign = Object.assign || function(t) {
|
|
19
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
-
s = arguments[i];
|
|
21
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
-
t[p] = s[p];
|
|
23
|
-
}
|
|
24
|
-
return t;
|
|
25
|
-
};
|
|
26
|
-
return __assign.apply(this, arguments);
|
|
27
|
-
};
|
|
28
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
3
|
exports.GraphQLPactV3 = void 0;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
const ramda_1 = require("ramda");
|
|
6
|
+
const configurationError_1 = require("../../common/graphQL/configurationError");
|
|
7
|
+
const pact_1 = require("../pact");
|
|
8
|
+
const types_1 = require("../../common/graphQL/types");
|
|
9
|
+
const matchers_1 = require("../matchers");
|
|
10
|
+
const graphQL_1 = require("../../common/graphQL/graphQL");
|
|
37
11
|
/**
|
|
38
12
|
* Expose a V3 compatible GraphQL interface
|
|
39
13
|
*
|
|
40
14
|
* Code borrowed/inspired from https://gist.github.com/wabrit/2d1e1f9520aa133908f0a3716338e5ff
|
|
41
15
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return _this;
|
|
50
|
-
}
|
|
51
|
-
GraphQLPactV3.prototype.given = function (providerState, parameters) {
|
|
52
|
-
_super.prototype.given.call(this, providerState, parameters);
|
|
16
|
+
class GraphQLPactV3 extends pact_1.PactV3 {
|
|
17
|
+
operation = undefined;
|
|
18
|
+
variables = undefined;
|
|
19
|
+
query;
|
|
20
|
+
req = undefined;
|
|
21
|
+
given(providerState, parameters) {
|
|
22
|
+
super.given(providerState, parameters);
|
|
53
23
|
return this;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
|
|
24
|
+
}
|
|
25
|
+
uponReceiving(description) {
|
|
26
|
+
super.uponReceiving(description);
|
|
57
27
|
return this;
|
|
58
|
-
}
|
|
28
|
+
}
|
|
59
29
|
/**
|
|
60
30
|
* The GraphQL operation name, if used.
|
|
61
31
|
* @param operation {string} the name of the operation
|
|
62
32
|
* @return this object
|
|
63
33
|
*/
|
|
64
|
-
|
|
34
|
+
withOperation(operation) {
|
|
65
35
|
this.operation = operation;
|
|
66
36
|
return this;
|
|
67
|
-
}
|
|
37
|
+
}
|
|
68
38
|
/**
|
|
69
39
|
* Add variables used in the Query.
|
|
70
40
|
* @param variables {GraphQLVariables}
|
|
71
41
|
* @return this object
|
|
72
42
|
*/
|
|
73
|
-
|
|
43
|
+
withVariables(variables) {
|
|
74
44
|
this.variables = variables;
|
|
75
45
|
return this;
|
|
76
|
-
}
|
|
46
|
+
}
|
|
77
47
|
/**
|
|
78
48
|
* The actual GraphQL query as a string.
|
|
79
49
|
*
|
|
@@ -94,10 +64,10 @@ var GraphQLPactV3 = /** @class */ (function (_super) {
|
|
|
94
64
|
* @param query {string|ASTNode} parsed or unparsed query
|
|
95
65
|
* @return this object
|
|
96
66
|
*/
|
|
97
|
-
|
|
67
|
+
withQuery(query) {
|
|
98
68
|
this.query = (0, graphQL_1.validateQuery)(query, types_1.OperationType.Query);
|
|
99
69
|
return this;
|
|
100
|
-
}
|
|
70
|
+
}
|
|
101
71
|
/**
|
|
102
72
|
* The actual GraphQL mutation as a string or parse tree.
|
|
103
73
|
*
|
|
@@ -114,10 +84,10 @@ var GraphQLPactV3 = /** @class */ (function (_super) {
|
|
|
114
84
|
* @param mutation {string|ASTNode} parsed or unparsed mutation
|
|
115
85
|
* @return this object
|
|
116
86
|
*/
|
|
117
|
-
|
|
87
|
+
withMutation(mutation) {
|
|
118
88
|
this.query = (0, graphQL_1.validateQuery)(mutation, types_1.OperationType.Mutation);
|
|
119
89
|
return this;
|
|
120
|
-
}
|
|
90
|
+
}
|
|
121
91
|
/**
|
|
122
92
|
* Used to pass in the method, path and content-type; the body detail would
|
|
123
93
|
* not typically be passed here as that will be internally constructed from
|
|
@@ -129,47 +99,52 @@ var GraphQLPactV3 = /** @class */ (function (_super) {
|
|
|
129
99
|
* @param req {V3Request} request
|
|
130
100
|
* @return this object
|
|
131
101
|
*/
|
|
132
|
-
|
|
102
|
+
withRequest(req) {
|
|
133
103
|
// Just take what we need from the request, as most of the detail will
|
|
134
104
|
// come from withQuery/withMutation/withVariables
|
|
135
105
|
this.req = req;
|
|
136
106
|
return this;
|
|
137
|
-
}
|
|
107
|
+
}
|
|
138
108
|
/**
|
|
139
109
|
* Overridden as this is the "trigger point" by which we should have received all
|
|
140
110
|
* request information.
|
|
141
111
|
* @param res {V3Response} the expected response
|
|
142
112
|
* @returns this object
|
|
143
113
|
*/
|
|
144
|
-
|
|
145
|
-
var _a, _b;
|
|
114
|
+
willRespondWith(res) {
|
|
146
115
|
if (!this.query) {
|
|
147
116
|
throw new configurationError_1.ConfigurationError('You must provide a GraphQL query.');
|
|
148
117
|
}
|
|
149
118
|
if (!this.req) {
|
|
150
119
|
throw new configurationError_1.ConfigurationError('You must provide a GraphQL request.');
|
|
151
120
|
}
|
|
152
|
-
this.req
|
|
121
|
+
this.req.contentType ||= 'application/json';
|
|
122
|
+
this.req.method ||= 'POST';
|
|
123
|
+
this.req = {
|
|
124
|
+
...this.req,
|
|
125
|
+
body: (0, ramda_1.reject)(lodash_1.isUndefined, {
|
|
153
126
|
operationName: this.operation,
|
|
154
127
|
query: (0, matchers_1.regex)((0, graphQL_1.escapeGraphQlQuery)(this.query), this.query),
|
|
155
128
|
variables: this.variables,
|
|
156
|
-
}),
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
129
|
+
}),
|
|
130
|
+
headers: {
|
|
131
|
+
'Content-Type': this.req.contentType,
|
|
132
|
+
},
|
|
133
|
+
method: this.req.method,
|
|
134
|
+
};
|
|
135
|
+
super.withRequest(this.req);
|
|
136
|
+
super.willRespondWith(res);
|
|
161
137
|
return this;
|
|
162
|
-
}
|
|
163
|
-
|
|
138
|
+
}
|
|
139
|
+
addInteraction() {
|
|
164
140
|
throw new configurationError_1.ConfigurationError('Only GraphQL Queries are allowed');
|
|
165
|
-
}
|
|
166
|
-
|
|
141
|
+
}
|
|
142
|
+
withRequestBinaryFile() {
|
|
167
143
|
throw new configurationError_1.ConfigurationError('Only GraphQL Queries are allowed');
|
|
168
|
-
}
|
|
169
|
-
|
|
144
|
+
}
|
|
145
|
+
withRequestMultipartFileUpload() {
|
|
170
146
|
throw new configurationError_1.ConfigurationError('Only GraphQL Queries are allowed');
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
}(pact_1.PactV3));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
174
149
|
exports.GraphQLPactV3 = GraphQLPactV3;
|
|
175
150
|
//# sourceMappingURL=graphQL.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphQL.js","sourceRoot":"","sources":["../../../../src/v3/graphql/graphQL.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphQL.js","sourceRoot":"","sources":["../../../../src/v3/graphql/graphQL.ts"],"names":[],"mappings":"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"}
|
package/src/v3/matchers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ArrayContainsMatcher, DateTimeMatcher, Matcher, MaxLikeMatcher, MinLikeMatcher, ProviderStateInjectedValue, RulesMatcher, V3RegexMatcher } from './types';
|
|
2
|
-
import { AnyJson } from '../common/jsonTypes';
|
|
1
|
+
import type { ArrayContainsMatcher, DateTimeMatcher, Matcher, MaxLikeMatcher, MinLikeMatcher, ProviderStateInjectedValue, RulesMatcher, V3RegexMatcher } from './types';
|
|
2
|
+
import type { AnyJson } from '../common/jsonTypes';
|
|
3
3
|
export * from './types';
|
|
4
4
|
export declare function isMatcher(x: unknown): x is Matcher<unknown>;
|
|
5
5
|
/**
|