@pact-foundation/pact 11.0.1 → 11.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/CONTRIBUTING.md +2 -1
- package/MIGRATION.md +4 -0
- package/README.md +5 -3
- package/package.json +1 -1
- package/scripts/trigger-release.sh +1 -1
- package/src/pact.integration.spec.d.ts +1 -0
- package/src/pact.integration.spec.js +194 -291
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v4/http/index.d.ts +4 -4
- package/src/v4/http/index.js +8 -4
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/types.d.ts +4 -5
- package/src/v4/index.js +3 -1
- package/src/v4/index.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [11.0.2](https://github.com/pact-foundation/pact-js/compare/v11.0.1...v11.0.2) (2023-03-09)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Fixes and Improvements
|
|
9
|
+
|
|
10
|
+
* v4 response builder for non-plugin interface ([4da4cb3](https://github.com/pact-foundation/pact-js/commit/4da4cb3e917c541a5633246d6c1f4c4a22d4e5fd)), closes [#1073](https://github.com/pact-foundation/pact-js/issues/1073)
|
|
11
|
+
|
|
5
12
|
### [11.0.1](https://github.com/pact-foundation/pact-js/compare/v11.0.0...v11.0.1) (2023-03-09)
|
|
6
13
|
|
|
7
14
|
|
package/CONTRIBUTING.md
CHANGED
|
@@ -17,8 +17,9 @@ Please provide the following information with your issue to enable us to respond
|
|
|
17
17
|
|
|
18
18
|
## Key Branches
|
|
19
19
|
|
|
20
|
-
* `master` - this is the current main version supporting the
|
|
20
|
+
* `master` - this is the current main version supporting the 11.x.x release line. Most investment will be here, including major new features, enhancements, bug fixes, security patches etc.
|
|
21
21
|
* `9.x.x` - this is the previous major version supporting the 9.x.x release line. Critical security patches and bug fixes will be provided as a priority.
|
|
22
|
+
* There is no tracking or release branch for 10.x.x at this stage. Most users can be encouraged to jump straight to 11.x.x noting the single breaking change (see the migration guide)
|
|
22
23
|
|
|
23
24
|
## I want to contribute code but don't know where to start
|
|
24
25
|
|
package/MIGRATION.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Pact-js migration guide
|
|
2
2
|
|
|
3
|
+
# 10.x.x -> 11.x.x
|
|
4
|
+
|
|
5
|
+
There is just one single [breaking change](https://github.com/pact-foundation/pact-js/blob/master/CHANGELOG.md#-breaking-changes) in this release. A conflicting type `StateHandlers` has been renamed to `MessageStateHandlers` for use in message pact tests.
|
|
6
|
+
|
|
3
7
|
# 9.x.x -> 10.x.x
|
|
4
8
|
|
|
5
9
|
See the [9.x.x -> 10.x.x](/docs/migrations/9-10.md) migration guide.
|
package/README.md
CHANGED
|
@@ -248,8 +248,9 @@ It's best to run Pact verification tests as part of your unit testing suite, so
|
|
|
248
248
|
|
|
249
249
|
| Version | Stable | [Spec] Compatibility | Install |
|
|
250
250
|
| ------- | ------ | -------------------- | ------------------ |
|
|
251
|
-
|
|
|
252
|
-
|
|
|
251
|
+
| 11.x.x | Yes | 2, 3, 4 | See [installation] |
|
|
252
|
+
| 10.x.x | Yes | 2, 3, 4 | See [installation] |
|
|
253
|
+
| 9.x.x | Yes | 2, 3\* | [9xx] |
|
|
253
254
|
|
|
254
255
|
_\*_ v3 support is limited to the subset of functionality required to enable language inter-operable [Message support].
|
|
255
256
|
|
|
@@ -268,7 +269,8 @@ See [CONTRIBUTING](CONTRIBUTING.md).
|
|
|
268
269
|
<br />
|
|
269
270
|
|
|
270
271
|
[spec]: https://github.com/pact-foundation/pact-specification
|
|
271
|
-
[
|
|
272
|
+
[10xx]: https://github.com/pact-foundation/pact-js/tree/10.x.x
|
|
273
|
+
[9xx]: https://github.com/pact-foundation/pact-js/tree/9.x.x
|
|
272
274
|
[pact website]: http://docs.pact.io/
|
|
273
275
|
[@pact_up]: https://twitter.com/pact_up
|
|
274
276
|
[pact specification v2]: https://github.com/pact-foundation/pact-specification/tree/version-2
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,292 +1,195 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
// path: "/projects",
|
|
196
|
-
// headers: {
|
|
197
|
-
// Accept: "application/json",
|
|
198
|
-
// },
|
|
199
|
-
// },
|
|
200
|
-
// willRespondWith: {
|
|
201
|
-
// status: 200,
|
|
202
|
-
// headers: {
|
|
203
|
-
// "Content-Type": "application/json",
|
|
204
|
-
// },
|
|
205
|
-
// body: EXPECTED_BODY,
|
|
206
|
-
// },
|
|
207
|
-
// })
|
|
208
|
-
// const interaction2 = provider.addInteraction({
|
|
209
|
-
// state: "i have a list of projects",
|
|
210
|
-
// uponReceiving: "a request for a project that does not exist",
|
|
211
|
-
// withRequest: {
|
|
212
|
-
// method: HTTPMethod.GET,
|
|
213
|
-
// path: "/projects/2",
|
|
214
|
-
// headers: {
|
|
215
|
-
// Accept: "application/json",
|
|
216
|
-
// },
|
|
217
|
-
// },
|
|
218
|
-
// willRespondWith: {
|
|
219
|
-
// status: 404,
|
|
220
|
-
// headers: {
|
|
221
|
-
// "Content-Type": "application/json",
|
|
222
|
-
// },
|
|
223
|
-
// },
|
|
224
|
-
// })
|
|
225
|
-
// return Promise.all([interaction1, interaction2])
|
|
226
|
-
// })
|
|
227
|
-
// it("allows two requests", () => {
|
|
228
|
-
// const verificationPromise = superagent
|
|
229
|
-
// .get(`${PROVIDER_URL}/projects`)
|
|
230
|
-
// .set({
|
|
231
|
-
// Accept: "application/json",
|
|
232
|
-
// })
|
|
233
|
-
// .then((res: any) => res.text)
|
|
234
|
-
// const verificationPromise404 = superagent
|
|
235
|
-
// .get(`${PROVIDER_URL}/projects/2`)
|
|
236
|
-
// .set({
|
|
237
|
-
// Accept: "application/json",
|
|
238
|
-
// })
|
|
239
|
-
// return Promise.all([
|
|
240
|
-
// expect(verificationPromise).to.eventually.equal(
|
|
241
|
-
// JSON.stringify(EXPECTED_BODY)
|
|
242
|
-
// ),
|
|
243
|
-
// expect(verificationPromise404).to.eventually.be.rejected,
|
|
244
|
-
// ])
|
|
245
|
-
// })
|
|
246
|
-
// // verify with Pact, and reset expectations
|
|
247
|
-
// it("successfully verifies", () => provider.verify())
|
|
248
|
-
// })
|
|
249
|
-
// context("with an unexpected interaction", () => {
|
|
250
|
-
// // add interactions, as many as needed
|
|
251
|
-
// before(() =>
|
|
252
|
-
// provider
|
|
253
|
-
// .addInteraction({
|
|
254
|
-
// state: "i have a list of projects",
|
|
255
|
-
// uponReceiving: "a request for projects",
|
|
256
|
-
// withRequest: {
|
|
257
|
-
// method: HTTPMethod.GET,
|
|
258
|
-
// path: "/projects",
|
|
259
|
-
// headers: {
|
|
260
|
-
// Accept: "application/json",
|
|
261
|
-
// },
|
|
262
|
-
// },
|
|
263
|
-
// willRespondWith: {
|
|
264
|
-
// status: 200,
|
|
265
|
-
// headers: {
|
|
266
|
-
// "Content-Type": "application/json",
|
|
267
|
-
// },
|
|
268
|
-
// body: EXPECTED_BODY,
|
|
269
|
-
// },
|
|
270
|
-
// })
|
|
271
|
-
// .then(
|
|
272
|
-
// () => console.log("Adding interaction worked"),
|
|
273
|
-
// () => console.warn("Adding interaction failed.")
|
|
274
|
-
// )
|
|
275
|
-
// )
|
|
276
|
-
// it("fails verification", () => {
|
|
277
|
-
// const verificationPromise = superagent
|
|
278
|
-
// .get(`${PROVIDER_URL}/projects`)
|
|
279
|
-
// .set({ Accept: "application/json" })
|
|
280
|
-
// .then(() =>
|
|
281
|
-
// superagent.delete(`${PROVIDER_URL}/projects/2`).catch(() => {})
|
|
282
|
-
// )
|
|
283
|
-
// .then(() => provider.verify())
|
|
284
|
-
// return expect(verificationPromise).to.be.rejectedWith(
|
|
285
|
-
// "Pact verification failed - expected interactions did not match actual."
|
|
286
|
-
// )
|
|
287
|
-
// })
|
|
288
|
-
// })
|
|
289
|
-
// })
|
|
290
|
-
// })
|
|
291
|
-
// })
|
|
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 (g && (g = 0, op[0] && (_ = 0)), _) 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 axios_1 = __importDefault(require("axios"));
|
|
47
|
+
var net = require("net");
|
|
48
|
+
var v4_1 = require("./v4");
|
|
49
|
+
var expect = chai_1.default.expect;
|
|
50
|
+
chai_1.default.use(sinon_chai_1.default);
|
|
51
|
+
chai_1.default.use(chai_as_promised_1.default);
|
|
52
|
+
describe('V4 Pact', function () {
|
|
53
|
+
var pact;
|
|
54
|
+
beforeEach(function () {
|
|
55
|
+
pact = new v4_1.PactV4({
|
|
56
|
+
consumer: 'v4consumer',
|
|
57
|
+
provider: 'v4provider',
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('HTTP req/res contract', function () {
|
|
61
|
+
it('generates a pact', function () {
|
|
62
|
+
return pact
|
|
63
|
+
.addInteraction()
|
|
64
|
+
.given('some state')
|
|
65
|
+
.given('a second state')
|
|
66
|
+
.uponReceiving('a standard HTTP req/res')
|
|
67
|
+
.withRequest('POST', '/', function (builder) {
|
|
68
|
+
builder
|
|
69
|
+
.jsonBody({
|
|
70
|
+
foo: 'bar',
|
|
71
|
+
})
|
|
72
|
+
.headers({
|
|
73
|
+
'x-foo': 'x-bar',
|
|
74
|
+
});
|
|
75
|
+
})
|
|
76
|
+
.willRespondWith(200, function (builder) {
|
|
77
|
+
builder
|
|
78
|
+
.jsonBody({
|
|
79
|
+
foo: 'bar',
|
|
80
|
+
})
|
|
81
|
+
.headers({
|
|
82
|
+
'x-foo': 'x-bar',
|
|
83
|
+
});
|
|
84
|
+
})
|
|
85
|
+
.executeTest(function (server) { return __awaiter(void 0, void 0, void 0, function () {
|
|
86
|
+
return __generator(this, function (_a) {
|
|
87
|
+
return [2 /*return*/, axios_1.default.post(server.url, {
|
|
88
|
+
foo: 'bar',
|
|
89
|
+
}, {
|
|
90
|
+
headers: {
|
|
91
|
+
'x-foo': 'x-bar',
|
|
92
|
+
},
|
|
93
|
+
})];
|
|
94
|
+
});
|
|
95
|
+
}); });
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('Plugin test', function () {
|
|
99
|
+
describe('Using the MATT plugin', function () {
|
|
100
|
+
var parseMattMessage = function (raw) {
|
|
101
|
+
return raw.replace(/(MATT)+/g, '').trim();
|
|
102
|
+
};
|
|
103
|
+
var generateMattMessage = function (raw) { return "MATT".concat(raw, "MATT"); };
|
|
104
|
+
describe('HTTP interface', function () {
|
|
105
|
+
it('generates a pact', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
106
|
+
var mattRequest, mattResponse;
|
|
107
|
+
return __generator(this, function (_a) {
|
|
108
|
+
switch (_a.label) {
|
|
109
|
+
case 0:
|
|
110
|
+
mattRequest = "{\"request\": {\"body\": \"hello\"}}";
|
|
111
|
+
mattResponse = "{\"response\":{\"body\":\"world\"}}";
|
|
112
|
+
return [4 /*yield*/, pact
|
|
113
|
+
.addInteraction()
|
|
114
|
+
.given('the Matt protocol exists')
|
|
115
|
+
.uponReceiving('an HTTP request to /matt')
|
|
116
|
+
.usingPlugin({
|
|
117
|
+
plugin: 'matt',
|
|
118
|
+
version: '0.0.7',
|
|
119
|
+
})
|
|
120
|
+
.withRequest('POST', '/matt', function (builder) {
|
|
121
|
+
builder.pluginContents('application/matt', mattRequest);
|
|
122
|
+
})
|
|
123
|
+
.willRespondWith(200, function (builder) {
|
|
124
|
+
builder.pluginContents('application/matt', mattResponse);
|
|
125
|
+
})
|
|
126
|
+
.executeTest(function (mockserver) {
|
|
127
|
+
return axios_1.default
|
|
128
|
+
.request({
|
|
129
|
+
baseURL: mockserver.url,
|
|
130
|
+
headers: {
|
|
131
|
+
'content-type': 'application/matt',
|
|
132
|
+
Accept: 'application/matt',
|
|
133
|
+
},
|
|
134
|
+
data: generateMattMessage('hello'),
|
|
135
|
+
method: 'POST',
|
|
136
|
+
url: '/matt',
|
|
137
|
+
})
|
|
138
|
+
.then(function (res) {
|
|
139
|
+
expect(parseMattMessage(res.data)).to.eq('world');
|
|
140
|
+
});
|
|
141
|
+
})];
|
|
142
|
+
case 1:
|
|
143
|
+
_a.sent();
|
|
144
|
+
return [2 /*return*/];
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}); });
|
|
148
|
+
});
|
|
149
|
+
describe('Synchronous Message (TCP) ', function () {
|
|
150
|
+
describe('with MATT protocol', function () {
|
|
151
|
+
var HOST = '127.0.0.1';
|
|
152
|
+
var sendMattMessageTCP = function (message, host, port) {
|
|
153
|
+
var socket = net.connect({
|
|
154
|
+
port: port,
|
|
155
|
+
host: host,
|
|
156
|
+
});
|
|
157
|
+
var res = socket.write("".concat(generateMattMessage(message), "\n"));
|
|
158
|
+
if (!res) {
|
|
159
|
+
throw Error('unable to connect to host');
|
|
160
|
+
}
|
|
161
|
+
return new Promise(function (resolve) {
|
|
162
|
+
socket.on('data', function (data) {
|
|
163
|
+
resolve(parseMattMessage(data.toString()));
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
};
|
|
167
|
+
it('generates a pact', function () {
|
|
168
|
+
var mattMessage = "{\"request\": {\"body\": \"hellotcp\"}, \"response\":{\"body\":\"tcpworld\"}}";
|
|
169
|
+
return pact
|
|
170
|
+
.addSynchronousInteraction('a MATT message')
|
|
171
|
+
.usingPlugin({
|
|
172
|
+
plugin: 'matt',
|
|
173
|
+
version: '0.0.7',
|
|
174
|
+
})
|
|
175
|
+
.withPluginContents(mattMessage, 'application/matt')
|
|
176
|
+
.startTransport('matt', HOST)
|
|
177
|
+
.executeTest(function (tc) { return __awaiter(void 0, void 0, void 0, function () {
|
|
178
|
+
var message;
|
|
179
|
+
return __generator(this, function (_a) {
|
|
180
|
+
switch (_a.label) {
|
|
181
|
+
case 0: return [4 /*yield*/, sendMattMessageTCP('hellotcp', HOST, tc.port)];
|
|
182
|
+
case 1:
|
|
183
|
+
message = _a.sent();
|
|
184
|
+
expect(message).to.eq('tcpworld');
|
|
185
|
+
return [2 /*return*/];
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
}); });
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
});
|
|
292
195
|
//# sourceMappingURL=pact.integration.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pact.integration.spec.js","sourceRoot":"","sources":["../../src/pact.integration.spec.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"pact.integration.spec.js","sourceRoot":"","sources":["../../src/pact.integration.spec.ts"],"names":[],"mappings":"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"}
|
package/src/v4/http/index.d.ts
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { ConsumerInteraction, ConsumerPact } from '@pact-foundation/pact-core';
|
|
3
3
|
import { JsonMap } from '../../common/jsonTypes';
|
|
4
4
|
import { Path, TemplateHeaders, TemplateQuery } from '../../v3';
|
|
5
|
-
import { AnyTemplate } from '../../v3/matchers';
|
|
6
5
|
import { PactV4Options, PluginConfig, V4InteractionWithCompleteRequest, V4InteractionWithPlugin, V4InteractionwithRequest, V4InteractionWithResponse, V4MockServer, V4Request, V4RequestBuilder, V4RequestBuilderFunc, V4ResponseBuilder, V4ResponseBuilderFunc, V4UnconfiguredInteraction, V4Response, V4InteractionWithPluginRequest, V4PluginResponseBuilderFunc, V4InteractionWithPluginResponse, V4RequestWithPluginBuilder, V4ResponseWithPluginBuilder, V4PluginRequestBuilderFunc, TestFunction } from './types';
|
|
7
6
|
export declare class UnconfiguredInteraction implements V4UnconfiguredInteraction {
|
|
8
7
|
protected pact: ConsumerPact;
|
|
@@ -19,7 +18,8 @@ export declare class InteractionWithCompleteRequest implements V4InteractionWith
|
|
|
19
18
|
private pact;
|
|
20
19
|
private interaction;
|
|
21
20
|
private opts;
|
|
22
|
-
|
|
21
|
+
private request;
|
|
22
|
+
constructor(pact: ConsumerPact, interaction: ConsumerInteraction, opts: PactV4Options, request: V4Request);
|
|
23
23
|
withCompleteResponse(response: V4Response): V4InteractionWithResponse;
|
|
24
24
|
}
|
|
25
25
|
export declare class InteractionwithRequest implements V4InteractionwithRequest {
|
|
@@ -34,7 +34,7 @@ export declare class RequestBuilder implements V4RequestBuilder {
|
|
|
34
34
|
constructor(interaction: ConsumerInteraction);
|
|
35
35
|
query(query: TemplateQuery): this;
|
|
36
36
|
headers(headers: TemplateHeaders): this;
|
|
37
|
-
jsonBody(body:
|
|
37
|
+
jsonBody(body: unknown): this;
|
|
38
38
|
binaryFile(contentType: string, file: string): this;
|
|
39
39
|
multipartBody(contentType: string, file: string, mimePartName: string): this;
|
|
40
40
|
body(contentType: string, body: Buffer): this;
|
|
@@ -43,7 +43,7 @@ export declare class ResponseBuilder implements V4ResponseBuilder {
|
|
|
43
43
|
protected interaction: ConsumerInteraction;
|
|
44
44
|
constructor(interaction: ConsumerInteraction);
|
|
45
45
|
headers(headers: TemplateHeaders): this;
|
|
46
|
-
jsonBody(body:
|
|
46
|
+
jsonBody(body: unknown): this;
|
|
47
47
|
binaryFile(contentType: string, file: string): this;
|
|
48
48
|
multipartBody(contentType: string, file: string, mimePartName: string): this;
|
|
49
49
|
body(contentType: string, body: Buffer): this;
|
package/src/v4/http/index.js
CHANGED
|
@@ -84,7 +84,7 @@ var UnconfiguredInteraction = /** @class */ (function () {
|
|
|
84
84
|
return this;
|
|
85
85
|
};
|
|
86
86
|
UnconfiguredInteraction.prototype.withCompleteRequest = function (request) {
|
|
87
|
-
return new InteractionWithCompleteRequest(this.pact, this.interaction, this.opts);
|
|
87
|
+
return new InteractionWithCompleteRequest(this.pact, this.interaction, this.opts, request);
|
|
88
88
|
};
|
|
89
89
|
UnconfiguredInteraction.prototype.withRequest = function (method, path, builder) {
|
|
90
90
|
this.interaction.withRequest(method, (0, matchers_1.matcherValueOrString)(path));
|
|
@@ -101,11 +101,11 @@ var UnconfiguredInteraction = /** @class */ (function () {
|
|
|
101
101
|
}());
|
|
102
102
|
exports.UnconfiguredInteraction = UnconfiguredInteraction;
|
|
103
103
|
var InteractionWithCompleteRequest = /** @class */ (function () {
|
|
104
|
-
|
|
105
|
-
function InteractionWithCompleteRequest(pact, interaction, opts) {
|
|
104
|
+
function InteractionWithCompleteRequest(pact, interaction, opts, request) {
|
|
106
105
|
this.pact = pact;
|
|
107
106
|
this.interaction = interaction;
|
|
108
107
|
this.opts = opts;
|
|
108
|
+
this.request = request;
|
|
109
109
|
throw Error('V4InteractionWithCompleteRequest is unimplemented');
|
|
110
110
|
}
|
|
111
111
|
InteractionWithCompleteRequest.prototype.withCompleteResponse = function (response) {
|
|
@@ -122,6 +122,10 @@ var InteractionwithRequest = /** @class */ (function () {
|
|
|
122
122
|
this.opts = opts;
|
|
123
123
|
}
|
|
124
124
|
InteractionwithRequest.prototype.willRespondWith = function (status, builder) {
|
|
125
|
+
this.interaction.withStatus(status);
|
|
126
|
+
if (typeof builder === 'function') {
|
|
127
|
+
builder(new ResponseBuilder(this.interaction));
|
|
128
|
+
}
|
|
125
129
|
return new InteractionWithResponse(this.pact, this.interaction, this.opts);
|
|
126
130
|
};
|
|
127
131
|
return InteractionwithRequest;
|
|
@@ -181,7 +185,6 @@ var RequestBuilder = /** @class */ (function () {
|
|
|
181
185
|
}());
|
|
182
186
|
exports.RequestBuilder = RequestBuilder;
|
|
183
187
|
var ResponseBuilder = /** @class */ (function () {
|
|
184
|
-
// tslint:disable:no-empty-function
|
|
185
188
|
function ResponseBuilder(interaction) {
|
|
186
189
|
this.interaction = interaction;
|
|
187
190
|
}
|
|
@@ -259,6 +262,7 @@ var InteractionWithPluginRequest = /** @class */ (function () {
|
|
|
259
262
|
this.opts = opts;
|
|
260
263
|
}
|
|
261
264
|
InteractionWithPluginRequest.prototype.willRespondWith = function (status, builder) {
|
|
265
|
+
this.interaction.withStatus(status);
|
|
262
266
|
if (typeof builder === 'function') {
|
|
263
267
|
builder(new ResponseWithPluginBuilder(this.interaction));
|
|
264
268
|
}
|
package/src/v4/http/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,+BAA0C;AAE1C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,+BAA0C;AAE1C,8CAAkE;AAwBlE,uBAA0B;AAC1B,4CAG0B;AAC1B,+DAAyC;AAIzC;IACE,mCAAmC;IACnC,iCACY,IAAkB,EAClB,WAAgC,EAChC,IAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC5B,CAAC;IAEJ,+CAAa,GAAb,UAAc,WAAmB;QAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAK,GAAL,UAAM,KAAa,EAAE,UAAoB;QAAzC,iBAUC;QATC,IAAI,UAAU,EAAE;YACd,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;gBACrB,KAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,UAAG,CAAC,CAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YACpE,CAAC,EAAE,UAAU,CAAC,CAAC;SAChB;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qDAAmB,GAAnB,UAAoB,OAAkB;QACpC,OAAO,IAAI,8BAA8B,CACvC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,EACT,OAAO,CACR,CAAC;IACJ,CAAC;IAED,6CAAW,GAAX,UACE,MAAc,EACd,IAAU,EACV,OAA8B;QAE9B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SAC/C;QACD,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5E,CAAC;IAED,6CAAW,GAAX,UAAY,MAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IACH,8BAAC;AAAD,CAAC,AArDD,IAqDC;AArDY,0DAAuB;AAuDpC;IAGE,wCACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB,EACnB,OAAkB;QAHlB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;QACnB,YAAO,GAAP,OAAO,CAAW;QAE1B,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IAED,6DAAoB,GAApB,UAAqB,QAAoB;QACvC,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACH,qCAAC;AAAD,CAAC,AAfD,IAeC;AAfY,wEAA8B;AAiB3C;IACE,mCAAmC;IACnC,gCACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC1B,CAAC;IAEJ,gDAAe,GAAf,UAAgB,MAAc,EAAE,OAA+B;QAC7D,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,OAAO,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SAChD;QAED,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IACH,6BAAC;AAAD,CAAC,AAjBD,IAiBC;AAjBY,wDAAsB;AAmBnC;IACE,mCAAmC;IACnC,wBAAsB,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;IAAG,CAAC;IAE1D,8BAAK,GAAL,UAAM,KAAoB;QAA1B,iBAYC;QAXC,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnB,CAAe,CAAC,OAAO,CAAC,UAAC,EAAE,EAAE,CAAC;oBAC7B,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,EAAE,CAAC,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,KAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,CAAC,CAAC,CAAC,CAAC;aAC3D;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gCAAO,GAAP,UAAQ,OAAwB;QAAhC,iBAkBC;QAjBC,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;YACrB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnB,CAA8B,CAAC,OAAO,CACrC,UAAC,MAAgC,EAAE,KAAa;oBAC9C,KAAI,CAAC,WAAW,CAAC,iBAAiB,CAChC,UAAG,CAAC,CAAE,EACN,KAAK,EACL,IAAA,+BAAoB,EAAC,MAAM,CAAC,CAC7B,CAAC;gBACJ,CAAC,CACF,CAAC;aACH;iBAAM;gBACL,KAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAG,CAAC,CAAE,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,CAAC,CAAC,CAAC,CAAC;aACxE;QACH,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iCAAQ,GAAR,UAAS,IAAa;QACpB,IAAI,CAAC,WAAW,CAAC,eAAe,CAC9B,IAAA,+BAAoB,EAAC,IAAI,CAAC,EAC1B,kBAAkB,CACnB,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAU,GAAV,UAAW,WAAmB,EAAE,IAAY;QAC1C,IAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sCAAa,GAAb,UAAc,WAAmB,EAAE,IAAY,EAAE,YAAoB;QACnE,IAAI,CAAC,WAAW,CAAC,wBAAwB,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAE3E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAAI,GAAJ,UAAK,WAAmB,EAAE,IAAY;QACpC,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE1D,OAAO,IAAI,CAAC;IACd,CAAC;IACH,qBAAC;AAAD,CAAC,AAhED,IAgEC;AAhEY,wCAAc;AAkE3B;IAGE,yBAAY,WAAgC;QAC1C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,iCAAO,GAAP,UAAQ,OAAwB;QAAhC,iBAMC;QALC,IAAA,yBAAiB,EAAC,UAAC,CAAC,EAAE,CAAC;YACrB,KAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,UAAG,CAAC,CAAE,EAAE,CAAC,EAAE,IAAA,+BAAoB,EAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAQ,GAAR,UAAS,IAAa;QACpB,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAC/B,IAAA,+BAAoB,EAAC,IAAI,CAAC,EAC1B,kBAAkB,CACnB,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oCAAU,GAAV,UAAW,WAAmB,EAAE,IAAY;QAC1C,IAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAa,GAAb,UAAc,WAAmB,EAAE,IAAY,EAAE,YAAoB;QACnE,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;QAE5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8BAAI,GAAJ,UAAK,WAAmB,EAAE,IAAY;QACpC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC;IACd,CAAC;IACH,sBAAC;AAAD,CAAC,AAzCD,IAyCC;AAzCY,0CAAe;AA2C5B;IACE,mCAAmC;IACnC,iCACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC1B,CAAC;IAEE,6CAAW,GAAjB,UAAqB,MAAuB;;;gBAC1C,sBAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAC;;;KAClD;IACH,8BAAC;AAAD,CAAC,AAXD,IAWC;AAXY,0DAAuB;AAapC;IACE,mCAAmC;IACnC,+BACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC1B,CAAC;IAEJ,+BAA+B;IAC/B,2CAAW,GAAX,UAAY,MAAoB;QAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2CAAW,GAAX,UACE,MAAc,EACd,IAAU,EACV,OAAoC;QAEpC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,IAAA,+BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC;QAEjE,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,OAAO,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SACzD;QACD,OAAO,IAAI,4BAA4B,CACrC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACH,4BAAC;AAAD,CAAC,AA/BD,IA+BC;AA/BY,sDAAqB;AAiClC;IAGE,mCAAmC;IACnC,sCACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC1B,CAAC;IAEJ,sDAAe,GAAf,UACE,MAAc,EACd,OAAqC;QAErC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;YACjC,OAAO,CAAC,IAAI,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;SAC1D;QAED,OAAO,IAAI,6BAA6B,CACtC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,IAAI,CACV,CAAC;IACJ,CAAC;IACH,mCAAC;AAAD,CAAC,AA1BD,IA0BC;AA1BY,oEAA4B;AA4BzC;IACU,4CAAc;IADxB;;IAeA,CAAC;IAXC,iDAAc,GAAd,UACE,WAAmB,EACnB,QAAgB;QAEhB,IAAI,CAAC,WAAW,CAAC,oCAAoC,CACnD,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IACH,+BAAC;AAAD,CAAC,AAfD,CACU,cAAc,GAcvB;AAfY,4DAAwB;AAiBrC;IACU,6CAAe;IADzB;;IAWA,CAAC;IAPC,kDAAc,GAAd,UAAe,WAAmB,EAAE,QAAgB;QAClD,IAAI,CAAC,WAAW,CAAC,qCAAqC,CACpD,WAAW,EACX,QAAQ,CACT,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACH,gCAAC;AAAD,CAAC,AAXD,CACU,eAAe,GAUxB;AAXY,8DAAyB;AAatC;IAGE,mCAAmC;IACnC,uCACU,IAAkB,EAClB,WAAgC,EAChC,IAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAc;QAClB,gBAAW,GAAX,WAAW,CAAqB;QAChC,SAAI,GAAJ,IAAI,CAAe;IAC1B,CAAC;IAEE,mDAAW,GAAjB,UAAqB,MAAgD;;;gBACnE,sBAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAC;;;KAClD;IACH,oCAAC;AAAD,CAAC,AAbD,IAaC;AAbY,sEAA6B;AAc1C,IAAM,cAAc,GAAG,UAAC,IAAY;IAClC,IAAI;QACF,IAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEnC,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,mDAA4C,CAAC,CAAC,OAAO,CAAE,CAAC,CAAC;KAC1E;AACH,CAAC,CAAC;AAEF,IAAM,OAAO,GAAG,UACd,OAAgB,EAChB,IAAkB,EAClB,IAAmB,EACnB,MAAoB;IAEpB,IAAI,OAAO,EAAE;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC;KAC3C;IACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,IAAM,WAAW,GAAG,UAClB,IAAkB,EAClB,IAAmB,EACnB,MAAuB;;;;;gBAEjB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;gBAChC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;gBAE1D,MAAM,GAAG,EAAE,IAAI,MAAA,EAAE,GAAG,EAAE,UAAG,MAAM,gBAAM,IAAI,cAAI,IAAI,CAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;;;;gBAKnE,qBAAM,MAAM,CAAC,MAAM,CAAC,EAAA;;gBAA1B,GAAG,GAAG,SAAoB,CAAC;;;;gBAE3B,KAAK,GAAG,GAAC,CAAC;;;gBAGN,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,GAAG,IAAA,kCAAwB,EAAC,eAAe,CAAC,CAAC;gBACnD,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;gBAEzD,mCAAmC;gBACnC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,YAAY,GAAG,wCAAwC,CAAC;oBAC5D,YAAY,IAAI,gBAAS,IAAA,iCAAuB,EAAC,eAAe,EAAE,IAAI,CAAC,CAAE,CAAC;oBAE1E,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBAEnC,4EAA4E;oBAC5E,8EAA8E;oBAC9E,wEAAwE;oBACxE,qCAAqC;oBACrC,IAAI,KAAK,EAAE;wBACT,gBAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;wBAC3B,MAAM,KAAK,CAAC;qBACb;oBAED,yDAAyD;oBACzD,sBAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,EAAC;iBAChD;gBAED,sFAAsF;gBACtF,IAAI,KAAK,EAAE;oBACT,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBACnC,MAAM,KAAK,CAAC;iBACb;gBAED,kFAAkF;gBAClF,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;gBAElC,sBAAO,GAAG,EAAC;;;KACZ,CAAC"}
|
package/src/v4/http/types.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { JsonMap } from '../../common/jsonTypes';
|
|
3
3
|
import { Path, SpecificationVersion, TemplateHeaders, TemplateQuery, V3MockServer, V3ProviderState, V3Request, V3Response } from '../../v3';
|
|
4
|
-
import { AnyTemplate } from '../../v3/matchers';
|
|
5
4
|
export type V4ProviderState = V3ProviderState;
|
|
6
5
|
export type V4MockServer = V3MockServer;
|
|
7
6
|
export type V4Request = V3Request;
|
|
@@ -57,14 +56,14 @@ export type V4RequestBuilderFunc = (builder: V4RequestBuilder) => void;
|
|
|
57
56
|
export interface V4RequestBuilder {
|
|
58
57
|
query(query: TemplateQuery): V4RequestBuilder;
|
|
59
58
|
headers(headers: TemplateHeaders): V4RequestBuilder;
|
|
60
|
-
jsonBody(body:
|
|
59
|
+
jsonBody(body: unknown): V4RequestBuilder;
|
|
61
60
|
binaryFile(contentType: string, file: string): V4RequestBuilder;
|
|
62
61
|
multipartBody(contentType: string, filename: string, mimePartName: string): V4RequestBuilder;
|
|
63
62
|
body(contentType: string, body: Buffer): V4RequestBuilder;
|
|
64
63
|
}
|
|
65
64
|
export interface V4ResponseBuilder {
|
|
66
65
|
headers(headers: TemplateHeaders): V4ResponseBuilder;
|
|
67
|
-
jsonBody(body:
|
|
66
|
+
jsonBody(body: unknown): V4ResponseBuilder;
|
|
68
67
|
binaryFile(contentType: string, file: string): V4ResponseBuilder;
|
|
69
68
|
multipartBody(contentType: string, filename: string, mimePartName: string): V4ResponseBuilder;
|
|
70
69
|
body(contentType: string, body: Buffer): V4ResponseBuilder;
|
|
@@ -89,7 +88,7 @@ export interface V4InteractionWithPluginRequest {
|
|
|
89
88
|
export interface V4RequestWithPluginBuilder {
|
|
90
89
|
query(query: TemplateQuery): V4RequestWithPluginBuilder;
|
|
91
90
|
headers(headers: TemplateHeaders): V4RequestWithPluginBuilder;
|
|
92
|
-
jsonBody(body:
|
|
91
|
+
jsonBody(body: unknown): V4RequestWithPluginBuilder;
|
|
93
92
|
binaryFile(contentType: string, file: string): V4RequestWithPluginBuilder;
|
|
94
93
|
multipartBody(contentType: string, filename: string, mimePartName: string): V4RequestWithPluginBuilder;
|
|
95
94
|
body(contentType: string, body: Buffer): V4RequestWithPluginBuilder;
|
|
@@ -97,7 +96,7 @@ export interface V4RequestWithPluginBuilder {
|
|
|
97
96
|
}
|
|
98
97
|
export interface V4ResponseWithPluginBuilder {
|
|
99
98
|
headers(headers: TemplateHeaders): V4ResponseBuilder;
|
|
100
|
-
jsonBody(body:
|
|
99
|
+
jsonBody(body: unknown): V4ResponseBuilder;
|
|
101
100
|
binaryFile(contentType: string, file: string): V4ResponseBuilder;
|
|
102
101
|
multipartBody(contentType: string, filename: string, mimePartName: string): V4ResponseBuilder;
|
|
103
102
|
body(contentType: string, body: Buffer): V4ResponseBuilder;
|
package/src/v4/index.js
CHANGED
|
@@ -5,13 +5,15 @@ var pact_core_1 = require("@pact-foundation/pact-core");
|
|
|
5
5
|
var http_1 = require("./http");
|
|
6
6
|
var package_json_1 = require("../../package.json");
|
|
7
7
|
var message_1 = require("./message");
|
|
8
|
+
var v3_1 = require("../v3");
|
|
8
9
|
var PactV4 = /** @class */ (function () {
|
|
9
10
|
function PactV4(opts) {
|
|
11
|
+
var _a;
|
|
10
12
|
this.opts = opts;
|
|
11
13
|
if (!process.env.ENABLE_FEATURE_V4) {
|
|
12
14
|
throw Error("The v4 package is currently in beta and requires the 'ENABLE_FEATURE_V4' environment variable to be set");
|
|
13
15
|
}
|
|
14
|
-
this.pact = (0, pact_core_1.makeConsumerPact)(opts.consumer, opts.provider, opts.spec, opts.logLevel);
|
|
16
|
+
this.pact = (0, pact_core_1.makeConsumerPact)(opts.consumer, opts.provider, (_a = opts.spec) !== null && _a !== void 0 ? _a : v3_1.SpecificationVersion.SPECIFICATION_VERSION_V4, opts.logLevel);
|
|
15
17
|
this.pact.addMetadata('pact-js', 'version', package_json_1.version);
|
|
16
18
|
}
|
|
17
19
|
PactV4.prototype.addInteraction = function () {
|
package/src/v4/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;AAAA,wDAA4E;AAC5E,+BAAiD;AAGjD,mDAAmE;AAEnE,qCAA2D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v4/index.ts"],"names":[],"mappings":";;;AAAA,wDAA4E;AAC5E,+BAAiD;AAGjD,mDAAmE;AAEnE,qCAA2D;AAC3D,4BAA6C;AAE7C;IAGE,gBAAoB,IAAmB;;QAAnB,SAAI,GAAJ,IAAI,CAAe;QACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;YAClC,MAAM,KAAK,CACT,yGAAyG,CAC1G,CAAC;SACH;QAED,IAAI,CAAC,IAAI,GAAG,IAAA,4BAAgB,EAC1B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,MAAA,IAAI,CAAC,IAAI,mCAAI,yBAAoB,CAAC,wBAAwB,EAC1D,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,AArCD,IAqCC;AArCY,wBAAM"}
|