@pact-foundation/pact 16.3.1 → 16.5.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 +23 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +22 -12
- package/package.json +26 -47
- package/scripts/ci/build-and-test.sh +0 -3
- package/scripts/install-plugins.js +104 -0
- 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 +7 -1
- package/src/common/matchingRules.js +42 -22
- 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 +39 -87
- 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 +29 -73
- 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 -58
- 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 +92 -117
- 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 +109 -132
- package/src/dsl/interaction.spec.js.map +1 -1
- package/src/dsl/matchers.d.ts +2 -3
- package/src/dsl/matchers.js +19 -31
- package/src/dsl/matchers.js.map +1 -1
- package/src/dsl/matchers.spec.js +279 -289
- 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 +86 -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 +3 -3
- package/src/dsl/verifier/proxy/parseBody.js.map +1 -1
- package/src/dsl/verifier/proxy/parseBody.spec.js +35 -113
- 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 +11 -53
- 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 +54 -104
- 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 -193
- 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 -122
- 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 +5 -1
- package/src/dsl/verifier/verifier.js +53 -60
- package/src/dsl/verifier/verifier.js.map +1 -1
- package/src/dsl/verifier/verifier.spec.js +84 -151
- 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 +40 -83
- 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 +102 -195
- 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.d.ts +25 -25
- package/src/index.js +29 -29
- package/src/index.js.map +1 -1
- package/src/messageConsumerPact.d.ts +5 -5
- package/src/messageConsumerPact.js +59 -53
- package/src/messageConsumerPact.js.map +1 -1
- package/src/messageConsumerPact.spec.js +55 -97
- 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 +96 -123
- package/src/messageProviderPact.spec.js.map +1 -1
- package/src/pact.integration.spec.js +242 -351
- 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 +20 -16
- package/src/v3/ffi.js.map +1 -1
- package/src/v3/ffi.spec.js +7 -42
- 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/graphql/index.d.ts +1 -1
- package/src/v3/graphql/index.js +1 -1
- package/src/v3/graphql/index.js.map +1 -1
- package/src/v3/index.d.ts +4 -12
- package/src/v3/index.js +4 -12
- package/src/v3/index.js.map +1 -1
- package/src/v3/matchers.d.ts +15 -3
- package/src/v3/matchers.js +131 -148
- package/src/v3/matchers.js.map +1 -1
- package/src/v3/matchers.spec.js +281 -232
- package/src/v3/matchers.spec.js.map +1 -1
- package/src/v3/pact.d.ts +2 -2
- package/src/v3/pact.js +108 -151
- package/src/v3/pact.js.map +1 -1
- package/src/v3/pact.spec.js +94 -0
- package/src/v3/pact.spec.js.map +1 -0
- package/src/v3/types.d.ts +19 -3
- package/src/v3/types.js +22 -1
- package/src/v3/types.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 +53 -93
- package/src/v4/http/index.js.map +1 -1
- package/src/v4/http/index.spec.d.ts +1 -0
- package/src/v4/http/index.spec.js +73 -0
- package/src/v4/http/index.spec.js.map +1 -0
- 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 +4 -3
- package/src/v4/http/interactionWithPluginRequest.js +17 -9
- 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 +4 -3
- package/src/v4/http/interactionWithRequest.js +17 -9
- package/src/v4/http/interactionWithRequest.js.map +1 -1
- package/src/v4/http/interactionWithRequest.spec.d.ts +1 -0
- package/src/v4/http/interactionWithRequest.spec.js +82 -0
- package/src/v4/http/interactionWithRequest.spec.js.map +1 -0
- 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 +4 -3
- package/src/v4/http/requestBuilder.js +36 -34
- package/src/v4/http/requestBuilder.js.map +1 -1
- package/src/v4/http/requestBuilder.spec.d.ts +1 -0
- package/src/v4/http/requestBuilder.spec.js +42 -0
- package/src/v4/http/requestBuilder.spec.js.map +1 -0
- package/src/v4/http/requestWithPluginBuilder.d.ts +3 -2
- package/src/v4/http/requestWithPluginBuilder.js +30 -46
- package/src/v4/http/requestWithPluginBuilder.js.map +1 -1
- package/src/v4/http/requestWithPluginBuilder.spec.d.ts +1 -0
- package/src/v4/http/requestWithPluginBuilder.spec.js +34 -0
- package/src/v4/http/requestWithPluginBuilder.spec.js.map +1 -0
- package/src/v4/http/responseBuilder.d.ts +4 -3
- package/src/v4/http/responseBuilder.js +28 -25
- package/src/v4/http/responseBuilder.js.map +1 -1
- package/src/v4/http/responseBuilder.spec.d.ts +1 -0
- package/src/v4/http/responseBuilder.spec.js +42 -0
- package/src/v4/http/responseBuilder.spec.js.map +1 -0
- 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/responseWithPluginBuilder.spec.d.ts +1 -0
- package/src/v4/http/responseWithPluginBuilder.spec.js +34 -0
- package/src/v4/http/responseWithPluginBuilder.spec.js.map +1 -0
- package/src/v4/http/types.d.ts +13 -4
- 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 +6 -5
- package/src/v4/index.js +32 -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/xml/index.d.ts +4 -0
- package/src/xml/index.js +21 -0
- package/src/xml/index.js.map +1 -0
- package/src/{v3/xml → xml}/xmlBuilder.d.ts +1 -3
- package/src/{v3/xml → xml}/xmlBuilder.js +7 -9
- package/src/xml/xmlBuilder.js.map +1 -0
- package/src/{v3/xml → xml}/xmlElement.d.ts +2 -2
- package/src/xml/xmlElement.js +73 -0
- package/src/xml/xmlElement.js.map +1 -0
- package/src/xml/xmlElement.spec.d.ts +1 -0
- package/src/xml/xmlElement.spec.js +107 -0
- package/src/xml/xmlElement.spec.js.map +1 -0
- package/src/xml/xmlNode.js +7 -0
- package/src/xml/xmlNode.js.map +1 -0
- package/src/{v3/xml → xml}/xmlText.d.ts +1 -1
- package/src/xml/xmlText.js +15 -0
- package/src/xml/xmlText.js.map +1 -0
- package/scripts/install-plugins +0 -106
- package/src/v3/xml/xmlBuilder.js.map +0 -1
- package/src/v3/xml/xmlElement.js +0 -90
- package/src/v3/xml/xmlElement.js.map +0 -1
- package/src/v3/xml/xmlElement.spec.js +0 -113
- package/src/v3/xml/xmlElement.spec.js.map +0 -1
- package/src/v3/xml/xmlNode.js +0 -10
- package/src/v3/xml/xmlNode.js.map +0 -1
- package/src/v3/xml/xmlText.js +0 -31
- package/src/v3/xml/xmlText.js.map +0 -1
- /package/src/v3/{xml/xmlElement.spec.d.ts → pact.spec.d.ts} +0 -0
- /package/src/{v3/xml → xml}/xmlNode.d.ts +0 -0
package/src/dsl/graphql.spec.js
CHANGED
|
@@ -1,55 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var expect = chai.expect;
|
|
45
|
-
describe('GraphQLInteraction', function () {
|
|
46
|
-
var interaction;
|
|
47
|
-
beforeEach(function () {
|
|
3
|
+
const graphql_1 = require("./graphql");
|
|
4
|
+
const matchers_1 = require("./matchers");
|
|
5
|
+
describe('GraphQLInteraction', () => {
|
|
6
|
+
let interaction;
|
|
7
|
+
beforeEach(() => {
|
|
48
8
|
interaction = new graphql_1.GraphQLInteraction();
|
|
49
9
|
});
|
|
50
|
-
describe('#withOperation',
|
|
51
|
-
describe('when given a valid operation',
|
|
52
|
-
it('creates a GraphQL Interaction',
|
|
10
|
+
describe('#withOperation', () => {
|
|
11
|
+
describe('when given a valid operation', () => {
|
|
12
|
+
it('creates a GraphQL Interaction', () => {
|
|
53
13
|
interaction.uponReceiving('a request');
|
|
54
14
|
interaction.withRequest({
|
|
55
15
|
path: '/graphql',
|
|
@@ -61,17 +21,18 @@ describe('GraphQLInteraction', function () {
|
|
|
61
21
|
status: 200,
|
|
62
22
|
body: { data: {} },
|
|
63
23
|
});
|
|
64
|
-
|
|
65
|
-
|
|
24
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
25
|
+
const json = interaction.json();
|
|
26
|
+
expect(json.request.body.operationName).toBe('query');
|
|
66
27
|
});
|
|
67
28
|
});
|
|
68
|
-
describe('when given an invalid operation',
|
|
69
|
-
it('fails with an error',
|
|
70
|
-
expect(interaction.withOperation.bind('aoeu')).
|
|
29
|
+
describe('when given an invalid operation', () => {
|
|
30
|
+
it('fails with an error', () => {
|
|
31
|
+
expect(interaction.withOperation.bind('aoeu')).toThrow(Error);
|
|
71
32
|
});
|
|
72
33
|
});
|
|
73
|
-
describe('when given a null operation',
|
|
74
|
-
it('creates a GrphQL Interaction',
|
|
34
|
+
describe('when given a null operation', () => {
|
|
35
|
+
it('creates a GrphQL Interaction', () => {
|
|
75
36
|
interaction.uponReceiving('a request');
|
|
76
37
|
interaction.withRequest({
|
|
77
38
|
path: '/graphql',
|
|
@@ -83,14 +44,15 @@ describe('GraphQLInteraction', function () {
|
|
|
83
44
|
status: 200,
|
|
84
45
|
body: { data: {} },
|
|
85
46
|
});
|
|
86
|
-
|
|
87
|
-
|
|
47
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
48
|
+
const json = interaction.json();
|
|
49
|
+
expect(json.request.body.operationName).toBeNull();
|
|
88
50
|
});
|
|
89
51
|
});
|
|
90
52
|
});
|
|
91
|
-
describe('#withVariables',
|
|
92
|
-
describe('when given a set of variables',
|
|
93
|
-
it('adds the variables to the payload',
|
|
53
|
+
describe('#withVariables', () => {
|
|
54
|
+
describe('when given a set of variables', () => {
|
|
55
|
+
it('adds the variables to the payload', () => {
|
|
94
56
|
interaction.uponReceiving('a request');
|
|
95
57
|
interaction.withRequest({
|
|
96
58
|
path: '/graphql',
|
|
@@ -105,12 +67,13 @@ describe('GraphQLInteraction', function () {
|
|
|
105
67
|
status: 200,
|
|
106
68
|
body: { data: {} },
|
|
107
69
|
});
|
|
108
|
-
|
|
109
|
-
|
|
70
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
71
|
+
const json = interaction.json();
|
|
72
|
+
expect(json.request.body.variables).toEqual({ foo: 'bar' });
|
|
110
73
|
});
|
|
111
74
|
});
|
|
112
|
-
describe('when no variables are provided',
|
|
113
|
-
it('does not add the variables property to the payload',
|
|
75
|
+
describe('when no variables are provided', () => {
|
|
76
|
+
it('does not add the variables property to the payload', () => {
|
|
114
77
|
interaction.uponReceiving('a request');
|
|
115
78
|
interaction.withRequest({
|
|
116
79
|
path: '/graphql',
|
|
@@ -122,12 +85,13 @@ describe('GraphQLInteraction', function () {
|
|
|
122
85
|
status: 200,
|
|
123
86
|
body: { data: {} },
|
|
124
87
|
});
|
|
125
|
-
|
|
126
|
-
|
|
88
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
89
|
+
const json = interaction.json();
|
|
90
|
+
expect(json.request.body).not.toHaveProperty('variables');
|
|
127
91
|
});
|
|
128
92
|
});
|
|
129
|
-
describe('when an empty variables object is presented',
|
|
130
|
-
it('adds the variables property to the payload',
|
|
93
|
+
describe('when an empty variables object is presented', () => {
|
|
94
|
+
it('adds the variables property to the payload', () => {
|
|
131
95
|
interaction.uponReceiving('a request');
|
|
132
96
|
interaction.withRequest({
|
|
133
97
|
path: '/graphql',
|
|
@@ -140,13 +104,14 @@ describe('GraphQLInteraction', function () {
|
|
|
140
104
|
status: 200,
|
|
141
105
|
body: { data: {} },
|
|
142
106
|
});
|
|
143
|
-
|
|
144
|
-
|
|
107
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
108
|
+
const json = interaction.json();
|
|
109
|
+
expect(json.request.body).toHaveProperty('variables');
|
|
145
110
|
});
|
|
146
111
|
});
|
|
147
112
|
});
|
|
148
|
-
describe('#withQuery',
|
|
149
|
-
beforeEach(
|
|
113
|
+
describe('#withQuery', () => {
|
|
114
|
+
beforeEach(() => {
|
|
150
115
|
interaction.uponReceiving('a request');
|
|
151
116
|
interaction.withRequest({
|
|
152
117
|
path: '/graphql',
|
|
@@ -162,21 +127,20 @@ describe('GraphQLInteraction', function () {
|
|
|
162
127
|
body: { data: {} },
|
|
163
128
|
});
|
|
164
129
|
});
|
|
165
|
-
describe('when given an empty query',
|
|
166
|
-
it('fails with an error',
|
|
167
|
-
|
|
130
|
+
describe('when given an empty query', () => {
|
|
131
|
+
it('fails with an error', () => {
|
|
132
|
+
// biome-ignore lint/suspicious/noExplicitAny: deliberately passing null to test error handling on invalid input
|
|
133
|
+
expect(() => interaction.withQuery(null)).toThrow();
|
|
168
134
|
});
|
|
169
135
|
});
|
|
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);
|
|
136
|
+
describe('when given an invalid query', () => {
|
|
137
|
+
it('fails with an error', () => {
|
|
138
|
+
expect(() => interaction.withQuery('{ not properly terminated')).toThrow(Error);
|
|
175
139
|
});
|
|
176
140
|
});
|
|
177
|
-
describe('when given a valid query',
|
|
178
|
-
describe('without variables',
|
|
179
|
-
it('adds regular expressions for the whitespace in the query',
|
|
141
|
+
describe('when given a valid query', () => {
|
|
142
|
+
describe('without variables', () => {
|
|
143
|
+
it('adds regular expressions for the whitespace in the query', () => {
|
|
180
144
|
interaction.uponReceiving('a request');
|
|
181
145
|
interaction.withRequest({
|
|
182
146
|
path: '/graphql',
|
|
@@ -188,42 +152,50 @@ describe('GraphQLInteraction', function () {
|
|
|
188
152
|
status: 200,
|
|
189
153
|
body: { data: {} },
|
|
190
154
|
});
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
155
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
156
|
+
const json = interaction.json();
|
|
157
|
+
expect((0, matchers_1.isMatcher)(json.request.body.query)).toBe(true);
|
|
158
|
+
const r = new RegExp(json.request.body.query.regex, 'g');
|
|
159
|
+
const lotsOfWhitespace = `{ hello
|
|
160
|
+
|
|
161
|
+
}`;
|
|
162
|
+
expect(r.test(lotsOfWhitespace)).toBe(true);
|
|
196
163
|
});
|
|
197
164
|
});
|
|
198
|
-
describe('and variables',
|
|
199
|
-
it('adds regular expressions for the whitespace in the query',
|
|
200
|
-
interaction.withQuery(
|
|
165
|
+
describe('and variables', () => {
|
|
166
|
+
it('adds regular expressions for the whitespace in the query', () => {
|
|
167
|
+
interaction.withQuery(`{
|
|
168
|
+
Hello(id: $id) {
|
|
169
|
+
name
|
|
170
|
+
}
|
|
171
|
+
}`);
|
|
201
172
|
interaction.withVariables({
|
|
202
173
|
name: 'bar',
|
|
203
174
|
});
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
175
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
176
|
+
const json = interaction.json();
|
|
177
|
+
expect((0, matchers_1.isMatcher)(json.request.body.query)).toBe(true);
|
|
178
|
+
const r = new RegExp(json.request.body.query.regex, 'g');
|
|
179
|
+
const lotsOfWhitespace = `{ Hello(id: $id) { name } }`;
|
|
180
|
+
expect(r.test(lotsOfWhitespace)).toBe(true);
|
|
209
181
|
});
|
|
210
182
|
});
|
|
211
183
|
});
|
|
212
184
|
});
|
|
213
|
-
describe('#json',
|
|
214
|
-
|
|
215
|
-
it('fails with an error',
|
|
216
|
-
expect(
|
|
185
|
+
describe('#json', () => {
|
|
186
|
+
describe('when query is empty', () => {
|
|
187
|
+
it('fails with an error', () => {
|
|
188
|
+
expect(() => interaction.json()).toThrow();
|
|
217
189
|
});
|
|
218
190
|
});
|
|
219
|
-
|
|
220
|
-
it('fails with an error',
|
|
191
|
+
describe('when description is empty', () => {
|
|
192
|
+
it('fails with an error', () => {
|
|
221
193
|
interaction.withQuery('{ hello }');
|
|
222
|
-
return expect(
|
|
194
|
+
return expect(() => interaction.json()).toThrow();
|
|
223
195
|
});
|
|
224
196
|
});
|
|
225
|
-
describe('when no operation is provided',
|
|
226
|
-
it('does not be present in unmarshaled body',
|
|
197
|
+
describe('when no operation is provided', () => {
|
|
198
|
+
it('does not be present in unmarshaled body', () => {
|
|
227
199
|
interaction.uponReceiving('a request');
|
|
228
200
|
interaction.withRequest({
|
|
229
201
|
path: '/graphql',
|
|
@@ -234,13 +206,14 @@ describe('GraphQLInteraction', function () {
|
|
|
234
206
|
status: 200,
|
|
235
207
|
body: { data: {} },
|
|
236
208
|
});
|
|
237
|
-
|
|
238
|
-
|
|
209
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
210
|
+
const json = interaction.json();
|
|
211
|
+
expect(json.request.body).not.toHaveProperty('operationName');
|
|
239
212
|
});
|
|
240
213
|
});
|
|
241
214
|
});
|
|
242
|
-
|
|
243
|
-
it('marshals the query to JSON',
|
|
215
|
+
describe('when given a valid query', () => {
|
|
216
|
+
it('marshals the query to JSON', () => {
|
|
244
217
|
interaction.uponReceiving('a request');
|
|
245
218
|
interaction.withRequest({
|
|
246
219
|
path: '/graphql',
|
|
@@ -252,14 +225,15 @@ describe('GraphQLInteraction', function () {
|
|
|
252
225
|
status: 200,
|
|
253
226
|
body: { data: {} },
|
|
254
227
|
});
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
expect(json.request.body.query
|
|
228
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
229
|
+
const json = interaction.json();
|
|
230
|
+
expect((0, matchers_1.isMatcher)(json.request.body.query)).toBe(true);
|
|
231
|
+
expect(json.request.body.query.getValue()).toBe('{ hello }');
|
|
258
232
|
});
|
|
259
233
|
});
|
|
260
|
-
|
|
261
|
-
describe('headers are properly cased',
|
|
262
|
-
it('content-type header is properly cased',
|
|
234
|
+
describe('headers are not duplicated', () => {
|
|
235
|
+
describe('headers are properly cased', () => {
|
|
236
|
+
it('content-type header is properly cased', () => {
|
|
263
237
|
interaction.uponReceiving('a request');
|
|
264
238
|
interaction.withRequest({
|
|
265
239
|
path: '/graphql',
|
|
@@ -271,8 +245,9 @@ describe('GraphQLInteraction', function () {
|
|
|
271
245
|
status: 200,
|
|
272
246
|
body: { data: {} },
|
|
273
247
|
});
|
|
274
|
-
|
|
275
|
-
|
|
248
|
+
// biome-ignore lint/suspicious/noExplicitAny: body sub-properties (query/variables/operationName) are typed as AnyTemplate and need runtime assertions
|
|
249
|
+
const json = interaction.json();
|
|
250
|
+
expect(json.request.headers).toEqual({
|
|
276
251
|
'Content-Type': 'application/json',
|
|
277
252
|
});
|
|
278
253
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.spec.js","sourceRoot":"","sources":["../../../src/dsl/graphql.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"graphql.spec.js","sourceRoot":"","sources":["../../../src/dsl/graphql.spec.ts"],"names":[],"mappings":";;AAAA,uCAA+C;AAC/C,yCAAuC;AAEvC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,WAA+B,CAAC;IAEpC,UAAU,CAAC,GAAG,EAAE;QACd,WAAW,GAAG,IAAI,4BAAkB,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;YAC5C,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;gBACvC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC/C,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;YAC3C,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;gBACtC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBAChC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;YACrD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;gBAC3C,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,aAAa,CAAC;oBACxB,GAAG,EAAE,KAAK;iBACX,CAAC,CAAC;gBACH,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;YAC9C,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;gBAC5D,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;YAC3D,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;gBACpD,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;gBAC9B,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACvC,WAAW,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACnC,WAAW,CAAC,aAAa,CAAC;gBACxB,GAAG,EAAE,KAAK;aACX,CAAC,CAAC;YACH,WAAW,CAAC,eAAe,CAAC;gBAC1B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACzC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,gHAAgH;gBAChH,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,IAAW,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;YAC3C,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,MAAM,CAAC,GAAG,EAAE,CACV,WAAW,CAAC,SAAS,CAAC,2BAA2B,CAAC,CACnD,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;YACxC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;gBACjC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;oBACvC,WAAW,CAAC,WAAW,CAAC;wBACtB,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE,MAAM;qBACf,CAAC,CAAC;oBACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;oBACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;oBACnC,WAAW,CAAC,eAAe,CAAC;wBAC1B,MAAM,EAAE,GAAG;wBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;qBACnB,CAAC,CAAC;oBAEH,uJAAuJ;oBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;oBAErC,MAAM,CAAC,IAAA,oBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtD,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzD,MAAM,gBAAgB,GAAG;;UAEzB,CAAC;oBACD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;gBAC7B,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;oBAClE,WAAW,CAAC,SAAS,CAAC;;;;YAIpB,CAAC,CAAC;oBACJ,WAAW,CAAC,aAAa,CAAC;wBACxB,IAAI,EAAE,KAAK;qBACZ,CAAC,CAAC;oBACH,uJAAuJ;oBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;oBAErC,MAAM,CAAC,IAAA,oBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtD,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACzD,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;oBACtE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACnC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACzC,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;gBAC7B,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAEnC,OAAO,MAAM,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;YAC7C,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;gBACjD,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YACvC,WAAW,CAAC,WAAW,CAAC;gBACtB,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YACnC,WAAW,CAAC,eAAe,CAAC;gBAC1B,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;aACnB,CAAC,CAAC;YAEH,uJAAuJ;YACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAA,oBAAS,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;YAC1C,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;gBAC/C,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBACvC,WAAW,CAAC,WAAW,CAAC;oBACtB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,MAAM;iBACf,CAAC,CAAC;gBACH,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACnC,WAAW,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACnC,WAAW,CAAC,eAAe,CAAC;oBAC1B,MAAM,EAAE,GAAG;oBACX,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;iBACnB,CAAC,CAAC;gBAEH,uJAAuJ;gBACvJ,MAAM,IAAI,GAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;oBACnC,cAAc,EAAE,kBAAkB;iBACnC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
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 {
|
|
6
|
-
import {
|
|
5
|
+
import { type HTTPMethod, HTTPMethods } from '../common/request';
|
|
6
|
+
import { type AnyTemplate, type MatcherV2 } 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 configurationError_1 = __importDefault(require("../errors/configurationError"));
|
|
15
|
+
const matchers_1 = require("./matchers");
|
|
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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"}
|