@pact-foundation/pact 16.3.1 → 16.4.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.
- package/CHANGELOG.md +7 -0
- package/CONTRIBUTING.md +2 -2
- package/package.json +16 -24
- package/src/common/graphQL/configurationError.js +2 -22
- package/src/common/graphQL/configurationError.js.map +1 -1
- package/src/common/graphQL/graphQL.d.ts +2 -2
- package/src/common/graphQL/graphQL.js +11 -14
- package/src/common/graphQL/graphQL.js.map +1 -1
- package/src/common/graphQL/graphQLQueryError.js +2 -22
- package/src/common/graphQL/graphQLQueryError.js.map +1 -1
- package/src/common/logger.js +9 -9
- package/src/common/logger.js.map +1 -1
- package/src/common/matchingRules.d.ts +1 -1
- package/src/common/matchingRules.js +21 -21
- package/src/common/matchingRules.js.map +1 -1
- package/src/common/net.js +36 -42
- package/src/common/net.js.map +1 -1
- package/src/common/net.spec.js +41 -53
- package/src/common/net.spec.js.map +1 -1
- package/src/common/request.js +33 -82
- package/src/common/request.js.map +1 -1
- package/src/common/request.spec.js +26 -26
- package/src/common/request.spec.js.map +1 -1
- package/src/common/spec.js +3 -4
- package/src/common/spec.js.map +1 -1
- package/src/dsl/apolloGraphql.js +7 -25
- package/src/dsl/apolloGraphql.js.map +1 -1
- package/src/dsl/apolloGraphql.spec.js +21 -18
- package/src/dsl/apolloGraphql.spec.js.map +1 -1
- package/src/dsl/graphql.d.ts +2 -2
- package/src/dsl/graphql.js +29 -48
- package/src/dsl/graphql.js.map +1 -1
- package/src/dsl/graphql.spec.js +81 -66
- package/src/dsl/graphql.spec.js.map +1 -1
- package/src/dsl/interaction.d.ts +2 -2
- package/src/dsl/interaction.js +41 -48
- package/src/dsl/interaction.js.map +1 -1
- package/src/dsl/interaction.spec.js +77 -70
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +1 -1
- package/src/dsl/matchers.js +19 -31
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +199 -208
- package/src/dsl/matchers.spec.js.map +1 -1
- package/src/dsl/message.d.ts +3 -3
- package/src/dsl/options.d.ts +3 -3
- package/src/dsl/verifier/proxy/hooks.d.ts +2 -2
- package/src/dsl/verifier/proxy/hooks.js +42 -112
- package/src/dsl/verifier/proxy/hooks.js.map +1 -1
- package/src/dsl/verifier/proxy/hooks.spec.js +84 -199
- package/src/dsl/verifier/proxy/hooks.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/messages.d.ts +2 -2
- package/src/dsl/verifier/proxy/messages.js +88 -106
- package/src/dsl/verifier/proxy/messages.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.d.ts +1 -1
- package/src/dsl/verifier/proxy/parseBody.js +2 -2
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +31 -76
- package/src/dsl/verifier/proxy/parseBody.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.d.ts +2 -2
- package/src/dsl/verifier/proxy/proxy.js +22 -26
- package/src/dsl/verifier/proxy/proxy.js.map +1 -1
- package/src/dsl/verifier/proxy/proxy.spec.js +14 -14
- package/src/dsl/verifier/proxy/proxy.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.d.ts +3 -3
- package/src/dsl/verifier/proxy/proxyRequest.js +7 -7
- package/src/dsl/verifier/proxy/proxyRequest.js.map +1 -1
- package/src/dsl/verifier/proxy/proxyRequest.spec.js +49 -64
- package/src/dsl/verifier/proxy/proxyRequest.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.d.ts +3 -3
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js +14 -18
- package/src/dsl/verifier/proxy/stateHandler/setupStates.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js +76 -159
- package/src/dsl/verifier/proxy/stateHandler/setupStates.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.d.ts +2 -2
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js +23 -72
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.js.map +1 -1
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js +37 -85
- package/src/dsl/verifier/proxy/stateHandler/stateHandler.spec.js.map +1 -1
- package/src/dsl/verifier/proxy/tracer.d.ts +1 -1
- package/src/dsl/verifier/proxy/tracer.js +42 -35
- package/src/dsl/verifier/proxy/tracer.js.map +1 -1
- package/src/dsl/verifier/proxy/types.d.ts +5 -5
- package/src/dsl/verifier/types.d.ts +3 -3
- package/src/dsl/verifier/verifier.d.ts +1 -1
- package/src/dsl/verifier/verifier.js +49 -56
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +76 -93
- package/src/dsl/verifier/verifier.spec.js.map +1 -1
- package/src/errors/configurationError.js +2 -22
- package/src/errors/configurationError.js.map +1 -1
- package/src/errors/graphQLQueryError.js +2 -22
- package/src/errors/graphQLQueryError.js.map +1 -1
- package/src/errors/matcherError.js +2 -22
- package/src/errors/matcherError.js.map +1 -1
- package/src/errors/verificationError.js +2 -22
- package/src/errors/verificationError.js.map +1 -1
- package/src/httpPact/ffi.d.ts +2 -2
- package/src/httpPact/ffi.js +28 -29
- package/src/httpPact/ffi.js.map +1 -1
- package/src/httpPact/ffi.spec.js +30 -31
- package/src/httpPact/ffi.spec.js.map +1 -1
- package/src/httpPact/index.d.ts +3 -3
- package/src/httpPact/index.js +92 -149
- package/src/httpPact/index.js.map +1 -1
- package/src/httpPact/index.spec.js +75 -125
- package/src/httpPact/index.spec.js.map +1 -1
- package/src/httpPact/tracing.js +20 -28
- package/src/httpPact/tracing.js.map +1 -1
- package/src/index.js +1 -1
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +3 -3
- package/src/messageConsumerPact.js +50 -51
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +50 -49
- package/src/messageConsumerPact.spec.js.map +1 -1
- package/src/messageProviderPact.d.ts +3 -3
- package/src/messageProviderPact.js +68 -85
- package/src/messageProviderPact.js.map +1 -1
- package/src/messageProviderPact.spec.js +75 -66
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/pact.integration.spec.js +243 -313
- package/src/pact.integration.spec.js.map +1 -1
- package/src/v3/display.d.ts +1 -1
- package/src/v3/display.js +44 -58
- package/src/v3/display.js.map +1 -1
- package/src/v3/ffi.js +15 -15
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.js +8 -8
- package/src/v3/ffi.spec.js.map +1 -1
- package/src/v3/graphql/graphQL.d.ts +4 -4
- package/src/v3/graphql/graphQL.js +50 -75
- package/src/v3/graphql/graphQL.js.map +1 -1
- package/src/v3/matchers.d.ts +2 -2
- package/src/v3/matchers.js +112 -147
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +168 -187
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.d.ts +2 -2
- package/src/v3/pact.js +103 -151
- package/src/v3/pact.js.map +1 -1
- package/src/v3/types.d.ts +1 -1
- package/src/v3/xml/xmlBuilder.d.ts +1 -3
- package/src/v3/xml/xmlBuilder.js +7 -9
- package/src/v3/xml/xmlBuilder.js.map +1 -1
- package/src/v3/xml/xmlElement.d.ts +2 -2
- package/src/v3/xml/xmlElement.js +24 -41
- package/src/v3/xml/xmlElement.js.map +1 -1
- package/src/v3/xml/xmlElement.spec.js +23 -25
- package/src/v3/xml/xmlElement.spec.js.map +1 -1
- package/src/v3/xml/xmlNode.js +2 -5
- package/src/v3/xml/xmlNode.js.map +1 -1
- package/src/v3/xml/xmlText.d.ts +1 -1
- package/src/v3/xml/xmlText.js +9 -25
- package/src/v3/xml/xmlText.js.map +1 -1
- package/src/v4/graphql/graphQLInteractionWithRequest.d.ts +4 -4
- package/src/v4/graphql/graphQLInteractionWithRequest.js +21 -17
- package/src/v4/graphql/graphQLInteractionWithRequest.js.map +1 -1
- package/src/v4/graphql/graphQLRequestBuilder.d.ts +3 -3
- package/src/v4/graphql/graphQLRequestBuilder.js +18 -20
- package/src/v4/graphql/graphQLRequestBuilder.js.map +1 -1
- package/src/v4/graphql/index.d.ts +6 -6
- package/src/v4/graphql/index.js +21 -17
- package/src/v4/graphql/index.js.map +1 -1
- package/src/v4/graphql/types.d.ts +5 -5
- package/src/v4/http/index.d.ts +2 -2
- package/src/v4/http/index.js +48 -93
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/interactionWithCompleteRequest.d.ts +4 -7
- package/src/v4/http/interactionWithCompleteRequest.js +6 -10
- package/src/v4/http/interactionWithCompleteRequest.js.map +1 -1
- package/src/v4/http/interactionWithPlugin.d.ts +3 -3
- package/src/v4/http/interactionWithPlugin.js +14 -11
- package/src/v4/http/interactionWithPlugin.js.map +1 -1
- package/src/v4/http/interactionWithPluginRequest.d.ts +2 -2
- package/src/v4/http/interactionWithPluginRequest.js +11 -8
- package/src/v4/http/interactionWithPluginRequest.js.map +1 -1
- package/src/v4/http/interactionWithPluginResponse.d.ts +2 -2
- package/src/v4/http/interactionWithPluginResponse.js +10 -48
- package/src/v4/http/interactionWithPluginResponse.js.map +1 -1
- package/src/v4/http/interactionWithRequest.d.ts +2 -2
- package/src/v4/http/interactionWithRequest.js +11 -8
- package/src/v4/http/interactionWithRequest.js.map +1 -1
- package/src/v4/http/interactionWithResponse.d.ts +2 -2
- package/src/v4/http/interactionWithResponse.js +10 -48
- package/src/v4/http/interactionWithResponse.js.map +1 -1
- package/src/v4/http/requestBuilder.d.ts +3 -3
- package/src/v4/http/requestBuilder.js +32 -34
- package/src/v4/http/requestBuilder.js.map +1 -1
- package/src/v4/http/requestWithPluginBuilder.d.ts +2 -2
- package/src/v4/http/requestWithPluginBuilder.js +26 -46
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -1
- package/src/v4/http/responseBuilder.d.ts +3 -3
- package/src/v4/http/responseBuilder.js +24 -25
- package/src/v4/http/responseBuilder.js.map +1 -1
- package/src/v4/http/responseWithPluginBuilder.d.ts +1 -1
- package/src/v4/http/responseWithPluginBuilder.js +5 -25
- package/src/v4/http/responseWithPluginBuilder.js.map +1 -1
- package/src/v4/http/types.d.ts +3 -2
- package/src/v4/http/unconfiguredInteraction.d.ts +6 -5
- package/src/v4/http/unconfiguredInteraction.js +31 -26
- package/src/v4/http/unconfiguredInteraction.js.map +1 -1
- package/src/v4/index.d.ts +4 -4
- package/src/v4/index.js +31 -35
- package/src/v4/index.js.map +1 -1
- package/src/v4/message/asynchronousMessage.d.ts +7 -6
- package/src/v4/message/asynchronousMessage.js +157 -190
- package/src/v4/message/asynchronousMessage.js.map +1 -1
- package/src/v4/message/index.d.ts +7 -6
- package/src/v4/message/index.js +188 -217
- package/src/v4/message/index.js.map +1 -1
- package/src/v4/message/types.d.ts +5 -3
- package/src/v4/types.d.ts +3 -3
package/src/dsl/graphql.spec.js
CHANGED
|
@@ -36,20 +36,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
const chai = __importStar(require("chai"));
|
|
40
|
+
const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
41
|
+
const graphql_1 = require("./graphql");
|
|
42
|
+
const matchers_1 = require("./matchers");
|
|
43
43
|
chai.use(chai_as_promised_1.default);
|
|
44
|
-
|
|
45
|
-
describe('GraphQLInteraction',
|
|
46
|
-
|
|
47
|
-
beforeEach(
|
|
44
|
+
const { expect } = chai;
|
|
45
|
+
describe('GraphQLInteraction', () => {
|
|
46
|
+
let interaction;
|
|
47
|
+
beforeEach(() => {
|
|
48
48
|
interaction = new graphql_1.GraphQLInteraction();
|
|
49
49
|
});
|
|
50
|
-
describe('#withOperation',
|
|
51
|
-
describe('when given a valid operation',
|
|
52
|
-
it('creates a GraphQL Interaction',
|
|
50
|
+
describe('#withOperation', () => {
|
|
51
|
+
describe('when given a valid operation', () => {
|
|
52
|
+
it('creates a GraphQL Interaction', () => {
|
|
53
53
|
interaction.uponReceiving('a request');
|
|
54
54
|
interaction.withRequest({
|
|
55
55
|
path: '/graphql',
|
|
@@ -61,17 +61,18 @@ describe('GraphQLInteraction', function () {
|
|
|
61
61
|
status: 200,
|
|
62
62
|
body: { data: {} },
|
|
63
63
|
});
|
|
64
|
-
|
|
64
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
65
|
+
const json = interaction.json();
|
|
65
66
|
expect(json.request.body.operationName).to.eq('query');
|
|
66
67
|
});
|
|
67
68
|
});
|
|
68
|
-
describe('when given an invalid operation',
|
|
69
|
-
it('fails with an error',
|
|
69
|
+
describe('when given an invalid operation', () => {
|
|
70
|
+
it('fails with an error', () => {
|
|
70
71
|
expect(interaction.withOperation.bind('aoeu')).to.throw(Error);
|
|
71
72
|
});
|
|
72
73
|
});
|
|
73
|
-
describe('when given a null operation',
|
|
74
|
-
it('creates a GrphQL Interaction',
|
|
74
|
+
describe('when given a null operation', () => {
|
|
75
|
+
it('creates a GrphQL Interaction', () => {
|
|
75
76
|
interaction.uponReceiving('a request');
|
|
76
77
|
interaction.withRequest({
|
|
77
78
|
path: '/graphql',
|
|
@@ -83,14 +84,15 @@ describe('GraphQLInteraction', function () {
|
|
|
83
84
|
status: 200,
|
|
84
85
|
body: { data: {} },
|
|
85
86
|
});
|
|
86
|
-
|
|
87
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
88
|
+
const json = interaction.json();
|
|
87
89
|
expect(json.request.body.operationName).to.eq(null);
|
|
88
90
|
});
|
|
89
91
|
});
|
|
90
92
|
});
|
|
91
|
-
describe('#withVariables',
|
|
92
|
-
describe('when given a set of variables',
|
|
93
|
-
it('adds the variables to the payload',
|
|
93
|
+
describe('#withVariables', () => {
|
|
94
|
+
describe('when given a set of variables', () => {
|
|
95
|
+
it('adds the variables to the payload', () => {
|
|
94
96
|
interaction.uponReceiving('a request');
|
|
95
97
|
interaction.withRequest({
|
|
96
98
|
path: '/graphql',
|
|
@@ -105,12 +107,13 @@ describe('GraphQLInteraction', function () {
|
|
|
105
107
|
status: 200,
|
|
106
108
|
body: { data: {} },
|
|
107
109
|
});
|
|
108
|
-
|
|
110
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
111
|
+
const json = interaction.json();
|
|
109
112
|
expect(json.request.body.variables).to.deep.eq({ foo: 'bar' });
|
|
110
113
|
});
|
|
111
114
|
});
|
|
112
|
-
describe('when no variables are provided',
|
|
113
|
-
it('does not add the variables property to the payload',
|
|
115
|
+
describe('when no variables are provided', () => {
|
|
116
|
+
it('does not add the variables property to the payload', () => {
|
|
114
117
|
interaction.uponReceiving('a request');
|
|
115
118
|
interaction.withRequest({
|
|
116
119
|
path: '/graphql',
|
|
@@ -122,12 +125,13 @@ describe('GraphQLInteraction', function () {
|
|
|
122
125
|
status: 200,
|
|
123
126
|
body: { data: {} },
|
|
124
127
|
});
|
|
125
|
-
|
|
128
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
129
|
+
const json = interaction.json();
|
|
126
130
|
expect(json.request.body).to.not.have.property('variables');
|
|
127
131
|
});
|
|
128
132
|
});
|
|
129
|
-
describe('when an empty variables object is presented',
|
|
130
|
-
it('adds the variables property to the payload',
|
|
133
|
+
describe('when an empty variables object is presented', () => {
|
|
134
|
+
it('adds the variables property to the payload', () => {
|
|
131
135
|
interaction.uponReceiving('a request');
|
|
132
136
|
interaction.withRequest({
|
|
133
137
|
path: '/graphql',
|
|
@@ -140,13 +144,14 @@ describe('GraphQLInteraction', function () {
|
|
|
140
144
|
status: 200,
|
|
141
145
|
body: { data: {} },
|
|
142
146
|
});
|
|
143
|
-
|
|
147
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
148
|
+
const json = interaction.json();
|
|
144
149
|
expect(json.request.body).to.have.property('variables');
|
|
145
150
|
});
|
|
146
151
|
});
|
|
147
152
|
});
|
|
148
|
-
describe('#withQuery',
|
|
149
|
-
beforeEach(
|
|
153
|
+
describe('#withQuery', () => {
|
|
154
|
+
beforeEach(() => {
|
|
150
155
|
interaction.uponReceiving('a request');
|
|
151
156
|
interaction.withRequest({
|
|
152
157
|
path: '/graphql',
|
|
@@ -162,21 +167,20 @@ describe('GraphQLInteraction', function () {
|
|
|
162
167
|
body: { data: {} },
|
|
163
168
|
});
|
|
164
169
|
});
|
|
165
|
-
describe('when given an empty query',
|
|
166
|
-
it('fails with an error',
|
|
167
|
-
|
|
170
|
+
describe('when given an empty query', () => {
|
|
171
|
+
it('fails with an error', () => {
|
|
172
|
+
// biome-ignore lint/suspicious/noExplicitAny: deliberately passing null to test error handling on invalid input
|
|
173
|
+
expect(() => interaction.withQuery(null)).to.throw();
|
|
168
174
|
});
|
|
169
175
|
});
|
|
170
|
-
describe('when given an invalid query',
|
|
171
|
-
it('fails with an error',
|
|
172
|
-
expect(
|
|
173
|
-
return interaction.withQuery('{ not properly terminated');
|
|
174
|
-
}).to.throw(Error);
|
|
176
|
+
describe('when given an invalid query', () => {
|
|
177
|
+
it('fails with an error', () => {
|
|
178
|
+
expect(() => interaction.withQuery('{ not properly terminated')).to.throw(Error);
|
|
175
179
|
});
|
|
176
180
|
});
|
|
177
|
-
describe('when given a valid query',
|
|
178
|
-
describe('without variables',
|
|
179
|
-
it('adds regular expressions for the whitespace in the query',
|
|
181
|
+
describe('when given a valid query', () => {
|
|
182
|
+
describe('without variables', () => {
|
|
183
|
+
it('adds regular expressions for the whitespace in the query', () => {
|
|
180
184
|
interaction.uponReceiving('a request');
|
|
181
185
|
interaction.withRequest({
|
|
182
186
|
path: '/graphql',
|
|
@@ -188,42 +192,50 @@ describe('GraphQLInteraction', function () {
|
|
|
188
192
|
status: 200,
|
|
189
193
|
body: { data: {} },
|
|
190
194
|
});
|
|
191
|
-
|
|
195
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
196
|
+
const json = interaction.json();
|
|
192
197
|
expect((0, matchers_1.isMatcher)(json.request.body.query)).to.eq(true);
|
|
193
|
-
|
|
194
|
-
|
|
198
|
+
const r = new RegExp(json.request.body.query.regex, 'g');
|
|
199
|
+
const lotsOfWhitespace = `{ hello
|
|
200
|
+
|
|
201
|
+
}`;
|
|
195
202
|
expect(r.test(lotsOfWhitespace)).to.eq(true);
|
|
196
203
|
});
|
|
197
204
|
});
|
|
198
|
-
describe('and variables',
|
|
199
|
-
it('adds regular expressions for the whitespace in the query',
|
|
200
|
-
interaction.withQuery(
|
|
205
|
+
describe('and variables', () => {
|
|
206
|
+
it('adds regular expressions for the whitespace in the query', () => {
|
|
207
|
+
interaction.withQuery(`{
|
|
208
|
+
Hello(id: $id) {
|
|
209
|
+
name
|
|
210
|
+
}
|
|
211
|
+
}`);
|
|
201
212
|
interaction.withVariables({
|
|
202
213
|
name: 'bar',
|
|
203
214
|
});
|
|
204
|
-
|
|
215
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
216
|
+
const json = interaction.json();
|
|
205
217
|
expect((0, matchers_1.isMatcher)(json.request.body.query)).to.eq(true);
|
|
206
|
-
|
|
207
|
-
|
|
218
|
+
const r = new RegExp(json.request.body.query.regex, 'g');
|
|
219
|
+
const lotsOfWhitespace = `{ Hello(id: $id) { name } }`;
|
|
208
220
|
expect(r.test(lotsOfWhitespace)).to.eq(true);
|
|
209
221
|
});
|
|
210
222
|
});
|
|
211
223
|
});
|
|
212
224
|
});
|
|
213
|
-
describe('#json',
|
|
214
|
-
context('when query is empty',
|
|
215
|
-
it('fails with an error',
|
|
216
|
-
expect(
|
|
225
|
+
describe('#json', () => {
|
|
226
|
+
context('when query is empty', () => {
|
|
227
|
+
it('fails with an error', () => {
|
|
228
|
+
expect(() => interaction.json()).to.throw();
|
|
217
229
|
});
|
|
218
230
|
});
|
|
219
|
-
context('when description is empty',
|
|
220
|
-
it('fails with an error',
|
|
231
|
+
context('when description is empty', () => {
|
|
232
|
+
it('fails with an error', () => {
|
|
221
233
|
interaction.withQuery('{ hello }');
|
|
222
|
-
return expect(
|
|
234
|
+
return expect(() => interaction.json()).to.throw();
|
|
223
235
|
});
|
|
224
236
|
});
|
|
225
|
-
describe('when no operation is provided',
|
|
226
|
-
it('does not be present in unmarshaled body',
|
|
237
|
+
describe('when no operation is provided', () => {
|
|
238
|
+
it('does not be present in unmarshaled body', () => {
|
|
227
239
|
interaction.uponReceiving('a request');
|
|
228
240
|
interaction.withRequest({
|
|
229
241
|
path: '/graphql',
|
|
@@ -234,13 +246,14 @@ describe('GraphQLInteraction', function () {
|
|
|
234
246
|
status: 200,
|
|
235
247
|
body: { data: {} },
|
|
236
248
|
});
|
|
237
|
-
|
|
249
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
250
|
+
const json = interaction.json();
|
|
238
251
|
expect(json.request.body).to.not.have.property('operationName');
|
|
239
252
|
});
|
|
240
253
|
});
|
|
241
254
|
});
|
|
242
|
-
context('when given a valid query',
|
|
243
|
-
it('marshals the query to JSON',
|
|
255
|
+
context('when given a valid query', () => {
|
|
256
|
+
it('marshals the query to JSON', () => {
|
|
244
257
|
interaction.uponReceiving('a request');
|
|
245
258
|
interaction.withRequest({
|
|
246
259
|
path: '/graphql',
|
|
@@ -252,14 +265,15 @@ describe('GraphQLInteraction', function () {
|
|
|
252
265
|
status: 200,
|
|
253
266
|
body: { data: {} },
|
|
254
267
|
});
|
|
255
|
-
|
|
268
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
269
|
+
const json = interaction.json();
|
|
256
270
|
expect((0, matchers_1.isMatcher)(json.request.body.query)).to.eq(true);
|
|
257
271
|
expect(json.request.body.query.getValue()).to.eq('{ hello }');
|
|
258
272
|
});
|
|
259
273
|
});
|
|
260
|
-
context('headers are not duplicated',
|
|
261
|
-
describe('headers are properly cased',
|
|
262
|
-
it('content-type header is properly cased',
|
|
274
|
+
context('headers are not duplicated', () => {
|
|
275
|
+
describe('headers are properly cased', () => {
|
|
276
|
+
it('content-type header is properly cased', () => {
|
|
263
277
|
interaction.uponReceiving('a request');
|
|
264
278
|
interaction.withRequest({
|
|
265
279
|
path: '/graphql',
|
|
@@ -271,7 +285,8 @@ describe('GraphQLInteraction', function () {
|
|
|
271
285
|
status: 200,
|
|
272
286
|
body: { data: {} },
|
|
273
287
|
});
|
|
274
|
-
|
|
288
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
289
|
+
const json = interaction.json();
|
|
275
290
|
expect(json.request.headers).to.deep.eq({
|
|
276
291
|
'Content-Type': 'application/json',
|
|
277
292
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.spec.js","sourceRoot":"","sources":["../../../src/dsl/graphql.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"graphql.spec.js","sourceRoot":"","sources":["../../../src/dsl/graphql.spec.ts"],"names":[],"mappings":"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"}
|
package/src/dsl/interaction.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* An Interaction is where you define the state of your interaction with a Provider.
|
|
3
3
|
* @module Interaction
|
|
4
4
|
*/
|
|
5
|
-
import { HTTPMethods, HTTPMethod } from '../common/request';
|
|
6
|
-
import { MatcherV2, AnyTemplate } from './matchers';
|
|
5
|
+
import { HTTPMethods, type HTTPMethod } from '../common/request';
|
|
6
|
+
import { type MatcherV2, type AnyTemplate } from './matchers';
|
|
7
7
|
interface QueryObject {
|
|
8
8
|
[name: string]: string | MatcherV2<string> | string[];
|
|
9
9
|
}
|
package/src/dsl/interaction.js
CHANGED
|
@@ -8,52 +8,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
8
8
|
};
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.interactionToInteractionObject = exports.Interaction = void 0;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const lodash_1 = require("lodash");
|
|
12
|
+
const ramda_1 = require("ramda");
|
|
13
|
+
const request_1 = require("../common/request");
|
|
14
|
+
const matchers_1 = require("./matchers");
|
|
15
|
+
const configurationError_1 = __importDefault(require("../errors/configurationError"));
|
|
16
16
|
/**
|
|
17
17
|
* Returns valid if object or matcher only contains string values
|
|
18
18
|
* @param query
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
const throwIfQueryObjectInvalid = (query) => {
|
|
21
21
|
if ((0, matchers_1.isMatcher)(query)) {
|
|
22
22
|
return;
|
|
23
23
|
}
|
|
24
|
-
Object.values(query).forEach(
|
|
24
|
+
Object.values(query).forEach((value) => {
|
|
25
25
|
if (!((0, matchers_1.isMatcher)(value) || Array.isArray(value) || typeof value === 'string')) {
|
|
26
|
-
throw new configurationError_1.default(
|
|
26
|
+
throw new configurationError_1.default(`Query must only contain strings.`);
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.state = {};
|
|
33
|
-
}
|
|
30
|
+
class Interaction {
|
|
31
|
+
state = {};
|
|
34
32
|
/**
|
|
35
33
|
* Gives a state the provider should be in for this interaction.
|
|
36
34
|
* @param {string} providerState - The state of the provider.
|
|
37
35
|
* @returns {Interaction} interaction
|
|
38
36
|
*/
|
|
39
|
-
|
|
37
|
+
given(providerState) {
|
|
40
38
|
if (providerState) {
|
|
41
39
|
this.state.providerState = providerState;
|
|
42
40
|
}
|
|
43
41
|
return this;
|
|
44
|
-
}
|
|
42
|
+
}
|
|
45
43
|
/**
|
|
46
44
|
* A free style description of the interaction.
|
|
47
45
|
* @param {string} description - A description of the interaction.
|
|
48
46
|
* @returns {Interaction} interaction
|
|
49
47
|
*/
|
|
50
|
-
|
|
48
|
+
uponReceiving(description) {
|
|
51
49
|
if ((0, lodash_1.isNil)(description)) {
|
|
52
50
|
throw new configurationError_1.default('You must provide a description for the interaction.');
|
|
53
51
|
}
|
|
54
52
|
this.state.description = description;
|
|
55
53
|
return this;
|
|
56
|
-
}
|
|
54
|
+
}
|
|
57
55
|
/**
|
|
58
56
|
* The request that represents this interaction triggered by the consumer.
|
|
59
57
|
* @param {Object} requestOpts
|
|
@@ -64,12 +62,12 @@ var Interaction = /** @class */ (function () {
|
|
|
64
62
|
* @param {Object} requestOpts.body - The body, in {@link String} format or {@link Object} format
|
|
65
63
|
* @returns {Interaction} interaction
|
|
66
64
|
*/
|
|
67
|
-
|
|
65
|
+
withRequest(requestOpts) {
|
|
68
66
|
if ((0, lodash_1.isNil)(requestOpts.method)) {
|
|
69
67
|
throw new configurationError_1.default('You must provide an HTTP method.');
|
|
70
68
|
}
|
|
71
69
|
if ((0, lodash_1.keys)(request_1.HTTPMethods).indexOf(requestOpts.method.toString()) < 0) {
|
|
72
|
-
throw new configurationError_1.default(
|
|
70
|
+
throw new configurationError_1.default(`You must provide a valid HTTP method: ${(0, lodash_1.keys)(request_1.HTTPMethods).join(', ')}.`);
|
|
73
71
|
}
|
|
74
72
|
if ((0, lodash_1.isNil)(requestOpts.path)) {
|
|
75
73
|
throw new configurationError_1.default('You must provide a path.');
|
|
@@ -79,7 +77,7 @@ var Interaction = /** @class */ (function () {
|
|
|
79
77
|
}
|
|
80
78
|
this.state.request = (0, ramda_1.reject)(lodash_1.isNil, requestOpts);
|
|
81
79
|
return this;
|
|
82
|
-
}
|
|
80
|
+
}
|
|
83
81
|
/**
|
|
84
82
|
* The response expected by the consumer.
|
|
85
83
|
* @param {Object} responseOpts
|
|
@@ -88,7 +86,7 @@ var Interaction = /** @class */ (function () {
|
|
|
88
86
|
* @param {Object} responseOpts.body
|
|
89
87
|
* @returns {Interaction} interaction
|
|
90
88
|
*/
|
|
91
|
-
|
|
89
|
+
willRespondWith(responseOpts) {
|
|
92
90
|
if ((0, lodash_1.isNil)(responseOpts.status) ||
|
|
93
91
|
responseOpts.status.toString().trim().length === 0) {
|
|
94
92
|
throw new configurationError_1.default('You must provide a status code.');
|
|
@@ -99,47 +97,42 @@ var Interaction = /** @class */ (function () {
|
|
|
99
97
|
status: responseOpts.status,
|
|
100
98
|
});
|
|
101
99
|
return this;
|
|
102
|
-
}
|
|
100
|
+
}
|
|
103
101
|
/**
|
|
104
102
|
* Returns the interaction object created.
|
|
105
103
|
* @returns {Object}
|
|
106
104
|
*/
|
|
107
|
-
|
|
108
|
-
var _a, _b, _c, _d, _e, _f;
|
|
105
|
+
json() {
|
|
109
106
|
if ((0, lodash_1.isNil)(this.state.description)) {
|
|
110
107
|
throw new configurationError_1.default('You must provide a description for the Interaction');
|
|
111
108
|
}
|
|
112
109
|
if ((0, lodash_1.isNil)(this.state.request) ||
|
|
113
|
-
(0, lodash_1.isNil)(
|
|
114
|
-
(0, lodash_1.isNil)(
|
|
110
|
+
(0, lodash_1.isNil)(this.state?.request?.method) ||
|
|
111
|
+
(0, lodash_1.isNil)(this.state?.request?.path)) {
|
|
115
112
|
throw new configurationError_1.default('You must provide a request with at least a method and path for the Interaction');
|
|
116
113
|
}
|
|
117
|
-
if ((0, lodash_1.isNil)(this.state.response) || (0, lodash_1.isNil)(
|
|
114
|
+
if ((0, lodash_1.isNil)(this.state.response) || (0, lodash_1.isNil)(this.state?.response?.status)) {
|
|
118
115
|
throw new configurationError_1.default('You must provide a response with a status for the Interaction');
|
|
119
116
|
}
|
|
120
117
|
return this.state;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
}());
|
|
118
|
+
}
|
|
119
|
+
}
|
|
124
120
|
exports.Interaction = Interaction;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
},
|
|
142
|
-
});
|
|
143
|
-
};
|
|
121
|
+
const interactionToInteractionObject = (interaction) => ({
|
|
122
|
+
state: interaction.providerState,
|
|
123
|
+
uponReceiving: interaction.description,
|
|
124
|
+
withRequest: {
|
|
125
|
+
method: interaction.request?.method,
|
|
126
|
+
path: interaction.request?.path,
|
|
127
|
+
query: interaction.request?.query,
|
|
128
|
+
body: interaction.request?.body,
|
|
129
|
+
headers: interaction.request?.headers,
|
|
130
|
+
},
|
|
131
|
+
willRespondWith: {
|
|
132
|
+
status: interaction.response?.status,
|
|
133
|
+
body: interaction.response?.body,
|
|
134
|
+
headers: interaction.response?.headers,
|
|
135
|
+
},
|
|
136
|
+
});
|
|
144
137
|
exports.interactionToInteractionObject = interactionToInteractionObject;
|
|
145
138
|
//# sourceMappingURL=interaction.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../src/dsl/interaction.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../src/dsl/interaction.ts"],"names":[],"mappings":"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"}
|