@pact-foundation/pact 10.0.0-beta.40 → 10.0.0-beta.44

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 CHANGED
@@ -2,6 +2,47 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [10.0.0-beta.44](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.43...v10.0.0-beta.44) (2021-07-22)
6
+
7
+
8
+ ### Fixes and Improvements
9
+
10
+ * consumerVersionTags were overwritten with empty array ([#714](https://github.com/pact-foundation/pact-js/issues/714)) ([838d1cb](https://github.com/pact-foundation/pact-js/commit/838d1cbc8730592518abff16733a9a703437abb7))
11
+
12
+ ## [10.0.0-beta.43](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.42...v10.0.0-beta.43) (2021-07-18)
13
+
14
+
15
+ ### Fixes and Improvements
16
+
17
+ * return correct data type in fromProviderState ([#710](https://github.com/pact-foundation/pact-js/issues/710)) ([ec9192f](https://github.com/pact-foundation/pact-js/commit/ec9192fb44986b001634b8c44c877a8e3dd29c64)), closes [#633](https://github.com/pact-foundation/pact-js/issues/633)
18
+
19
+ ## [10.0.0-beta.42](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.41...v10.0.0-beta.42) (2021-06-29)
20
+
21
+
22
+ ### Features
23
+
24
+ * reset consumer test state to enable re-use of PactV3 class ([0134ea8](https://github.com/pact-foundation/pact-js/commit/0134ea8252b49a1639fdd78be4fe16283e1a7d70))
25
+
26
+ ## [10.0.0-beta.41](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.40...v10.0.0-beta.41) (2021-06-26)
27
+
28
+
29
+ ### ⚠ BREAKING CHANGES
30
+
31
+ * the signature of state handlers has been updated to
32
+ accept either a single function with parameters, or an object that
33
+ can specify optional teardown and setup functions that run on the
34
+ different state phases.
35
+ * callbackTimeout is now timeout
36
+
37
+ ### Features
38
+
39
+ * support promises in filters + state handlers ([456567c](https://github.com/pact-foundation/pact-js/commit/456567c83a5f155381eebb7dd3f6b60d3bc0060b))
40
+
41
+
42
+ ### Fixes and Improvements
43
+
44
+ * Make request tracer log in debug instead of trace ([24742e4](https://github.com/pact-foundation/pact-js/commit/24742e4c3d314de346e7fe430da2078cb475d7b1))
45
+
5
46
  ## [10.0.0-beta.40](https://github.com/pact-foundation/pact-js/compare/v10.0.0-beta.39...v10.0.0-beta.40) (2021-06-24)
6
47
 
7
48
 
package/README.md CHANGED
@@ -64,6 +64,7 @@ Read [Getting started with Pact] for more information for beginners.
64
64
  - [Match based on type](#match-based-on-type)
65
65
  - [Match based on arrays](#match-based-on-arrays)
66
66
  - [Match by regular expression](#match-by-regular-expression)
67
+ - [A note about typescript](#a-note-about-typescript)
67
68
  - [GraphQL API](#graphql-api)
68
69
  - [Tutorial (60 minutes)](#tutorial-60-minutes)
69
70
  - [Examples](#examples)
@@ -325,7 +326,7 @@ new Verifier(opts).verifyProvider().then(function () {
325
326
  | `pactUrls` | false | array | Array of local pact file paths or HTTP-based URLs. Required if _not_ using a Pact Broker. |
326
327
  | `providerStatesSetupUrl` | false | string | Deprecated (use URL to send PUT requests to setup a given provider state |
327
328
  | `stateHandlers` | false | object | Map of "state" to a function that sets up a given provider state. See docs below for more information |
328
- | `requestFilter` | false | function | Function that may be used to alter the incoming request or outgoing response from the verification process. See below for use. |
329
+ | `requestFilter` | false | function ([Express middleware](https://expressjs.com/en/guide/using-middleware.html)) | Function that may be used to alter the incoming request or outgoing response from the verification process. See below for use. |
329
330
  | `beforeEach` | false | function | Function to execute prior to each interaction being validated |
330
331
  | `afterEach` | false | function | Function to execute after each interaction has been validated |
331
332
  | `pactBrokerUsername` | false | string | Username for Pact Broker basic authentication |
@@ -1096,21 +1097,15 @@ Then when the provider is verified, the provider state callback can return a map
1096
1097
  For example:
1097
1098
 
1098
1099
  ```js
1099
- stateHandlers: {
1100
- "Account Test001 exists": (setup, params) => {
1101
- if (setup) {
1102
- const account = new Account(0, 0, "Test001", params.accountRef, new AccountNumber(0), Date.now(), Date.now())
1103
- const persistedAccount = accountRepository.save(account)
1104
- return { accountNumber: persistedAccount.accountNumber.id }
1105
- } else {
1106
- return null
1107
- }
1108
- }
1109
- },
1100
+ stateHandlers: {
1101
+ "Account Test001 exists": (params) => {
1102
+ const account = new Account(0, 0, "Test001", params.accountRef, new AccountNumber(0), Date.now(), Date.now())
1103
+ const persistedAccount = accountRepository.save(account)
1104
+ return { accountNumber: persistedAccount.accountNumber.id }
1105
+ }
1106
+ },
1110
1107
  ```
1111
1108
 
1112
- **NOTE:** Async callbacks and returning promises from the provider state callbacks is not currently supported.
1113
-
1114
1109
  ### Using Pact with XML
1115
1110
 
1116
1111
  You can write both consumer and provider verification tests with XML requests or responses. For an example, see [examples/v3/todo-consumer/test/consumer.spec.js](https://github.com/pact-foundation/pact-js/blob/feat/v3.0.0/examples/v3/todo-consumer/test/consumer.spec.js).
@@ -1173,7 +1168,7 @@ The `VerifierV3` class can verify your provider in a similar way to the existing
1173
1168
  | `callbackTimeout` | false | number | Timeout in milliseconds for request filters and provider state handlers to execute within |
1174
1169
  | `publishVerificationResult` | false | boolean | Publish verification result to Broker (_NOTE_: you should only enable this during CI builds) |
1175
1170
  | `providerVersion` | false | string | Provider version, required to publish verification result to Broker. Optional otherwise. |
1176
- | `requestFilter ` | false | RequestHandler | |
1171
+ | `requestFilter` | false | function ([Express middleware](https://expressjs.com/en/guide/using-middleware.html)) | |
1177
1172
  | `stateHandlers` | false | object | Map of "state" to a function that sets up a given provider state. See docs [below](#provider-state-callbacks) for more information |
1178
1173
  | `consumerVersionTags` | false | string\|array | Retrieve the latest pacts with given tag(s) |
1179
1174
  | `providerVersionTags` | false | string\|array | Tag(s) to apply to the provider application |
@@ -1186,57 +1181,64 @@ The `VerifierV3` class can verify your provider in a similar way to the existing
1186
1181
 
1187
1182
  #### Request Filters
1188
1183
 
1189
- Request filters now take a request object as a parameter, and need to return the mutated one.
1184
+ Request filters are simple [Express middleware functions](https://expressjs.com/en/guide/using-middleware.html):
1190
1185
 
1191
1186
  ```javascript
1192
- requestFilter: req => {
1187
+ requestFilter: (req, res, next) => {
1193
1188
  req.headers["MY_SPECIAL_HEADER"] = "my special value"
1194
1189
 
1195
1190
  // e.g. ADD Bearer token
1196
1191
  req.headers["authorization"] = `Bearer ${token}`
1197
1192
 
1198
- // Need to return the request back again
1199
- return req
1193
+ // Need to call the next middleware in the chain
1194
+ next()
1200
1195
  },
1201
1196
  ```
1202
1197
 
1203
1198
  #### Provider state callbacks
1204
1199
 
1205
- Provider state callbacks have been updated to support parameters and return values. The first parameter is a boolean indicating whether it is a setup call
1206
- (run before the verification) or a tear down call (run afterwards). The second optional parameter is a key-value map of any parameters defined in the
1207
- pact file. Provider state callbacks can also return a map of key-value values. These are used with provider-state injected values (see the section on that above).
1200
+ Provider state callbacks have been updated to support parameters and return values.
1201
+
1202
+ Simple callbacks run before the verification and receive optional parameters containing any key-value parameters defined in the pact file.
1203
+
1204
+ The second form of callback accepts a `setup` and `teardown` function that execute on the lifecycle of the state setup. `setup` runs prior to the test, and `teardown` runs after the actual request has been sent to the provider.
1205
+
1206
+ Provider state callbacks can also return a map of key-value values. These are used with provider-state injected values (see the section on that above).
1208
1207
 
1209
1208
  ```javascript
1210
1209
  stateHandlers: {
1211
- "Has no animals": setup => {
1212
- if (setup) {
1213
- animalRepository.clear()
1214
- return { description: `Animals removed to the db` }
1210
+ // Simple state handler, runs before the verification
1211
+ "Has no animals": () => {
1212
+ return animalRepository.clear()
1213
+ },
1214
+ // Runs only on setup phase (no teardown)
1215
+ "Has some animals": {
1216
+ setup: () => {
1217
+ return importData()
1215
1218
  }
1216
1219
  },
1217
- "Has some animals": setup => {
1218
- if (setup) {
1219
- importData()
1220
- return {
1221
- description: `Animals added to the db`,
1222
- count: animalRepository.count(),
1223
- }
1220
+ // Runs only on teardown phase (no setup)
1221
+ "Has a broken dependency": {
1222
+ setup: () => {
1223
+ // make some dependency fail...
1224
+ return Promise.resolve()
1225
+ },
1226
+ teardown: () => {
1227
+ // fix the broken dependency!
1228
+ return Promise.resolve()
1224
1229
  }
1225
1230
  },
1226
- "Has an animal with ID": (setup, parameters) => {
1227
- if (setup) {
1228
- importData()
1229
- animalRepository.first().id = parameters.id
1230
- return {
1231
- description: `Animal with ID ${parameters.id} added to the db`,
1232
- id: parameters.id,
1233
- }
1231
+ // Return provider specific IDs
1232
+ "Has an animal with ID": async (parameters) => {
1233
+ await importData()
1234
+ animalRepository.first().id = parameters.id
1235
+ return {
1236
+ description: `Animal with ID ${parameters.id} added to the db`,
1237
+ id: parameters.id,
1234
1238
  }
1235
1239
  },
1236
1240
  ```
1237
1241
 
1238
- **NOTE:** Async callbacks and returning promises from the provider state callbacks is not currently supported.
1239
-
1240
1242
  ### Debugging issues with Pact-JS V3
1241
1243
 
1242
1244
  You can change the log levels using the `LOG_LEVEL` environment variable.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pact-foundation/pact",
3
- "version": "10.0.0-beta.40",
3
+ "version": "10.0.0-beta.44",
4
4
  "description": "Pact for all things Javascript",
5
5
  "main": "./src/index.js",
6
6
  "types": "./src/index.d.ts",
@@ -49,7 +49,7 @@ exports.createProxy = function (config, stateSetupPath) {
49
49
  app.post(stateSetupPath, stateHandler_1.createProxyStateHandler(config));
50
50
  // Proxy server will respond to Verifier process
51
51
  app.all('/*', function (req, res) {
52
- logger_1.default.debug('Proxing', req.path);
52
+ logger_1.default.debug("Proxying " + req.path);
53
53
  proxy.web(req, res, {
54
54
  changeOrigin: config.changeOrigin === true,
55
55
  secure: config.validateSSL === true,
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA8B;AAC9B,0DAAmC;AACnC,4DAAqC;AACrC,yCAA6B;AAG7B,kEAA4C;AAC5C,4DAAsE;AACtE,iCAAgE;AAChE,mCAAqE;AAErE,qCAAqC;AACxB,QAAA,kBAAkB,GAAG,UAAC,MAAmB;IACpD,OAAA,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAC1B,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,EAAf,CAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACjB,OAAA,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAA9D,CAA8D,CAC/D,CAAC;IACJ,CAAC,CAAC;AALF,CAKE,CAAC;AAEL,uDAAuD;AAC1C,QAAA,WAAW,GAAG,UACzB,MAAoB,EACpB,cAAsB;IAEtB,IAAM,GAAG,GAAG,iBAAO,EAAE,CAAC;IACtB,IAAM,KAAK,GAAG,IAAI,oBAAS,EAAE,CAAC;IAE9B,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,0BAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,yBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAE/C,wBAAwB;IACxB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;QAC9D,gBAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,4BAAmB,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,6BAAoB,EAAE,CAAC,CAAC;KACjC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;QACtC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC/B;IAED,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,sCAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,gDAAgD;IAChD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,UAAC,GAAG,EAAE,GAAG;QACrB,gBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;YAClB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;YAC1C,MAAM,EAAE,MAAM,CAAC,WAAW,KAAK,IAAI;YACnC,MAAM,EAAE,MAAM,CAAC,eAAe;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACzC,CAAC,CAAC"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,oDAA8B;AAC9B,0DAAmC;AACnC,4DAAqC;AACrC,yCAA6B;AAG7B,kEAA4C;AAC5C,4DAAsE;AACtE,iCAAgE;AAChE,mCAAqE;AAErE,qCAAqC;AACxB,QAAA,kBAAkB,GAAG,UAAC,MAAmB;IACpD,OAAA,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;QAC1B,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,OAAA,OAAO,CAAC,MAAM,CAAC,EAAf,CAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACjB,OAAA,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAA9D,CAA8D,CAC/D,CAAC;IACJ,CAAC,CAAC;AALF,CAKE,CAAC;AAEL,uDAAuD;AAC1C,QAAA,WAAW,GAAG,UACzB,MAAoB,EACpB,cAAsB;IAEtB,IAAM,GAAG,GAAG,iBAAO,EAAE,CAAC;IACtB,IAAM,KAAK,GAAG,IAAI,oBAAS,EAAE,CAAC;IAE9B,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,qBAAU,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnE,0BAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,yBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAE/C,wBAAwB;IACxB,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;QAC9D,gBAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,GAAG,CAAC,GAAG,CAAC,4BAAmB,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,6BAAoB,EAAE,CAAC,CAAC;KACjC;IAED,8BAA8B;IAC9B,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;QACtC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;KAC/B;IAED,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,sCAAuB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,gDAAgD;IAChD,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,UAAC,GAAG,EAAE,GAAG;QACrB,gBAAM,CAAC,KAAK,CAAC,cAAY,GAAG,CAAC,IAAM,CAAC,CAAC;QAErC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;YAClB,YAAY,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;YAC1C,MAAM,EAAE,MAAM,CAAC,WAAW,KAAK,IAAI;YACnC,MAAM,EAAE,MAAM,CAAC,eAAe;SAC/B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACzC,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
- import { ProviderState, ProxyOptions } from '../types';
2
- export declare const setupStates: (descriptor: ProviderState, config: ProxyOptions) => Promise<unknown>;
1
+ import { ProxyOptions, ProviderState } from '../types';
2
+ import { JsonMap } from '../../../../common/jsonTypes';
3
+ export declare const setupStates: (state: ProviderState, config: ProxyOptions) => Promise<void | JsonMap>;
@@ -4,20 +4,43 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  var logger_1 = __importDefault(require("../../../../common/logger"));
7
- // Lookup the handler based on the description, or get the default handler
8
- exports.setupStates = function (descriptor, config) {
9
- var promises = [];
10
- if (descriptor.states) {
11
- descriptor.states.forEach(function (state) {
12
- var handler = config.stateHandlers ? config.stateHandlers[state] : null;
13
- if (handler) {
14
- promises.push(handler());
7
+ var isStateFuncWithSetup = function (fn) {
8
+ return fn.setup !== undefined ||
9
+ fn.teardown !== undefined;
10
+ };
11
+ // Transform a regular state function to one with the setup/teardown functions
12
+ var transformStateFunc = function (fn) {
13
+ return isStateFuncWithSetup(fn) ? fn : { setup: fn };
14
+ };
15
+ // Lookup the handler based on the description
16
+ exports.setupStates = function (state, config) {
17
+ logger_1.default.debug({ state: state }, 'setting up state');
18
+ var handler = config.stateHandlers
19
+ ? config.stateHandlers[state.state]
20
+ : null;
21
+ if (!handler) {
22
+ if (state.action === 'setup') {
23
+ logger_1.default.warn("no state handler found for state: \"" + state.state + "\"");
24
+ }
25
+ return Promise.resolve();
26
+ }
27
+ var stateFn = transformStateFunc(handler);
28
+ switch (state.action) {
29
+ case 'setup':
30
+ if (stateFn.setup) {
31
+ logger_1.default.debug("setting up state '" + state.state + "'");
32
+ return stateFn.setup(state.params);
15
33
  }
16
- else {
17
- logger_1.default.warn("No state handler found for \"" + state + "\", ignoring");
34
+ break;
35
+ case 'teardown':
36
+ if (stateFn.teardown) {
37
+ logger_1.default.debug("tearing down state '" + state.state + "'");
38
+ return stateFn.teardown(state.params);
18
39
  }
19
- });
40
+ break;
41
+ default:
42
+ logger_1.default.debug("unknown state action '" + state.action + "' received, ignoring");
20
43
  }
21
- return Promise.all(promises);
44
+ return Promise.resolve();
22
45
  };
23
46
  //# sourceMappingURL=setupStates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupStates.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/setupStates.ts"],"names":[],"mappings":";;;;;AAAA,qEAA+C;AAG/C,0EAA0E;AAC7D,QAAA,WAAW,GAAG,UACzB,UAAyB,EACzB,MAAoB;IAEpB,IAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,IAAI,UAAU,CAAC,MAAM,EAAE;QACrB,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;YAC9B,IAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAE1E,IAAI,OAAO,EAAE;gBACX,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;aAC1B;iBAAM;gBACL,gBAAM,CAAC,IAAI,CAAC,kCAA+B,KAAK,iBAAa,CAAC,CAAC;aAChE;QACH,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"setupStates.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/setupStates.ts"],"names":[],"mappings":";;;;;AAAA,qEAA+C;AAU/C,IAAM,oBAAoB,GAAG,UAC3B,EAAkC;IAElC,OAAC,EAAyB,CAAC,KAAK,KAAK,SAAS;QAC7C,EAAyB,CAAC,QAAQ,KAAK,SAAS;AADjD,CACiD,CAAC;AAEpD,8EAA8E;AAC9E,IAAM,kBAAkB,GAAG,UAAC,EAAgB;IAC1C,OAAA,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;AAA7C,CAA6C,CAAC;AAEhD,8CAA8C;AACjC,QAAA,WAAW,GAAG,UACzB,KAAoB,EACpB,MAAoB;IAEpB,gBAAM,CAAC,KAAK,CAAC,EAAE,KAAK,OAAA,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAE5C,IAAM,OAAO,GAAG,MAAM,CAAC,aAAa;QAClC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,CAAC,OAAO,EAAE;QACZ,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,EAAE;YAC5B,gBAAM,CAAC,IAAI,CAAC,yCAAsC,KAAK,CAAC,KAAK,OAAG,CAAC,CAAC;SACnE;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;KAC1B;IAED,IAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,KAAK,CAAC,MAAM,EAAE;QACpB,KAAK,OAAO;YACV,IAAI,OAAO,CAAC,KAAK,EAAE;gBACjB,gBAAM,CAAC,KAAK,CAAC,uBAAqB,KAAK,CAAC,KAAK,MAAG,CAAC,CAAC;gBAClD,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACpC;YACD,MAAM;QACR,KAAK,UAAU;YACb,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,gBAAM,CAAC,KAAK,CAAC,yBAAuB,KAAK,CAAC,KAAK,MAAG,CAAC,CAAC;gBACpD,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aACvC;YACD,MAAM;QACR;YACE,gBAAM,CAAC,KAAK,CAAC,2BAAyB,KAAK,CAAC,MAAM,yBAAsB,CAAC,CAAC;KAC7E;IAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC"}
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
14
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
15
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -47,9 +58,22 @@ var setupStates_1 = require("./setupStates");
47
58
  chai_1.default.use(chai_as_promised_1.default);
48
59
  var expect = chai_1.default.expect;
49
60
  describe('#setupStates', function () {
50
- var state = 'thing exists';
61
+ var state = {
62
+ state: 'thing exists',
63
+ action: 'setup',
64
+ params: {},
65
+ };
66
+ var state2 = {
67
+ state: 'another thing exists',
68
+ action: 'setup',
69
+ params: {
70
+ id: 1,
71
+ },
72
+ };
51
73
  var providerBaseUrl = 'http://not.exists';
52
74
  var executed;
75
+ var setup;
76
+ var teardown;
53
77
  var DEFAULT_OPTIONS = function () {
54
78
  var _a;
55
79
  return ({
@@ -58,9 +82,19 @@ describe('#setupStates', function () {
58
82
  next();
59
83
  },
60
84
  stateHandlers: (_a = {},
61
- _a[state] = function () {
85
+ _a[state.state] = function () {
62
86
  executed = true;
63
- return Promise.resolve('done');
87
+ return Promise.resolve({});
88
+ },
89
+ _a[state2.state] = {
90
+ setup: function (params) {
91
+ setup = true;
92
+ return Promise.resolve(params);
93
+ },
94
+ teardown: function (params) {
95
+ teardown = true;
96
+ return Promise.resolve(params);
97
+ },
64
98
  },
65
99
  _a),
66
100
  });
@@ -69,39 +103,82 @@ describe('#setupStates', function () {
69
103
  beforeEach(function () {
70
104
  opts = DEFAULT_OPTIONS();
71
105
  executed = false;
106
+ setup = false;
107
+ teardown = false;
72
108
  });
73
109
  describe('when there are provider states on the pact', function () {
74
110
  describe('and there are handlers associated with those states', function () {
75
- it('executes the handler and returns a set of Promises', function () { return __awaiter(void 0, void 0, void 0, function () {
76
- var res;
77
- return __generator(this, function (_a) {
78
- switch (_a.label) {
79
- case 0: return [4 /*yield*/, setupStates_1.setupStates({
80
- states: [state],
81
- }, opts)];
82
- case 1:
83
- res = _a.sent();
84
- expect(res).lengthOf(1);
85
- expect(executed).to.be.true;
86
- return [2 /*return*/];
87
- }
88
- });
89
- }); });
111
+ describe('that return provider state injected values', function () {
112
+ it('executes the handler and returns the data', function () { return __awaiter(void 0, void 0, void 0, function () {
113
+ var res;
114
+ var _a;
115
+ return __generator(this, function (_b) {
116
+ switch (_b.label) {
117
+ case 0:
118
+ opts.stateHandlers = (_a = {},
119
+ _a[state.state] = function () {
120
+ executed = true;
121
+ return Promise.resolve({ data: true });
122
+ },
123
+ _a);
124
+ return [4 /*yield*/, setupStates_1.setupStates(state, opts)];
125
+ case 1:
126
+ res = _b.sent();
127
+ expect(res).to.have.property('data', true);
128
+ expect(executed).to.be.true;
129
+ return [2 /*return*/];
130
+ }
131
+ });
132
+ }); });
133
+ });
134
+ describe('that do not return a value', function () {
135
+ it('executes the handler and returns an empty Promise', function () { return __awaiter(void 0, void 0, void 0, function () {
136
+ return __generator(this, function (_a) {
137
+ switch (_a.label) {
138
+ case 0: return [4 /*yield*/, setupStates_1.setupStates(state, opts)];
139
+ case 1:
140
+ _a.sent();
141
+ expect(executed).to.be.true;
142
+ return [2 /*return*/];
143
+ }
144
+ });
145
+ }); });
146
+ });
147
+ describe('that specify a setup and teardown function', function () {
148
+ it('executes the lifecycle specific handler and returns any provider state injected values', function () { return __awaiter(void 0, void 0, void 0, function () {
149
+ var res, res2;
150
+ return __generator(this, function (_a) {
151
+ switch (_a.label) {
152
+ case 0: return [4 /*yield*/, setupStates_1.setupStates(state2, opts)];
153
+ case 1:
154
+ res = _a.sent();
155
+ expect(res).to.eq(state2.params);
156
+ expect(setup).to.be.true;
157
+ expect(teardown).to.be.false;
158
+ setup = false;
159
+ return [4 /*yield*/, setupStates_1.setupStates(__assign(__assign({}, state2), { action: 'teardown' }), opts)];
160
+ case 2:
161
+ res2 = _a.sent();
162
+ expect(res2).to.eq(state2.params);
163
+ expect(teardown).to.be.true;
164
+ expect(setup).to.be.false;
165
+ return [2 /*return*/];
166
+ }
167
+ });
168
+ }); });
169
+ });
90
170
  });
91
171
  describe('and there are no handlers associated with those states', function () {
92
- it('executes the handler and returns an empty Promise', function () { return __awaiter(void 0, void 0, void 0, function () {
93
- var spy, res;
172
+ it('does not execute the handler and returns an empty Promise', function () { return __awaiter(void 0, void 0, void 0, function () {
173
+ var spy;
94
174
  return __generator(this, function (_a) {
95
175
  switch (_a.label) {
96
176
  case 0:
97
177
  spy = sinon_1.default.spy(logger_1.default, 'warn');
98
178
  delete opts.stateHandlers;
99
- return [4 /*yield*/, setupStates_1.setupStates({
100
- states: [state],
101
- }, opts)];
179
+ return [4 /*yield*/, setupStates_1.setupStates(state, opts)];
102
180
  case 1:
103
- res = _a.sent();
104
- expect(res).lengthOf(0);
181
+ _a.sent();
105
182
  expect(spy.callCount).to.eql(1);
106
183
  expect(executed).to.be.false;
107
184
  return [2 /*return*/];
@@ -110,19 +187,5 @@ describe('#setupStates', function () {
110
187
  }); });
111
188
  });
112
189
  });
113
- describe('when there are no provider states on the pact', function () {
114
- it('executes the handler and returns an empty Promise', function () { return __awaiter(void 0, void 0, void 0, function () {
115
- var res;
116
- return __generator(this, function (_a) {
117
- switch (_a.label) {
118
- case 0: return [4 /*yield*/, setupStates_1.setupStates({}, opts)];
119
- case 1:
120
- res = _a.sent();
121
- expect(res).lengthOf(0);
122
- return [2 /*return*/];
123
- }
124
- });
125
- }); });
126
- });
127
190
  });
128
191
  //# sourceMappingURL=setupStates.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setupStates.spec.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/setupStates.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,sEAA8C;AAC9C,gDAA0B;AAE1B,qEAA+C;AAG/C,6CAA4C;AAE5C,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AAEjB,IAAA,8BAAM,CAAU;AAExB,QAAQ,CAAC,cAAc,EAAE;IACvB,IAAM,KAAK,GAAG,cAAc,CAAC;IAC7B,IAAM,eAAe,GAAG,mBAAmB,CAAC;IAC5C,IAAI,QAAiB,CAAC;IAEtB,IAAM,eAAe,GAAG;;QAAoB,OAAA,CAAC;YAC3C,eAAe,iBAAA;YACf,aAAa,EAAE,UAAC,GAAG,EAAE,GAAG,EAAE,IAAI;gBAC5B,IAAI,EAAE,CAAC;YACT,CAAC;YACD,aAAa;gBACX,GAAC,KAAK,IAAG;oBACP,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;mBACF;SACF,CAAC;IAX0C,CAW1C,CAAC;IAEH,IAAI,IAAkB,CAAC;IAEvB,UAAU,CAAC;QACT,IAAI,GAAG,eAAe,EAAE,CAAC;QACzB,QAAQ,GAAG,KAAK,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4CAA4C,EAAE;QACrD,QAAQ,CAAC,qDAAqD,EAAE;YAC9D,EAAE,CAAC,oDAAoD,EAAE;;;;gCAC3C,qBAAM,yBAAW,CAC3B;gCACE,MAAM,EAAE,CAAC,KAAK,CAAC;6BAChB,EACD,IAAI,CACL,EAAA;;4BALK,GAAG,GAAG,SAKX;4BAED,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BACxB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;;;;iBAC7B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,wDAAwD,EAAE;YACjE,EAAE,CAAC,mDAAmD,EAAE;;;;;4BAChD,GAAG,GAAG,eAAK,CAAC,GAAG,CAAC,gBAAM,EAAE,MAAM,CAAC,CAAC;4BACtC,OAAO,IAAI,CAAC,aAAa,CAAC;4BACd,qBAAM,yBAAW,CAC3B;oCACE,MAAM,EAAE,CAAC,KAAK,CAAC;iCAChB,EACD,IAAI,CACL,EAAA;;4BALK,GAAG,GAAG,SAKX;4BAED,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BACxB,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAChC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;;;;iBAC9B,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+CAA+C,EAAE;QACxD,EAAE,CAAC,mDAAmD,EAAE;;;;4BAC1C,qBAAM,yBAAW,CAAC,EAAE,EAAE,IAAI,CAAC,EAAA;;wBAAjC,GAAG,GAAG,SAA2B;wBAEvC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;;;;aACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"setupStates.spec.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/setupStates.spec.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ var setupStates_1 = require("./setupStates");
4
4
  exports.createProxyStateHandler = function (config) { return function (req, res) {
5
5
  var message = req.body;
6
6
  return setupStates_1.setupStates(message, config)
7
- .then(function () { return res.sendStatus(200); })
7
+ .then(function (data) { return res.json(data); })
8
8
  .catch(function (e) { return res.status(500).send(e); });
9
9
  }; };
10
10
  //# sourceMappingURL=stateHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateHandler.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/stateHandler.ts"],"names":[],"mappings":";;AAGA,6CAA4C;AAE/B,QAAA,uBAAuB,GAAG,UAAC,MAAoB,IAAK,OAAA,UAC/D,GAAoB,EACpB,GAAqB;IAErB,IAAM,OAAO,GAAkB,GAAG,CAAC,IAAI,CAAC;IAExC,OAAO,yBAAW,CAAC,OAAO,EAAE,MAAM,CAAC;SAChC,IAAI,CAAC,cAAM,OAAA,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAnB,CAAmB,CAAC;SAC/B,KAAK,CAAC,UAAC,CAAC,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAvB,CAAuB,CAAC,CAAC;AAC3C,CAAC,EATgE,CAShE,CAAC"}
1
+ {"version":3,"file":"stateHandler.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/stateHandler.ts"],"names":[],"mappings":";;AAGA,6CAA4C;AAE/B,QAAA,uBAAuB,GAAG,UAAC,MAAoB,IAAK,OAAA,UAC/D,GAAoB,EACpB,GAAqB;IAErB,IAAM,OAAO,GAAkB,GAAG,CAAC,IAAI,CAAC;IAExC,OAAO,yBAAW,CAAC,OAAO,EAAE,MAAM,CAAC;SAChC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAd,CAAc,CAAC;SAC9B,KAAK,CAAC,UAAC,CAAC,IAAK,OAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAvB,CAAuB,CAAC,CAAC;AAC3C,CAAC,EATgE,CAShE,CAAC"}
@@ -1,4 +1,40 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
2
38
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
39
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
40
  };
@@ -20,29 +56,35 @@ var expect = chai_1.default.expect;
20
56
  describe('#createProxyStateHandler', function () {
21
57
  var res;
22
58
  var mockResponse = {
23
- sendStatus: function (status) {
24
- res = status;
25
- },
26
59
  status: function (status) {
27
60
  res = status;
28
61
  return {
29
62
  send: function () { },
30
63
  };
31
64
  },
65
+ json: function (data) { return data; },
32
66
  };
33
67
  context('when valid state handlers are provided', function () {
34
68
  beforeEach(function () {
35
- sinon_1.default.stub(setupStatesModule, 'setupStates').returns(Promise.resolve());
69
+ sinon_1.default.stub(setupStatesModule, 'setupStates').returns(Promise.resolve({}));
36
70
  });
37
71
  afterEach(function () {
38
72
  setupStatesModule.setupStates.restore();
39
73
  });
40
- it('returns a 200', function () {
41
- var h = stateHandler_1.createProxyStateHandler({});
42
- return expect(h({}, mockResponse)).to.eventually.be.fulfilled.then(function () {
43
- expect(res).to.eql(200);
74
+ it('returns a 200', function () { return __awaiter(void 0, void 0, void 0, function () {
75
+ var h, data;
76
+ return __generator(this, function (_a) {
77
+ switch (_a.label) {
78
+ case 0:
79
+ h = stateHandler_1.createProxyStateHandler({});
80
+ return [4 /*yield*/, h({}, mockResponse)];
81
+ case 1:
82
+ data = _a.sent();
83
+ expect(data).to.deep.eq({});
84
+ return [2 /*return*/];
85
+ }
44
86
  });
45
- });
87
+ }); });
46
88
  });
47
89
  context('when there is a problem with a state handler', function () {
48
90
  beforeEach(function () {
@@ -53,12 +95,20 @@ describe('#createProxyStateHandler', function () {
53
95
  afterEach(function () {
54
96
  setupStatesModule.setupStates.restore();
55
97
  });
56
- it('returns a 500', function () {
57
- var h = stateHandler_1.createProxyStateHandler({});
58
- return expect(h({}, mockResponse)).to.eventually.be.fulfilled.then(function () {
59
- expect(res).to.eql(500);
98
+ it('returns a 500', function () { return __awaiter(void 0, void 0, void 0, function () {
99
+ var h;
100
+ return __generator(this, function (_a) {
101
+ switch (_a.label) {
102
+ case 0:
103
+ h = stateHandler_1.createProxyStateHandler({});
104
+ return [4 /*yield*/, h({}, mockResponse)];
105
+ case 1:
106
+ _a.sent();
107
+ expect(res).to.eql(500);
108
+ return [2 /*return*/];
109
+ }
60
110
  });
61
- });
111
+ }); });
62
112
  });
63
113
  });
64
114
  //# sourceMappingURL=stateHandler.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stateHandler.spec.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/stateHandler.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAwB;AACxB,sEAA8C;AAC9C,gDAAwC;AAIxC,+CAAyD;AACzD,+DAAmD;AAGnD,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AAEjB,IAAA,8BAAM,CAAU;AAExB,QAAQ,CAAC,0BAA0B,EAAE;IACnC,IAAI,GAAQ,CAAC;IACb,IAAM,YAAY,GAAG;QACnB,UAAU,EAAE,UAAC,MAAc;YACzB,GAAG,GAAG,MAAM,CAAC;QACf,CAAC;QACD,MAAM,EAAE,UAAC,MAAc;YACrB,GAAG,GAAG,MAAM,CAAC;YACb,OAAO;gBACL,IAAI,EAAE,cAAO,CAAC;aACf,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,OAAO,CAAC,wCAAwC,EAAE;QAChD,UAAU,CAAC;YACT,eAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QACH,SAAS,CAAC;YACP,iBAAiB,CAAC,WAAwB,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,eAAe,EAAE;YAClB,IAAM,CAAC,GAAG,sCAAuB,CAAC,EAAkB,CAAC,CAAC;YAEtD,OAAO,MAAM,CACX,CAAC,CAAC,EAAqB,EAAE,YAAgC,CAAC,CAC3D,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,8CAA8C,EAAE;QACtD,UAAU,CAAC;YACT,eAAK;iBACF,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBACtC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,SAAS,CAAC;YACP,iBAAiB,CAAC,WAAwB,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,eAAe,EAAE;YAClB,IAAM,CAAC,GAAG,sCAAuB,CAAC,EAAkB,CAAC,CAAC;YAEtD,OAAO,MAAM,CACX,CAAC,CAAC,EAAqB,EAAE,YAAgC,CAAC,CAC3D,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;gBAChC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"stateHandler.spec.js","sourceRoot":"","sources":["../../../../../../src/dsl/verifier/proxy/stateHandler/stateHandler.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8CAAwB;AACxB,sEAA8C;AAC9C,gDAAwC;AAIxC,+CAAyD;AACzD,+DAAmD;AAGnD,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AAEjB,IAAA,8BAAM,CAAU;AAExB,QAAQ,CAAC,0BAA0B,EAAE;IACnC,IAAI,GAAQ,CAAC;IACb,IAAM,YAAY,GAAG;QACnB,MAAM,EAAE,UAAC,MAAc;YACrB,GAAG,GAAG,MAAM,CAAC;YACb,OAAO;gBACL,IAAI,EAAE,cAAO,CAAC;aACf,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,UAAC,IAAS,IAAK,OAAA,IAAI,EAAJ,CAAI;KAC1B,CAAC;IAEF,OAAO,CAAC,wCAAwC,EAAE;QAChD,UAAU,CAAC;YACT,eAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,SAAS,CAAC;YACP,iBAAiB,CAAC,WAAwB,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,eAAe,EAAE;;;;;wBACZ,CAAC,GAAG,sCAAuB,CAAC,EAAkB,CAAC,CAAC;wBACzC,qBAAM,CAAC,CAClB,EAAqB,EACrB,YAAgC,CACjC,EAAA;;wBAHK,IAAI,GAAG,SAGZ;wBAED,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;;;;aAC7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,8CAA8C,EAAE;QACtD,UAAU,CAAC;YACT,eAAK;iBACF,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBACtC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QACH,SAAS,CAAC;YACP,iBAAiB,CAAC,WAAwB,CAAC,OAAO,EAAE,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,eAAe,EAAE;;;;;wBACZ,CAAC,GAAG,sCAAuB,CAAC,EAAkB,CAAC,CAAC;wBACtD,qBAAM,CAAC,CAAC,EAAqB,EAAE,YAAgC,CAAC,EAAA;;wBAAhE,SAAgE,CAAC;wBAEjE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;;;aACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -35,7 +35,7 @@ exports.createResponseTracer = function () { return function (_, res, next) {
35
35
  chunks.push(Buffer.from(chunk));
36
36
  }
37
37
  var body = Buffer.concat(chunks).toString('utf8');
38
- logger_1.default.trace('outgoing response', removeEmptyResponseProperties(body, res));
38
+ logger_1.default.debug(removeEmptyResponseProperties(body, res), 'outgoing response');
39
39
  oldEnd.apply(res, [chunk]);
40
40
  };
41
41
  if (typeof next === 'function') {
@@ -43,7 +43,7 @@ exports.createResponseTracer = function () { return function (_, res, next) {
43
43
  }
44
44
  }; };
45
45
  exports.createRequestTracer = function () { return function (req, _, next) {
46
- logger_1.default.trace('incoming request', removeEmptyRequestProperties(req));
46
+ logger_1.default.debug(removeEmptyRequestProperties(req), 'incoming request');
47
47
  next();
48
48
  }; };
49
49
  //# sourceMappingURL=tracer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/tracer.ts"],"names":[],"mappings":";;;;;AACA,iCAA8D;AAE9D,kEAA4C;AAE5C,IAAM,6BAA6B,GAAG,UAAC,IAAY,EAAE,GAAqB;IACxE,OAAA,eAAM,CACJ;QACE,IAAI,MAAA;QACJ,OAAO,EAAE,eAAM,CACb,GAAG,CAAC,UAAU,EAAE,EAChB,UACE,GAAuD,EACvD,GAAG,EACH,KAAK;YAEL,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;YACjB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH;QACD,MAAM,EAAE,GAAG,CAAC,UAAU;KACvB,EACD,iBAAQ,CACT;AAlBD,CAkBC,CAAC;AAEJ,IAAM,4BAA4B,GAAG,UAAC,GAAoB;IACxD,OAAA,eAAM,CACJ;QACE,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,EACD,iBAAQ,CACT;AARD,CAQC,CAAC;AAES,QAAA,oBAAoB,GAAG,cAA8B,OAAA,UAChE,CAAC,EACD,GAAG,EACH,IAAI;IAEE,IAAA,yBAAyC,EAAxC,gBAAQ,EAAE,cAA8B,CAAC;IAChD,IAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,GAAG,CAAC,KAAK,GAAG,UAAC,KAAsC;QACjD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,GAAG,UAAC,KAAsC;QAC/C,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACjC;QACD,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,gBAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;QAC9B,IAAI,EAAE,CAAC;KACR;AACH,CAAC,EAxBiE,CAwBjE,CAAC;AAEW,QAAA,mBAAmB,GAAG,cAA8B,OAAA,UAC/D,GAAG,EACH,CAAC,EACD,IAAI;IAEJ,gBAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC;AACT,CAAC,EAPgE,CAOhE,CAAC"}
1
+ {"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../../../../src/dsl/verifier/proxy/tracer.ts"],"names":[],"mappings":";;;;;AACA,iCAA8D;AAE9D,kEAA4C;AAE5C,IAAM,6BAA6B,GAAG,UAAC,IAAY,EAAE,GAAqB;IACxE,OAAA,eAAM,CACJ;QACE,IAAI,MAAA;QACJ,OAAO,EAAE,eAAM,CACb,GAAG,CAAC,UAAU,EAAE,EAChB,UACE,GAAuD,EACvD,GAAG,EACH,KAAK;YAEL,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;YACjB,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH;QACD,MAAM,EAAE,GAAG,CAAC,UAAU;KACvB,EACD,iBAAQ,CACT;AAlBD,CAkBC,CAAC;AAEJ,IAAM,4BAA4B,GAAG,UAAC,GAAoB;IACxD,OAAA,eAAM,CACJ;QACE,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,EACD,iBAAQ,CACT;AARD,CAQC,CAAC;AAES,QAAA,oBAAoB,GAAG,cAA8B,OAAA,UAChE,CAAC,EACD,GAAG,EACH,IAAI;IAEE,IAAA,yBAAyC,EAAxC,gBAAQ,EAAE,cAA8B,CAAC;IAChD,IAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,GAAG,CAAC,KAAK,GAAG,UAAC,KAAsC;QACjD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,GAAG,CAAC,GAAG,GAAG,UAAC,KAAsC;QAC/C,IAAI,KAAK,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACjC;QACD,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACpD,gBAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC;IACF,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE;QAC9B,IAAI,EAAE,CAAC;KACR;AACH,CAAC,EAxBiE,CAwBjE,CAAC;AAEW,QAAA,mBAAmB,GAAG,cAA8B,OAAA,UAC/D,GAAG,EACH,CAAC,EACD,IAAI;IAEJ,gBAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC;AACT,CAAC,EAPgE,CAOhE,CAAC"}
@@ -1,16 +1,44 @@
1
1
  import express from 'express';
2
2
  import { LogLevel } from '../../options';
3
- export interface StateHandler {
4
- [name: string]: () => Promise<unknown>;
3
+ import { JsonMap, AnyJson } from '../../../common/jsonTypes';
4
+ export declare type Hook = () => Promise<unknown>;
5
+ /**
6
+ * State handlers map a state description to a function
7
+ * that can setup the provider state
8
+ */
9
+ export interface StateHandlers {
10
+ [name: string]: StateHandler;
5
11
  }
12
+ /**
13
+ * Incoming provider state request
14
+ */
6
15
  export interface ProviderState {
7
- states?: [string];
16
+ action: StateAction;
17
+ params: JsonMap;
18
+ state: string;
8
19
  }
9
- export declare type Hook = () => Promise<unknown>;
20
+ /**
21
+ * Specifies whether the state handler being setup or shutdown
22
+ */
23
+ export declare type StateAction = 'setup' | 'teardown';
24
+ /**
25
+ * Respond to the state setup event, optionally returning a map of provider
26
+ * values to dynamically inject into the incoming request to test
27
+ */
28
+ export declare type StateFunc = (parameters?: AnyJson) => Promise<JsonMap | void>;
29
+ /**
30
+ * Respond to the state setup event, with the ability to hook into the setup/teardown
31
+ * phase of the state
32
+ */
33
+ export declare type StateFuncWithSetup = {
34
+ setup?: StateFunc;
35
+ teardown?: StateFunc;
36
+ };
37
+ export declare type StateHandler = StateFuncWithSetup | StateFunc;
10
38
  export interface ProxyOptions {
11
39
  logLevel?: LogLevel;
12
40
  requestFilter?: express.RequestHandler;
13
- stateHandlers?: StateHandler;
41
+ stateHandlers?: StateHandlers;
14
42
  beforeEach?: Hook;
15
43
  afterEach?: Hook;
16
44
  validateSSL?: boolean;
@@ -50,7 +50,7 @@ describe('Verifier', function () {
50
50
  stateHandlers: (_a = {},
51
51
  _a[state] = function () {
52
52
  executed = true;
53
- return Promise.resolve('done');
53
+ return Promise.resolve();
54
54
  },
55
55
  _a),
56
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../../src/dsl/verifier/verifier.spec.ts"],"names":[],"mappings":"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"}
package/src/v3/pact.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import * as MatchersV3 from './matchers';
2
+ import { JsonMap } from '../common/jsonTypes';
2
3
  /**
3
4
  * Options for the mock server
4
5
  */
@@ -26,7 +27,7 @@ export interface PactV3Options {
26
27
  }
27
28
  export interface V3ProviderState {
28
29
  description: string;
29
- parameters?: unknown;
30
+ parameters?: JsonMap;
30
31
  }
31
32
  declare type TemplateHeaders = {
32
33
  [header: string]: string | MatchersV3.Matcher<string>;
@@ -54,7 +55,7 @@ export declare class PactV3 {
54
55
  private states;
55
56
  private pact;
56
57
  constructor(opts: PactV3Options);
57
- given(providerState: string, parameters?: unknown): PactV3;
58
+ given(providerState: string, parameters?: JsonMap): PactV3;
58
59
  uponReceiving(desc: string): PactV3;
59
60
  withRequest(req: V3Request): PactV3;
60
61
  withRequestBinaryFile(req: V3Request, contentType: string, file: string): PactV3;
@@ -63,5 +64,6 @@ export declare class PactV3 {
63
64
  withResponseBinaryFile(res: V3Response, contentType: string, file: string): PactV3;
64
65
  withResponseMultipartFileUpload(req: V3Response, contentType: string, file: string, part: string): PactV3;
65
66
  executeTest<T>(testFn: (mockServer: V3MockServer) => Promise<T>): Promise<T>;
67
+ private setup;
66
68
  }
67
69
  export {};
package/src/v3/pact.js CHANGED
@@ -68,7 +68,7 @@ var PactV3 = /** @class */ (function () {
68
68
  function PactV3(opts) {
69
69
  this.states = [];
70
70
  this.opts = opts;
71
- this.pact = new index_node_1.default.Pact(opts.consumer, opts.provider, package_json_1.version, ramda_1.omit(['consumer', 'provider', 'dir'], opts));
71
+ this.setup();
72
72
  }
73
73
  PactV3.prototype.given = function (providerState, parameters) {
74
74
  this.states.push({ description: providerState, parameters: parameters });
@@ -143,11 +143,18 @@ var PactV3 = /** @class */ (function () {
143
143
  })
144
144
  .finally(function () {
145
145
  _this.pact.shutdownTest(result);
146
+ _this.setup();
146
147
  });
147
148
  }
148
149
  this.pact.shutdownTest(result);
150
+ this.setup();
149
151
  return Promise.reject(result.testError);
150
152
  };
153
+ // reset the internal state
154
+ // (this.pact cannot be re-used between tests)
155
+ PactV3.prototype.setup = function () {
156
+ this.pact = new index_node_1.default.Pact(this.opts.consumer, this.opts.provider, package_json_1.version, ramda_1.omit(['consumer', 'provider', 'dir'], this.opts));
157
+ };
151
158
  return PactV3;
152
159
  }());
153
160
  exports.PactV3 = PactV3;
@@ -1 +1 @@
1
- {"version":3,"file":"pact.js","sourceRoot":"","sources":["../../../src/v3/pact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pact.js","sourceRoot":"","sources":["../../../src/v3/pact.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,5 @@
1
- import express from 'express';
2
- /**
3
- * Define needed state for given pacts
4
- */
5
- export declare type StateHandler = (setup: boolean, parameters: Record<string, unknown>) => void;
1
+ import { ProxyOptions, StateHandlers } from 'dsl/verifier/proxy/types';
2
+ import * as express from 'express';
6
3
  export interface VerifierV3Options {
7
4
  provider: string;
8
5
  logLevel: string;
@@ -13,15 +10,11 @@ export interface VerifierV3Options {
13
10
  pactBrokerUsername?: string;
14
11
  pactBrokerPassword?: string;
15
12
  pactBrokerToken?: string;
16
- /**
17
- * The timeout in milliseconds for request filters and provider state handlers
18
- * to execute within
19
- */
20
- callbackTimeout?: number;
13
+ timeout?: number;
21
14
  publishVerificationResult?: boolean;
22
15
  providerVersion?: string;
23
16
  requestFilter?: express.RequestHandler;
24
- stateHandlers?: Record<string, StateHandler>;
17
+ stateHandlers?: StateHandlers;
25
18
  consumerVersionTags?: string | string[];
26
19
  providerVersionTags?: string | string[];
27
20
  consumerVersionSelectors?: ConsumerVersionSelector[];
@@ -36,11 +29,17 @@ export interface ConsumerVersionSelector {
36
29
  latest?: boolean;
37
30
  all?: boolean;
38
31
  }
32
+ export declare type VerifierOptions = VerifierV3Options & ProxyOptions;
39
33
  export declare class VerifierV3 {
40
34
  private config;
41
- constructor(config: VerifierV3Options);
35
+ private address;
36
+ private stateSetupPath;
37
+ constructor(config: VerifierOptions);
42
38
  /**
43
39
  * Verify a HTTP Provider
44
40
  */
45
41
  verifyProvider(): Promise<unknown>;
42
+ private validateConfiguration;
43
+ private runProviderVerification;
44
+ private isLocalVerification;
46
45
  }
@@ -10,58 +10,117 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
+ var __importStar = (this && this.__importStar) || function (mod) {
14
+ if (mod && mod.__esModule) return mod;
15
+ var result = {};
16
+ if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
17
+ result["default"] = mod;
18
+ return result;
19
+ };
13
20
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
21
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
22
  };
16
23
  Object.defineProperty(exports, "__esModule", { value: true });
17
24
  var ramda_1 = require("ramda");
25
+ var url = __importStar(require("url"));
26
+ var net_1 = require("../common/net");
27
+ var proxy_1 = require("../dsl/verifier/proxy");
18
28
  var configurationError_1 = __importDefault(require("../errors/configurationError"));
19
- var logger_1 = __importDefault(require("../common/logger"));
20
- var index_node_1 = __importDefault(require("../../native/index.node"));
29
+ var logger_1 = __importStar(require("../common/logger"));
30
+ var PactNative = __importStar(require("../../native/index.node"));
21
31
  var VerifierV3 = /** @class */ (function () {
22
32
  function VerifierV3(config) {
33
+ this.address = 'http://localhost';
34
+ this.stateSetupPath = '/_pactSetup';
23
35
  this.config = config;
36
+ this.validateConfiguration();
24
37
  }
25
38
  /**
26
39
  * Verify a HTTP Provider
27
40
  */
28
41
  VerifierV3.prototype.verifyProvider = function () {
29
- var _this = this;
30
- return new Promise(function (resolve, reject) {
31
- var config = __assign({}, _this.config);
32
- if (ramda_1.isEmpty(_this.config)) {
33
- reject(new configurationError_1.default('No configuration provided to verifier'));
34
- }
35
- // This is just too messy to do on the rust side. neon-serde would have helped, but appears unmaintained
36
- // and is currently incompatible
37
- if (_this.config.consumerVersionSelectors) {
38
- config.consumerVersionSelectorsString = _this.config.consumerVersionSelectors.map(function (s) { return JSON.stringify(s); });
39
- }
40
- if (!_this.config.provider) {
41
- reject(new configurationError_1.default('Provider name is required'));
42
- }
43
- if ((ramda_1.isEmpty(_this.config.pactUrls) || !_this.config.pactUrls) &&
44
- !_this.config.pactBrokerUrl) {
45
- reject(new configurationError_1.default('Either a list of pactUrls or a pactBrokerUrl must be provided'));
46
- }
47
- try {
48
- index_node_1.default.verify_provider(_this.config, function (err, val) {
49
- if (err || !val) {
50
- logger_1.default.debug('In verify_provider callback: FAILED with', err, val);
51
- reject(err);
52
- }
53
- else {
54
- logger_1.default.debug('In verify_provider callback: SUCCEEDED with', val);
55
- resolve(val);
56
- }
42
+ // Start the verification CLI proxy server
43
+ var server = proxy_1.createProxy(this.config, this.stateSetupPath);
44
+ // Run the verification once the proxy server is available
45
+ // and properly shut down the proxy before returning
46
+ return proxy_1.waitForServerReady(server)
47
+ .then(this.runProviderVerification())
48
+ .then(function (result) {
49
+ return new Promise(function (resolve) {
50
+ server.close(function () {
51
+ resolve(result);
57
52
  });
58
- logger_1.default.debug('Submitted test to verify_provider');
59
- }
60
- catch (e) {
61
- reject(e);
62
- }
53
+ });
54
+ })
55
+ .catch(function (e) {
56
+ return new Promise(function (_, reject) {
57
+ server.close(function () {
58
+ reject(e);
59
+ });
60
+ });
63
61
  });
64
62
  };
63
+ VerifierV3.prototype.validateConfiguration = function () {
64
+ var config = __assign({}, this.config);
65
+ if (this.config.logLevel && !ramda_1.isEmpty(this.config.logLevel)) {
66
+ logger_1.setLogLevel(this.config.logLevel);
67
+ }
68
+ if (this.config.validateSSL === undefined) {
69
+ this.config.validateSSL = true;
70
+ }
71
+ if (this.config.changeOrigin === undefined) {
72
+ this.config.changeOrigin = false;
73
+ if (!this.isLocalVerification()) {
74
+ this.config.changeOrigin = true;
75
+ logger_1.default.warn("non-local provider address " + this.config.providerBaseUrl + " detected, setting 'changeOrigin' to 'true'. This property can be overridden.");
76
+ }
77
+ }
78
+ if (ramda_1.isEmpty(this.config)) {
79
+ throw new configurationError_1.default('no configuration provided to verifier');
80
+ }
81
+ // This is just too messy to do on the rust side. neon-serde would have helped, but appears unmaintained
82
+ // and is currently incompatible
83
+ if (this.config.consumerVersionSelectors) {
84
+ config.consumerVersionSelectorsString = this.config.consumerVersionSelectors.map(function (s) { return JSON.stringify(s); });
85
+ }
86
+ if (!this.config.provider) {
87
+ throw new configurationError_1.default('provider name is required');
88
+ }
89
+ if ((ramda_1.isEmpty(this.config.pactUrls) || !this.config.pactUrls) &&
90
+ !this.config.pactBrokerUrl) {
91
+ throw new configurationError_1.default('a list of pactUrls or a pactBrokerUrl must be provided');
92
+ }
93
+ return config;
94
+ };
95
+ // Run the Verification CLI process
96
+ VerifierV3.prototype.runProviderVerification = function () {
97
+ var _this = this;
98
+ return function (server) {
99
+ return new Promise(function (resolve, reject) {
100
+ var opts = __assign(__assign({ providerStatesSetupUrl: _this.address + ":" + server.address().port + _this.stateSetupPath }, _this.config), { providerBaseUrl: _this.address + ":" + server.address().port });
101
+ try {
102
+ PactNative.verify_provider(opts, function (err, val) {
103
+ if (err || !val) {
104
+ logger_1.default.trace({ err: err, val: val }, 'verification failed');
105
+ reject(err);
106
+ }
107
+ else {
108
+ logger_1.default.trace({ val: val }, 'verification succeeded');
109
+ resolve(val);
110
+ }
111
+ });
112
+ logger_1.default.trace('submitted test to verify_provider');
113
+ }
114
+ catch (e) {
115
+ reject(e);
116
+ }
117
+ });
118
+ };
119
+ };
120
+ VerifierV3.prototype.isLocalVerification = function () {
121
+ var u = new url.URL(this.config.providerBaseUrl);
122
+ return (net_1.localAddresses.includes(u.host) || net_1.localAddresses.includes(u.hostname));
123
+ };
65
124
  return VerifierV3;
66
125
  }());
67
126
  exports.VerifierV3 = VerifierV3;
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../src/v3/verifier.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+BAAgC;AAEhC,oFAA8D;AAC9D,4DAAsC;AAEtC,uEAAiD;AA0DjD;IAGE,oBAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACI,mCAAc,GAArB;QAAA,iBA+CC;QA9CC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAM,MAAM,gBACP,KAAI,CAAC,MAAM,CACf,CAAC;YAEF,IAAI,eAAO,CAAC,KAAI,CAAC,MAAM,CAAC,EAAE;gBACxB,MAAM,CAAC,IAAI,4BAAkB,CAAC,uCAAuC,CAAC,CAAC,CAAC;aACzE;YAED,wGAAwG;YACxG,gCAAgC;YAChC,IAAI,KAAI,CAAC,MAAM,CAAC,wBAAwB,EAAE;gBACxC,MAAM,CAAC,8BAA8B,GAAG,KAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,GAAG,CAC9E,UAAC,CAAC,IAAK,OAAA,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB,CACzB,CAAC;aACH;YAED,IAAI,CAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACzB,MAAM,CAAC,IAAI,4BAAkB,CAAC,2BAA2B,CAAC,CAAC,CAAC;aAC7D;YACD,IACE,CAAC,eAAO,CAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACxD,CAAC,KAAI,CAAC,MAAM,CAAC,aAAa,EAC1B;gBACA,MAAM,CACJ,IAAI,4BAAkB,CACpB,+DAA+D,CAChE,CACF,CAAC;aACH;YAED,IAAI;gBACF,oBAAU,CAAC,eAAe,CAAC,KAAI,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,GAAG;oBAC/C,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;wBACf,gBAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBACnE,MAAM,CAAC,GAAG,CAAC,CAAC;qBACb;yBAAM;wBACL,gBAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,GAAG,CAAC,CAAC;wBACjE,OAAO,CAAC,GAAG,CAAC,CAAC;qBACd;gBACH,CAAC,CAAC,CAAC;gBACH,gBAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACnD;YAAC,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,CAAC,CAAC,CAAC;aACX;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACH,iBAAC;AAAD,CAAC,AA1DD,IA0DC;AA1DY,gCAAU"}
1
+ {"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../../src/v3/verifier.ts"],"names":[],"mappings":"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"}
@@ -20,29 +20,32 @@ var expect = chai.expect;
20
20
  describe('V3 Verifier', function () {
21
21
  describe('invalid configuration', function () {
22
22
  it('returns an error when no provider name is given', function () {
23
- var result = new verifier_1.VerifierV3({
24
- logLevel: '',
25
- provider: '',
26
- providerBaseUrl: '',
27
- }).verifyProvider();
28
- return expect(result).to.eventually.be.rejectedWith(Error, 'Provider name is required');
23
+ expect(function () {
24
+ return new verifier_1.VerifierV3({
25
+ logLevel: 'fatal',
26
+ provider: '',
27
+ providerBaseUrl: 'http://localhost',
28
+ });
29
+ }).to.throw('provider name is required');
29
30
  });
30
31
  it('returns an error when no pactBrokerUrl and an empty list of pactUrls is given', function () {
31
- var result = new verifier_1.VerifierV3({
32
- logLevel: '',
33
- provider: 'unitTest',
34
- providerBaseUrl: '',
35
- pactUrls: [],
36
- }).verifyProvider();
37
- return expect(result).to.eventually.be.rejectedWith(Error, 'Either a list of pactUrls or a pactBrokerUrl must be provided');
32
+ expect(function () {
33
+ return new verifier_1.VerifierV3({
34
+ logLevel: 'fatal',
35
+ provider: 'unitTest',
36
+ providerBaseUrl: 'http://localhost',
37
+ pactUrls: [],
38
+ });
39
+ }).to.throw('a list of pactUrls or a pactBrokerUrl must be provided');
38
40
  });
39
41
  it('returns an error when no pactBrokerUrl an no pactUrls is given', function () {
40
- var result = new verifier_1.VerifierV3({
41
- logLevel: '',
42
- provider: 'unitTest',
43
- providerBaseUrl: '',
44
- }).verifyProvider();
45
- return expect(result).to.eventually.be.rejectedWith(Error, 'Either a list of pactUrls or a pactBrokerUrl must be provided');
42
+ expect(function () {
43
+ return new verifier_1.VerifierV3({
44
+ logLevel: 'fatal',
45
+ provider: 'unitTest',
46
+ providerBaseUrl: 'http://localhost',
47
+ });
48
+ }).to.throw('a list of pactUrls or a pactBrokerUrl must be provided');
46
49
  });
47
50
  });
48
51
  });
@@ -1 +1 @@
1
- {"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../src/v3/verifier.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+CAAmC;AAEnC,yCAA6B;AAE7B,IAAM,UAAU,GAAG;IACjB,wBAAwB,EAAE,cAAM,OAAA,EAAE,EAAF,CAAE;IAClC,qBAAqB,EAAE,cAAM,OAAA,EAAE,EAAF,CAAE;CAChC,CAAC;AACF,OAAO,CAAC,YAAY,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;AAE5D,wCAAwC;AACxC,uCAAwC;AAEhC,IAAA,oBAAM,CAAU;AAExB,QAAQ,CAAC,aAAa,EAAE;IACtB,QAAQ,CAAC,uBAAuB,EAAE;QAChC,EAAE,CAAC,iDAAiD,EAAE;YACpD,IAAM,MAAM,GAAG,IAAI,qBAAU,CAAC;gBAC5B,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;gBACZ,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC,cAAc,EAAE,CAAC;YAEpB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CACjD,KAAK,EACL,2BAA2B,CAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,+EAA+E,EAAE;YAClF,IAAM,MAAM,GAAG,IAAI,qBAAU,CAAC;gBAC5B,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,UAAU;gBACpB,eAAe,EAAE,EAAE;gBACnB,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CACjD,KAAK,EACL,+DAA+D,CAChE,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gEAAgE,EAAE;YACnE,IAAM,MAAM,GAAG,IAAI,qBAAU,CAAC;gBAC5B,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,UAAU;gBACpB,eAAe,EAAE,EAAE;aACpB,CAAC,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,YAAY,CACjD,KAAK,EACL,+DAA+D,CAChE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"verifier.spec.js","sourceRoot":"","sources":["../../../src/v3/verifier.spec.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+CAAmC;AAEnC,yCAA6B;AAE7B,IAAM,UAAU,GAAG;IACjB,wBAAwB,EAAE,cAAM,OAAA,EAAE,EAAF,CAAE;IAClC,qBAAqB,EAAE,cAAM,OAAA,EAAE,EAAF,CAAE;CAChC,CAAC;AACF,OAAO,CAAC,YAAY,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;AAE5D,wCAAwC;AACxC,uCAAwC;AAEhC,IAAA,oBAAM,CAAU;AAExB,QAAQ,CAAC,aAAa,EAAE;IACtB,QAAQ,CAAC,uBAAuB,EAAE;QAChC,EAAE,CAAC,iDAAiD,EAAE;YACpD,MAAM,CACJ;gBACE,OAAA,IAAI,qBAAU,CAAC;oBACb,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,EAAE;oBACZ,eAAe,EAAE,kBAAkB;iBACpC,CAAC;YAJF,CAIE,CACL,CAAC,EAAE,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,+EAA+E,EAAE;YAClF,MAAM,CACJ;gBACE,OAAA,IAAI,qBAAU,CAAC;oBACb,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,UAAU;oBACpB,eAAe,EAAE,kBAAkB;oBACnC,QAAQ,EAAE,EAAE;iBACb,CAAC;YALF,CAKE,CACL,CAAC,EAAE,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,gEAAgE,EAAE;YACnE,MAAM,CACJ;gBACE,OAAA,IAAI,qBAAU,CAAC;oBACb,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,UAAU;oBACpB,eAAe,EAAE,kBAAkB;iBACpC,CAAC;YAJF,CAIE,CACL,CAAC,EAAE,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}