@pact-foundation/pact 10.0.0-beta.58 → 10.0.0-beta.61
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 +36 -2
- package/CODE_OF_CONDUCT.md +1 -1
- package/MIGRATION.md +24 -1
- package/README.md +174 -1371
- package/package.json +26 -38
- package/src/common/logger.js +5 -1
- package/src/common/logger.js.map +1 -1
- package/src/common/net.d.ts +1 -0
- package/src/common/net.js +16 -2
- package/src/common/net.js.map +1 -1
- package/src/common/request.d.ts +0 -1
- package/src/common/request.js +78 -40
- package/src/common/request.js.map +1 -1
- package/src/common/spec.d.ts +2 -0
- package/src/common/spec.js +22 -0
- package/src/common/spec.js.map +1 -0
- package/src/dsl/apolloGraphql.spec.js +24 -0
- package/src/dsl/apolloGraphql.spec.js.map +1 -1
- package/src/dsl/graphql.d.ts +2 -2
- package/src/dsl/graphql.js +1 -0
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/graphql.spec.js +77 -2
- package/src/dsl/graphql.spec.js.map +1 -1
- package/src/dsl/interaction.d.ts +13 -7
- package/src/dsl/interaction.js +30 -1
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/interaction.spec.js +21 -31
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +27 -32
- package/src/dsl/matchers.js +24 -23
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +101 -96
- package/src/dsl/matchers.spec.js.map +1 -1
- package/src/dsl/message.d.ts +19 -13
- package/src/dsl/mockService.d.ts +1 -46
- package/src/dsl/mockService.js +0 -72
- package/src/dsl/mockService.js.map +1 -1
- package/src/dsl/verifier/index.js +5 -1
- package/src/dsl/verifier/index.js.map +1 -1
- package/src/dsl/verifier/proxy/index.js +5 -1
- package/src/dsl/verifier/proxy/index.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.d.ts +7 -0
- package/src/dsl/verifier/proxy/parseBody.js +22 -0
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -0
- package/src/dsl/{mockService.spec.d.ts → verifier/proxy/parseBody.spec.d.ts} +0 -0
- package/src/dsl/verifier/proxy/parseBody.spec.js +118 -0
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -0
- package/src/dsl/verifier/proxy/proxy.js +19 -4
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/index.js +5 -1
- package/src/dsl/verifier/proxy/stateHandler/index.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +5 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/types.d.ts +1 -0
- package/src/dsl/verifier/verifier.js +8 -1
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +6 -2
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
- package/src/httpPact/ffi.d.ts +15 -0
- package/src/httpPact/ffi.js +91 -0
- package/src/httpPact/ffi.js.map +1 -0
- package/src/{dsl/publisher.spec.d.ts → httpPact/ffi.spec.d.ts} +0 -0
- package/src/httpPact/ffi.spec.js +81 -0
- package/src/httpPact/ffi.spec.js.map +1 -0
- package/src/httpPact/index.d.ts +10 -10
- package/src/httpPact/index.js +146 -81
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js +117 -220
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/httpPact/tracing.js +4 -4
- package/src/httpPact/tracing.js.map +1 -1
- package/src/index.d.ts +1 -7
- package/src/index.js +8 -9
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +34 -17
- package/src/messageConsumerPact.js +90 -67
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +0 -46
- package/src/messageConsumerPact.spec.js.map +1 -1
- package/src/messageProviderPact.js +6 -2
- package/src/messageProviderPact.js.map +1 -1
- package/src/messageProviderPact.spec.js +22 -3
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/v3/display.d.ts +6 -0
- package/src/v3/display.js +83 -0
- package/src/v3/display.js.map +1 -0
- package/src/v3/index.d.ts +1 -6
- package/src/v3/index.js +6 -7
- package/src/v3/index.js.map +1 -1
- package/src/v3/matchers.d.ts +6 -5
- package/src/v3/matchers.js +7 -1
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +5 -1
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.d.ts +5 -71
- package/src/v3/pact.js +84 -131
- package/src/v3/pact.js.map +1 -1
- package/src/v3/types.d.ts +81 -0
- package/src/v3/types.js +11 -0
- package/src/v3/types.js.map +1 -0
- package/src/v3/xml/xmlElement.spec.js +36 -49
- package/src/v3/xml/xmlElement.spec.js.map +1 -1
- package/test/helper.js +5 -1
- package/test/helper.js.map +1 -1
- package/src/dsl/mockService.spec.js +0 -124
- package/src/dsl/mockService.spec.js.map +0 -1
- package/src/dsl/publisher.d.ts +0 -10
- package/src/dsl/publisher.js +0 -22
- package/src/dsl/publisher.js.map +0 -1
- package/src/dsl/publisher.spec.js +0 -43
- package/src/dsl/publisher.spec.js.map +0 -1
- package/src/v3/verifier.d.ts +0 -12
- package/src/v3/verifier.js +0 -23
- package/src/v3/verifier.js.map +0 -1
- package/v3/index.d.ts +0 -1
- package/v3/index.js +0 -16
- package/v3/index.js.map +0 -1
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setHeaders = exports.setBody = exports.setQuery = exports.setRequestMethodAndPath = exports.setResponseDetails = exports.setRequestDetails = exports.contentTypeFromHeaders = void 0;
|
|
4
|
+
var matchers_1 = require("../dsl/matchers");
|
|
5
|
+
var ramda_1 = require("ramda");
|
|
6
|
+
var util_1 = require("util");
|
|
7
|
+
// eslint-disable-next-line
|
|
8
|
+
var INTERACTION_PART;
|
|
9
|
+
(function (INTERACTION_PART) {
|
|
10
|
+
INTERACTION_PART[INTERACTION_PART["REQUEST"] = 1] = "REQUEST";
|
|
11
|
+
INTERACTION_PART[INTERACTION_PART["RESPONSE"] = 2] = "RESPONSE";
|
|
12
|
+
})(INTERACTION_PART || (INTERACTION_PART = {}));
|
|
13
|
+
var CONTENT_TYPE_HEADER = 'content-type';
|
|
14
|
+
var CONTENT_TYPE_JSON = 'application/json';
|
|
15
|
+
var contentTypeFromHeaders = function (headers, defaultContentType) {
|
|
16
|
+
var contentType = defaultContentType;
|
|
17
|
+
(0, ramda_1.forEachObjIndexed)(function (v, k) {
|
|
18
|
+
if ("".concat(k).toLowerCase() === CONTENT_TYPE_HEADER) {
|
|
19
|
+
contentType = (0, matchers_1.matcherValueOrString)(v);
|
|
20
|
+
}
|
|
21
|
+
}, headers || {});
|
|
22
|
+
return contentType;
|
|
23
|
+
};
|
|
24
|
+
exports.contentTypeFromHeaders = contentTypeFromHeaders;
|
|
25
|
+
var setRequestDetails = function (interaction, req) {
|
|
26
|
+
(0, exports.setRequestMethodAndPath)(interaction, req);
|
|
27
|
+
(0, exports.setBody)(INTERACTION_PART.REQUEST, interaction, req.headers, req.body);
|
|
28
|
+
(0, exports.setHeaders)(INTERACTION_PART.REQUEST, interaction, req.headers);
|
|
29
|
+
(0, exports.setQuery)(interaction, req.query);
|
|
30
|
+
};
|
|
31
|
+
exports.setRequestDetails = setRequestDetails;
|
|
32
|
+
var setResponseDetails = function (interaction, res) {
|
|
33
|
+
interaction.withStatus(res.status);
|
|
34
|
+
(0, exports.setBody)(INTERACTION_PART.RESPONSE, interaction, res.headers, res.body);
|
|
35
|
+
(0, exports.setHeaders)(INTERACTION_PART.RESPONSE, interaction, res.headers);
|
|
36
|
+
};
|
|
37
|
+
exports.setResponseDetails = setResponseDetails;
|
|
38
|
+
var setRequestMethodAndPath = function (interaction, req) {
|
|
39
|
+
if ((req === null || req === void 0 ? void 0 : req.method) && (req === null || req === void 0 ? void 0 : req.path)) {
|
|
40
|
+
var method = req === null || req === void 0 ? void 0 : req.method;
|
|
41
|
+
var reqPath = (0, matchers_1.matcherValueOrString)(req === null || req === void 0 ? void 0 : req.path);
|
|
42
|
+
interaction.withRequest(method, reqPath);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.setRequestMethodAndPath = setRequestMethodAndPath;
|
|
46
|
+
var setQuery = function (interaction, query) {
|
|
47
|
+
(0, ramda_1.forEachObjIndexed)(function (v, k) {
|
|
48
|
+
if ((0, util_1.isArray)(v)) {
|
|
49
|
+
v.forEach(function (vv, i) {
|
|
50
|
+
interaction.withQuery(k, i, (0, matchers_1.matcherValueOrString)(vv));
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
interaction.withQuery(k, 0, (0, matchers_1.matcherValueOrString)(v));
|
|
55
|
+
}
|
|
56
|
+
}, query);
|
|
57
|
+
};
|
|
58
|
+
exports.setQuery = setQuery;
|
|
59
|
+
var setBody = function (part, interaction, headers, body) {
|
|
60
|
+
if (body) {
|
|
61
|
+
var matcher = (0, matchers_1.matcherValueOrString)(body);
|
|
62
|
+
var contentType = (0, exports.contentTypeFromHeaders)(headers, CONTENT_TYPE_JSON);
|
|
63
|
+
switch (part) {
|
|
64
|
+
case INTERACTION_PART.REQUEST:
|
|
65
|
+
interaction.withRequestBody(matcher, contentType);
|
|
66
|
+
break;
|
|
67
|
+
case INTERACTION_PART.RESPONSE:
|
|
68
|
+
interaction.withResponseBody(matcher, contentType);
|
|
69
|
+
break;
|
|
70
|
+
default:
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
exports.setBody = setBody;
|
|
76
|
+
var setHeaders = function (part, interaction, headers) {
|
|
77
|
+
(0, ramda_1.forEachObjIndexed)(function (v, k) {
|
|
78
|
+
switch (part) {
|
|
79
|
+
case INTERACTION_PART.REQUEST:
|
|
80
|
+
interaction.withRequestHeader("".concat(k), 0, (0, matchers_1.matcherValueOrString)(v));
|
|
81
|
+
break;
|
|
82
|
+
case INTERACTION_PART.RESPONSE:
|
|
83
|
+
interaction.withResponseHeader("".concat(k), 0, (0, matchers_1.matcherValueOrString)(v));
|
|
84
|
+
break;
|
|
85
|
+
default:
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}, headers);
|
|
89
|
+
};
|
|
90
|
+
exports.setHeaders = setHeaders;
|
|
91
|
+
//# sourceMappingURL=ffi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffi.js","sourceRoot":"","sources":["../../../src/httpPact/ffi.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// @ts-nocheck
|
|
7
|
+
var chai_1 = __importDefault(require("chai"));
|
|
8
|
+
var chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
9
|
+
var sinon_1 = __importDefault(require("sinon"));
|
|
10
|
+
var sinon_chai_1 = __importDefault(require("sinon-chai"));
|
|
11
|
+
var ffi_1 = require("./ffi");
|
|
12
|
+
chai_1.default.use(sinon_chai_1.default);
|
|
13
|
+
chai_1.default.use(chai_as_promised_1.default);
|
|
14
|
+
var expect = chai_1.default.expect;
|
|
15
|
+
describe('Pact FFI', function () {
|
|
16
|
+
describe('#contentTypeFromHeaders', function () {
|
|
17
|
+
['content-type', 'Content-Type', 'CONTent-TYPE'].forEach(function (t) {
|
|
18
|
+
describe("when the \"".concat(t, "\" header is set"), function () {
|
|
19
|
+
it('detects the content type from the header', function () {
|
|
20
|
+
var _a;
|
|
21
|
+
var headers = (_a = {}, _a[t] = 'some-mime-type', _a);
|
|
22
|
+
expect((0, ffi_1.contentTypeFromHeaders)(headers, 'application/json')).to.eq('some-mime-type');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe("when the no content-type header is set", function () {
|
|
27
|
+
it('uses a default', function () {
|
|
28
|
+
expect((0, ffi_1.contentTypeFromHeaders)({}, 'application/json')).to.eq('application/json');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
describe('#setQuery', function () {
|
|
33
|
+
describe('with array values', function () {
|
|
34
|
+
it('calls the query ffi function for each value', function () {
|
|
35
|
+
var queryMock = sinon_1.default.stub();
|
|
36
|
+
var interaction = {
|
|
37
|
+
withQuery: queryMock,
|
|
38
|
+
};
|
|
39
|
+
var query = {
|
|
40
|
+
foo: ['bar', 'baz'],
|
|
41
|
+
};
|
|
42
|
+
(0, ffi_1.setQuery)(interaction, query);
|
|
43
|
+
expect(queryMock.calledTwice);
|
|
44
|
+
expect(queryMock.calledWith('foo', 0, 'bar'));
|
|
45
|
+
expect(queryMock.calledWith('foo', 1, 'baz'));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('with single values', function () {
|
|
49
|
+
it('calls the query ffi function for each value', function () {
|
|
50
|
+
var queryMock = sinon_1.default.stub();
|
|
51
|
+
var interaction = {
|
|
52
|
+
withQuery: queryMock,
|
|
53
|
+
};
|
|
54
|
+
var query = {
|
|
55
|
+
foo: 'bar',
|
|
56
|
+
};
|
|
57
|
+
(0, ffi_1.setQuery)(interaction, query);
|
|
58
|
+
expect(queryMock.calledOnce);
|
|
59
|
+
expect(queryMock.calledWith('foo', 0, 'bar'));
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('with array and single values', function () {
|
|
63
|
+
it('calls the query ffi function for each value', function () {
|
|
64
|
+
var queryMock = sinon_1.default.stub();
|
|
65
|
+
var interaction = {
|
|
66
|
+
withQuery: queryMock,
|
|
67
|
+
};
|
|
68
|
+
var query = {
|
|
69
|
+
foo: 'bar',
|
|
70
|
+
baz: ['bat', 'foo'],
|
|
71
|
+
};
|
|
72
|
+
(0, ffi_1.setQuery)(interaction, query);
|
|
73
|
+
expect(queryMock.calledThrice);
|
|
74
|
+
expect(queryMock.calledWith('foo', 0, 'bar'));
|
|
75
|
+
expect(queryMock.calledWith('baz', 0, 'bat'));
|
|
76
|
+
expect(queryMock.calledWith('baz', 1, 'foo'));
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=ffi.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ffi.spec.js","sourceRoot":"","sources":["../../../src/httpPact/ffi.spec.ts"],"names":[],"mappings":"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"}
|
package/src/httpPact/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Server } from '@pact-foundation/pact-core/src/server';
|
|
2
1
|
import { Interaction, InteractionObject } from '../dsl/interaction';
|
|
3
|
-
import { MockService } from '../dsl/mockService';
|
|
4
2
|
import { PactOptions, PactOptionsComplete } from '../dsl/options';
|
|
3
|
+
import { MockService } from 'dsl/mockService';
|
|
5
4
|
/**
|
|
6
5
|
* Creates a new {@link PactProvider}.
|
|
7
6
|
* @memberof Pact
|
|
@@ -12,14 +11,17 @@ import { PactOptions, PactOptionsComplete } from '../dsl/options';
|
|
|
12
11
|
export declare class Pact {
|
|
13
12
|
static defaults: PactOptions;
|
|
14
13
|
static createOptionsWithDefaults(opts: PactOptions): PactOptionsComplete;
|
|
15
|
-
server: Server;
|
|
16
|
-
opts: PactOptionsComplete;
|
|
17
14
|
mockService: MockService;
|
|
15
|
+
opts: PactOptionsComplete;
|
|
16
|
+
private mockServerStartedPort?;
|
|
17
|
+
private pact;
|
|
18
|
+
private interaction;
|
|
18
19
|
private finalized;
|
|
19
20
|
constructor(config: PactOptions);
|
|
20
21
|
/**
|
|
21
|
-
* Setup the pact framework, including
|
|
22
|
-
*
|
|
22
|
+
* Setup the pact framework, including allocating a port for the dynamic
|
|
23
|
+
* mock server
|
|
24
|
+
*
|
|
23
25
|
* @returns {Promise}
|
|
24
26
|
*/
|
|
25
27
|
setup(): Promise<PactOptionsComplete>;
|
|
@@ -62,8 +64,6 @@ export declare class Pact {
|
|
|
62
64
|
* @returns {Promise}
|
|
63
65
|
*/
|
|
64
66
|
removeInteractions(): Promise<string>;
|
|
65
|
-
private
|
|
66
|
-
private
|
|
67
|
-
private startServer;
|
|
68
|
-
private createServer;
|
|
67
|
+
private startMockServer;
|
|
68
|
+
private reset;
|
|
69
69
|
}
|
package/src/httpPact/index.js
CHANGED
|
@@ -12,7 +12,11 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
};
|
|
13
13
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
14
|
if (k2 === undefined) k2 = k;
|
|
15
|
-
Object.
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
16
20
|
}) : (function(o, m, k, k2) {
|
|
17
21
|
if (k2 === undefined) k2 = k;
|
|
18
22
|
o[k2] = m[k];
|
|
@@ -29,23 +33,65 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
29
33
|
__setModuleDefault(result, mod);
|
|
30
34
|
return result;
|
|
31
35
|
};
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
+
function step(op) {
|
|
50
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
+
while (_) try {
|
|
52
|
+
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;
|
|
53
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
+
switch (op[0]) {
|
|
55
|
+
case 0: case 1: t = op; break;
|
|
56
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
+
default:
|
|
60
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
+
if (t[2]) _.ops.pop();
|
|
65
|
+
_.trys.pop(); continue;
|
|
66
|
+
}
|
|
67
|
+
op = body.call(thisArg, _);
|
|
68
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
32
72
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
33
73
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
34
74
|
};
|
|
35
75
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
76
|
exports.Pact = void 0;
|
|
77
|
+
/* eslint-disable no-promise-executor-return */
|
|
37
78
|
var pact_core_1 = __importDefault(require("@pact-foundation/pact-core"));
|
|
79
|
+
var index_1 = require("@pact-foundation/pact-core/src/consumer/index");
|
|
80
|
+
var clc = __importStar(require("cli-color"));
|
|
38
81
|
var path = __importStar(require("path"));
|
|
39
|
-
var cli_color_1 = __importDefault(require("cli-color"));
|
|
40
82
|
var process_1 = __importDefault(require("process"));
|
|
41
83
|
var lodash_1 = require("lodash");
|
|
42
84
|
var interaction_1 = require("../dsl/interaction");
|
|
43
85
|
var net_1 = require("../common/net");
|
|
44
86
|
var logger_1 = __importStar(require("../common/logger"));
|
|
45
|
-
var mockService_1 = require("../dsl/mockService");
|
|
46
87
|
var verificationError_1 = __importDefault(require("../errors/verificationError"));
|
|
47
88
|
var configurationError_1 = __importDefault(require("../errors/configurationError"));
|
|
48
89
|
var tracing_1 = require("./tracing");
|
|
90
|
+
var v3_1 = require("../v3");
|
|
91
|
+
var package_json_1 = require("../../package.json");
|
|
92
|
+
var display_1 = require("../v3/display");
|
|
93
|
+
var spec_1 = require("../common/spec");
|
|
94
|
+
var ffi_1 = require("./ffi");
|
|
49
95
|
var logErrorNoMockServer = function () {
|
|
50
96
|
logger_1.default.error("The pact mock service doesn't appear to be running\n" +
|
|
51
97
|
' - Please check the logs above to ensure that there are no pact service startup failures\n' +
|
|
@@ -63,6 +109,9 @@ var logErrorNoMockServer = function () {
|
|
|
63
109
|
var Pact = /** @class */ (function () {
|
|
64
110
|
function Pact(config) {
|
|
65
111
|
this.opts = Pact.createOptionsWithDefaults(config);
|
|
112
|
+
if (this.opts.pactfileWriteMode === 'overwrite') {
|
|
113
|
+
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.");
|
|
114
|
+
}
|
|
66
115
|
if ((0, lodash_1.isEmpty)(this.opts.consumer)) {
|
|
67
116
|
throw new configurationError_1.default('You must specify a Consumer for this pact.');
|
|
68
117
|
}
|
|
@@ -74,23 +123,49 @@ var Pact = /** @class */ (function () {
|
|
|
74
123
|
if (this.opts.logLevel === 'trace') {
|
|
75
124
|
(0, tracing_1.traceHttpInteractions)();
|
|
76
125
|
}
|
|
77
|
-
this.
|
|
126
|
+
this.reset();
|
|
78
127
|
}
|
|
79
128
|
Pact.createOptionsWithDefaults = function (opts) {
|
|
80
129
|
return __assign(__assign({}, Pact.defaults), opts);
|
|
81
130
|
};
|
|
82
131
|
/**
|
|
83
|
-
* Setup the pact framework, including
|
|
84
|
-
*
|
|
132
|
+
* Setup the pact framework, including allocating a port for the dynamic
|
|
133
|
+
* mock server
|
|
134
|
+
*
|
|
85
135
|
* @returns {Promise}
|
|
86
136
|
*/
|
|
87
137
|
Pact.prototype.setup = function () {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
138
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
139
|
+
var port;
|
|
140
|
+
return __generator(this, function (_a) {
|
|
141
|
+
switch (_a.label) {
|
|
142
|
+
case 0:
|
|
143
|
+
if (!(this.opts.port > 0)) return [3 /*break*/, 2];
|
|
144
|
+
return [4 /*yield*/, (0, net_1.isPortAvailable)(this.opts.port, this.opts.host)];
|
|
145
|
+
case 1:
|
|
146
|
+
_a.sent();
|
|
147
|
+
return [3 /*break*/, 4];
|
|
148
|
+
case 2: return [4 /*yield*/, (0, net_1.freePort)()];
|
|
149
|
+
case 3:
|
|
150
|
+
port = _a.sent();
|
|
151
|
+
logger_1.default.debug("free port discovered: ".concat(port));
|
|
152
|
+
this.opts.port = port;
|
|
153
|
+
_a.label = 4;
|
|
154
|
+
case 4:
|
|
155
|
+
// create the mock service
|
|
156
|
+
this.mockService = {
|
|
157
|
+
baseUrl: "".concat(this.opts.ssl ? 'https' : 'http', "://").concat(this.opts.host, ":").concat(this.opts.port),
|
|
158
|
+
pactDetails: {
|
|
159
|
+
pactfile_write_mode: this.opts.pactfileWriteMode || 'merge',
|
|
160
|
+
consumer: {
|
|
161
|
+
name: this.opts.consumer,
|
|
162
|
+
},
|
|
163
|
+
provider: { name: this.opts.provider },
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
return [2 /*return*/, this.opts];
|
|
167
|
+
}
|
|
168
|
+
});
|
|
94
169
|
});
|
|
95
170
|
};
|
|
96
171
|
/**
|
|
@@ -103,20 +178,26 @@ var Pact = /** @class */ (function () {
|
|
|
103
178
|
Pact.prototype.addInteraction = function (interactionObj) {
|
|
104
179
|
if (!this.mockService) {
|
|
105
180
|
logErrorNoMockServer();
|
|
106
|
-
return Promise.reject(new Error("The pact mock service wasn't
|
|
181
|
+
return Promise.reject(new Error("The pact mock service wasn't configured when addInteraction was called"));
|
|
107
182
|
}
|
|
183
|
+
var interaction;
|
|
108
184
|
if (interactionObj instanceof interaction_1.Interaction) {
|
|
109
|
-
|
|
185
|
+
// This will throw if not valid
|
|
186
|
+
var interactionState = interactionObj.json();
|
|
187
|
+
// Convert into the same type
|
|
188
|
+
interaction = (0, interaction_1.interactionToInteractionObject)(interactionState);
|
|
110
189
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
interaction.given(interactionObj.state);
|
|
190
|
+
else {
|
|
191
|
+
interaction = interactionObj;
|
|
114
192
|
}
|
|
115
|
-
interaction
|
|
116
|
-
|
|
117
|
-
.
|
|
118
|
-
|
|
119
|
-
|
|
193
|
+
this.interaction.uponReceiving(interaction.uponReceiving);
|
|
194
|
+
if (interaction.state) {
|
|
195
|
+
this.interaction.given(interaction.state);
|
|
196
|
+
}
|
|
197
|
+
(0, ffi_1.setRequestDetails)(this.interaction, interaction.withRequest);
|
|
198
|
+
(0, ffi_1.setResponseDetails)(this.interaction, interaction.willRespondWith);
|
|
199
|
+
this.startMockServer();
|
|
200
|
+
return Promise.resolve('');
|
|
120
201
|
};
|
|
121
202
|
/**
|
|
122
203
|
* Checks with the Mock Service if the expected interactions have been exercised.
|
|
@@ -130,21 +211,23 @@ var Pact = /** @class */ (function () {
|
|
|
130
211
|
logErrorNoMockServer();
|
|
131
212
|
return Promise.reject(new Error("The pact mock service wasn't running when verify was called"));
|
|
132
213
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
214
|
+
var matchingResults = this.pact.mockServerMismatches(this.opts.port);
|
|
215
|
+
var success = this.pact.mockServerMatchedSuccessfully(this.opts.port);
|
|
216
|
+
// Feature flag: allow missing requests on the mock service
|
|
217
|
+
if (!success) {
|
|
218
|
+
var error = 'Test failed for the following reasons:';
|
|
219
|
+
error += "\n\n ".concat((0, display_1.generateMockServerError)(matchingResults, '\t'));
|
|
220
|
+
/* eslint-disable no-console */
|
|
139
221
|
console.error('');
|
|
140
|
-
|
|
141
|
-
console.error(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
222
|
+
console.error(clc.red('Pact verification failed!'));
|
|
223
|
+
console.error(clc.red(error));
|
|
224
|
+
/* eslint-enable */
|
|
225
|
+
this.reset();
|
|
226
|
+
throw new verificationError_1.default('Pact verification failed - expected interactions did not match actual.');
|
|
227
|
+
}
|
|
228
|
+
return this.writePact()
|
|
229
|
+
.then(function () { return _this.reset(); })
|
|
230
|
+
.then(function () { return ''; });
|
|
148
231
|
};
|
|
149
232
|
/**
|
|
150
233
|
* Writes the Pact and clears any interactions left behind and shutdown the
|
|
@@ -154,29 +237,12 @@ var Pact = /** @class */ (function () {
|
|
|
154
237
|
* @returns {Promise}
|
|
155
238
|
*/
|
|
156
239
|
Pact.prototype.finalize = function () {
|
|
157
|
-
var _this = this;
|
|
158
240
|
if (this.finalized) {
|
|
159
241
|
logger_1.default.warn('finalize() has already been called, this is probably a logic error in your test setup. ' +
|
|
160
242
|
'In the future this will be an error.');
|
|
161
243
|
}
|
|
162
244
|
this.finalized = true;
|
|
163
|
-
|
|
164
|
-
logErrorNoMockServer();
|
|
165
|
-
return Promise.reject(new Error("The pact mock service wasn't running when finalize was called"));
|
|
166
|
-
}
|
|
167
|
-
return this.mockService
|
|
168
|
-
.writePact()
|
|
169
|
-
.then(function () { return logger_1.default.info('Pact File Written'); }, function (e) { return Promise.reject(e); })
|
|
170
|
-
.then(function () {
|
|
171
|
-
return new Promise(function (resolve, reject) {
|
|
172
|
-
return _this.server.delete().then(function () { return resolve(); }, function (e) { return reject(e); });
|
|
173
|
-
});
|
|
174
|
-
})
|
|
175
|
-
.catch(function (e) {
|
|
176
|
-
return new Promise(function (resolve, reject) {
|
|
177
|
-
return _this.server.delete().finally(function () { return reject(e); });
|
|
178
|
-
});
|
|
179
|
-
});
|
|
245
|
+
return Promise.resolve();
|
|
180
246
|
};
|
|
181
247
|
/**
|
|
182
248
|
* Writes the pact file out to file. Should be called when all tests have been performed for a
|
|
@@ -191,7 +257,8 @@ var Pact = /** @class */ (function () {
|
|
|
191
257
|
logErrorNoMockServer();
|
|
192
258
|
return Promise.reject(new Error("The pact mock service wasn't running when writePact was called"));
|
|
193
259
|
}
|
|
194
|
-
|
|
260
|
+
this.pact.writePactFile(this.opts.dir || './pacts', this.opts.pactfileWriteMode !== 'overwrite');
|
|
261
|
+
return Promise.resolve('');
|
|
195
262
|
};
|
|
196
263
|
/**
|
|
197
264
|
* Clear up any interactions in the Provider Mock Server.
|
|
@@ -200,33 +267,30 @@ var Pact = /** @class */ (function () {
|
|
|
200
267
|
* @returns {Promise}
|
|
201
268
|
*/
|
|
202
269
|
Pact.prototype.removeInteractions = function () {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
return Promise.reject(new Error("The pact mock service wasn't running when removeInteractions was called"));
|
|
206
|
-
}
|
|
207
|
-
return this.mockService.removeInteractions();
|
|
270
|
+
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.');
|
|
271
|
+
return Promise.resolve('');
|
|
208
272
|
};
|
|
209
|
-
Pact.prototype.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
273
|
+
Pact.prototype.startMockServer = function () {
|
|
274
|
+
logger_1.default.debug("Setting up Pact mock server with Consumer \"".concat(this.opts.consumer, "\" and Provider \"").concat(this.opts.provider, "\"\n using mock service on Port: \"").concat(this.opts.port, "\""));
|
|
275
|
+
var port = this.pact.createMockServer(this.opts.host, this.opts.port, this.opts.ssl);
|
|
276
|
+
this.mockServerStartedPort = port;
|
|
277
|
+
logger_1.default.debug("mock service started on port: ".concat(port));
|
|
214
278
|
};
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
this.
|
|
279
|
+
// reset the internal state
|
|
280
|
+
// (this.pact cannot be re-used between tests)
|
|
281
|
+
Pact.prototype.reset = function () {
|
|
282
|
+
var _a;
|
|
283
|
+
this.pact = (0, index_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');
|
|
284
|
+
this.interaction = this.pact.newInteraction('');
|
|
285
|
+
if (this.mockServerStartedPort) {
|
|
286
|
+
logger_1.default.debug("cleaning up old mock server on port ".concat(this.opts.port));
|
|
287
|
+
var res = this.pact.cleanupMockServer(this.mockServerStartedPort);
|
|
288
|
+
if (!res) {
|
|
289
|
+
logger_1.default.warn('Unable to cleanup the Pact mock server. ');
|
|
290
|
+
}
|
|
291
|
+
this.mockServerStartedPort = undefined;
|
|
292
|
+
}
|
|
293
|
+
this.pact.addMetadata('pact-js', 'version', package_json_1.version);
|
|
230
294
|
};
|
|
231
295
|
Pact.defaults = {
|
|
232
296
|
consumer: '',
|
|
@@ -235,10 +299,11 @@ var Pact = /** @class */ (function () {
|
|
|
235
299
|
host: '127.0.0.1',
|
|
236
300
|
log: path.resolve(process_1.default.cwd(), 'logs', 'pact.log'),
|
|
237
301
|
logLevel: 'info',
|
|
238
|
-
pactfileWriteMode: '
|
|
302
|
+
pactfileWriteMode: 'merge',
|
|
239
303
|
provider: '',
|
|
240
304
|
spec: 2,
|
|
241
305
|
ssl: false,
|
|
306
|
+
port: 0,
|
|
242
307
|
};
|
|
243
308
|
return Pact;
|
|
244
309
|
}());
|
|
@@ -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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"}
|