@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
|
@@ -2,17 +2,6 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @module Message
|
|
4
4
|
*/
|
|
5
|
-
var __assign = (this && this.__assign) || function () {
|
|
6
|
-
__assign = Object.assign || function(t) {
|
|
7
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
8
|
-
s = arguments[i];
|
|
9
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
10
|
-
t[p] = s[p];
|
|
11
|
-
}
|
|
12
|
-
return t;
|
|
13
|
-
};
|
|
14
|
-
return __assign.apply(this, arguments);
|
|
15
|
-
};
|
|
16
5
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
17
6
|
if (k2 === undefined) k2 = k;
|
|
18
7
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -51,40 +40,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
51
40
|
};
|
|
52
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
42
|
exports.MessageProviderPact = exports.providerWithMetadata = exports.setupProxyServer = exports.waitForServerReady = void 0;
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
43
|
+
const node_http_1 = __importDefault(require("node:http"));
|
|
44
|
+
const pact_core_1 = __importDefault(require("@pact-foundation/pact-core"));
|
|
45
|
+
const body_parser_1 = __importDefault(require("body-parser"));
|
|
46
|
+
const express_1 = __importDefault(require("express"));
|
|
47
|
+
const js_base64_1 = require("js-base64");
|
|
48
|
+
const lodash_1 = require("lodash");
|
|
49
|
+
const logger_1 = __importStar(require("./common/logger"));
|
|
61
50
|
// Listens for the server start event
|
|
62
51
|
// Converts event Emitter to a Promise
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
});
|
|
68
|
-
};
|
|
52
|
+
const waitForServerReady = (server) => new Promise((resolve, reject) => {
|
|
53
|
+
server.on('listening', () => resolve(server));
|
|
54
|
+
server.on('error', () => reject());
|
|
55
|
+
});
|
|
69
56
|
exports.waitForServerReady = waitForServerReady;
|
|
70
57
|
// Get the Proxy we'll pass to the CLI for verification
|
|
71
|
-
|
|
58
|
+
const setupProxyServer = (app) => node_http_1.default.createServer(app).listen();
|
|
72
59
|
exports.setupProxyServer = setupProxyServer;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
: { __pactMessageMetadata: metadata, message: message };
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
};
|
|
60
|
+
const hasMetadata = (o) => Boolean(o.__pactMessageMetadata);
|
|
61
|
+
const providerWithMetadata = (provider, metadata) => (descriptor) => Promise.resolve(provider(descriptor)).then((message) => hasMetadata(message)
|
|
62
|
+
? {
|
|
63
|
+
__pactMessageMetadata: {
|
|
64
|
+
...message.__pactMessageMetadata,
|
|
65
|
+
...metadata,
|
|
66
|
+
},
|
|
67
|
+
message,
|
|
68
|
+
}
|
|
69
|
+
: { __pactMessageMetadata: metadata, message });
|
|
88
70
|
exports.providerWithMetadata = providerWithMetadata;
|
|
89
71
|
/**
|
|
90
72
|
* A Message Provider is analogous to Consumer in the HTTP Interaction model.
|
|
@@ -92,8 +74,9 @@ exports.providerWithMetadata = providerWithMetadata;
|
|
|
92
74
|
* It is the initiator of an interaction, and expects something on the other end
|
|
93
75
|
* of the interaction to respond - just in this case, not immediately.
|
|
94
76
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
77
|
+
class MessageProviderPact {
|
|
78
|
+
config;
|
|
79
|
+
constructor(config) {
|
|
97
80
|
this.config = config;
|
|
98
81
|
if (config.logLevel && !(0, lodash_1.isEmpty)(config.logLevel)) {
|
|
99
82
|
pact_core_1.default.logLevel(config.logLevel);
|
|
@@ -106,60 +89,61 @@ var MessageProviderPact = /** @class */ (function () {
|
|
|
106
89
|
/**
|
|
107
90
|
* Verify a Message Provider.
|
|
108
91
|
*/
|
|
109
|
-
|
|
92
|
+
verify() {
|
|
110
93
|
logger_1.default.info('Verifying message');
|
|
111
94
|
// Start the verification CLI proxy server
|
|
112
|
-
|
|
113
|
-
|
|
95
|
+
const app = this.setupProxyApplication();
|
|
96
|
+
const server = (0, exports.setupProxyServer)(app);
|
|
114
97
|
// Run the verification once the proxy server is available
|
|
115
98
|
return (0, exports.waitForServerReady)(server)
|
|
116
99
|
.then(this.runProviderVerification())
|
|
117
|
-
.then(
|
|
100
|
+
.then((result) => {
|
|
118
101
|
server.close();
|
|
119
102
|
return result;
|
|
120
|
-
},
|
|
103
|
+
}, (err) => {
|
|
121
104
|
server.close();
|
|
122
105
|
throw err;
|
|
123
106
|
});
|
|
124
|
-
}
|
|
107
|
+
}
|
|
125
108
|
// Run the Verification CLI process
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
109
|
+
runProviderVerification() {
|
|
110
|
+
return (server) => {
|
|
111
|
+
const opts = {
|
|
112
|
+
...(0, lodash_1.omit)(this.config, 'handlers'),
|
|
113
|
+
...{
|
|
114
|
+
providerBaseUrl: `http://localhost:${server.address().port}`,
|
|
115
|
+
},
|
|
116
|
+
};
|
|
132
117
|
return pact_core_1.default.verifyPacts(opts);
|
|
133
118
|
};
|
|
134
|
-
}
|
|
119
|
+
}
|
|
135
120
|
// Get the API handler for the verification CLI process to invoke on POST /*
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
var message = req.body;
|
|
121
|
+
setupVerificationHandler() {
|
|
122
|
+
return (req, res) => {
|
|
123
|
+
const message = req.body;
|
|
140
124
|
// Invoke the handler, and return the JSON response body
|
|
141
125
|
// wrapped in a Message
|
|
142
|
-
|
|
143
|
-
.then(
|
|
144
|
-
.then(
|
|
145
|
-
.then(
|
|
126
|
+
this.setupStates(message)
|
|
127
|
+
.then(() => this.findHandler(message))
|
|
128
|
+
.then((handler) => handler(message))
|
|
129
|
+
.then((messageFromHandler) => {
|
|
146
130
|
if (hasMetadata(messageFromHandler)) {
|
|
147
|
-
|
|
131
|
+
const metadata = (0, js_base64_1.encode)(JSON.stringify(messageFromHandler.__pactMessageMetadata));
|
|
148
132
|
res.header('Pact-Message-Metadata', metadata);
|
|
149
133
|
res.header('PACT_MESSAGE_METADATA', metadata);
|
|
150
134
|
return res.json(messageFromHandler.message);
|
|
151
135
|
}
|
|
152
136
|
return res.json(messageFromHandler);
|
|
153
137
|
})
|
|
154
|
-
.catch(
|
|
138
|
+
.catch((e) => res.status(500).send(e));
|
|
155
139
|
};
|
|
156
|
-
}
|
|
140
|
+
}
|
|
157
141
|
// Get the Express app that will run on the HTTP Proxy
|
|
158
|
-
|
|
159
|
-
|
|
142
|
+
setupProxyApplication() {
|
|
143
|
+
const app = (0, express_1.default)();
|
|
160
144
|
app.use(body_parser_1.default.json());
|
|
161
145
|
app.use(body_parser_1.default.urlencoded({ extended: true }));
|
|
162
|
-
app.use(
|
|
146
|
+
app.use((_req, res, next) => {
|
|
163
147
|
// TODO: this seems to override the metadata for content-type
|
|
164
148
|
res.header('Content-Type', 'application/json; charset=utf-8');
|
|
165
149
|
next();
|
|
@@ -167,38 +151,37 @@ var MessageProviderPact = /** @class */ (function () {
|
|
|
167
151
|
// Proxy server will respond to Verifier process
|
|
168
152
|
app.all('/{*splat}', this.setupVerificationHandler());
|
|
169
153
|
return app;
|
|
170
|
-
}
|
|
154
|
+
}
|
|
171
155
|
// Lookup the handler based on the description, or get the default handler
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
var promises = [];
|
|
156
|
+
setupStates(message) {
|
|
157
|
+
const promises = [];
|
|
175
158
|
if (message.providerStates) {
|
|
176
|
-
message.providerStates.forEach(
|
|
177
|
-
|
|
178
|
-
?
|
|
159
|
+
message.providerStates.forEach((state) => {
|
|
160
|
+
const handler = this.config.stateHandlers
|
|
161
|
+
? this.config.stateHandlers[state.name]
|
|
179
162
|
: null;
|
|
180
163
|
if (handler) {
|
|
181
164
|
promises.push(handler(state.name, state.params));
|
|
182
165
|
}
|
|
183
166
|
else {
|
|
184
|
-
logger_1.default.warn(
|
|
167
|
+
logger_1.default.warn(`no state handler found for "${state.name}", ignoring`);
|
|
185
168
|
}
|
|
186
169
|
});
|
|
187
170
|
}
|
|
188
171
|
return Promise.all(promises);
|
|
189
|
-
}
|
|
172
|
+
}
|
|
190
173
|
// Lookup the handler based on the description, or get the default handler
|
|
191
|
-
|
|
192
|
-
|
|
174
|
+
findHandler(message) {
|
|
175
|
+
const handler = this.config.messageProviders
|
|
193
176
|
? this.config.messageProviders[message.description || '']
|
|
194
177
|
: undefined;
|
|
195
178
|
if (!handler) {
|
|
196
|
-
logger_1.default.error(
|
|
197
|
-
return Promise.reject(new Error(
|
|
179
|
+
logger_1.default.error(`no handler found for message ${message.description}`);
|
|
180
|
+
return Promise.reject(new Error(`No handler found for message "${message.description}".
|
|
181
|
+
Check your "handlers" configuration`));
|
|
198
182
|
}
|
|
199
183
|
return Promise.resolve(handler);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
}());
|
|
184
|
+
}
|
|
185
|
+
}
|
|
203
186
|
exports.MessageProviderPact = MessageProviderPact;
|
|
204
187
|
//# sourceMappingURL=messageProviderPact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageProviderPact.js","sourceRoot":"","sources":["../../src/messageProviderPact.ts"],"names":[],"mappings":";AAAA;;GAEG
|
|
1
|
+
{"version":3,"file":"messageProviderPact.js","sourceRoot":"","sources":["../../src/messageProviderPact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,190 +1,163 @@
|
|
|
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
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
38
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var expect = chai.expect;
|
|
48
|
-
describe('MessageProvider', function () {
|
|
49
|
-
var provider;
|
|
50
|
-
var successfulRequest = 'successfulRequest';
|
|
51
|
-
var unsuccessfulRequest = 'unsuccessfulRequest';
|
|
52
|
-
var successfulMessage = {
|
|
6
|
+
const node_http_1 = __importDefault(require("node:http"));
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const messageProviderPact_1 = require("./messageProviderPact");
|
|
9
|
+
describe('MessageProvider', () => {
|
|
10
|
+
let provider;
|
|
11
|
+
const successfulRequest = 'successfulRequest';
|
|
12
|
+
const unsuccessfulRequest = 'unsuccessfulRequest';
|
|
13
|
+
const successfulMessage = {
|
|
53
14
|
contents: { foo: 'bar' },
|
|
54
15
|
description: successfulRequest,
|
|
55
16
|
providerStates: [{ name: 'some state' }],
|
|
56
17
|
};
|
|
57
|
-
|
|
18
|
+
const unsuccessfulMessage = {
|
|
58
19
|
contents: { foo: 'bar' },
|
|
59
20
|
description: unsuccessfulRequest,
|
|
60
21
|
providerStates: [{ name: 'some state not found' }],
|
|
61
22
|
};
|
|
62
|
-
|
|
23
|
+
const nonExistentMessage = {
|
|
63
24
|
contents: { foo: 'bar' },
|
|
64
25
|
description: 'does not exist',
|
|
65
26
|
providerStates: [{ name: 'some state not found' }],
|
|
66
27
|
};
|
|
67
|
-
beforeEach(
|
|
28
|
+
beforeEach(() => {
|
|
68
29
|
provider = new messageProviderPact_1.MessageProviderPact({
|
|
69
30
|
logLevel: 'error',
|
|
70
31
|
messageProviders: {
|
|
71
|
-
successfulRequest:
|
|
72
|
-
unsuccessfulRequest:
|
|
32
|
+
successfulRequest: () => Promise.resolve('yay'),
|
|
33
|
+
unsuccessfulRequest: () => Promise.reject(new Error('nay')),
|
|
73
34
|
},
|
|
74
35
|
provider: 'myprovider',
|
|
75
36
|
stateHandlers: {
|
|
76
|
-
'some state':
|
|
77
|
-
'some state with params':
|
|
78
|
-
return Promise.resolve("name: ".concat(name, ", params: ").concat(JSON.stringify(params)));
|
|
79
|
-
},
|
|
37
|
+
'some state': () => Promise.resolve('yay'),
|
|
38
|
+
'some state with params': (name, params) => Promise.resolve(`name: ${name}, params: ${JSON.stringify(params)}`),
|
|
80
39
|
},
|
|
81
40
|
});
|
|
82
41
|
});
|
|
83
|
-
describe('#constructor',
|
|
84
|
-
it('creates a Provider when all mandatory parameters are provided',
|
|
85
|
-
expect(provider).
|
|
86
|
-
expect(provider).
|
|
42
|
+
describe('#constructor', () => {
|
|
43
|
+
it('creates a Provider when all mandatory parameters are provided', () => {
|
|
44
|
+
expect(provider).toBeTypeOf('object');
|
|
45
|
+
expect(typeof provider.verify).toBe('function');
|
|
87
46
|
});
|
|
88
|
-
it('creates a Provider with default log level if not specified',
|
|
47
|
+
it('creates a Provider with default log level if not specified', () => {
|
|
89
48
|
provider = new messageProviderPact_1.MessageProviderPact({
|
|
90
49
|
messageProviders: {},
|
|
91
50
|
provider: 'myprovider',
|
|
92
51
|
});
|
|
93
|
-
expect(provider).
|
|
94
|
-
expect(provider).
|
|
52
|
+
expect(provider).toBeTypeOf('object');
|
|
53
|
+
expect(typeof provider.verify).toBe('function');
|
|
95
54
|
});
|
|
96
55
|
});
|
|
97
|
-
describe('#setupVerificationHandler',
|
|
98
|
-
describe('when their is a valid setup',
|
|
99
|
-
it('creates a valid express handler',
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
56
|
+
describe('#setupVerificationHandler', () => {
|
|
57
|
+
describe('when their is a valid setup', () => {
|
|
58
|
+
it('creates a valid express handler', () => {
|
|
59
|
+
return new Promise((resolve) => {
|
|
60
|
+
const setupVerificationHandler =
|
|
61
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
62
|
+
provider.setupVerificationHandler.bind(provider)();
|
|
63
|
+
const req = { body: successfulMessage };
|
|
64
|
+
const res = {
|
|
65
|
+
json: () => resolve(),
|
|
66
|
+
};
|
|
67
|
+
setupVerificationHandler(req, res);
|
|
68
|
+
});
|
|
106
69
|
});
|
|
107
70
|
});
|
|
108
|
-
describe('when their is an invalid setup',
|
|
109
|
-
it('creates a valid express handler that rejects the message',
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
71
|
+
describe('when their is an invalid setup', () => {
|
|
72
|
+
it('creates a valid express handler that rejects the message', () => {
|
|
73
|
+
return new Promise((resolve) => {
|
|
74
|
+
const setupVerificationHandler =
|
|
75
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
76
|
+
provider.setupVerificationHandler.bind(provider)();
|
|
77
|
+
const req = { body: nonExistentMessage };
|
|
78
|
+
const res = {
|
|
79
|
+
status: (status) => {
|
|
80
|
+
expect(status).toBe(500);
|
|
81
|
+
return {
|
|
82
|
+
send: () => resolve(),
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
setupVerificationHandler(req, res);
|
|
87
|
+
});
|
|
121
88
|
});
|
|
122
89
|
});
|
|
123
90
|
});
|
|
124
|
-
describe('#findHandler',
|
|
125
|
-
describe('when given a handler that exists',
|
|
126
|
-
it('returns a Handler object',
|
|
127
|
-
|
|
128
|
-
|
|
91
|
+
describe('#findHandler', () => {
|
|
92
|
+
describe('when given a handler that exists', () => {
|
|
93
|
+
it('returns a Handler object', async () => {
|
|
94
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
95
|
+
const findHandler = provider.findHandler.bind(provider);
|
|
96
|
+
await expect(findHandler(successfulMessage)).resolves.toBeTypeOf('function');
|
|
129
97
|
});
|
|
130
98
|
});
|
|
131
|
-
describe('when given a handler that does not exist',
|
|
132
|
-
it('returns a failed promise',
|
|
133
|
-
|
|
134
|
-
|
|
99
|
+
describe('when given a handler that does not exist', () => {
|
|
100
|
+
it('returns a failed promise', async () => {
|
|
101
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
102
|
+
const findHandler = provider.findHandler.bind(provider);
|
|
103
|
+
await expect(findHandler('doesnotexist')).rejects.toBeDefined();
|
|
135
104
|
});
|
|
136
105
|
});
|
|
137
106
|
});
|
|
138
|
-
describe('#setupStates',
|
|
139
|
-
describe('when given a handler that exists',
|
|
140
|
-
it('returns values of all resolved handlers',
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
]);
|
|
107
|
+
describe('#setupStates', () => {
|
|
108
|
+
describe('when given a handler that exists', () => {
|
|
109
|
+
it('returns values of all resolved handlers', async () => {
|
|
110
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
111
|
+
const setupStates = provider.setupStates.bind(provider);
|
|
112
|
+
await expect(setupStates(successfulMessage)).resolves.toEqual(['yay']);
|
|
145
113
|
});
|
|
146
|
-
it('passes params to the handler',
|
|
147
|
-
|
|
148
|
-
|
|
114
|
+
it('passes params to the handler', async () => {
|
|
115
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
116
|
+
const setupStates = provider.setupStates.bind(provider);
|
|
117
|
+
await expect(setupStates({
|
|
149
118
|
providerStates: [
|
|
150
119
|
{ name: 'some state with params', params: { foo: 'bar' } },
|
|
151
120
|
],
|
|
152
|
-
})).
|
|
121
|
+
})).resolves.toEqual([
|
|
153
122
|
'name: some state with params, params: {"foo":"bar"}',
|
|
154
123
|
]);
|
|
155
124
|
});
|
|
156
125
|
});
|
|
157
|
-
describe('when given a state that does not have a handler',
|
|
158
|
-
it('returns an empty promise',
|
|
126
|
+
describe('when given a state that does not have a handler', () => {
|
|
127
|
+
it('returns an empty promise', async () => {
|
|
159
128
|
provider = new messageProviderPact_1.MessageProviderPact({
|
|
160
129
|
messageProviders: {},
|
|
161
130
|
provider: 'myprovider',
|
|
162
131
|
});
|
|
163
|
-
|
|
164
|
-
|
|
132
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
133
|
+
const findStateHandler = provider.setupStates.bind(provider);
|
|
134
|
+
await expect(findStateHandler(unsuccessfulMessage)).resolves.toEqual([]);
|
|
165
135
|
});
|
|
166
136
|
});
|
|
167
137
|
});
|
|
168
|
-
describe('#waitForServerReady',
|
|
169
|
-
describe('when the http server starts up',
|
|
170
|
-
it('returns a resolved promise',
|
|
171
|
-
|
|
172
|
-
|
|
138
|
+
describe('#waitForServerReady', () => {
|
|
139
|
+
describe('when the http server starts up', () => {
|
|
140
|
+
it('returns a resolved promise', async () => {
|
|
141
|
+
const server = node_http_1.default.createServer(() => { }).listen();
|
|
142
|
+
await (0, messageProviderPact_1.waitForServerReady)(server);
|
|
143
|
+
server.close();
|
|
173
144
|
});
|
|
174
145
|
});
|
|
175
146
|
});
|
|
176
|
-
describe('#setupProxyServer',
|
|
177
|
-
describe('when the http server starts up',
|
|
178
|
-
it('returns a resolved promise',
|
|
179
|
-
|
|
180
|
-
expect((0, messageProviderPact_1.setupProxyServer)(app)).
|
|
147
|
+
describe('#setupProxyServer', () => {
|
|
148
|
+
describe('when the http server starts up', () => {
|
|
149
|
+
it('returns a resolved promise', () => {
|
|
150
|
+
const app = (0, express_1.default)();
|
|
151
|
+
expect((0, messageProviderPact_1.setupProxyServer)(app)).toBeInstanceOf(node_http_1.default.Server);
|
|
181
152
|
});
|
|
182
153
|
});
|
|
183
154
|
});
|
|
184
|
-
describe('#setupProxyApplication',
|
|
185
|
-
it('returns a valid express app',
|
|
186
|
-
|
|
187
|
-
|
|
155
|
+
describe('#setupProxyApplication', () => {
|
|
156
|
+
it('returns a valid express app', () => {
|
|
157
|
+
const setupProxyApplication =
|
|
158
|
+
// biome-ignore lint/suspicious/noExplicitAny: accessing private method for test coverage
|
|
159
|
+
provider.setupProxyApplication.bind(provider);
|
|
160
|
+
expect(setupProxyApplication().listen).toBeTypeOf('function');
|
|
188
161
|
});
|
|
189
162
|
});
|
|
190
163
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageProviderPact.spec.js","sourceRoot":"","sources":["../../src/messageProviderPact.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"messageProviderPact.spec.js","sourceRoot":"","sources":["../../src/messageProviderPact.spec.ts"],"names":[],"mappings":"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"}
|