@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.
Files changed (117) hide show
  1. package/CHANGELOG.md +36 -2
  2. package/CODE_OF_CONDUCT.md +1 -1
  3. package/MIGRATION.md +24 -1
  4. package/README.md +174 -1371
  5. package/package.json +26 -38
  6. package/src/common/logger.js +5 -1
  7. package/src/common/logger.js.map +1 -1
  8. package/src/common/net.d.ts +1 -0
  9. package/src/common/net.js +16 -2
  10. package/src/common/net.js.map +1 -1
  11. package/src/common/request.d.ts +0 -1
  12. package/src/common/request.js +78 -40
  13. package/src/common/request.js.map +1 -1
  14. package/src/common/spec.d.ts +2 -0
  15. package/src/common/spec.js +22 -0
  16. package/src/common/spec.js.map +1 -0
  17. package/src/dsl/apolloGraphql.spec.js +24 -0
  18. package/src/dsl/apolloGraphql.spec.js.map +1 -1
  19. package/src/dsl/graphql.d.ts +2 -2
  20. package/src/dsl/graphql.js +1 -0
  21. package/src/dsl/graphql.js.map +1 -1
  22. package/src/dsl/graphql.spec.js +77 -2
  23. package/src/dsl/graphql.spec.js.map +1 -1
  24. package/src/dsl/interaction.d.ts +13 -7
  25. package/src/dsl/interaction.js +30 -1
  26. package/src/dsl/interaction.js.map +1 -1
  27. package/src/dsl/interaction.spec.js +21 -31
  28. package/src/dsl/interaction.spec.js.map +1 -1
  29. package/src/dsl/matchers.d.ts +27 -32
  30. package/src/dsl/matchers.js +24 -23
  31. package/src/dsl/matchers.js.map +1 -1
  32. package/src/dsl/matchers.spec.js +101 -96
  33. package/src/dsl/matchers.spec.js.map +1 -1
  34. package/src/dsl/message.d.ts +19 -13
  35. package/src/dsl/mockService.d.ts +1 -46
  36. package/src/dsl/mockService.js +0 -72
  37. package/src/dsl/mockService.js.map +1 -1
  38. package/src/dsl/verifier/index.js +5 -1
  39. package/src/dsl/verifier/index.js.map +1 -1
  40. package/src/dsl/verifier/proxy/index.js +5 -1
  41. package/src/dsl/verifier/proxy/index.js.map +1 -1
  42. package/src/dsl/verifier/proxy/parseBody.d.ts +7 -0
  43. package/src/dsl/verifier/proxy/parseBody.js +22 -0
  44. package/src/dsl/verifier/proxy/parseBody.js.map +1 -0
  45. package/src/dsl/{mockService.spec.d.ts → verifier/proxy/parseBody.spec.d.ts} +0 -0
  46. package/src/dsl/verifier/proxy/parseBody.spec.js +118 -0
  47. package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -0
  48. package/src/dsl/verifier/proxy/proxy.js +19 -4
  49. package/src/dsl/verifier/proxy/proxy.js.map +1 -1
  50. package/src/dsl/verifier/proxy/stateHandler/index.js +5 -1
  51. package/src/dsl/verifier/proxy/stateHandler/index.js.map +1 -1
  52. package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +5 -1
  53. package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
  54. package/src/dsl/verifier/proxy/types.d.ts +1 -0
  55. package/src/dsl/verifier/verifier.js +8 -1
  56. package/src/dsl/verifier/verifier.js.map +1 -1
  57. package/src/dsl/verifier/verifier.spec.js +6 -2
  58. package/src/dsl/verifier/verifier.spec.js.map +1 -1
  59. package/src/httpPact/ffi.d.ts +15 -0
  60. package/src/httpPact/ffi.js +91 -0
  61. package/src/httpPact/ffi.js.map +1 -0
  62. package/src/{dsl/publisher.spec.d.ts → httpPact/ffi.spec.d.ts} +0 -0
  63. package/src/httpPact/ffi.spec.js +81 -0
  64. package/src/httpPact/ffi.spec.js.map +1 -0
  65. package/src/httpPact/index.d.ts +10 -10
  66. package/src/httpPact/index.js +146 -81
  67. package/src/httpPact/index.js.map +1 -1
  68. package/src/httpPact/index.spec.js +117 -220
  69. package/src/httpPact/index.spec.js.map +1 -1
  70. package/src/httpPact/tracing.js +4 -4
  71. package/src/httpPact/tracing.js.map +1 -1
  72. package/src/index.d.ts +1 -7
  73. package/src/index.js +8 -9
  74. package/src/index.js.map +1 -1
  75. package/src/messageConsumerPact.d.ts +34 -17
  76. package/src/messageConsumerPact.js +90 -67
  77. package/src/messageConsumerPact.js.map +1 -1
  78. package/src/messageConsumerPact.spec.js +0 -46
  79. package/src/messageConsumerPact.spec.js.map +1 -1
  80. package/src/messageProviderPact.js +6 -2
  81. package/src/messageProviderPact.js.map +1 -1
  82. package/src/messageProviderPact.spec.js +22 -3
  83. package/src/messageProviderPact.spec.js.map +1 -1
  84. package/src/v3/display.d.ts +6 -0
  85. package/src/v3/display.js +83 -0
  86. package/src/v3/display.js.map +1 -0
  87. package/src/v3/index.d.ts +1 -6
  88. package/src/v3/index.js +6 -7
  89. package/src/v3/index.js.map +1 -1
  90. package/src/v3/matchers.d.ts +6 -5
  91. package/src/v3/matchers.js +7 -1
  92. package/src/v3/matchers.js.map +1 -1
  93. package/src/v3/matchers.spec.js +5 -1
  94. package/src/v3/matchers.spec.js.map +1 -1
  95. package/src/v3/pact.d.ts +5 -71
  96. package/src/v3/pact.js +84 -131
  97. package/src/v3/pact.js.map +1 -1
  98. package/src/v3/types.d.ts +81 -0
  99. package/src/v3/types.js +11 -0
  100. package/src/v3/types.js.map +1 -0
  101. package/src/v3/xml/xmlElement.spec.js +36 -49
  102. package/src/v3/xml/xmlElement.spec.js.map +1 -1
  103. package/test/helper.js +5 -1
  104. package/test/helper.js.map +1 -1
  105. package/src/dsl/mockService.spec.js +0 -124
  106. package/src/dsl/mockService.spec.js.map +0 -1
  107. package/src/dsl/publisher.d.ts +0 -10
  108. package/src/dsl/publisher.js +0 -22
  109. package/src/dsl/publisher.js.map +0 -1
  110. package/src/dsl/publisher.spec.js +0 -43
  111. package/src/dsl/publisher.spec.js.map +0 -1
  112. package/src/v3/verifier.d.ts +0 -12
  113. package/src/v3/verifier.js +0 -23
  114. package/src/v3/verifier.js.map +0 -1
  115. package/v3/index.d.ts +0 -1
  116. package/v3/index.js +0 -16
  117. 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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"}
@@ -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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"}
@@ -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 start the
22
- * underlying mock server
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 checkPort;
66
- private setupMockService;
67
- private startServer;
68
- private createServer;
67
+ private startMockServer;
68
+ private reset;
69
69
  }
@@ -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.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
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.createServer(config);
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 start the
84
- * underlying mock server
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
- var _this = this;
89
- return this.checkPort()
90
- .then(function () { return _this.startServer(); })
91
- .then(function (opts) {
92
- _this.setupMockService();
93
- return Promise.resolve(opts);
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 running when addInteraction was called"));
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
- return this.mockService.addInteraction(interactionObj);
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
- var interaction = new interaction_1.Interaction();
112
- if (interactionObj.state) {
113
- interaction.given(interactionObj.state);
190
+ else {
191
+ interaction = interactionObj;
114
192
  }
115
- interaction
116
- .uponReceiving(interactionObj.uponReceiving)
117
- .withRequest(interactionObj.withRequest)
118
- .willRespondWith(interactionObj.willRespondWith);
119
- return this.mockService.addInteraction(interaction);
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
- return this.mockService
134
- .verify()
135
- .then(function () { return _this.mockService.removeInteractions(); })
136
- .catch(function (e) {
137
- // Properly format the error
138
- // eslint-disable-next-line no-console
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
- // eslint-disable-next-line no-console
141
- console.error(cli_color_1.default.red('Pact verification failed!'));
142
- // eslint-disable-next-line no-console
143
- console.error(cli_color_1.default.red(e));
144
- return _this.mockService.removeInteractions().then(function () {
145
- throw new verificationError_1.default('Pact verification failed - expected interactions did not match actual.');
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
- if (!this.mockService) {
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
- return this.mockService.writePact();
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
- if (!this.mockService) {
204
- logErrorNoMockServer();
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.checkPort = function () {
210
- if (this.server && this.server.options.port) {
211
- return (0, net_1.isPortAvailable)(this.server.options.port, this.opts.host);
212
- }
213
- return Promise.resolve();
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
- Pact.prototype.setupMockService = function () {
216
- logger_1.default.info("Setting up Pact with Consumer \"".concat(this.opts.consumer, "\" and Provider \"").concat(this.opts.provider, "\"\n using mock service on Port: \"").concat(this.opts.port, "\""));
217
- this.mockService = new mockService_1.MockService(undefined, undefined, this.opts.port, this.opts.host, this.opts.ssl, this.opts.pactfileWriteMode);
218
- };
219
- Pact.prototype.startServer = function () {
220
- var _this = this;
221
- return new Promise(function (resolve, reject) {
222
- return _this.server.start().then(function () {
223
- _this.opts.port = _this.server.options.port || _this.opts.port;
224
- resolve(_this.opts);
225
- }, function (e) { return reject(e); });
226
- });
227
- };
228
- Pact.prototype.createServer = function (config) {
229
- this.server = pact_core_1.default.createServer(__assign(__assign({ timeout: 30000 }, this.opts), { port: config.port }));
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: 'overwrite',
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/httpPact/index.ts"],"names":[],"mappings":"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"}