@pact-foundation/pact 7.3.0 → 8.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 +44 -0
- package/CONTRIBUTING.md +22 -9
- package/LICENSE +1 -2
- package/README.md +253 -157
- package/common/logger.js +10 -5
- package/common/logger.js.map +1 -1
- package/common/metadata.js.map +1 -1
- package/common/net.js +3 -2
- package/common/net.js.map +1 -1
- package/common/net.spec.d.ts +1 -0
- package/common/net.spec.js +47 -0
- package/common/net.spec.js.map +1 -0
- package/common/request.js +1 -2
- package/common/request.js.map +1 -1
- package/common/request.spec.d.ts +1 -0
- package/common/request.spec.js +71 -0
- package/common/request.spec.js.map +1 -0
- package/common/utils.js +1 -2
- package/common/utils.js.map +1 -1
- package/dsl/apolloGraphql.d.ts +1 -1
- package/dsl/apolloGraphql.js +6 -3
- package/dsl/apolloGraphql.js.map +1 -1
- package/dsl/apolloGraphql.spec.d.ts +1 -0
- package/dsl/apolloGraphql.spec.js +47 -0
- package/dsl/apolloGraphql.spec.js.map +1 -0
- package/dsl/graphql.js +19 -9
- package/dsl/graphql.js.map +1 -1
- package/dsl/graphql.spec.d.ts +1 -0
- package/dsl/graphql.spec.js +141 -0
- package/dsl/graphql.spec.js.map +1 -0
- package/dsl/interaction.js +9 -7
- package/dsl/interaction.js.map +1 -1
- package/dsl/interaction.spec.d.ts +1 -0
- package/dsl/interaction.spec.js +172 -0
- package/dsl/interaction.spec.js.map +1 -0
- package/dsl/matchers.d.ts +25 -25
- package/dsl/matchers.js +57 -55
- package/dsl/matchers.js.map +1 -1
- package/dsl/matchers.spec.d.ts +1 -0
- package/dsl/matchers.spec.js +537 -0
- package/dsl/matchers.spec.js.map +1 -0
- package/dsl/message.d.ts +29 -3
- package/dsl/mockService.d.ts +6 -0
- package/dsl/mockService.js +10 -4
- package/dsl/mockService.js.map +1 -1
- package/dsl/mockService.spec.d.ts +1 -0
- package/dsl/mockService.spec.js +126 -0
- package/dsl/mockService.spec.js.map +1 -0
- package/dsl/verifier.d.ts +48 -2
- package/dsl/verifier.js +142 -3
- package/dsl/verifier.js.map +1 -1
- package/dsl/verifier.spec.d.ts +1 -0
- package/dsl/verifier.spec.js +299 -0
- package/dsl/verifier.spec.js.map +1 -0
- package/errors/configurationError.d.ts +2 -0
- package/errors/configurationError.js +24 -0
- package/errors/configurationError.js.map +1 -0
- package/errors/graphQLQueryError.d.ts +2 -0
- package/errors/graphQLQueryError.js +24 -0
- package/errors/graphQLQueryError.js.map +1 -0
- package/errors/matcherError.d.ts +2 -0
- package/errors/matcherError.js +24 -0
- package/errors/matcherError.js.map +1 -0
- package/errors/verificationError.d.ts +2 -0
- package/errors/verificationError.js +24 -0
- package/errors/verificationError.js.map +1 -0
- package/httpPact.d.ts +69 -0
- package/httpPact.js +206 -0
- package/httpPact.js.map +1 -0
- package/httpPact.spec.d.ts +1 -0
- package/httpPact.spec.js +337 -0
- package/httpPact.spec.js.map +1 -0
- package/messageConsumerPact.d.ts +3 -3
- package/messageConsumerPact.js +5 -4
- package/messageConsumerPact.js.map +1 -1
- package/messageConsumerPact.spec.d.ts +1 -0
- package/messageConsumerPact.spec.js +161 -0
- package/messageConsumerPact.spec.js.map +1 -0
- package/messageProviderPact.d.ts +0 -1
- package/messageProviderPact.js +11 -11
- package/messageProviderPact.js.map +1 -1
- package/messageProviderPact.spec.d.ts +1 -0
- package/messageProviderPact.spec.js +146 -0
- package/messageProviderPact.spec.js.map +1 -0
- package/package.json +24 -26
- package/pact-web.d.ts +2 -2
- package/pact-web.js +20 -10
- package/pact-web.js.map +1 -1
- package/pact-web.spec.d.ts +1 -0
- package/pact-web.spec.js +205 -0
- package/pact-web.spec.js.map +1 -0
- package/pact.d.ts +28 -65
- package/pact.integration.spec.d.ts +0 -0
- package/pact.integration.spec.js +292 -0
- package/pact.integration.spec.js.map +1 -0
- package/pact.js +21 -189
- package/pact.js.map +1 -1
package/pact-web.spec.js
ADDED
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* tslint:disable:no-unused-expression object-literal-sort-keys */
|
|
4
|
+
var chai = require("chai");
|
|
5
|
+
var chaiAsPromised = require("chai-as-promised");
|
|
6
|
+
var sinon = require("sinon");
|
|
7
|
+
var sinonChai = require("sinon-chai");
|
|
8
|
+
var request_1 = require("./common/request");
|
|
9
|
+
var interaction_1 = require("./dsl/interaction");
|
|
10
|
+
var mockService_1 = require("./dsl/mockService");
|
|
11
|
+
var pact_web_1 = require("./pact-web");
|
|
12
|
+
var expect = chai.expect;
|
|
13
|
+
chai.use(sinonChai);
|
|
14
|
+
chai.use(chaiAsPromised);
|
|
15
|
+
describe("PactWeb", function () {
|
|
16
|
+
var pact;
|
|
17
|
+
var fullOpts = {
|
|
18
|
+
consumer: "A",
|
|
19
|
+
cors: false,
|
|
20
|
+
host: "127.0.0.1",
|
|
21
|
+
logLevel: "info",
|
|
22
|
+
pactfileWriteMode: "overwrite",
|
|
23
|
+
port: 1234,
|
|
24
|
+
provider: "B",
|
|
25
|
+
spec: 2,
|
|
26
|
+
ssl: false,
|
|
27
|
+
};
|
|
28
|
+
beforeEach(function () {
|
|
29
|
+
pact = Object.create(pact_web_1.PactWeb.prototype);
|
|
30
|
+
pact.opts = fullOpts;
|
|
31
|
+
});
|
|
32
|
+
afterEach(function () {
|
|
33
|
+
sinon.restore();
|
|
34
|
+
});
|
|
35
|
+
describe("#constructor", function () {
|
|
36
|
+
it("throws Error when consumer not provided", function () {
|
|
37
|
+
expect(function () {
|
|
38
|
+
new pact_web_1.PactWeb({ consumer: "", provider: "provider" });
|
|
39
|
+
}).not.to.throw(Error, "You must specify a Consumer for this pact.");
|
|
40
|
+
});
|
|
41
|
+
it("throws Error when provider not provided", function () {
|
|
42
|
+
expect(function () {
|
|
43
|
+
new pact_web_1.PactWeb({ consumer: "someconsumer", provider: "" });
|
|
44
|
+
}).not.to.throw(Error, "You must specify a Provider for this pact.");
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
describe("#addInteraction", function () {
|
|
48
|
+
var interaction = {
|
|
49
|
+
state: "i have a list of projects",
|
|
50
|
+
uponReceiving: "a request for projects",
|
|
51
|
+
withRequest: {
|
|
52
|
+
headers: { Accept: "application/json" },
|
|
53
|
+
method: request_1.HTTPMethod.GET,
|
|
54
|
+
path: "/projects",
|
|
55
|
+
},
|
|
56
|
+
willRespondWith: {
|
|
57
|
+
body: {},
|
|
58
|
+
headers: { "Content-Type": "application/json" },
|
|
59
|
+
status: 200,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
describe("when given a provider state", function () {
|
|
63
|
+
it("creates interaction with state", function (done) {
|
|
64
|
+
pact.mockService = {
|
|
65
|
+
addInteraction: function (int) { return Promise.resolve(int.state); },
|
|
66
|
+
};
|
|
67
|
+
expect(pact.addInteraction(interaction))
|
|
68
|
+
.to.eventually.have.property("providerState")
|
|
69
|
+
.notify(done);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe("when not given a provider state", function () {
|
|
73
|
+
it("creates interaction with state", function (done) {
|
|
74
|
+
pact.mockService = {
|
|
75
|
+
addInteraction: function (int) { return Promise.resolve(int.state); },
|
|
76
|
+
};
|
|
77
|
+
var interactionWithNoState = interaction;
|
|
78
|
+
interactionWithNoState.state = undefined;
|
|
79
|
+
expect(pact.addInteraction(interaction))
|
|
80
|
+
.to.eventually.not.have.property("providerState")
|
|
81
|
+
.notify(done);
|
|
82
|
+
});
|
|
83
|
+
describe("when given an Interaction as a builder", function () {
|
|
84
|
+
it("creates interaction", function () {
|
|
85
|
+
var interaction2 = new interaction_1.Interaction()
|
|
86
|
+
.given("i have a list of projects")
|
|
87
|
+
.uponReceiving("a request for projects")
|
|
88
|
+
.withRequest({
|
|
89
|
+
method: request_1.HTTPMethod.GET,
|
|
90
|
+
path: "/projects",
|
|
91
|
+
headers: { Accept: "application/json" },
|
|
92
|
+
})
|
|
93
|
+
.willRespondWith({
|
|
94
|
+
status: 200,
|
|
95
|
+
headers: { "Content-Type": "application/json" },
|
|
96
|
+
body: {},
|
|
97
|
+
});
|
|
98
|
+
pact.mockService = {
|
|
99
|
+
addInteraction: function (int) {
|
|
100
|
+
return Promise.resolve(int);
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
return expect(pact.addInteraction(interaction2)).to.eventually.have.property("given");
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
describe("#verify", function () {
|
|
109
|
+
describe("when pact verification is successful", function () {
|
|
110
|
+
it("returns a successful promise and remove interactions", function () {
|
|
111
|
+
pact.mockService = {
|
|
112
|
+
verify: function () { return Promise.resolve("verified!"); },
|
|
113
|
+
removeInteractions: function () { return Promise.resolve("removeInteractions"); },
|
|
114
|
+
};
|
|
115
|
+
var verifyPromise = pact.verify();
|
|
116
|
+
return Promise.all([
|
|
117
|
+
expect(verifyPromise).to.eventually.eq("removeInteractions"),
|
|
118
|
+
expect(verifyPromise).to.eventually.be.fulfilled,
|
|
119
|
+
]);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
describe("when pact verification is unsuccessful", function () {
|
|
123
|
+
it("throws an error", function () {
|
|
124
|
+
var removeInteractionsStub = sinon
|
|
125
|
+
.stub(mockService_1.MockService.prototype, "removeInteractions")
|
|
126
|
+
.resolves("removeInteractions");
|
|
127
|
+
pact.mockService = {
|
|
128
|
+
verify: function () { return Promise.reject("not verified!"); },
|
|
129
|
+
removeInteractions: function () { return removeInteractionsStub; },
|
|
130
|
+
};
|
|
131
|
+
var verifyPromise = pact.verify();
|
|
132
|
+
return Promise.all([
|
|
133
|
+
expect(verifyPromise).to.eventually.be.rejectedWith(Error),
|
|
134
|
+
verifyPromise.catch(function (e) {
|
|
135
|
+
expect(removeInteractionsStub).to.callCount(0);
|
|
136
|
+
}),
|
|
137
|
+
]);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
describe("when pact verification is successful", function () {
|
|
141
|
+
describe("and an error is thrown in the cleanup", function () {
|
|
142
|
+
it("throws an error", function () {
|
|
143
|
+
pact.mockService = {
|
|
144
|
+
verify: function () { return Promise.resolve("verified!"); },
|
|
145
|
+
removeInteractions: function () {
|
|
146
|
+
throw new Error("error removing interactions");
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
return expect(pact.verify()).to.eventually.be.rejectedWith(Error);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
describe("#finalize", function () {
|
|
155
|
+
describe("when writing Pact is successful", function () {
|
|
156
|
+
it("returns a successful promise and shut down down the mock server", function () {
|
|
157
|
+
pact.mockService = {
|
|
158
|
+
writePact: function () { return Promise.resolve("pact file written!"); },
|
|
159
|
+
removeInteractions: sinon.stub(),
|
|
160
|
+
};
|
|
161
|
+
var writePactPromise = pact.finalize();
|
|
162
|
+
return expect(writePactPromise).to.eventually.be.fulfilled;
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
describe("when writing Pact is unsuccessful", function () {
|
|
166
|
+
it("throws an error", function () {
|
|
167
|
+
pact.mockService = {
|
|
168
|
+
writePact: function () { return Promise.reject(new Error("pact not file written!")); },
|
|
169
|
+
removeInteractions: sinon.stub(),
|
|
170
|
+
};
|
|
171
|
+
return expect(pact.finalize()).to.eventually.be.rejectedWith(Error);
|
|
172
|
+
});
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe("#writePact", function () {
|
|
176
|
+
describe("when writing Pact is successful", function () {
|
|
177
|
+
it("returns a successful promise", function () {
|
|
178
|
+
pact.mockService = {
|
|
179
|
+
writePact: function () { return Promise.resolve("pact file written!"); },
|
|
180
|
+
removeInteractions: sinon.stub(),
|
|
181
|
+
};
|
|
182
|
+
var writePactPromise = pact.writePact();
|
|
183
|
+
return Promise.all([
|
|
184
|
+
expect(writePactPromise).to.eventually.eq("pact file written!"),
|
|
185
|
+
expect(writePactPromise).to.eventually.be.fulfilled,
|
|
186
|
+
]);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
describe("#removeInteractions", function () {
|
|
191
|
+
describe("when removing interactions is successful", function () {
|
|
192
|
+
it("returns a successful promise", function () {
|
|
193
|
+
pact.mockService = {
|
|
194
|
+
removeInteractions: function () { return Promise.resolve("interactions removed!"); },
|
|
195
|
+
};
|
|
196
|
+
var removeInteractionsPromise = pact.removeInteractions();
|
|
197
|
+
return Promise.all([
|
|
198
|
+
expect(removeInteractionsPromise).to.eventually.eq("interactions removed!"),
|
|
199
|
+
expect(removeInteractionsPromise).to.eventually.be.fulfilled,
|
|
200
|
+
]);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
//# sourceMappingURL=pact-web.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pact-web.spec.js","sourceRoot":"","sources":["../src/pact-web.spec.ts"],"names":[],"mappings":"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"}
|
package/pact.d.ts
CHANGED
|
@@ -1,73 +1,30 @@
|
|
|
1
|
-
import * as Matchers from "./dsl/matchers";
|
|
2
|
-
import { Interaction, InteractionObject } from "./dsl/interaction";
|
|
3
|
-
import { MockService } from "./dsl/mockService";
|
|
4
|
-
import { PactOptions, PactOptionsComplete } from "./dsl/options";
|
|
5
|
-
import { Server } from "@pact-foundation/pact-node/src/server";
|
|
6
1
|
/**
|
|
7
|
-
*
|
|
2
|
+
* Pact module meta package.
|
|
3
|
+
* @module Pact
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Exposes {@link Pact}
|
|
8
7
|
* @memberof Pact
|
|
9
|
-
* @
|
|
10
|
-
|
|
11
|
-
*
|
|
8
|
+
* @static
|
|
9
|
+
*/
|
|
10
|
+
export * from "./httpPact";
|
|
11
|
+
/**
|
|
12
|
+
* Exposes {@link MessageConsumerPact}
|
|
13
|
+
* @memberof Pact
|
|
14
|
+
* @static
|
|
12
15
|
*/
|
|
13
|
-
export declare class Pact {
|
|
14
|
-
static defaults: PactOptions;
|
|
15
|
-
static createOptionsWithDefaults(opts: PactOptions): PactOptionsComplete;
|
|
16
|
-
server: Server;
|
|
17
|
-
opts: PactOptionsComplete;
|
|
18
|
-
mockService: MockService;
|
|
19
|
-
private finalized;
|
|
20
|
-
constructor(config: PactOptions);
|
|
21
|
-
/**
|
|
22
|
-
* Start the Mock Server.
|
|
23
|
-
* @returns {Promise}
|
|
24
|
-
*/
|
|
25
|
-
setup(): Promise<PactOptionsComplete>;
|
|
26
|
-
/**
|
|
27
|
-
* Add an interaction to the {@link MockService}.
|
|
28
|
-
* @memberof PactProvider
|
|
29
|
-
* @instance
|
|
30
|
-
* @param {Interaction} interactionObj
|
|
31
|
-
* @returns {Promise}
|
|
32
|
-
*/
|
|
33
|
-
addInteraction(interactionObj: InteractionObject | Interaction): Promise<string>;
|
|
34
|
-
/**
|
|
35
|
-
* Checks with the Mock Service if the expected interactions have been exercised.
|
|
36
|
-
* @memberof PactProvider
|
|
37
|
-
* @instance
|
|
38
|
-
* @returns {Promise}
|
|
39
|
-
*/
|
|
40
|
-
verify(): Promise<string>;
|
|
41
|
-
/**
|
|
42
|
-
* Writes the Pact and clears any interactions left behind and shutdown the
|
|
43
|
-
* mock server
|
|
44
|
-
* @memberof PactProvider
|
|
45
|
-
* @instance
|
|
46
|
-
* @returns {Promise}
|
|
47
|
-
*/
|
|
48
|
-
finalize(): Promise<void>;
|
|
49
|
-
/**
|
|
50
|
-
* Writes the pact file out to file. Should be called when all tests have been performed for a
|
|
51
|
-
* given Consumer <-> Provider pair. It will write out the Pact to the
|
|
52
|
-
* configured file.
|
|
53
|
-
* @memberof PactProvider
|
|
54
|
-
* @instance
|
|
55
|
-
* @returns {Promise}
|
|
56
|
-
*/
|
|
57
|
-
writePact(): Promise<string>;
|
|
58
|
-
/**
|
|
59
|
-
* Clear up any interactions in the Provider Mock Server.
|
|
60
|
-
* @memberof PactProvider
|
|
61
|
-
* @instance
|
|
62
|
-
* @returns {Promise}
|
|
63
|
-
*/
|
|
64
|
-
removeInteractions(): Promise<string>;
|
|
65
|
-
private checkPort;
|
|
66
|
-
private setupMockService;
|
|
67
|
-
private startServer;
|
|
68
|
-
}
|
|
69
16
|
export * from "./messageConsumerPact";
|
|
17
|
+
/**
|
|
18
|
+
* Exposes {@link MessageProviderPact}
|
|
19
|
+
* @memberof Pact
|
|
20
|
+
* @static
|
|
21
|
+
*/
|
|
70
22
|
export * from "./messageProviderPact";
|
|
23
|
+
/**
|
|
24
|
+
* Exposes {@link Message}
|
|
25
|
+
* @memberof Pact
|
|
26
|
+
* @static
|
|
27
|
+
*/
|
|
71
28
|
export * from "./dsl/message";
|
|
72
29
|
/**
|
|
73
30
|
* Exposes {@link Verifier}
|
|
@@ -81,6 +38,11 @@ export * from "./dsl/verifier";
|
|
|
81
38
|
* @static
|
|
82
39
|
*/
|
|
83
40
|
export * from "./dsl/graphql";
|
|
41
|
+
/**
|
|
42
|
+
* Exposes {@link ApolloGraphQL}
|
|
43
|
+
* @memberof Pact
|
|
44
|
+
* @static
|
|
45
|
+
*/
|
|
84
46
|
export * from "./dsl/apolloGraphql";
|
|
85
47
|
/**
|
|
86
48
|
* Exposes {@link Matchers}
|
|
@@ -89,6 +51,7 @@ export * from "./dsl/apolloGraphql";
|
|
|
89
51
|
* @memberof Pact
|
|
90
52
|
* @static
|
|
91
53
|
*/
|
|
54
|
+
import * as Matchers from "./dsl/matchers";
|
|
92
55
|
export import Matchers = Matchers;
|
|
93
56
|
/**
|
|
94
57
|
* Exposes {@link Interaction}
|
|
File without changes
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
// /* tslint:disable:no-unused-expression object-literal-sort-keys no-empty no-console */
|
|
2
|
+
// import * as Promise from "bluebird"
|
|
3
|
+
// import * as chai from "chai"
|
|
4
|
+
// import * as chaiAsPromised from "chai-as-promised"
|
|
5
|
+
// import * as path from "path"
|
|
6
|
+
// import * as superagent from "superagent"
|
|
7
|
+
// import { HTTPMethod } from "./common/request"
|
|
8
|
+
// import { Matchers, Pact } from "./pact"
|
|
9
|
+
// chai.use(chaiAsPromised)
|
|
10
|
+
// const expect = chai.expect
|
|
11
|
+
// const { eachLike, like, term } = Matchers
|
|
12
|
+
// describe("Integration", () => {
|
|
13
|
+
// const protocols = ["http", "https"]
|
|
14
|
+
// protocols.forEach(protocol => {
|
|
15
|
+
// describe(`Pact on ${protocol} protocol`, () => {
|
|
16
|
+
// const MOCK_PORT = Math.floor(Math.random() * 999) + 9000
|
|
17
|
+
// const PROVIDER_URL = `${protocol}://localhost:${MOCK_PORT}`
|
|
18
|
+
// // TODO: this is eagerly run (even if test skipped)
|
|
19
|
+
// const provider = new Pact({
|
|
20
|
+
// consumer: "Matching Service",
|
|
21
|
+
// provider: "Animal Profile Service",
|
|
22
|
+
// port: MOCK_PORT,
|
|
23
|
+
// log: path.resolve(process.cwd(), "logs", "mockserver-integration.log"),
|
|
24
|
+
// dir: path.resolve(process.cwd(), "pacts"),
|
|
25
|
+
// logLevel: "warn",
|
|
26
|
+
// ssl: protocol === "https",
|
|
27
|
+
// spec: 2,
|
|
28
|
+
// })
|
|
29
|
+
// const EXPECTED_BODY = [
|
|
30
|
+
// {
|
|
31
|
+
// id: 1,
|
|
32
|
+
// name: "Project 1",
|
|
33
|
+
// due: "2016-02-11T09:46:56.023Z",
|
|
34
|
+
// tasks: [
|
|
35
|
+
// {
|
|
36
|
+
// id: 1,
|
|
37
|
+
// name: "Do the laundry",
|
|
38
|
+
// done: true,
|
|
39
|
+
// },
|
|
40
|
+
// {
|
|
41
|
+
// id: 2,
|
|
42
|
+
// name: "Do the dishes",
|
|
43
|
+
// done: false,
|
|
44
|
+
// },
|
|
45
|
+
// {
|
|
46
|
+
// id: 3,
|
|
47
|
+
// name: "Do the backyard",
|
|
48
|
+
// done: false,
|
|
49
|
+
// },
|
|
50
|
+
// {
|
|
51
|
+
// id: 4,
|
|
52
|
+
// name: "Do nothing",
|
|
53
|
+
// done: false,
|
|
54
|
+
// },
|
|
55
|
+
// ],
|
|
56
|
+
// },
|
|
57
|
+
// ]
|
|
58
|
+
// before(() => provider.setup())
|
|
59
|
+
// // once all tests are run, write pact and remove interactions
|
|
60
|
+
// after(() => provider.finalize())
|
|
61
|
+
// context("with a single request", () => {
|
|
62
|
+
// // add interactions, as many as needed
|
|
63
|
+
// before(() =>
|
|
64
|
+
// provider.addInteraction({
|
|
65
|
+
// state: "i have a list of projects",
|
|
66
|
+
// uponReceiving: "a request for projects",
|
|
67
|
+
// withRequest: {
|
|
68
|
+
// method: HTTPMethod.GET,
|
|
69
|
+
// path: "/projects",
|
|
70
|
+
// headers: {
|
|
71
|
+
// Accept: "application/json",
|
|
72
|
+
// },
|
|
73
|
+
// },
|
|
74
|
+
// willRespondWith: {
|
|
75
|
+
// status: 200,
|
|
76
|
+
// headers: {
|
|
77
|
+
// "Content-Type": "application/json",
|
|
78
|
+
// },
|
|
79
|
+
// body: EXPECTED_BODY,
|
|
80
|
+
// },
|
|
81
|
+
// })
|
|
82
|
+
// )
|
|
83
|
+
// // execute your assertions
|
|
84
|
+
// it("returns the correct body", () =>
|
|
85
|
+
// superagent
|
|
86
|
+
// .get(`${PROVIDER_URL}/projects`)
|
|
87
|
+
// .set({
|
|
88
|
+
// Accept: "application/json",
|
|
89
|
+
// })
|
|
90
|
+
// .then((res: any) => {
|
|
91
|
+
// expect(res.text).to.eql(JSON.stringify(EXPECTED_BODY))
|
|
92
|
+
// }))
|
|
93
|
+
// // verify with Pact, and reset expectations
|
|
94
|
+
// it("successfully verifies", () => provider.verify())
|
|
95
|
+
// })
|
|
96
|
+
// context("with a single request with query string parameters", () => {
|
|
97
|
+
// // add interactions, as many as needed
|
|
98
|
+
// before(() => {
|
|
99
|
+
// return provider.addInteraction({
|
|
100
|
+
// state: "i have a list of projects",
|
|
101
|
+
// uponReceiving: "a request for projects with a filter",
|
|
102
|
+
// withRequest: {
|
|
103
|
+
// method: HTTPMethod.GET,
|
|
104
|
+
// path: "/projects",
|
|
105
|
+
// query: {
|
|
106
|
+
// from: "today",
|
|
107
|
+
// },
|
|
108
|
+
// headers: {
|
|
109
|
+
// Accept: "application/json",
|
|
110
|
+
// },
|
|
111
|
+
// },
|
|
112
|
+
// willRespondWith: {
|
|
113
|
+
// status: 200,
|
|
114
|
+
// headers: {
|
|
115
|
+
// "Content-Type": "application/json",
|
|
116
|
+
// },
|
|
117
|
+
// body: EXPECTED_BODY,
|
|
118
|
+
// },
|
|
119
|
+
// })
|
|
120
|
+
// })
|
|
121
|
+
// // execute your assertions
|
|
122
|
+
// it("returns the correct body", () =>
|
|
123
|
+
// superagent
|
|
124
|
+
// .get(`${PROVIDER_URL}/projects?from=today`)
|
|
125
|
+
// .set({
|
|
126
|
+
// Accept: "application/json",
|
|
127
|
+
// })
|
|
128
|
+
// .then((res: any) => {
|
|
129
|
+
// expect(res.text).to.eql(JSON.stringify(EXPECTED_BODY))
|
|
130
|
+
// }))
|
|
131
|
+
// // verify with Pact, and reset expectations
|
|
132
|
+
// it("successfully verifies", () => provider.verify())
|
|
133
|
+
// })
|
|
134
|
+
// context("with a single request and eachLike, like, term", () => {
|
|
135
|
+
// // add interactions, as many as needed
|
|
136
|
+
// before(() => {
|
|
137
|
+
// return provider.addInteraction({
|
|
138
|
+
// state: "i have a list of projects but I dont know how many",
|
|
139
|
+
// uponReceiving: "a request for such projects",
|
|
140
|
+
// withRequest: {
|
|
141
|
+
// method: HTTPMethod.GET,
|
|
142
|
+
// path: "/projects",
|
|
143
|
+
// headers: {
|
|
144
|
+
// Accept: "application/json",
|
|
145
|
+
// },
|
|
146
|
+
// },
|
|
147
|
+
// willRespondWith: {
|
|
148
|
+
// status: 200,
|
|
149
|
+
// headers: {
|
|
150
|
+
// "Content-Type": term({
|
|
151
|
+
// generate: "application/json",
|
|
152
|
+
// matcher: "application/json",
|
|
153
|
+
// }),
|
|
154
|
+
// },
|
|
155
|
+
// body: [
|
|
156
|
+
// {
|
|
157
|
+
// id: 1,
|
|
158
|
+
// name: "Project 1",
|
|
159
|
+
// due: "2016-02-11T09:46:56.023Z",
|
|
160
|
+
// tasks: eachLike(
|
|
161
|
+
// {
|
|
162
|
+
// id: like(1),
|
|
163
|
+
// name: like("Do the laundry"),
|
|
164
|
+
// done: like(true),
|
|
165
|
+
// },
|
|
166
|
+
// {
|
|
167
|
+
// min: 4,
|
|
168
|
+
// }
|
|
169
|
+
// ),
|
|
170
|
+
// },
|
|
171
|
+
// ],
|
|
172
|
+
// },
|
|
173
|
+
// })
|
|
174
|
+
// })
|
|
175
|
+
// // execute your assertions
|
|
176
|
+
// it("returns the correct body", () => {
|
|
177
|
+
// const verificationPromise = superagent
|
|
178
|
+
// .get(`${PROVIDER_URL}/projects`)
|
|
179
|
+
// .set({ Accept: "application/json" })
|
|
180
|
+
// .then((res: any) => JSON.parse(res.text)[0])
|
|
181
|
+
// return expect(verificationPromise).to.eventually.have.property(
|
|
182
|
+
// "tasks"
|
|
183
|
+
// )
|
|
184
|
+
// })
|
|
185
|
+
// // verify with Pact, and reset expectations
|
|
186
|
+
// it("successfully verifies", () => provider.verify())
|
|
187
|
+
// })
|
|
188
|
+
// context("with two requests", () => {
|
|
189
|
+
// before(() => {
|
|
190
|
+
// const interaction1 = provider.addInteraction({
|
|
191
|
+
// state: "i have a list of projects",
|
|
192
|
+
// uponReceiving: "a request for projects",
|
|
193
|
+
// withRequest: {
|
|
194
|
+
// method: HTTPMethod.GET,
|
|
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
|
+
// })
|
|
292
|
+
//# sourceMappingURL=pact.integration.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pact.integration.spec.js","sourceRoot":"","sources":["../src/pact.integration.spec.ts"],"names":[],"mappings":"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"}
|