@pact-foundation/pact 16.3.1 → 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 +7 -0
- package/CONTRIBUTING.md +2 -2
- package/package.json +16 -24
- 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 +243 -313
- 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.js +15 -15
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.js +8 -8
- package/src/v3/ffi.spec.js.map +1 -1
- 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
|
@@ -4,49 +4,56 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.createRequestTracer = exports.createResponseTracer = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var _a = [res.write, res.end], oldWrite = _a[0], oldEnd = _a[1];
|
|
29
|
-
var chunks = [];
|
|
30
|
-
res.write = function (chunk) {
|
|
7
|
+
const lodash_1 = require("lodash");
|
|
8
|
+
const logger_1 = __importDefault(require("../../../common/logger"));
|
|
9
|
+
const removeEmptyResponseProperties = (body, res) => (0, lodash_1.pickBy)({
|
|
10
|
+
body,
|
|
11
|
+
headers: (0, lodash_1.reduce)(res.getHeaders(), (acc, val, index) => {
|
|
12
|
+
acc[index] = val;
|
|
13
|
+
return acc;
|
|
14
|
+
}, {}),
|
|
15
|
+
status: res.statusCode,
|
|
16
|
+
}, lodash_1.identity);
|
|
17
|
+
const removeEmptyRequestProperties = (req) => (0, lodash_1.pickBy)({
|
|
18
|
+
body: req.body,
|
|
19
|
+
headers: req.headers,
|
|
20
|
+
method: req.method,
|
|
21
|
+
path: req.path,
|
|
22
|
+
}, lodash_1.identity);
|
|
23
|
+
const createResponseTracer = () => (_, res, next) => {
|
|
24
|
+
const oldWrite = res.write.bind(res);
|
|
25
|
+
const oldEnd = res.end.bind(res);
|
|
26
|
+
const chunks = [];
|
|
27
|
+
res.write = ((chunk, encodingOrCb, callback) => {
|
|
31
28
|
chunks.push(Buffer.from(chunk));
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
if (typeof encodingOrCb === 'function') {
|
|
30
|
+
return oldWrite(chunk, encodingOrCb);
|
|
31
|
+
}
|
|
32
|
+
return oldWrite(chunk, encodingOrCb, callback);
|
|
33
|
+
});
|
|
34
|
+
res.end = ((chunkOrCb, encodingOrCb, cb) => {
|
|
35
|
+
const chunk = typeof chunkOrCb === 'function' ? undefined : chunkOrCb;
|
|
35
36
|
if (chunk) {
|
|
36
37
|
chunks.push(Buffer.from(chunk));
|
|
37
38
|
}
|
|
38
|
-
|
|
39
|
-
logger_1.default.debug(
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
const body = Buffer.concat(chunks).toString('utf8');
|
|
40
|
+
logger_1.default.debug(`outgoing response: ${JSON.stringify(removeEmptyResponseProperties(body, res))}`);
|
|
41
|
+
if (typeof chunkOrCb === 'function') {
|
|
42
|
+
return oldEnd(chunkOrCb);
|
|
43
|
+
}
|
|
44
|
+
if (typeof encodingOrCb === 'function') {
|
|
45
|
+
return oldEnd(chunkOrCb, encodingOrCb);
|
|
46
|
+
}
|
|
47
|
+
return oldEnd(chunkOrCb, encodingOrCb, cb);
|
|
48
|
+
});
|
|
42
49
|
if (typeof next === 'function') {
|
|
43
50
|
next();
|
|
44
51
|
}
|
|
45
|
-
};
|
|
52
|
+
};
|
|
46
53
|
exports.createResponseTracer = createResponseTracer;
|
|
47
|
-
|
|
48
|
-
logger_1.default.debug(
|
|
54
|
+
const createRequestTracer = () => (req, _, next) => {
|
|
55
|
+
logger_1.default.debug(`incoming request: ${JSON.stringify(removeEmptyRequestProperties(req))}`);
|
|
49
56
|
next();
|
|
50
|
-
};
|
|
57
|
+
};
|
|
51
58
|
exports.createRequestTracer = createRequestTracer;
|
|
52
59
|
//# sourceMappingURL=tracer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/tracer.ts"],"names":[],"mappings":";;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/tracer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import { LogLevel } from '../../options';
|
|
3
|
-
import { JsonMap, AnyJson } from '../../../common/jsonTypes';
|
|
4
|
-
import { MessageProviders } from '../../message';
|
|
1
|
+
import type express from 'express';
|
|
2
|
+
import type { LogLevel } from '../../options';
|
|
3
|
+
import type { JsonMap, AnyJson } from '../../../common/jsonTypes';
|
|
4
|
+
import type { MessageProviders } from '../../message';
|
|
5
5
|
export type Hook = () => Promise<unknown>;
|
|
6
6
|
/**
|
|
7
7
|
* State handlers map a state description to a function
|
|
@@ -26,7 +26,7 @@ export type StateAction = 'setup' | 'teardown';
|
|
|
26
26
|
* Respond to the state setup event, optionally returning a map of provider
|
|
27
27
|
* values to dynamically inject into the incoming request to test
|
|
28
28
|
*/
|
|
29
|
-
export type StateFunc = (parameters?: AnyJson) => Promise<JsonMap |
|
|
29
|
+
export type StateFunc = (parameters?: AnyJson) => Promise<JsonMap | undefined>;
|
|
30
30
|
/**
|
|
31
31
|
* Respond to the state setup event, with the ability to hook into the setup/teardown
|
|
32
32
|
* phase of the state
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { VerifierOptions as PactCoreVerifierOptions } from '@pact-foundation/pact-core';
|
|
2
|
-
import { MessageProviderOptions } from '../options';
|
|
3
|
-
import { ProxyOptions } from './proxy/types';
|
|
1
|
+
import type { VerifierOptions as PactCoreVerifierOptions } from '@pact-foundation/pact-core';
|
|
2
|
+
import type { MessageProviderOptions } from '../options';
|
|
3
|
+
import type { ProxyOptions } from './proxy/types';
|
|
4
4
|
type ExcludedPactNodeVerifierKeys = Exclude<keyof PactCoreVerifierOptions, 'providerBaseUrl'>;
|
|
5
5
|
export type PactNodeVerificationExcludedOptions = Pick<PactCoreVerifierOptions, ExcludedPactNodeVerifierKeys>;
|
|
6
6
|
export type VerifierOptions = PactNodeVerificationExcludedOptions & ProxyOptions & Partial<MessageProviderOptions>;
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -52,47 +41,48 @@ exports.Verifier = void 0;
|
|
|
52
41
|
* Provider Verifier service
|
|
53
42
|
* @module ProviderVerifier
|
|
54
43
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
44
|
+
const pact_core_1 = __importDefault(require("@pact-foundation/pact-core"));
|
|
45
|
+
const lodash_1 = require("lodash");
|
|
46
|
+
const node_url_1 = __importDefault(require("node:url"));
|
|
47
|
+
const logger_1 = __importStar(require("../../common/logger"));
|
|
48
|
+
const configurationError_1 = __importDefault(require("../../errors/configurationError"));
|
|
49
|
+
const net_1 = require("../../common/net");
|
|
50
|
+
const proxy_1 = require("./proxy");
|
|
51
|
+
class Verifier {
|
|
52
|
+
address = 'http://127.0.0.1';
|
|
53
|
+
stateSetupPath = '/_pactSetup';
|
|
54
|
+
messageTransportPath = '/_messages';
|
|
55
|
+
config;
|
|
56
|
+
deprecatedFields = [
|
|
57
|
+
'providerStatesSetupUrl',
|
|
58
|
+
];
|
|
59
|
+
constructor(config) {
|
|
70
60
|
this.config = config;
|
|
71
61
|
if (this.config.logLevel && !(0, lodash_1.isEmpty)(this.config.logLevel)) {
|
|
72
62
|
pact_core_1.default.logLevel(this.config.logLevel);
|
|
73
63
|
(0, logger_1.setLogLevel)(this.config.logLevel);
|
|
74
64
|
}
|
|
75
|
-
this.deprecatedFields.forEach(
|
|
76
|
-
if (
|
|
77
|
-
logger_1.default.warn(
|
|
65
|
+
this.deprecatedFields.forEach((f) => {
|
|
66
|
+
if (this.config[f]) {
|
|
67
|
+
logger_1.default.warn(`${f} is deprecated, and will be removed in future versions`);
|
|
78
68
|
}
|
|
79
69
|
});
|
|
80
70
|
if (this.config.validateSSL === undefined) {
|
|
81
71
|
this.config.validateSSL = true;
|
|
82
72
|
}
|
|
83
73
|
if (this.config.proxyHost) {
|
|
84
|
-
this.address =
|
|
74
|
+
this.address = `http://${this.config.proxyHost}`;
|
|
85
75
|
}
|
|
86
76
|
if (this.config.changeOrigin === undefined) {
|
|
87
77
|
this.config.changeOrigin = false;
|
|
88
78
|
if (!this.isLocalVerification()) {
|
|
89
79
|
this.config.changeOrigin = true;
|
|
90
|
-
logger_1.default.debug(
|
|
80
|
+
logger_1.default.debug(`non-local provider address ${this.config.providerBaseUrl} detected, setting 'changeOrigin' to 'true'. This property can be overridden.`);
|
|
91
81
|
}
|
|
92
82
|
}
|
|
93
83
|
if (!this.config.providerBaseUrl &&
|
|
94
84
|
!this.config.messageProviders &&
|
|
95
|
-
!
|
|
85
|
+
!this?.config?.transports) {
|
|
96
86
|
throw new configurationError_1.default("'providerBaseUrl' is mandatory if no 'messageProviders' or 'transports' given");
|
|
97
87
|
}
|
|
98
88
|
}
|
|
@@ -101,56 +91,59 @@ var Verifier = /** @class */ (function () {
|
|
|
101
91
|
*
|
|
102
92
|
* @param config
|
|
103
93
|
*/
|
|
104
|
-
|
|
94
|
+
verifyProvider() {
|
|
105
95
|
logger_1.default.info('Verifying provider');
|
|
106
96
|
if ((0, lodash_1.isEmpty)(this.config)) {
|
|
107
97
|
return Promise.reject(new configurationError_1.default('No configuration provided to verifier'));
|
|
108
98
|
}
|
|
109
99
|
// Start the verification CLI proxy server
|
|
110
|
-
|
|
111
|
-
logger_1.default.trace(
|
|
100
|
+
const server = (0, proxy_1.createProxy)(this.config, this.stateSetupPath, this.messageTransportPath);
|
|
101
|
+
logger_1.default.trace(`proxy created, waiting for startup`);
|
|
112
102
|
// Run the verification once the proxy server is available
|
|
113
103
|
return (0, proxy_1.waitForServerReady)(server)
|
|
114
|
-
.then(
|
|
115
|
-
logger_1.default.trace(
|
|
104
|
+
.then((passOn) => {
|
|
105
|
+
logger_1.default.trace(`Proxy is ready at ${server.address().address}`);
|
|
116
106
|
return passOn;
|
|
117
107
|
})
|
|
118
108
|
.then(this.runProviderVerification())
|
|
119
|
-
.then(
|
|
109
|
+
.then((result) => {
|
|
120
110
|
logger_1.default.trace('Verification completed, closing server');
|
|
121
111
|
server.close();
|
|
122
112
|
return result;
|
|
123
113
|
})
|
|
124
|
-
.catch(
|
|
125
|
-
logger_1.default.trace(
|
|
114
|
+
.catch((e) => {
|
|
115
|
+
logger_1.default.trace(`Verification failed(${e.message}), closing server`);
|
|
126
116
|
server.close();
|
|
127
117
|
throw e;
|
|
128
118
|
});
|
|
129
|
-
}
|
|
119
|
+
}
|
|
130
120
|
// Run the Verification CLI process
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
121
|
+
runProviderVerification() {
|
|
122
|
+
return (server) => {
|
|
123
|
+
const { port } = server.address();
|
|
124
|
+
const opts = {
|
|
125
|
+
providerStatesSetupUrl: `${this.address}:${port}${this.stateSetupPath}`,
|
|
126
|
+
...(0, lodash_1.omit)(this.config, 'handlers'),
|
|
127
|
+
providerBaseUrl: `${this.address}:${port}`,
|
|
128
|
+
transports: (this.config.transports || []).concat([
|
|
136
129
|
{
|
|
137
|
-
port
|
|
138
|
-
path:
|
|
130
|
+
port,
|
|
131
|
+
path: this.messageTransportPath,
|
|
139
132
|
protocol: 'message',
|
|
140
133
|
},
|
|
141
|
-
])
|
|
142
|
-
|
|
134
|
+
]),
|
|
135
|
+
};
|
|
136
|
+
logger_1.default.trace(`Verifying pacts with: ${JSON.stringify(opts)}`);
|
|
143
137
|
return pact_core_1.default.verifyPacts(opts);
|
|
144
138
|
};
|
|
145
|
-
}
|
|
146
|
-
|
|
139
|
+
}
|
|
140
|
+
isLocalVerification() {
|
|
147
141
|
if (!this.config.providerBaseUrl) {
|
|
148
142
|
return true;
|
|
149
143
|
}
|
|
150
|
-
|
|
144
|
+
const u = new node_url_1.default.URL(this.config.providerBaseUrl);
|
|
151
145
|
return (net_1.localAddresses.includes(u.host) || net_1.localAddresses.includes(u.hostname));
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
}());
|
|
146
|
+
}
|
|
147
|
+
}
|
|
155
148
|
exports.Verifier = Verifier;
|
|
156
149
|
//# sourceMappingURL=verifier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
3
|
if (k2 === undefined) k2 = k;
|
|
15
4
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -43,136 +32,130 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
43
32
|
return result;
|
|
44
33
|
};
|
|
45
34
|
})();
|
|
46
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
47
|
-
var t = {};
|
|
48
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
49
|
-
t[p] = s[p];
|
|
50
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
51
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
52
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
53
|
-
t[p[i]] = s[p[i]];
|
|
54
|
-
}
|
|
55
|
-
return t;
|
|
56
|
-
};
|
|
57
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
58
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
59
37
|
};
|
|
60
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
39
|
+
const proxyquire_1 = __importDefault(require("proxyquire"));
|
|
40
|
+
const chai = __importStar(require("chai"));
|
|
41
|
+
const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
42
|
+
const sinon_1 = __importDefault(require("sinon"));
|
|
43
|
+
const pact_core_1 = __importDefault(require("@pact-foundation/pact-core"));
|
|
44
|
+
const logger_1 = __importDefault(require("../../common/logger"));
|
|
67
45
|
chai.use(chai_as_promised_1.default);
|
|
68
|
-
|
|
69
|
-
describe('Verifier',
|
|
70
|
-
|
|
71
|
-
afterEach(function () {
|
|
46
|
+
const { expect } = chai;
|
|
47
|
+
describe('Verifier', () => {
|
|
48
|
+
afterEach(() => {
|
|
72
49
|
sinon_1.default.restore();
|
|
73
50
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
providerBaseUrl
|
|
79
|
-
requestFilter:
|
|
51
|
+
let executed;
|
|
52
|
+
const state = 'thing exists';
|
|
53
|
+
const providerBaseUrl = 'http://not.exists';
|
|
54
|
+
const opts = {
|
|
55
|
+
providerBaseUrl,
|
|
56
|
+
requestFilter: (_req, _res, next) => {
|
|
80
57
|
next();
|
|
81
58
|
},
|
|
82
|
-
stateHandlers:
|
|
83
|
-
|
|
59
|
+
stateHandlers: {
|
|
60
|
+
[state]: () => {
|
|
84
61
|
executed = true;
|
|
85
62
|
return Promise.resolve();
|
|
86
63
|
},
|
|
87
|
-
|
|
64
|
+
},
|
|
88
65
|
};
|
|
89
66
|
// Mock the module and replace the proxy
|
|
90
|
-
|
|
67
|
+
const { Verifier } = (0, proxyquire_1.default)('./verifier', {
|
|
91
68
|
'./proxy': {
|
|
92
|
-
createProxy:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
},
|
|
105
|
-
waitForServerReady: function () { return Promise.resolve(); },
|
|
69
|
+
createProxy: () => ({
|
|
70
|
+
close: () => {
|
|
71
|
+
executed = true;
|
|
72
|
+
return {};
|
|
73
|
+
},
|
|
74
|
+
address: () => ({
|
|
75
|
+
port: 1234,
|
|
76
|
+
family: 'https',
|
|
77
|
+
address: 'mock.server.example.com',
|
|
78
|
+
}),
|
|
79
|
+
}),
|
|
80
|
+
waitForServerReady: () => Promise.resolve(),
|
|
106
81
|
},
|
|
107
|
-
})
|
|
108
|
-
|
|
109
|
-
describe('#constructor',
|
|
110
|
-
describe('when given configuration',
|
|
111
|
-
it('sets the configuration on the object',
|
|
82
|
+
});
|
|
83
|
+
let v;
|
|
84
|
+
describe('#constructor', () => {
|
|
85
|
+
describe('when given configuration', () => {
|
|
86
|
+
it('sets the configuration on the object', () => {
|
|
112
87
|
v = new Verifier(opts);
|
|
113
88
|
expect(v).to.have.deep.property('config').includes({
|
|
114
|
-
providerBaseUrl
|
|
89
|
+
providerBaseUrl,
|
|
115
90
|
});
|
|
116
91
|
expect(v).to.have.nested.property('config.stateHandlers');
|
|
117
92
|
expect(v).to.have.nested.property('config.requestFilter');
|
|
118
93
|
});
|
|
119
94
|
});
|
|
120
95
|
});
|
|
121
|
-
describe('options handling',
|
|
122
|
-
|
|
123
|
-
beforeEach(
|
|
96
|
+
describe('options handling', () => {
|
|
97
|
+
let spy;
|
|
98
|
+
beforeEach(() => {
|
|
124
99
|
spy = sinon_1.default.spy(pact_core_1.default, 'logLevel');
|
|
125
100
|
});
|
|
126
|
-
context('when logLevel is provided',
|
|
127
|
-
it('sets the log level on pact node',
|
|
128
|
-
v = new Verifier(
|
|
101
|
+
context('when logLevel is provided', () => {
|
|
102
|
+
it('sets the log level on pact node', () => {
|
|
103
|
+
v = new Verifier({
|
|
104
|
+
...opts,
|
|
105
|
+
logLevel: 'debug',
|
|
106
|
+
});
|
|
129
107
|
expect(spy.callCount).to.eql(1);
|
|
130
108
|
});
|
|
131
109
|
});
|
|
132
|
-
context('when logLevel is not provided',
|
|
133
|
-
it('does not modify the log setting',
|
|
134
|
-
|
|
135
|
-
v = new Verifier(
|
|
110
|
+
context('when logLevel is not provided', () => {
|
|
111
|
+
it('does not modify the log setting', () => {
|
|
112
|
+
const { ...rest } = opts;
|
|
113
|
+
v = new Verifier({
|
|
114
|
+
...rest,
|
|
115
|
+
});
|
|
136
116
|
expect(spy.callCount).to.eql(0);
|
|
137
117
|
});
|
|
138
118
|
});
|
|
139
|
-
context('when a deprecated field is provided',
|
|
140
|
-
it('logs a warning',
|
|
119
|
+
context('when a deprecated field is provided', () => {
|
|
120
|
+
it('logs a warning', () => {
|
|
141
121
|
spy = sinon_1.default.spy(logger_1.default, 'warn');
|
|
142
|
-
v = new Verifier(
|
|
122
|
+
v = new Verifier({
|
|
123
|
+
...opts,
|
|
124
|
+
providerStatesSetupUrl: 'http://foo.com',
|
|
125
|
+
});
|
|
143
126
|
expect(spy.callCount).to.eql(1);
|
|
144
127
|
});
|
|
145
128
|
});
|
|
146
129
|
});
|
|
147
|
-
describe('#verifyProvider',
|
|
148
|
-
beforeEach(
|
|
149
|
-
describe('when no configuration has been given',
|
|
150
|
-
it('fails with an error',
|
|
151
|
-
return expect(function () { return new Verifier(undefined); }).to.throw();
|
|
152
|
-
});
|
|
130
|
+
describe('#verifyProvider', () => {
|
|
131
|
+
beforeEach(() => { });
|
|
132
|
+
describe('when no configuration has been given', () => {
|
|
133
|
+
it('fails with an error', () => expect(() => new Verifier(undefined)).to.throw());
|
|
153
134
|
});
|
|
154
|
-
describe('when the verifier has been configured',
|
|
155
|
-
beforeEach(
|
|
156
|
-
v = new Verifier(
|
|
135
|
+
describe('when the verifier has been configured', () => {
|
|
136
|
+
beforeEach(() => {
|
|
137
|
+
v = new Verifier({ ...opts, logLevel: 'trace' });
|
|
157
138
|
});
|
|
158
|
-
context('and the verification runs successfully',
|
|
159
|
-
it('closes the server and returns the result',
|
|
139
|
+
context('and the verification runs successfully', () => {
|
|
140
|
+
it('closes the server and returns the result', () => {
|
|
160
141
|
sinon_1.default
|
|
142
|
+
// biome-ignore lint/suspicious/noExplicitAny: stubbing private method for test isolation
|
|
161
143
|
.stub(v, 'runProviderVerification')
|
|
162
144
|
.returns(Promise.resolve('done'));
|
|
163
|
-
|
|
164
|
-
return expect(res).to.eventually.be.fulfilled.then(
|
|
145
|
+
const res = v.verifyProvider();
|
|
146
|
+
return expect(res).to.eventually.be.fulfilled.then(() => {
|
|
165
147
|
expect(executed).to.be.true;
|
|
166
148
|
});
|
|
167
149
|
});
|
|
168
150
|
});
|
|
169
|
-
context('and the verification fails',
|
|
170
|
-
it('closes the server and returns the result',
|
|
151
|
+
context('and the verification fails', () => {
|
|
152
|
+
it('closes the server and returns the result', () => {
|
|
171
153
|
sinon_1.default
|
|
154
|
+
// biome-ignore lint/suspicious/noExplicitAny: stubbing private method for test isolation
|
|
172
155
|
.stub(v, 'runProviderVerification')
|
|
173
|
-
.returns(
|
|
174
|
-
|
|
175
|
-
return expect(res).to.eventually.be.rejected.then(
|
|
156
|
+
.returns(() => Promise.reject(new Error('error')));
|
|
157
|
+
const res = v.verifyProvider();
|
|
158
|
+
return expect(res).to.eventually.be.rejected.then(() => {
|
|
176
159
|
expect(executed).to.be.true;
|
|
177
160
|
});
|
|
178
161
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +1,6 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
function ConfigurationError() {
|
|
21
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
22
|
-
}
|
|
23
|
-
return ConfigurationError;
|
|
24
|
-
}(Error));
|
|
3
|
+
class ConfigurationError extends Error {
|
|
4
|
+
}
|
|
25
5
|
exports.default = ConfigurationError;
|
|
26
6
|
//# sourceMappingURL=configurationError.js.map
|