@pact-foundation/pact 10.1.3 → 10.2.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +20 -1
  3. package/package.json +5 -5
  4. package/src/dsl/matchers.spec.js +2 -3
  5. package/src/dsl/matchers.spec.js.map +1 -1
  6. package/src/dsl/verifier/proxy/messages.d.ts +7 -0
  7. package/src/dsl/verifier/proxy/messages.js +90 -0
  8. package/src/dsl/verifier/proxy/messages.js.map +1 -0
  9. package/src/dsl/verifier/proxy/proxy.d.ts +1 -1
  10. package/src/dsl/verifier/proxy/proxy.js +16 -3
  11. package/src/dsl/verifier/proxy/proxy.js.map +1 -1
  12. package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +1 -0
  13. package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
  14. package/src/dsl/verifier/proxy/types.d.ts +3 -1
  15. package/src/dsl/verifier/types.d.ts +5 -1
  16. package/src/dsl/verifier/verifier.d.ts +1 -0
  17. package/src/dsl/verifier/verifier.js +20 -3
  18. package/src/dsl/verifier/verifier.js.map +1 -1
  19. package/src/messageProviderPact.js +3 -1
  20. package/src/messageProviderPact.js.map +1 -1
  21. package/src/messageProviderPact.spec.js +1 -1
  22. package/src/messageProviderPact.spec.js.map +1 -1
  23. package/src/v3/ffi.d.ts +5 -0
  24. package/src/v3/ffi.js +42 -0
  25. package/src/v3/ffi.js.map +1 -0
  26. package/src/v3/matchers.d.ts +1 -1
  27. package/src/v3/matchers.js +4 -1
  28. package/src/v3/matchers.js.map +1 -1
  29. package/src/v3/matchers.spec.js +14 -1
  30. package/src/v3/matchers.spec.js.map +1 -1
  31. package/src/v3/pact.js +9 -41
  32. package/src/v3/pact.js.map +1 -1
  33. package/src/v3/types.d.ts +2 -1
  34. package/src/v4/http/index.d.ts +85 -0
  35. package/src/v4/http/index.js +371 -0
  36. package/src/v4/http/index.js.map +1 -0
  37. package/src/v4/http/index.spec.d.ts +1 -0
  38. package/src/v4/http/index.spec.js +111 -0
  39. package/src/v4/http/index.spec.js.map +1 -0
  40. package/src/v4/http/types.d.ts +109 -0
  41. package/src/v4/http/types.js +3 -0
  42. package/src/v4/http/types.js.map +1 -0
  43. package/src/v4/index.d.ts +10 -0
  44. package/src/v4/index.js +26 -0
  45. package/src/v4/index.js.map +1 -0
  46. package/src/v4/message/index.d.ts +73 -0
  47. package/src/v4/message/index.js +286 -0
  48. package/src/v4/message/index.js.map +1 -0
  49. package/src/v4/message/index.spec.d.ts +1 -0
  50. package/src/v4/message/index.spec.js +214 -0
  51. package/src/v4/message/index.spec.js.map +1 -0
  52. package/src/v4/message/types.d.ts +57 -0
  53. package/src/v4/message/types.js +3 -0
  54. package/src/v4/message/types.js.map +1 -0
  55. package/src/v4/types.d.ts +6 -0
  56. package/src/v4/types.js +3 -0
  57. package/src/v4/types.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;AAAA,wDAA4E;AAC5E,+BAAiD;AAGjD,mDAAmE;AAEnE,qCAA2D;AAE3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;IAClC,MAAM,KAAK,CACT,yGAAyG,CAC1G,CAAC;CACH;AAED;IAGE,gBAAoB,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QACrC,IAAI,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAC1B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,sBAAkB,CAAC,CAAC;IAClE,CAAC;IAED,+BAAc,GAAd;QACE,OAAO,IAAI,8BAAuB,CAChC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAC5B,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IAED,0CAAyB,GAAzB,UACE,WAAmB;QAEnB,OAAO,IAAI,wCAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAC5C,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACH,aAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,wBAAM"}
@@ -0,0 +1,73 @@
1
+ /// <reference types="node" />
2
+ import { Metadata } from '../../dsl/message';
3
+ import { AnyTemplate } from '../../v3/matchers';
4
+ import { AnyJson, JsonMap } from '../../common/jsonTypes';
5
+ import { PluginConfig, SynchronousMessage, TransportConfig, V4MessagePluginRequestBuilderFunc, V4MessagePluginResponseBuilderFunc, V4SynchronousMessageWithPlugin, V4SynchronousMessageWithPluginContents, V4SynchronousMessageWithRequest, V4SynchronousMessageWithRequestBuilder, V4SynchronousMessageWithResponse, V4SynchronousMessageWithResponseBuilder, V4SynchronousMessageWithTransport, V4UnconfiguredSynchronousMessage } from './types';
6
+ import { SynchronousMessage as PactCoreSynchronousMessage, ConsumerPact } from '@pact-foundation/pact-core';
7
+ import { PactV4Options } from '../http/types';
8
+ export declare class UnconfiguredSynchronousMessage implements V4UnconfiguredSynchronousMessage {
9
+ protected pact: ConsumerPact;
10
+ protected interaction: PactCoreSynchronousMessage;
11
+ protected opts: PactV4Options;
12
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
13
+ given(state: string, parameters?: JsonMap): V4UnconfiguredSynchronousMessage;
14
+ usingPlugin(config: PluginConfig): V4SynchronousMessageWithPlugin;
15
+ withRequest(r: V4MessagePluginRequestBuilderFunc): V4SynchronousMessageWithRequest;
16
+ }
17
+ export declare class SynchronousMessageWithPlugin implements V4SynchronousMessageWithPlugin {
18
+ protected pact: ConsumerPact;
19
+ protected interaction: PactCoreSynchronousMessage;
20
+ protected opts: PactV4Options;
21
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
22
+ usingPlugin(config: PluginConfig): V4SynchronousMessageWithPlugin;
23
+ withPluginContents(contents: string, contentType: string): V4SynchronousMessageWithPluginContents;
24
+ }
25
+ export declare class SynchronousMessageWithRequestBuilder implements V4SynchronousMessageWithRequestBuilder {
26
+ protected pact: ConsumerPact;
27
+ protected interaction: PactCoreSynchronousMessage;
28
+ protected opts: PactV4Options;
29
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
30
+ withContent(contentType: string, body: Buffer): V4SynchronousMessageWithRequestBuilder;
31
+ withJSONContent(content: AnyTemplate): V4SynchronousMessageWithRequestBuilder;
32
+ }
33
+ export declare class SynchronousMessageWithRequest implements V4SynchronousMessageWithRequest {
34
+ protected pact: ConsumerPact;
35
+ protected interaction: PactCoreSynchronousMessage;
36
+ protected opts: PactV4Options;
37
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
38
+ withResponse(builder: V4MessagePluginResponseBuilderFunc): V4SynchronousMessageWithResponse;
39
+ }
40
+ export declare class SynchronousMessageWithResponseBuilder implements V4SynchronousMessageWithResponseBuilder {
41
+ protected pact: ConsumerPact;
42
+ protected interaction: PactCoreSynchronousMessage;
43
+ protected opts: PactV4Options;
44
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
45
+ withMetadata(metadata: Metadata): V4SynchronousMessageWithResponseBuilder;
46
+ withContent(contentType: string, body: Buffer): V4SynchronousMessageWithResponseBuilder;
47
+ withJSONContent(content: AnyTemplate): V4SynchronousMessageWithResponseBuilder;
48
+ }
49
+ export declare class SynchronousMessageWithPluginContents implements V4SynchronousMessageWithPluginContents {
50
+ protected pact: ConsumerPact;
51
+ protected interaction: PactCoreSynchronousMessage;
52
+ protected opts: PactV4Options;
53
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
54
+ executeTest<T>(integrationTest: (m: SynchronousMessage) => Promise<T>): Promise<T | undefined>;
55
+ startTransport(transport: string, address: string, // IP Address or hostname
56
+ config?: AnyJson): V4SynchronousMessageWithTransport;
57
+ }
58
+ export declare class SynchronousMessageWithTransport implements V4SynchronousMessageWithTransport {
59
+ protected pact: ConsumerPact;
60
+ protected interaction: PactCoreSynchronousMessage;
61
+ protected opts: PactV4Options;
62
+ protected port: number;
63
+ protected address: string;
64
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options, port: number, address: string);
65
+ executeTest<T>(integrationTest: (tc: TransportConfig, m: SynchronousMessage) => Promise<T>): Promise<T | undefined>;
66
+ }
67
+ export declare class SynchronousMessageWithResponse implements V4SynchronousMessageWithResponse {
68
+ protected pact: ConsumerPact;
69
+ protected interaction: PactCoreSynchronousMessage;
70
+ protected opts: PactV4Options;
71
+ constructor(pact: ConsumerPact, interaction: PactCoreSynchronousMessage, opts: PactV4Options);
72
+ executeTest<T>(integrationTest: (m: SynchronousMessage) => Promise<T>): Promise<T | undefined>;
73
+ }
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.SynchronousMessageWithResponse = exports.SynchronousMessageWithTransport = exports.SynchronousMessageWithPluginContents = exports.SynchronousMessageWithResponseBuilder = exports.SynchronousMessageWithRequest = exports.SynchronousMessageWithRequestBuilder = exports.SynchronousMessageWithPlugin = exports.UnconfiguredSynchronousMessage = void 0;
43
+ var ramda_1 = require("ramda");
44
+ var configurationError_1 = __importDefault(require("../../errors/configurationError"));
45
+ var display_1 = require("../../v3/display");
46
+ var logger_1 = __importDefault(require("../../common/logger"));
47
+ var defaultPactDir = './pacts';
48
+ var UnconfiguredSynchronousMessage = /** @class */ (function () {
49
+ function UnconfiguredSynchronousMessage(pact, interaction, opts) {
50
+ this.pact = pact;
51
+ this.interaction = interaction;
52
+ this.opts = opts;
53
+ }
54
+ UnconfiguredSynchronousMessage.prototype.given = function (state, parameters) {
55
+ var _this = this;
56
+ if (parameters) {
57
+ (0, ramda_1.forEachObjIndexed)(function (v, k) {
58
+ _this.interaction.givenWithParam(state, "".concat(k), JSON.stringify(v));
59
+ }, parameters);
60
+ }
61
+ else {
62
+ this.interaction.given(state);
63
+ }
64
+ return this;
65
+ };
66
+ UnconfiguredSynchronousMessage.prototype.usingPlugin = function (config) {
67
+ this.pact.addPlugin(config.plugin, config.version);
68
+ return new SynchronousMessageWithPlugin(this.pact, this.interaction, this.opts);
69
+ };
70
+ UnconfiguredSynchronousMessage.prototype.withRequest = function (r) {
71
+ return new SynchronousMessageWithRequest(this.pact, this.interaction, this.opts);
72
+ };
73
+ return UnconfiguredSynchronousMessage;
74
+ }());
75
+ exports.UnconfiguredSynchronousMessage = UnconfiguredSynchronousMessage;
76
+ var SynchronousMessageWithPlugin = /** @class */ (function () {
77
+ function SynchronousMessageWithPlugin(pact, interaction, opts) {
78
+ this.pact = pact;
79
+ this.interaction = interaction;
80
+ this.opts = opts;
81
+ }
82
+ SynchronousMessageWithPlugin.prototype.usingPlugin = function (config) {
83
+ this.pact.addPlugin(config.plugin, config.version);
84
+ return this;
85
+ };
86
+ SynchronousMessageWithPlugin.prototype.withPluginContents = function (contents, contentType) {
87
+ this.interaction.withPluginRequestResponseInteractionContents(contentType, contents);
88
+ return new SynchronousMessageWithPluginContents(this.pact, this.interaction, this.opts);
89
+ };
90
+ return SynchronousMessageWithPlugin;
91
+ }());
92
+ exports.SynchronousMessageWithPlugin = SynchronousMessageWithPlugin;
93
+ var SynchronousMessageWithRequestBuilder = /** @class */ (function () {
94
+ function SynchronousMessageWithRequestBuilder(pact, interaction, opts) {
95
+ this.pact = pact;
96
+ this.interaction = interaction;
97
+ this.opts = opts;
98
+ }
99
+ SynchronousMessageWithRequestBuilder.prototype.withContent = function (contentType, body) {
100
+ this.interaction.withRequestBinaryContents(body, contentType);
101
+ return this;
102
+ };
103
+ SynchronousMessageWithRequestBuilder.prototype.withJSONContent = function (content) {
104
+ if ((0, ramda_1.isEmpty)(content)) {
105
+ throw new configurationError_1.default('You must provide a valid JSON document or primitive for the Message.');
106
+ }
107
+ this.interaction.withRequestContents(JSON.stringify(content), 'application/json');
108
+ return this;
109
+ };
110
+ return SynchronousMessageWithRequestBuilder;
111
+ }());
112
+ exports.SynchronousMessageWithRequestBuilder = SynchronousMessageWithRequestBuilder;
113
+ var SynchronousMessageWithRequest = /** @class */ (function () {
114
+ function SynchronousMessageWithRequest(pact, interaction, opts) {
115
+ this.pact = pact;
116
+ this.interaction = interaction;
117
+ this.opts = opts;
118
+ }
119
+ SynchronousMessageWithRequest.prototype.withResponse = function (builder) {
120
+ builder(new SynchronousMessageWithResponseBuilder(this.pact, this.interaction, this.opts));
121
+ return new SynchronousMessageWithResponse(this.pact, this.interaction, this.opts);
122
+ };
123
+ return SynchronousMessageWithRequest;
124
+ }());
125
+ exports.SynchronousMessageWithRequest = SynchronousMessageWithRequest;
126
+ var SynchronousMessageWithResponseBuilder = /** @class */ (function () {
127
+ function SynchronousMessageWithResponseBuilder(pact, interaction, opts) {
128
+ this.pact = pact;
129
+ this.interaction = interaction;
130
+ this.opts = opts;
131
+ }
132
+ SynchronousMessageWithResponseBuilder.prototype.withMetadata = function (metadata) {
133
+ var _this = this;
134
+ if ((0, ramda_1.isEmpty)(metadata)) {
135
+ throw new configurationError_1.default('You must provide valid metadata for the Message, or none at all');
136
+ }
137
+ (0, ramda_1.forEachObjIndexed)(function (v, k) {
138
+ _this.interaction.withMetadata("".concat(k), typeof v === 'string' ? v : v.getValue());
139
+ }, metadata);
140
+ return this;
141
+ };
142
+ SynchronousMessageWithResponseBuilder.prototype.withContent = function (contentType, body) {
143
+ this.interaction.withResponseBinaryContents(body, contentType);
144
+ return this;
145
+ };
146
+ SynchronousMessageWithResponseBuilder.prototype.withJSONContent = function (content) {
147
+ if ((0, ramda_1.isEmpty)(content)) {
148
+ throw new configurationError_1.default('You must provide a valid JSON document or primitive for the Message.');
149
+ }
150
+ this.interaction.withResponseContents(JSON.stringify(content), 'application/json');
151
+ return this;
152
+ };
153
+ return SynchronousMessageWithResponseBuilder;
154
+ }());
155
+ exports.SynchronousMessageWithResponseBuilder = SynchronousMessageWithResponseBuilder;
156
+ var SynchronousMessageWithPluginContents = /** @class */ (function () {
157
+ function SynchronousMessageWithPluginContents(pact, interaction, opts) {
158
+ this.pact = pact;
159
+ this.interaction = interaction;
160
+ this.opts = opts;
161
+ }
162
+ SynchronousMessageWithPluginContents.prototype.executeTest = function (integrationTest) {
163
+ return executeNonTransportTest(this.pact, this.opts, integrationTest);
164
+ };
165
+ SynchronousMessageWithPluginContents.prototype.startTransport = function (transport, address, // IP Address or hostname
166
+ config) {
167
+ var port = this.pact.pactffiCreateMockServerForTransport(address, transport, config ? JSON.stringify(config) : '');
168
+ return new SynchronousMessageWithTransport(this.pact, this.interaction, this.opts, port, address);
169
+ };
170
+ return SynchronousMessageWithPluginContents;
171
+ }());
172
+ exports.SynchronousMessageWithPluginContents = SynchronousMessageWithPluginContents;
173
+ var SynchronousMessageWithTransport = /** @class */ (function () {
174
+ function SynchronousMessageWithTransport(pact, interaction, opts, port, address) {
175
+ this.pact = pact;
176
+ this.interaction = interaction;
177
+ this.opts = opts;
178
+ this.port = port;
179
+ this.address = address;
180
+ }
181
+ // TODO: this is basically the same as the HTTP variant, except only with a different test function wrapper
182
+ // extract these into smaller, testable chunks and re-use them
183
+ SynchronousMessageWithTransport.prototype.executeTest = function (integrationTest) {
184
+ return __awaiter(this, void 0, void 0, function () {
185
+ var val, error, e_1, matchingResults, errors, success, errorMessage;
186
+ return __generator(this, function (_a) {
187
+ switch (_a.label) {
188
+ case 0:
189
+ _a.trys.push([0, 2, , 3]);
190
+ return [4 /*yield*/, integrationTest({ port: this.port, address: this.address }, {})];
191
+ case 1:
192
+ val = _a.sent();
193
+ return [3 /*break*/, 3];
194
+ case 2:
195
+ e_1 = _a.sent();
196
+ error = e_1;
197
+ return [3 /*break*/, 3];
198
+ case 3:
199
+ matchingResults = this.pact.mockServerMismatches(this.port);
200
+ errors = (0, display_1.filterMissingFeatureFlag)(matchingResults);
201
+ success = this.pact.mockServerMatchedSuccessfully(this.port);
202
+ // Scenario: Pact validation failed
203
+ if (!success && errors.length > 0) {
204
+ errorMessage = 'Test failed for the following reasons:';
205
+ errorMessage += "\n\n ".concat((0, display_1.generateMockServerError)(matchingResults, '\t'));
206
+ cleanup(false, this.pact, this.opts, this.port, true);
207
+ // If the tests throws an error, we need to rethrow the error, but print out
208
+ // any additional mock server errors to help the user understand what happened
209
+ // (The proximate cause here is often the HTTP 500 from the mock server,
210
+ // where the HTTP client then throws)
211
+ if (error) {
212
+ logger_1.default.error(errorMessage);
213
+ throw error;
214
+ }
215
+ // Test didn't throw, so we need to ensure the test fails
216
+ return [2 /*return*/, Promise.reject(new Error(errorMessage))];
217
+ }
218
+ // Scenario: test threw an error, but Pact validation was OK (error in client or test)
219
+ if (error) {
220
+ cleanup(false, this.pact, this.opts, this.port, true);
221
+ throw error;
222
+ }
223
+ // Scenario: Pact validation passed, test didn't throw - return the callback value
224
+ cleanup(true, this.pact, this.opts, this.port, true);
225
+ return [2 /*return*/, val];
226
+ }
227
+ });
228
+ });
229
+ };
230
+ return SynchronousMessageWithTransport;
231
+ }());
232
+ exports.SynchronousMessageWithTransport = SynchronousMessageWithTransport;
233
+ var SynchronousMessageWithResponse = /** @class */ (function () {
234
+ function SynchronousMessageWithResponse(pact, interaction, opts) {
235
+ this.pact = pact;
236
+ this.interaction = interaction;
237
+ this.opts = opts;
238
+ }
239
+ SynchronousMessageWithResponse.prototype.executeTest = function (integrationTest) {
240
+ return executeNonTransportTest(this.pact, this.opts, integrationTest);
241
+ };
242
+ return SynchronousMessageWithResponse;
243
+ }());
244
+ exports.SynchronousMessageWithResponse = SynchronousMessageWithResponse;
245
+ var cleanup = function (success, pact, opts, port, transport) {
246
+ if (transport === void 0) { transport = false; }
247
+ if (success) {
248
+ if (transport && port) {
249
+ pact.writePactFileForPluginServer(port, opts.dir || defaultPactDir, true);
250
+ }
251
+ else {
252
+ pact.writePactFile(opts.dir || defaultPactDir);
253
+ }
254
+ }
255
+ if (port) {
256
+ pact.cleanupMockServer(port);
257
+ }
258
+ pact.cleanupPlugins();
259
+ };
260
+ var executeNonTransportTest = function (pact, opts, integrationTest) { return __awaiter(void 0, void 0, void 0, function () {
261
+ var val, error, e_2;
262
+ return __generator(this, function (_a) {
263
+ switch (_a.label) {
264
+ case 0:
265
+ _a.trys.push([0, 2, , 3]);
266
+ return [4 /*yield*/, integrationTest({})];
267
+ case 1:
268
+ val = _a.sent();
269
+ return [3 /*break*/, 3];
270
+ case 2:
271
+ e_2 = _a.sent();
272
+ error = e_2;
273
+ return [3 /*break*/, 3];
274
+ case 3:
275
+ // Scenario: test threw an error, but Pact validation was OK (error in client or test)
276
+ if (error) {
277
+ cleanup(false, pact, opts);
278
+ throw error;
279
+ }
280
+ // Scenario: Pact validation passed, test didn't throw - return the callback value
281
+ cleanup(true, pact, opts);
282
+ return [2 /*return*/, val];
283
+ }
284
+ });
285
+ }); };
286
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/message/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ /* tslint:disable:no-unused-expression no-empty */
43
+ var chai_1 = __importDefault(require("chai"));
44
+ var chai_as_promised_1 = __importDefault(require("chai-as-promised"));
45
+ var sinon_chai_1 = __importDefault(require("sinon-chai"));
46
+ var v3_1 = require("../../v3");
47
+ var index_1 = require("../index");
48
+ var net = require("net");
49
+ var verifier_1 = require("../../dsl/verifier");
50
+ var path = require("path");
51
+ var messageProviderPact_1 = require("../../messageProviderPact");
52
+ var express = require("express");
53
+ chai_1.default.use(sinon_chai_1.default);
54
+ chai_1.default.use(chai_as_promised_1.default);
55
+ var expect = chai_1.default.expect;
56
+ describe.skip('PactV4', function () {
57
+ var HOST = 'localhost';
58
+ var pact = new index_1.PactV4({
59
+ consumer: 'myconsumer',
60
+ provider: 'myprovider',
61
+ spec: v3_1.SpecificationVersion.SPECIFICATION_VERSION_V4,
62
+ logLevel: 'trace',
63
+ });
64
+ describe('TCP Messages', function () {
65
+ describe('with MATT protocol', function () { return __awaiter(void 0, void 0, void 0, function () {
66
+ return __generator(this, function (_a) {
67
+ it('generates a pact with success', function () {
68
+ var mattMessage = "{\"request\": {\"body\": \"hellotcp\"}, \"response\":{\"body\":\"tcpworld\"}}";
69
+ return pact
70
+ .addSynchronousInteraction('a MATT message')
71
+ .usingPlugin({
72
+ plugin: 'matt',
73
+ version: '0.0.2',
74
+ })
75
+ .withPluginContents(mattMessage, 'application/matt')
76
+ .startTransport('matt', HOST)
77
+ .executeTest(function (tc) { return __awaiter(void 0, void 0, void 0, function () {
78
+ var message;
79
+ return __generator(this, function (_a) {
80
+ switch (_a.label) {
81
+ case 0: return [4 /*yield*/, sendMattMessageTCP('hello', HOST, tc.port)];
82
+ case 1:
83
+ message = _a.sent();
84
+ expect(message).to.eq('tcpworld');
85
+ return [2 /*return*/];
86
+ }
87
+ });
88
+ }); });
89
+ });
90
+ return [2 /*return*/];
91
+ });
92
+ }); });
93
+ });
94
+ describe('Verification', function () {
95
+ describe('with MATT protocol', function () {
96
+ var HTTP_PORT = 8888;
97
+ var TCP_PORT = 8887;
98
+ beforeEach(function () { return __awaiter(void 0, void 0, void 0, function () {
99
+ return __generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0: return [4 /*yield*/, startHTTPServer(HOST, HTTP_PORT)];
102
+ case 1:
103
+ _a.sent();
104
+ return [4 /*yield*/, startTCPServer(HOST, TCP_PORT)];
105
+ case 2:
106
+ _a.sent();
107
+ return [2 /*return*/];
108
+ }
109
+ });
110
+ }); });
111
+ it('validates a matt message', function () { return __awaiter(void 0, void 0, void 0, function () {
112
+ var v;
113
+ return __generator(this, function (_a) {
114
+ v = new verifier_1.Verifier({
115
+ providerBaseUrl: "http://".concat(HOST, ":").concat(HTTP_PORT),
116
+ transports: [
117
+ {
118
+ port: TCP_PORT,
119
+ protocol: 'matt',
120
+ scheme: 'tcp',
121
+ },
122
+ ],
123
+ pactUrls: [
124
+ path.join(__dirname, '../../..', 'pacts', 'myconsumer-myprovider.json'),
125
+ ],
126
+ stateHandlers: {
127
+ 'a dog named rover': function () {
128
+ // Add the dog to the database
129
+ dogs[27] = {
130
+ id: 27,
131
+ name: 'fido',
132
+ type: 'bulldog',
133
+ };
134
+ return Promise.resolve();
135
+ },
136
+ },
137
+ messageProviders: {
138
+ 'a request for a dog': (0, messageProviderPact_1.providerWithMetadata)(function () {
139
+ return createDog(27);
140
+ }, {
141
+ queue: 'animals',
142
+ }),
143
+ },
144
+ });
145
+ return [2 /*return*/, v.verifyProvider()];
146
+ });
147
+ }); });
148
+ });
149
+ });
150
+ });
151
+ var parseMattMessage = function (raw) {
152
+ return raw.replace(/(MATT)+/g, '').trim();
153
+ };
154
+ var generateMattMessage = function (raw) {
155
+ return "MATT".concat(raw, "MATT");
156
+ };
157
+ var sendMattMessageTCP = function (message, host, port) {
158
+ var socket = net.connect({
159
+ port: port,
160
+ host: host,
161
+ });
162
+ var res = socket.write(generateMattMessage(message) + '\n');
163
+ if (!res) {
164
+ throw Error('unable to connect to host');
165
+ }
166
+ return new Promise(function (resolve) {
167
+ socket.on('data', function (data) {
168
+ resolve(parseMattMessage(data.toString()));
169
+ });
170
+ });
171
+ };
172
+ // Server Implementation
173
+ var startTCPServer = function (host, port) {
174
+ var server = net.createServer();
175
+ server.on('connection', function (sock) {
176
+ sock.on('data', function (data) {
177
+ var msg = parseMattMessage(data.toString());
178
+ if (msg === 'hellotcp') {
179
+ sock.write(generateMattMessage('tcpworld'));
180
+ }
181
+ else {
182
+ sock.write(generateMattMessage('message not understood'));
183
+ }
184
+ sock.write('\n');
185
+ });
186
+ });
187
+ return new Promise(function (resolve) {
188
+ server.listen(port, host);
189
+ server.on('listening', function () {
190
+ resolve(null);
191
+ });
192
+ });
193
+ };
194
+ var startHTTPServer = function (host, port) {
195
+ var server = express();
196
+ server.post('/matt', function (_, res) {
197
+ res.setHeader('content-type', 'application/matt');
198
+ res.send(generateMattMessage('world'));
199
+ });
200
+ var s;
201
+ return new Promise(function (resolve) {
202
+ s = server.listen(port, host, function () {
203
+ resolve();
204
+ });
205
+ }).then(function () { return s; });
206
+ };
207
+ var dogs = {};
208
+ // API integration client
209
+ var createDog = function (id) {
210
+ return new Promise(function (resolve) {
211
+ resolve(dogs[id]);
212
+ });
213
+ };
214
+ //# sourceMappingURL=index.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../../../src/v4/message/index.spec.ts"],"names":[],"mappings":"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"}