pact-provider-verifier 1.23.1 → 1.25.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +21 -0
- data/README.md +18 -18
- data/lib/pact/provider_verifier/aggregate_pact_configs.rb +16 -19
- data/lib/pact/provider_verifier/app.rb +15 -12
- data/lib/pact/provider_verifier/cli/verify.rb +2 -1
- data/lib/pact/provider_verifier/version.rb +1 -1
- metadata +18 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7252d509ae2e2498fcd92b205a3cd814098d2218d7654e27adcf3b272fe725d2
|
|
4
|
+
data.tar.gz: 2061bb5cf8beb5da796b27b8eefc912956b98fc04b865754cfbe95579c06644e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 65a2bc4f8335736f99d0c251b3610dad8140033e8c0759f606d44f81442d68fd245b1676d5aa4c112099a58bd86bf9ec2955140a4882778915be601b51b386c1
|
|
7
|
+
data.tar.gz: 613a162a2bc0563abcc86cf7e0452d0c48a1c778a2f4e4a6b1110eb360d288312a1c5a63e39a50bb284b8d467adeb2dd87e4af2264c738915f98c64cd19d36a1
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,24 @@
|
|
|
1
|
+
<a name="v1.25.0-1"></a>
|
|
2
|
+
### v1.25.0-1 (2019-11-09)
|
|
3
|
+
|
|
4
|
+
#### Features
|
|
5
|
+
|
|
6
|
+
* **gems**
|
|
7
|
+
* update pact gem to 1.42.2 ([a8452bd](/../../commit/a8452bd))
|
|
8
|
+
* update pact gem to 1.42.1 ([44cdd4e](/../../commit/44cdd4e))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
<a name="v1.24.0-1"></a>
|
|
12
|
+
### v1.24.0-1 (2019-09-26)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
#### Features
|
|
16
|
+
|
|
17
|
+
* update pact version dependency to 1.42.0 ([828deff](/../../commit/828deff))
|
|
18
|
+
* use new 'pacts for verification' endpoint when PACT_BROKER_PACTS_FOR_VERIFICATION_ENABLED is set to 'true' ([6e6f45b](/../../commit/6e6f45b))
|
|
19
|
+
* allow --provider-version-tag to be specified, which will be applied to the provider version when the verification results are published ([bf4bc93](/../../commit/bf4bc93))
|
|
20
|
+
|
|
21
|
+
|
|
1
22
|
<a name="v1.23.1-1"></a>
|
|
2
23
|
### v1.23.1-1 (2019-05-22)
|
|
3
24
|
|
data/README.md
CHANGED
|
@@ -17,7 +17,7 @@ binary-like CLI tool.
|
|
|
17
17
|
|
|
18
18
|
### Docker
|
|
19
19
|
|
|
20
|
-
Take a look at https://github.com/DiUS/pact-provider-verifier-docker.
|
|
20
|
+
Take a look at https://github.com/DiUS/pact-provider-verifier-docker or https://github.com/pact-foundation/pact-ruby-cli
|
|
21
21
|
|
|
22
22
|
### Native Installation
|
|
23
23
|
|
|
@@ -40,24 +40,24 @@ Usage:
|
|
|
40
40
|
pact-provider-verifier PACT_URL ... -h, --provider-base-url=PROVIDER_BASE_URL
|
|
41
41
|
|
|
42
42
|
Options:
|
|
43
|
-
-h, --provider-base-url=PROVIDER_BASE_URL
|
|
44
|
-
-c, [--provider-states-setup-url=PROVIDER_STATES_SETUP_URL]
|
|
45
|
-
[--pact-broker-base-url=PACT_BROKER_BASE_URL]
|
|
46
|
-
-n, [--broker-username=BROKER_USERNAME]
|
|
47
|
-
-p, [--broker-password=BROKER_PASSWORD]
|
|
48
|
-
-k, [--broker-token=BROKER_TOKEN]
|
|
43
|
+
-h, --provider-base-url=PROVIDER_BASE_URL # Provider host URL
|
|
44
|
+
-c, [--provider-states-setup-url=PROVIDER_STATES_SETUP_URL] # Base URL to setup the provider states at
|
|
45
|
+
[--pact-broker-base-url=PACT_BROKER_BASE_URL] # Base URL of the Pact Broker from which to retrieve the pacts.
|
|
46
|
+
-n, [--broker-username=BROKER_USERNAME] # Pact Broker basic auth username
|
|
47
|
+
-p, [--broker-password=BROKER_PASSWORD] # Pact Broker basic auth password
|
|
48
|
+
-k, [--broker-token=BROKER_TOKEN] # Pact Broker bearer token
|
|
49
49
|
[--provider=PROVIDER]
|
|
50
|
-
[--consumer-version-tag=TAG]
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
[--custom-
|
|
55
|
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
[--
|
|
59
|
-
|
|
60
|
-
|
|
50
|
+
[--consumer-version-tag=TAG] # Retrieve the latest pacts with this consumer version tag. Used in conjunction with --provider. May be specified multiple times.
|
|
51
|
+
[--provider-version-tag=TAG] # Tag to apply to the provider application version. May be specified multiple times.
|
|
52
|
+
-a, [--provider-app-version=PROVIDER_APP_VERSION] # Provider application version, required when publishing verification results
|
|
53
|
+
-r, [--publish-verification-results], [--no-publish-verification-results] # Publish verification results to the broker
|
|
54
|
+
[--custom-provider-header=CUSTOM_PROVIDER_HEADER] # Header to add to provider state set up and pact verification requests. eg 'Authorization: Basic cGFjdDpwYWN0'. May be specified multiple times.
|
|
55
|
+
[--custom-middleware=FILE] # Ruby file containing a class implementing Pact::ProviderVerifier::CustomMiddleware. This allows the response to be modified before replaying. Use with caution!
|
|
56
|
+
-v, [--verbose=VERBOSE] # Verbose output
|
|
57
|
+
-f, [--format=FORMATTER] # RSpec formatter. Defaults to custom Pact formatter. Other options are json and RspecJunitFormatter (which outputs xml).
|
|
58
|
+
-o, [--out=FILE] # Write output to a file instead of $stdout.
|
|
59
|
+
[--wait=SECONDS] # The number of seconds to poll for the provider to become available before running the verification
|
|
60
|
+
# Default: 0
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
## Examples
|
|
@@ -1,53 +1,50 @@
|
|
|
1
1
|
require 'pact/pact_broker'
|
|
2
2
|
require 'ostruct'
|
|
3
|
+
require 'pact/provider/pact_uri'
|
|
3
4
|
|
|
4
5
|
module Pact
|
|
5
6
|
module ProviderVerifier
|
|
6
7
|
class AggregatePactConfigs
|
|
7
8
|
|
|
8
|
-
def self.call(pact_urls, provider_name, consumer_version_tags, pact_broker_base_url, http_client_options)
|
|
9
|
-
new(pact_urls, provider_name, consumer_version_tags, pact_broker_base_url, http_client_options).call
|
|
9
|
+
def self.call(pact_urls, provider_name, consumer_version_tags, provider_version_tags, pact_broker_base_url, http_client_options)
|
|
10
|
+
new(pact_urls, provider_name, consumer_version_tags, provider_version_tags, pact_broker_base_url, http_client_options).call
|
|
10
11
|
end
|
|
11
12
|
|
|
12
|
-
def initialize(pact_urls, provider_name, consumer_version_tags, pact_broker_base_url, http_client_options)
|
|
13
|
+
def initialize(pact_urls, provider_name, consumer_version_tags, provider_version_tags, pact_broker_base_url, http_client_options)
|
|
13
14
|
@pact_urls = pact_urls
|
|
14
15
|
@provider_name = provider_name
|
|
15
16
|
@consumer_version_tags = consumer_version_tags
|
|
17
|
+
@provider_version_tags = provider_version_tags
|
|
16
18
|
@pact_broker_base_url = pact_broker_base_url
|
|
17
19
|
@http_client_options = http_client_options
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
def call
|
|
21
|
-
|
|
23
|
+
pacts_urls_from_broker + specified_pact_uris
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
private
|
|
25
27
|
|
|
26
|
-
attr_reader :pact_urls, :provider_name, :consumer_version_tags, :pact_broker_base_url, :http_client_options
|
|
28
|
+
attr_reader :pact_urls, :provider_name, :consumer_version_tags, :provider_version_tags, :pact_broker_base_url, :http_client_options
|
|
29
|
+
|
|
30
|
+
def specified_pact_uris
|
|
31
|
+
pact_urls.collect{ | url | Pact::PactBroker.build_pact_uri(url) }
|
|
32
|
+
end
|
|
27
33
|
|
|
28
34
|
def pacts_urls_from_broker
|
|
29
35
|
if pact_broker_base_url && provider_name
|
|
30
|
-
|
|
31
|
-
non_pending_pact_uris.collect{ | uri| OpenStruct.new(uri: uri) }
|
|
36
|
+
pacts_for_verification
|
|
32
37
|
else
|
|
33
38
|
[]
|
|
34
39
|
end
|
|
35
40
|
end
|
|
36
41
|
|
|
37
|
-
def
|
|
38
|
-
@
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def pending_pact_uris
|
|
42
|
-
@pending_pact_uris ||= Pact::PactBroker.fetch_pending_pact_uris(provider_name, pact_broker_base_url, http_client_options)
|
|
42
|
+
def pacts_for_verification
|
|
43
|
+
@pacts_for_verification ||= Pact::PactBroker.fetch_pact_uris_for_verification(provider_name, consumer_version_selectors, provider_version_tags, pact_broker_base_url, http_client_options)
|
|
43
44
|
end
|
|
44
45
|
|
|
45
|
-
def
|
|
46
|
-
|
|
47
|
-
pending_pact_uris - non_pending_pact_uris
|
|
48
|
-
else
|
|
49
|
-
[]
|
|
50
|
-
end
|
|
46
|
+
def consumer_version_selectors
|
|
47
|
+
consumer_version_tags.collect{ |tag| { tag: tag, latest: true } }
|
|
51
48
|
end
|
|
52
49
|
end
|
|
53
50
|
end
|
|
@@ -17,11 +17,13 @@ module Pact
|
|
|
17
17
|
include Pact::WaitUntilServerAvailable
|
|
18
18
|
|
|
19
19
|
PROXY_PACT_HELPER = File.expand_path(File.join(File.dirname(__FILE__), "pact_helper.rb"))
|
|
20
|
+
attr_reader :pact_urls, :options, :consumer_version_tags, :provider_version_tags
|
|
20
21
|
|
|
21
22
|
def initialize pact_urls, options = {}
|
|
22
23
|
@pact_urls = pact_urls
|
|
23
24
|
@options = options
|
|
24
25
|
@consumer_version_tags = options[:consumer_version_tag] || []
|
|
26
|
+
@provider_version_tags = options[:provider_version_tag] || []
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
def self.call pact_urls, options
|
|
@@ -33,8 +35,8 @@ module Pact
|
|
|
33
35
|
|
|
34
36
|
pact_urls = all_pact_urls
|
|
35
37
|
wait_until_provider_available
|
|
36
|
-
exit_statuses = pact_urls.collect do |
|
|
37
|
-
verify_pact
|
|
38
|
+
exit_statuses = pact_urls.collect do |pact_uri|
|
|
39
|
+
verify_pact pact_uri
|
|
38
40
|
end
|
|
39
41
|
|
|
40
42
|
exit_statuses.all?{ | status | status == 0 }
|
|
@@ -42,7 +44,6 @@ module Pact
|
|
|
42
44
|
|
|
43
45
|
private
|
|
44
46
|
|
|
45
|
-
attr_reader :pact_urls, :options, :consumer_version_tags
|
|
46
47
|
|
|
47
48
|
def setup
|
|
48
49
|
print_deprecation_note
|
|
@@ -66,19 +67,22 @@ module Pact
|
|
|
66
67
|
application = configure_custom_middleware(application)
|
|
67
68
|
application = configure_custom_header_middleware(application)
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
publish_results = options.publish_verification_results
|
|
70
|
+
this = self
|
|
71
71
|
|
|
72
72
|
Pact.service_provider "Running Provider Application" do
|
|
73
73
|
app do
|
|
74
74
|
application
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
if
|
|
78
|
-
app_version
|
|
77
|
+
if this.options.provider_app_version
|
|
78
|
+
app_version this.options.provider_app_version
|
|
79
79
|
end
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
if this.provider_version_tags.any?
|
|
82
|
+
app_version_tags this.provider_version_tags
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
publish_verification_results this.options.publish_verification_results
|
|
82
86
|
end
|
|
83
87
|
end
|
|
84
88
|
|
|
@@ -134,18 +138,17 @@ module Pact
|
|
|
134
138
|
end
|
|
135
139
|
end
|
|
136
140
|
|
|
137
|
-
def verify_pact(
|
|
141
|
+
def verify_pact(pact_uri)
|
|
138
142
|
begin
|
|
139
143
|
verify_options = {
|
|
140
144
|
pact_helper: PROXY_PACT_HELPER,
|
|
141
|
-
pact_uri:
|
|
145
|
+
pact_uri: pact_uri,
|
|
142
146
|
backtrace: ENV['BACKTRACE'] == 'true',
|
|
143
147
|
pact_broker_username: options.broker_username,
|
|
144
148
|
pact_broker_password: options.broker_password,
|
|
145
149
|
pact_broker_token: options.broker_token,
|
|
146
150
|
format: options.format,
|
|
147
151
|
out: options.out,
|
|
148
|
-
ignore_failures: config.pending,
|
|
149
152
|
request_customizer: ProviderStates::AddProviderStatesHeader
|
|
150
153
|
}
|
|
151
154
|
verify_options[:description] = ENV['PACT_DESCRIPTION'] if ENV['PACT_DESCRIPTION']
|
|
@@ -171,7 +174,7 @@ module Pact
|
|
|
171
174
|
|
|
172
175
|
def all_pact_urls
|
|
173
176
|
http_client_options = { username: options.broker_username, password: options.broker_password, token: options.broker_token, verbose: options.verbose }
|
|
174
|
-
AggregatePactConfigs.call(pact_urls, options.provider, consumer_version_tags, options.pact_broker_base_url, http_client_options)
|
|
177
|
+
AggregatePactConfigs.call(pact_urls, options.provider, consumer_version_tags, provider_version_tags, options.pact_broker_base_url, http_client_options)
|
|
175
178
|
end
|
|
176
179
|
|
|
177
180
|
def require_pact_project_pact_helper
|
|
@@ -19,8 +19,9 @@ module Pact
|
|
|
19
19
|
method_option :broker_token, aliases: "-k", desc: "Pact Broker bearer token", :required => false
|
|
20
20
|
method_option :provider, required: false
|
|
21
21
|
method_option :consumer_version_tag, type: :array, banner: "TAG", desc: "Retrieve the latest pacts with this consumer version tag. Used in conjunction with --provider. May be specified multiple times.", :required => false
|
|
22
|
+
method_option :provider_version_tag, type: :array, banner: "TAG", desc: "Tag to apply to the provider application version. May be specified multiple times.", :required => false
|
|
22
23
|
method_option :provider_app_version, aliases: "-a", desc: "Provider application version, required when publishing verification results", :required => false
|
|
23
|
-
method_option :publish_verification_results, aliases: "-r", desc: "Publish verification results to the broker", required: false
|
|
24
|
+
method_option :publish_verification_results, aliases: "-r", desc: "Publish verification results to the broker", required: false, type: :boolean, default: false
|
|
24
25
|
method_option :custom_provider_header, type: :array, banner: 'CUSTOM_PROVIDER_HEADER', desc: "Header to add to provider state set up and pact verification requests. eg 'Authorization: Basic cGFjdDpwYWN0'. May be specified multiple times.", :required => false
|
|
25
26
|
method_option :custom_middleware, type: :array, banner: 'FILE', desc: "Ruby file containing a class implementing Pact::ProviderVerifier::CustomMiddleware. This allows the response to be modified before replaying. Use with caution!", :required => false
|
|
26
27
|
method_option :monkeypatch, hide: true, type: :array, :required => false
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pact-provider-verifier
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.25.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Fellows
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2019-
|
|
12
|
+
date: 2019-11-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|
|
@@ -31,14 +31,20 @@ dependencies:
|
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version: '1.
|
|
34
|
+
version: '1.42'
|
|
35
|
+
- - ">="
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: 1.42.2
|
|
35
38
|
type: :runtime
|
|
36
39
|
prerelease: false
|
|
37
40
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
41
|
requirements:
|
|
39
42
|
- - "~>"
|
|
40
43
|
- !ruby/object:Gem::Version
|
|
41
|
-
version: '1.
|
|
44
|
+
version: '1.42'
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 1.42.2
|
|
42
48
|
- !ruby/object:Gem::Dependency
|
|
43
49
|
name: pact-message
|
|
44
50
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -57,22 +63,22 @@ dependencies:
|
|
|
57
63
|
name: faraday
|
|
58
64
|
requirement: !ruby/object:Gem::Requirement
|
|
59
65
|
requirements:
|
|
60
|
-
- - ">="
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: 0.9.0
|
|
63
66
|
- - "~>"
|
|
64
67
|
- !ruby/object:Gem::Version
|
|
65
68
|
version: '0.9'
|
|
69
|
+
- - ">="
|
|
70
|
+
- !ruby/object:Gem::Version
|
|
71
|
+
version: 0.9.0
|
|
66
72
|
type: :runtime
|
|
67
73
|
prerelease: false
|
|
68
74
|
version_requirements: !ruby/object:Gem::Requirement
|
|
69
75
|
requirements:
|
|
70
|
-
- - ">="
|
|
71
|
-
- !ruby/object:Gem::Version
|
|
72
|
-
version: 0.9.0
|
|
73
76
|
- - "~>"
|
|
74
77
|
- !ruby/object:Gem::Version
|
|
75
78
|
version: '0.9'
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: 0.9.0
|
|
76
82
|
- !ruby/object:Gem::Dependency
|
|
77
83
|
name: faraday_middleware
|
|
78
84
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -325,7 +331,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
325
331
|
- !ruby/object:Gem::Version
|
|
326
332
|
version: '0'
|
|
327
333
|
requirements: []
|
|
328
|
-
|
|
334
|
+
rubyforge_project:
|
|
335
|
+
rubygems_version: 2.7.7
|
|
329
336
|
signing_key:
|
|
330
337
|
specification_version: 4
|
|
331
338
|
summary: Provides a Pact verification service for use with Pact
|