Skip to content

Commit 63a661b

Browse files
committed
feat(proxy): cleanup verifier interface
- Update TS version - Cleanup of Verifier interface - Add tests for Verifier - Move the HTTP Pact related code into it's own module - Main pact interface is now purely interface
1 parent d3954e1 commit 63a661b

14 files changed

Lines changed: 602 additions & 360 deletions

.travis.yml

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,41 @@
11
language: node_js
22
node_js:
3-
- '6'
4-
- '7'
5-
- '8'
6-
- '9'
7-
- '10'
3+
- "6"
4+
- "7"
5+
- "8"
6+
- "9"
7+
- "10"
88
os:
9-
- linux
10-
# - osx
9+
- linux
1110
matrix:
1211
fast_finish: true
1312
env:
1413
matrix:
15-
- CXX=g++-4.8
14+
- CXX=g++-4.8
1615
global:
17-
# travis encrypt NPM_KEY=<key>
18-
- secure: "dadftjIY7w+KRucMDOqflXYTvWI1WYvtLtvGnbJuoFrgviax5zhwI7rSi6PTvW7mqV05FtqfVVb8Mgkwp1GNhv9byzuPCKnX6zN/tnl3mC++ivMA3BI7KhNp6VinzVeHWN+9BSYAQs1RQbslIK6IJ3oQJ9azp1MnxMQ1s0w5hqo0ojPWRJsm/IN57/pSiR4U0yyvONdwVg7Q8RQmyMZtovA2QzrR3ij6IxBwiJ7RQXsWIYkPL1SzaIqNNhMOdXK3m1iCESmtNc1BG9oEoaZc0ZzowT/O5VVPWe+bUfdSaAHjkTauaMCU2OAk6J89yd7pSCT5fe1YYYPgTIZiPkG0wQH8k7dKqqeaxBo+tN7uCfkYlTMNZmjv+qVBafoP8wBV97g3UugDqqIXaFknTUDnSNaigcJjFRWhCHBtltR+hzF6pCl3H1o1dDnmJWrgEb01qJ0lZonmaK/anZGNpUWE6qndOKBwnd0XiR1LnvzL/7tdflNb4DPy+lWdDEj4HWZR3lFA009m651qHBN+117ousZFXJ1866JywkAM2GrEWD4umzKknXDhulMG/Q32DS01BgW1pMenzQkH5WE+O0T3W/8BPw0Ev//bqZIg0gDckppUexHZ+pMhAFMaJfCzYVhrA0fhwLb+1EW7VDEcQIc0QHGXOb3Vclja7qB4yDuAJxk="
16+
# travis encrypt NPM_KEY=<key>
17+
- secure: "dadftjIY7w+KRucMDOqflXYTvWI1WYvtLtvGnbJuoFrgviax5zhwI7rSi6PTvW7mqV05FtqfVVb8Mgkwp1GNhv9byzuPCKnX6zN/tnl3mC++ivMA3BI7KhNp6VinzVeHWN+9BSYAQs1RQbslIK6IJ3oQJ9azp1MnxMQ1s0w5hqo0ojPWRJsm/IN57/pSiR4U0yyvONdwVg7Q8RQmyMZtovA2QzrR3ij6IxBwiJ7RQXsWIYkPL1SzaIqNNhMOdXK3m1iCESmtNc1BG9oEoaZc0ZzowT/O5VVPWe+bUfdSaAHjkTauaMCU2OAk6J89yd7pSCT5fe1YYYPgTIZiPkG0wQH8k7dKqqeaxBo+tN7uCfkYlTMNZmjv+qVBafoP8wBV97g3UugDqqIXaFknTUDnSNaigcJjFRWhCHBtltR+hzF6pCl3H1o1dDnmJWrgEb01qJ0lZonmaK/anZGNpUWE6qndOKBwnd0XiR1LnvzL/7tdflNb4DPy+lWdDEj4HWZR3lFA009m651qHBN+117ousZFXJ1866JywkAM2GrEWD4umzKknXDhulMG/Q32DS01BgW1pMenzQkH5WE+O0T3W/8BPw0Ev//bqZIg0gDckppUexHZ+pMhAFMaJfCzYVhrA0fhwLb+1EW7VDEcQIc0QHGXOb3Vclja7qB4yDuAJxk="
1918
script: ./scripts/build.sh
2019
after_success:
21-
- npm run coverage
20+
- npm run coverage
2221
before_deploy:
23-
- npm prune --production
24-
- tar -czvf pactjs.tar.gz config dist src package.json README.md LICENSE
25-
- npm run deploy:prepare
22+
- npm prune --production
23+
- tar -czvf pactjs.tar.gz config dist src package.json README.md LICENSE
24+
- npm run deploy:prepare
2625
deploy:
27-
- provider: releases
28-
api_key:
29-
secure: FmoLJnO8GNxyztR2P433ZCumYPrxiZdBCfVhmhTGYlXhOfVaAECm0gUVPLZuBQRUaqsef5ekg+OSIA5xbrnNoOQ9qlmnF2n+5yiwqG6o35XLA4L6lB5pL+x8xoAAgpaj9dTD184HKGdub3heQStTPRd2ll3nNRwxhfyIyBaMX3elDTH3mkV2QxNhG1RTgJe322PQrwoU2sWkghTWNr4t+h/G+oYu364xwZuxFX1hrFpAW+IEmbDSuhmCe24lMU96ntIiciRU3eBYR7s3KlktOFgMORXMRw3H/qaGmx7rKtpJ892XGRuVbw+tPB3A1jbFvOwJwzpnsWG5REu3PkZ6oiWpnX+5riN3jPyvFpWd+LLfH1KdZeBnF/anEfl+mSPdrDROOWotV3Xt5zOiEwx2j4BRbDNfa6wXzX0zK31AMf0IFmw7KZJkzcyWjNRluxTn3r2bbjNoi+gBojQuX27R3AQz5G0E0yZUk5ujmcd+85WOgNh/zVwsZLHYVQxDyULkbDTCDAulBsJLyxUFRs0JixyHCvA6srrUdpcO0NdyDfvULk9e/g/c9aD56Rk4xT4/Xa7K1fAHLjLkV6CA4H9Of96Zl2BK8r6LAlw382hO7FaZH+A3YShObEeTiZsDbfSQrFl5x8aimvc9oeYopvvQ+EdZxHvvwxHQIp/MWOybdJ4=
30-
file: pactjs.tar.gz
31-
skip_cleanup: true
32-
on:
33-
tags: true
34-
branch: feat/message-pact
35-
node: '8'
36-
- provider: script
37-
skip_cleanup: true
38-
script: ./scripts/publish.sh
39-
on:
40-
tags: true
41-
branch: feat/message-pact
42-
node: '8'
26+
- provider: releases
27+
api_key:
28+
secure: FmoLJnO8GNxyztR2P433ZCumYPrxiZdBCfVhmhTGYlXhOfVaAECm0gUVPLZuBQRUaqsef5ekg+OSIA5xbrnNoOQ9qlmnF2n+5yiwqG6o35XLA4L6lB5pL+x8xoAAgpaj9dTD184HKGdub3heQStTPRd2ll3nNRwxhfyIyBaMX3elDTH3mkV2QxNhG1RTgJe322PQrwoU2sWkghTWNr4t+h/G+oYu364xwZuxFX1hrFpAW+IEmbDSuhmCe24lMU96ntIiciRU3eBYR7s3KlktOFgMORXMRw3H/qaGmx7rKtpJ892XGRuVbw+tPB3A1jbFvOwJwzpnsWG5REu3PkZ6oiWpnX+5riN3jPyvFpWd+LLfH1KdZeBnF/anEfl+mSPdrDROOWotV3Xt5zOiEwx2j4BRbDNfa6wXzX0zK31AMf0IFmw7KZJkzcyWjNRluxTn3r2bbjNoi+gBojQuX27R3AQz5G0E0yZUk5ujmcd+85WOgNh/zVwsZLHYVQxDyULkbDTCDAulBsJLyxUFRs0JixyHCvA6srrUdpcO0NdyDfvULk9e/g/c9aD56Rk4xT4/Xa7K1fAHLjLkV6CA4H9Of96Zl2BK8r6LAlw382hO7FaZH+A3YShObEeTiZsDbfSQrFl5x8aimvc9oeYopvvQ+EdZxHvvwxHQIp/MWOybdJ4=
29+
file: pactjs.tar.gz
30+
skip_cleanup: true
31+
on:
32+
tags: true
33+
branch: master
34+
node: "8"
35+
- provider: script
36+
skip_cleanup: true
37+
script: ./scripts/publish.sh
38+
on:
39+
tags: true
40+
branch: master
41+
node: "8"

examples/e2e/test/provider.spec.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ describe("Pact Verification", () => {
8686
// customProviderHeaders: ['Authorization: basic e5e5e5e5e5e5e5']
8787
}
8888

89-
return new Verifier().verifyProvider().then(output => {
89+
return new Verifier().verifyProvider(opts).then(output => {
9090
console.log("Pact Verification Complete!")
9191
console.log(output)
9292
})

package-lock.json

Lines changed: 51 additions & 45 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@
116116
"@types/node": "^8.0.24",
117117
"@types/proxyquire": "^1.3.27",
118118
"@types/q": "^1.0.6",
119-
"@types/sinon": "^2.3.3",
119+
"@types/sinon": "^7.0.6",
120120
"@types/sinon-chai": "^2.7.29",
121121
"@types/superagent": "^3.5.7",
122122
"@types/tough-cookie": "^2.3.2",
@@ -150,7 +150,7 @@
150150
"nyc": "^13.1.0",
151151
"proxyquire": "^2.0.1",
152152
"rimraf": "^2.6.2",
153-
"sinon": "^6.3.5",
153+
"sinon": "^7.2.4",
154154
"sinon-chai": "^2.13.0",
155155
"source-map-loader": "^0.2.1",
156156
"source-map-support": "^0.4.18",

src/dsl/message.ts

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { MatcherResult } from "./matchers"
22

33
/**
44
* Metadata is a map containing message context,
5-
* such as content-type etc.
5+
* such as content-type, correlation IDs etc.
66
*
77
* @module Message
88
*/
@@ -12,7 +12,6 @@ export interface Metadata {
1212

1313
/**
1414
* A Message is an asynchronous Interaction, sent via a Provider
15-
* (consumer in the http, synchronous interaction parlance)
1615
*
1716
* @module Message
1817
*/
@@ -23,12 +22,40 @@ export interface Message {
2322
contents: any
2423
}
2524

26-
// Message producer/handlers
25+
/**
26+
* A Message Descriptor is a set of additional context for a given message
27+
*
28+
* @module Message
29+
*/
30+
export interface MessageDescriptor {
31+
providerStates?: [{ name: string }]
32+
description: string
33+
metadata?: Metadata
34+
}
35+
36+
/**
37+
* A Message Consumer is a function that will receive a message
38+
* from a given Message Provider. It is given the full Message
39+
* context during verification.
40+
*
41+
* @module Message
42+
*/
2743
export type MessageConsumer = (m: Message) => Promise<any>
28-
export type MessageProvider = (m: Message) => Promise<any>
44+
45+
/**
46+
* A Message Provider is a function that will be invoked by the framework
47+
* in order to _produce_ a message for a consumer. The response must match what
48+
* the given consumer has specified in the pact file. It is given a Message
49+
* Descriptor object when being invoked which can be used for additional context.
50+
*
51+
* @module Message
52+
*/
53+
export type MessageProvider = (m: MessageDescriptor) => Promise<any>
54+
2955
export interface MessageProviders {
3056
[name: string]: MessageProvider
3157
}
58+
3259
export interface StateHandlers {
3360
[name: string]: (state: string) => Promise<any>
3461
}

src/dsl/options.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ export interface MessageProviderOptions {
9393
tags?: string[]
9494
timeout?: number
9595
}
96+
9697
export interface MessageConsumerOptions {
9798
// The name of the consumer
9899
consumer: string

0 commit comments

Comments
 (0)