@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
package/src/httpPact/index.js
CHANGED
|
@@ -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,63 +32,27 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
43
32
|
return result;
|
|
44
33
|
};
|
|
45
34
|
})();
|
|
46
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
47
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
48
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
49
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
50
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
51
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
52
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
56
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
57
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
58
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
59
|
-
function step(op) {
|
|
60
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
61
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
62
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
63
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
64
|
-
switch (op[0]) {
|
|
65
|
-
case 0: case 1: t = op; break;
|
|
66
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
67
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
68
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
69
|
-
default:
|
|
70
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
71
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
72
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
73
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
74
|
-
if (t[2]) _.ops.pop();
|
|
75
|
-
_.trys.pop(); continue;
|
|
76
|
-
}
|
|
77
|
-
op = body.call(thisArg, _);
|
|
78
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
79
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
83
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
84
37
|
};
|
|
85
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
86
39
|
exports.Pact = void 0;
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
40
|
+
const pact_core_1 = __importStar(require("@pact-foundation/pact-core"));
|
|
41
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
42
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
43
|
+
const node_process_1 = __importDefault(require("node:process"));
|
|
44
|
+
const lodash_1 = require("lodash");
|
|
45
|
+
const interaction_1 = require("../dsl/interaction");
|
|
46
|
+
const net_1 = require("../common/net");
|
|
47
|
+
const logger_1 = __importStar(require("../common/logger"));
|
|
48
|
+
const verificationError_1 = __importDefault(require("../errors/verificationError"));
|
|
49
|
+
const configurationError_1 = __importDefault(require("../errors/configurationError"));
|
|
50
|
+
const v3_1 = require("../v3");
|
|
51
|
+
const package_json_1 = require("../../package.json");
|
|
52
|
+
const display_1 = require("../v3/display");
|
|
53
|
+
const spec_1 = require("../common/spec");
|
|
54
|
+
const ffi_1 = require("./ffi");
|
|
55
|
+
const logErrorNoMockServer = () => {
|
|
103
56
|
logger_1.default.error("The pact mock service doesn't appear to be running\n" +
|
|
104
57
|
' - Please check the logs above to ensure that there are no pact service startup failures\n' +
|
|
105
58
|
' - Please check that pact lifecycle methods are called in the correct order (setup() needs to be called before this method)\n' +
|
|
@@ -113,8 +66,30 @@ var logErrorNoMockServer = function () {
|
|
|
113
66
|
* @param {PactV2Options} opts
|
|
114
67
|
* @return {@link PactProvider}
|
|
115
68
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
69
|
+
class Pact {
|
|
70
|
+
static defaults = {
|
|
71
|
+
consumer: '',
|
|
72
|
+
cors: false,
|
|
73
|
+
dir: node_path_1.default.resolve(node_process_1.default.cwd(), 'pacts'),
|
|
74
|
+
host: '127.0.0.1',
|
|
75
|
+
log: node_path_1.default.resolve(node_process_1.default.cwd(), 'logs', 'pact.log'),
|
|
76
|
+
logLevel: 'info',
|
|
77
|
+
pactfileWriteMode: 'merge',
|
|
78
|
+
provider: '',
|
|
79
|
+
spec: 2,
|
|
80
|
+
ssl: false,
|
|
81
|
+
port: 0,
|
|
82
|
+
};
|
|
83
|
+
static createOptionsWithDefaults(opts) {
|
|
84
|
+
return { ...Pact.defaults, ...opts };
|
|
85
|
+
}
|
|
86
|
+
mockService;
|
|
87
|
+
opts;
|
|
88
|
+
mockServerStartedPort;
|
|
89
|
+
pact;
|
|
90
|
+
interaction;
|
|
91
|
+
finalized = false;
|
|
92
|
+
constructor(config) {
|
|
118
93
|
this.opts = Pact.createOptionsWithDefaults(config);
|
|
119
94
|
if (this.opts.pactfileWriteMode === 'overwrite') {
|
|
120
95
|
logger_1.default.warn("WARNING: the behaviour of pactfileWriteMode 'overwrite' has changed since version 9.x.x. See the type definition or the MIGRATION.md guide for details.");
|
|
@@ -133,49 +108,34 @@ var Pact = /** @class */ (function () {
|
|
|
133
108
|
// }
|
|
134
109
|
this.reset();
|
|
135
110
|
}
|
|
136
|
-
Pact.createOptionsWithDefaults = function (opts) {
|
|
137
|
-
return __assign(__assign({}, Pact.defaults), opts);
|
|
138
|
-
};
|
|
139
111
|
/**
|
|
140
112
|
* Setup the pact framework, including allocating a port for the dynamic
|
|
141
113
|
* mock server
|
|
142
114
|
*
|
|
143
115
|
* @returns {Promise}
|
|
144
116
|
*/
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
pactfile_write_mode: this.opts.pactfileWriteMode || 'merge',
|
|
168
|
-
consumer: {
|
|
169
|
-
name: this.opts.consumer,
|
|
170
|
-
},
|
|
171
|
-
provider: { name: this.opts.provider },
|
|
172
|
-
},
|
|
173
|
-
};
|
|
174
|
-
return [2 /*return*/, this.opts];
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
});
|
|
178
|
-
};
|
|
117
|
+
async setup() {
|
|
118
|
+
if (this.opts.port > 0) {
|
|
119
|
+
await (0, net_1.isPortAvailable)(this.opts.port, this.opts.host);
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
const port = await (0, net_1.freePort)();
|
|
123
|
+
logger_1.default.debug(`free port discovered: ${port}`);
|
|
124
|
+
this.opts.port = port;
|
|
125
|
+
}
|
|
126
|
+
// create the mock service
|
|
127
|
+
this.mockService = {
|
|
128
|
+
baseUrl: `${this.opts.ssl ? 'https' : 'http'}://${this.opts.host}:${this.opts.port}`,
|
|
129
|
+
pactDetails: {
|
|
130
|
+
pactfile_write_mode: this.opts.pactfileWriteMode || 'merge',
|
|
131
|
+
consumer: {
|
|
132
|
+
name: this.opts.consumer,
|
|
133
|
+
},
|
|
134
|
+
provider: { name: this.opts.provider },
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
return this.opts;
|
|
138
|
+
}
|
|
179
139
|
/**
|
|
180
140
|
* Add an interaction to the {@link MockService}.
|
|
181
141
|
* @memberof PactProvider
|
|
@@ -183,15 +143,15 @@ var Pact = /** @class */ (function () {
|
|
|
183
143
|
* @param {Interaction} interactionObj
|
|
184
144
|
* @returns {Promise}
|
|
185
145
|
*/
|
|
186
|
-
|
|
146
|
+
addInteraction(interactionObj) {
|
|
187
147
|
if (!this.mockService) {
|
|
188
148
|
logErrorNoMockServer();
|
|
189
149
|
return Promise.reject(new Error("The pact mock service wasn't configured when addInteraction was called"));
|
|
190
150
|
}
|
|
191
|
-
|
|
151
|
+
let interaction;
|
|
192
152
|
if (interactionObj instanceof interaction_1.Interaction) {
|
|
193
153
|
// This will throw if not valid
|
|
194
|
-
|
|
154
|
+
const interactionState = interactionObj.json();
|
|
195
155
|
// Convert into the same type
|
|
196
156
|
interaction = (0, interaction_1.interactionToInteractionObject)(interactionState);
|
|
197
157
|
}
|
|
@@ -206,37 +166,34 @@ var Pact = /** @class */ (function () {
|
|
|
206
166
|
(0, ffi_1.setResponseDetails)(this.interaction, interaction.willRespondWith);
|
|
207
167
|
this.startMockServer();
|
|
208
168
|
return Promise.resolve('');
|
|
209
|
-
}
|
|
169
|
+
}
|
|
210
170
|
/**
|
|
211
171
|
* Checks with the Mock Service if the expected interactions have been exercised.
|
|
212
172
|
* @memberof PactProvider
|
|
213
173
|
* @instance
|
|
214
174
|
* @returns {Promise}
|
|
215
175
|
*/
|
|
216
|
-
|
|
217
|
-
var _this = this;
|
|
176
|
+
verify() {
|
|
218
177
|
if (!this.mockService) {
|
|
219
178
|
logErrorNoMockServer();
|
|
220
179
|
return Promise.reject(new Error("The pact mock service wasn't running when verify was called"));
|
|
221
180
|
}
|
|
222
|
-
|
|
223
|
-
|
|
181
|
+
const matchingResults = this.pact.mockServerMismatches(this.opts.port);
|
|
182
|
+
const success = this.pact.mockServerMatchedSuccessfully(this.opts.port);
|
|
224
183
|
// Feature flag: allow missing requests on the mock service
|
|
225
184
|
if (!success) {
|
|
226
|
-
|
|
227
|
-
error +=
|
|
228
|
-
/* eslint-disable no-console */
|
|
185
|
+
let error = 'Test failed for the following reasons:';
|
|
186
|
+
error += `\n\n ${(0, display_1.generateMockServerError)(matchingResults, '\t')}`;
|
|
229
187
|
console.error('');
|
|
230
188
|
console.error(chalk_1.default.red('Pact verification failed!'));
|
|
231
189
|
console.error(chalk_1.default.red(error));
|
|
232
|
-
/* eslint-enable */
|
|
233
190
|
this.reset();
|
|
234
191
|
throw new verificationError_1.default('Pact verification failed - expected interactions did not match actual.');
|
|
235
192
|
}
|
|
236
193
|
return this.writePact()
|
|
237
|
-
.then(
|
|
238
|
-
.then(
|
|
239
|
-
}
|
|
194
|
+
.then(() => this.reset())
|
|
195
|
+
.then(() => '');
|
|
196
|
+
}
|
|
240
197
|
/**
|
|
241
198
|
* Writes the Pact and clears any interactions left behind and shutdown the
|
|
242
199
|
* mock server
|
|
@@ -244,14 +201,14 @@ var Pact = /** @class */ (function () {
|
|
|
244
201
|
* @instance
|
|
245
202
|
* @returns {Promise}
|
|
246
203
|
*/
|
|
247
|
-
|
|
204
|
+
finalize() {
|
|
248
205
|
if (this.finalized) {
|
|
249
206
|
logger_1.default.warn('finalize() has already been called, this is probably a logic error in your test setup. ' +
|
|
250
207
|
'In the future this will be an error.');
|
|
251
208
|
}
|
|
252
209
|
this.finalized = true;
|
|
253
210
|
return Promise.resolve();
|
|
254
|
-
}
|
|
211
|
+
}
|
|
255
212
|
/**
|
|
256
213
|
* Writes the pact file out to file. Should be called when all tests have been performed for a
|
|
257
214
|
* given Consumer <-> Provider pair. It will write out the Pact to the
|
|
@@ -260,60 +217,46 @@ var Pact = /** @class */ (function () {
|
|
|
260
217
|
* @instance
|
|
261
218
|
* @returns {Promise}
|
|
262
219
|
*/
|
|
263
|
-
|
|
220
|
+
writePact() {
|
|
264
221
|
if (!this.mockService) {
|
|
265
222
|
logErrorNoMockServer();
|
|
266
223
|
return Promise.reject(new Error("The pact mock service wasn't running when writePact was called"));
|
|
267
224
|
}
|
|
268
225
|
this.pact.writePactFile(this.opts.dir || './pacts', this.opts.pactfileWriteMode !== 'overwrite');
|
|
269
226
|
return Promise.resolve('');
|
|
270
|
-
}
|
|
227
|
+
}
|
|
271
228
|
/**
|
|
272
229
|
* Clear up any interactions in the Provider Mock Server.
|
|
273
230
|
* @memberof PactProvider
|
|
274
231
|
* @instance
|
|
275
232
|
* @returns {Promise}
|
|
276
233
|
*/
|
|
277
|
-
|
|
234
|
+
removeInteractions() {
|
|
278
235
|
logger_1.default.info('removeInteractions() is no longer required to be called, but has been kept for compatibility with upgrade from 9.x.x. You should remove any use of this method.');
|
|
279
236
|
return Promise.resolve('');
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
logger_1.default.debug(
|
|
283
|
-
|
|
237
|
+
}
|
|
238
|
+
startMockServer() {
|
|
239
|
+
logger_1.default.debug(`Setting up Pact mock server with Consumer "${this.opts.consumer}" and Provider "${this.opts.provider}"
|
|
240
|
+
using mock service on Port: "${this.opts.port}"`);
|
|
241
|
+
const port = this.pact.createMockServer(this.opts.host, this.opts.port, this.opts.ssl);
|
|
284
242
|
this.mockServerStartedPort = port;
|
|
285
|
-
logger_1.default.debug(
|
|
286
|
-
}
|
|
243
|
+
logger_1.default.debug(`mock service started on port: ${port}`);
|
|
244
|
+
}
|
|
287
245
|
// reset the internal state
|
|
288
246
|
// (this.pact cannot be re-used between tests)
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
this.pact = (0, pact_core_1.makeConsumerPact)(this.opts.consumer, this.opts.provider, (0, spec_1.numberToSpec)(this.opts.spec, v3_1.SpecificationVersion.SPECIFICATION_VERSION_V2), (_a = this.opts.logLevel) !== null && _a !== void 0 ? _a : 'info');
|
|
247
|
+
reset() {
|
|
248
|
+
this.pact = (0, pact_core_1.makeConsumerPact)(this.opts.consumer, this.opts.provider, (0, spec_1.numberToSpec)(this.opts.spec, v3_1.SpecificationVersion.SPECIFICATION_VERSION_V2), this.opts.logLevel ?? 'info');
|
|
292
249
|
this.interaction = this.pact.newInteraction('');
|
|
293
250
|
if (this.mockServerStartedPort) {
|
|
294
|
-
logger_1.default.debug(
|
|
295
|
-
|
|
251
|
+
logger_1.default.debug(`cleaning up old mock server on port ${this.opts.port}`);
|
|
252
|
+
const res = this.pact.cleanupMockServer(this.mockServerStartedPort);
|
|
296
253
|
if (!res) {
|
|
297
254
|
logger_1.default.warn('Unable to cleanup the Pact mock server. ');
|
|
298
255
|
}
|
|
299
256
|
this.mockServerStartedPort = undefined;
|
|
300
257
|
}
|
|
301
258
|
this.pact.addMetadata('pact-js', 'version', package_json_1.version);
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
consumer: '',
|
|
305
|
-
cors: false,
|
|
306
|
-
dir: path_1.default.resolve(process_1.default.cwd(), 'pacts'),
|
|
307
|
-
host: '127.0.0.1',
|
|
308
|
-
log: path_1.default.resolve(process_1.default.cwd(), 'logs', 'pact.log'),
|
|
309
|
-
logLevel: 'info',
|
|
310
|
-
pactfileWriteMode: 'merge',
|
|
311
|
-
provider: '',
|
|
312
|
-
spec: 2,
|
|
313
|
-
ssl: false,
|
|
314
|
-
port: 0,
|
|
315
|
-
};
|
|
316
|
-
return Pact;
|
|
317
|
-
}());
|
|
259
|
+
}
|
|
260
|
+
}
|
|
318
261
|
exports.Pact = Pact;
|
|
319
262
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/httpPact/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/httpPact/index.ts"],"names":[],"mappings":"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"}
|