pact 1.42.2 → 1.43.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 +20 -0
- data/lib/pact/consumer/spec_hooks.rb +2 -2
- data/lib/pact/doc/sort_interactions.rb +2 -3
- data/lib/pact/hal/link.rb +16 -3
- data/lib/pact/pact_broker/fetch_pact_uris_for_verification.rb +14 -15
- data/lib/pact/provider/pact_helper_locator.rb +0 -1
- data/lib/pact/provider/pact_spec_runner.rb +5 -1
- data/lib/pact/provider/request.rb +1 -1
- data/lib/pact/provider/rspec.rb +1 -1
- data/lib/pact/provider/test_methods.rb +1 -1
- data/lib/pact/provider/world.rb +1 -1
- data/lib/pact/version.rb +1 -1
- data/pact.gemspec +5 -7
- metadata +17 -30
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b644026c464080ef14a4a202bbfe8106f5ece05a
|
|
4
|
+
data.tar.gz: b0fa73324f51d53bf0d51e1ec5adc1974fc20816
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8ff57177c9bebdfa42fa14ff4a158f1a44c5eb52602c33b9d606065573fe0461649c271001676405cf09bd4da5e6e0b5a73845e797386a3199fd162a17edef13
|
|
7
|
+
data.tar.gz: c98d162e93e3c21d32eae05ec850bf2d6c42af63afb400ffa04d2813b2ce8364a91dfe0b6d06f713637d31e5913f62235d2e4dbbbfe1846ac4f2d099fd809d11
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
<a name="v1.43.0"></a>
|
|
2
|
+
### v1.43.0 (2020-01-11)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#### Features
|
|
6
|
+
|
|
7
|
+
* **verify**
|
|
8
|
+
* allow includePendingStatus to be specified when fetching pacts ([1f5fc9c](/../../commit/1f5fc9c))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
<a name="v1.42.3"></a>
|
|
12
|
+
### v1.42.3 (2019-11-15)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
#### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **verify**
|
|
18
|
+
* exit with status 0 if all pacts are in pending state ([2f7110b](/../../commit/2f7110b))
|
|
19
|
+
|
|
20
|
+
|
|
1
21
|
<a name="v1.42.2"></a>
|
|
2
22
|
### v1.42.2 (2019-11-09)
|
|
3
23
|
|
|
@@ -29,7 +29,7 @@ module Pact
|
|
|
29
29
|
|
|
30
30
|
def after_suite
|
|
31
31
|
if Pact.consumer_world.any_pact_examples_ran?
|
|
32
|
-
Pact.consumer_world.consumer_contract_builders.each
|
|
32
|
+
Pact.consumer_world.consumer_contract_builders.each(&:write_pact)
|
|
33
33
|
Pact::Doc::Generate.call
|
|
34
34
|
Pact::MockService::AppManager.instance.kill_all
|
|
35
35
|
Pact::MockService::AppManager.instance.clear_all
|
|
@@ -37,4 +37,4 @@ module Pact
|
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
|
-
end
|
|
40
|
+
end
|
|
@@ -3,7 +3,7 @@ module Pact
|
|
|
3
3
|
class SortInteractions
|
|
4
4
|
|
|
5
5
|
def self.call interactions
|
|
6
|
-
interactions.
|
|
6
|
+
interactions.sort_by { |interaction| sortable_id(interaction) }
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
private
|
|
@@ -11,7 +11,6 @@ module Pact
|
|
|
11
11
|
def self.sortable_id interaction
|
|
12
12
|
"#{interaction.description.downcase} #{interaction.response.status} #{(interaction.provider_state || '').downcase}"
|
|
13
13
|
end
|
|
14
|
-
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
|
-
end
|
|
16
|
+
end
|
data/lib/pact/hal/link.rb
CHANGED
|
@@ -6,6 +6,15 @@ module Pact
|
|
|
6
6
|
class Link
|
|
7
7
|
attr_reader :request_method, :href
|
|
8
8
|
|
|
9
|
+
DEFAULT_GET_HEADERS = {
|
|
10
|
+
"Accept" => "application/hal+json"
|
|
11
|
+
}.freeze
|
|
12
|
+
|
|
13
|
+
DEFAULT_POST_HEADERS = {
|
|
14
|
+
"Accept" => "application/hal+json",
|
|
15
|
+
"Content-Type" => "application/json"
|
|
16
|
+
}.freeze
|
|
17
|
+
|
|
9
18
|
def initialize(attrs, http_client)
|
|
10
19
|
@attrs = attrs
|
|
11
20
|
@request_method = attrs.fetch(:method, :get).to_sym
|
|
@@ -37,7 +46,7 @@ module Pact
|
|
|
37
46
|
end
|
|
38
47
|
|
|
39
48
|
def get(payload = {}, headers = {})
|
|
40
|
-
wrap_response(href, @http_client.get(href, payload, headers))
|
|
49
|
+
wrap_response(href, @http_client.get(href, payload, DEFAULT_GET_HEADERS.merge(headers)))
|
|
41
50
|
end
|
|
42
51
|
|
|
43
52
|
def get!(*args)
|
|
@@ -45,11 +54,15 @@ module Pact
|
|
|
45
54
|
end
|
|
46
55
|
|
|
47
56
|
def put(payload = nil, headers = {})
|
|
48
|
-
wrap_response(href, @http_client.put(href, payload ? payload.to_json : nil, headers))
|
|
57
|
+
wrap_response(href, @http_client.put(href, payload ? payload.to_json : nil, DEFAULT_POST_HEADERS.merge(headers)))
|
|
49
58
|
end
|
|
50
59
|
|
|
51
60
|
def post(payload = nil, headers = {})
|
|
52
|
-
wrap_response(href, @http_client.post(href, payload ? payload.to_json : nil, headers))
|
|
61
|
+
wrap_response(href, @http_client.post(href, payload ? payload.to_json : nil, DEFAULT_POST_HEADERS.merge(headers)))
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def post!(payload = nil, headers = {})
|
|
65
|
+
post(payload, headers).assert_success!
|
|
53
66
|
end
|
|
54
67
|
|
|
55
68
|
def expand(params)
|
|
@@ -7,7 +7,7 @@ require 'pact/pact_broker/fetch_pacts'
|
|
|
7
7
|
module Pact
|
|
8
8
|
module PactBroker
|
|
9
9
|
class FetchPactURIsForVerification
|
|
10
|
-
attr_reader :provider, :consumer_version_selectors, :provider_version_tags, :broker_base_url, :http_client_options, :http_client
|
|
10
|
+
attr_reader :provider, :consumer_version_selectors, :provider_version_tags, :broker_base_url, :http_client_options, :http_client, :options
|
|
11
11
|
|
|
12
12
|
PACTS_FOR_VERIFICATION_RELATION = 'beta:provider-pacts-for-verification'.freeze
|
|
13
13
|
PACTS = 'pacts'.freeze
|
|
@@ -16,17 +16,18 @@ module Pact
|
|
|
16
16
|
SELF = 'self'.freeze
|
|
17
17
|
EMBEDDED = '_embedded'.freeze
|
|
18
18
|
|
|
19
|
-
def initialize(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options)
|
|
19
|
+
def initialize(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options, options = {})
|
|
20
20
|
@provider = provider
|
|
21
21
|
@consumer_version_selectors = consumer_version_selectors || []
|
|
22
22
|
@provider_version_tags = provider_version_tags || []
|
|
23
23
|
@http_client_options = http_client_options
|
|
24
24
|
@broker_base_url = broker_base_url
|
|
25
25
|
@http_client = Pact::Hal::HttpClient.new(http_client_options)
|
|
26
|
+
@options = options
|
|
26
27
|
end
|
|
27
28
|
|
|
28
|
-
def self.call(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options)
|
|
29
|
-
new(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options).call
|
|
29
|
+
def self.call(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options, options = {})
|
|
30
|
+
new(provider, consumer_version_selectors, provider_version_tags, broker_base_url, http_client_options, options).call
|
|
30
31
|
end
|
|
31
32
|
|
|
32
33
|
def call
|
|
@@ -50,8 +51,7 @@ module Pact
|
|
|
50
51
|
pacts_for_verification_entity.response.body[EMBEDDED][PACTS].collect do | pact |
|
|
51
52
|
metadata = {
|
|
52
53
|
pending: pact["verificationProperties"]["pending"],
|
|
53
|
-
|
|
54
|
-
inclusion_reason: pact["verificationProperties"]["inclusionReason"],
|
|
54
|
+
notices: extract_notices(pact)
|
|
55
55
|
}
|
|
56
56
|
Pact::Provider::PactURI.new(pact[LINKS][SELF][HREF], http_client_options, metadata)
|
|
57
57
|
end
|
|
@@ -61,22 +61,21 @@ module Pact
|
|
|
61
61
|
index
|
|
62
62
|
._link(PACTS_FOR_VERIFICATION_RELATION)
|
|
63
63
|
.expand(provider: provider)
|
|
64
|
-
.
|
|
65
|
-
.get!
|
|
64
|
+
.post!(query)
|
|
66
65
|
end
|
|
67
66
|
|
|
68
67
|
def query
|
|
69
68
|
q = {}
|
|
70
|
-
if
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if provider_version_tags.any?
|
|
75
|
-
q["provider_version_tags"] = provider_version_tags
|
|
76
|
-
end
|
|
69
|
+
q["includePendingStatus"] = true if options[:include_pending_status]
|
|
70
|
+
q["consumerVersionSelectors"] = consumer_version_selectors if consumer_version_selectors.any?
|
|
71
|
+
q["providerVersionTags"] = provider_version_tags if provider_version_tags.any?
|
|
77
72
|
q
|
|
78
73
|
end
|
|
79
74
|
|
|
75
|
+
def extract_notices(pact)
|
|
76
|
+
(pact["verificationProperties"]["notices"] || []).collect{ |notice| notice["text"] }.compact
|
|
77
|
+
end
|
|
78
|
+
|
|
80
79
|
def log_message
|
|
81
80
|
latest = consumer_version_selectors.any? ? "" : "latest "
|
|
82
81
|
message = "INFO: Fetching #{latest}pacts for #{provider} from #{broker_base_url}"
|
|
@@ -91,7 +91,7 @@ module Pact
|
|
|
91
91
|
::RSpec::Core::CommandLine.new(NoConfigurationOptions.new)
|
|
92
92
|
.run(::RSpec.configuration.output_stream, ::RSpec.configuration.error_stream)
|
|
93
93
|
end
|
|
94
|
-
options[:ignore_failures] ? 0 : exit_code
|
|
94
|
+
(all_pacts_pending? || options[:ignore_failures]) ? 0 : exit_code
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
def rspec_runner_options
|
|
@@ -159,6 +159,10 @@ module Pact
|
|
|
159
159
|
consumer_contract.to_json
|
|
160
160
|
end
|
|
161
161
|
|
|
162
|
+
def all_pacts_pending?
|
|
163
|
+
pact_urls.all?{ | pact_url| pact_url.metadata[:pending] }
|
|
164
|
+
end
|
|
165
|
+
|
|
162
166
|
def class_exists? name
|
|
163
167
|
Kernel.const_get name
|
|
164
168
|
rescue NameError
|
data/lib/pact/provider/rspec.rb
CHANGED
|
@@ -76,7 +76,7 @@ module Pact
|
|
|
76
76
|
pact_interaction: interaction,
|
|
77
77
|
pact_interaction_example_description: interaction_description_for_rerun_command(interaction),
|
|
78
78
|
pact_uri: options[:pact_uri],
|
|
79
|
-
pact_ignore_failures: options[:pact_uri].metadata[:pending]
|
|
79
|
+
pact_ignore_failures: options[:pact_uri].metadata[:pending] || options[:ignore_failures]
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
describe description_for(interaction), metadata do
|
|
@@ -46,7 +46,7 @@ module Pact
|
|
|
46
46
|
def tear_down_provider_states provider_states, consumer, options = {}
|
|
47
47
|
# If there are no provider state, execute with an nil state to ensure global and base states are executed
|
|
48
48
|
Pact.configuration.provider_state_tear_down.call(nil, consumer, options) if provider_states.nil? || provider_states.empty?
|
|
49
|
-
provider_states.
|
|
49
|
+
provider_states.reverse_each do | provider_state |
|
|
50
50
|
Pact.configuration.provider_state_tear_down.call(provider_state.name, consumer, options.merge(params: provider_state.params))
|
|
51
51
|
end
|
|
52
52
|
end
|
data/lib/pact/provider/world.rb
CHANGED
data/lib/pact/version.rb
CHANGED
data/pact.gemspec
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
3
|
require 'pact/version'
|
|
5
4
|
|
|
@@ -15,22 +14,21 @@ Gem::Specification.new do |gem|
|
|
|
15
14
|
gem.required_ruby_version = '>= 2.0'
|
|
16
15
|
|
|
17
16
|
gem.files = `git ls-files bin lib pact.gemspec CHANGELOG.md LICENSE.txt`.split($/)
|
|
18
|
-
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
17
|
+
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
19
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
20
19
|
gem.require_paths = ["lib"]
|
|
21
20
|
gem.license = 'MIT'
|
|
22
21
|
|
|
23
22
|
gem.metadata = {
|
|
23
|
+
'changelog_uri' => 'https://github.com/pact-foundation/pact-ruby/blob/master/CHANGELOG.md',
|
|
24
24
|
'source_code_uri' => 'https://github.com/pact-foundation/pact-ruby',
|
|
25
25
|
'bug_tracker_uri' => 'https://github.com/pact-foundation/pact-ruby/issues',
|
|
26
26
|
'documentation_uri' => 'https://github.com/pact-foundation/pact-ruby/blob/master/README.md'
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
gem.add_runtime_dependency '
|
|
30
|
-
gem.add_runtime_dependency 'rspec', '>=2.14'
|
|
29
|
+
gem.add_runtime_dependency 'rspec', '>= 2.14'
|
|
31
30
|
gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 2.0.0'
|
|
32
31
|
gem.add_runtime_dependency 'thor'
|
|
33
|
-
gem.add_runtime_dependency 'json','> 1.8.5'
|
|
34
32
|
gem.add_runtime_dependency 'webrick'
|
|
35
33
|
gem.add_runtime_dependency 'term-ansicolor', '~> 1.0'
|
|
36
34
|
|
|
@@ -39,7 +37,7 @@ Gem::Specification.new do |gem|
|
|
|
39
37
|
|
|
40
38
|
gem.add_development_dependency 'rake', '~> 10.0.3'
|
|
41
39
|
gem.add_development_dependency 'webmock', '~> 3.0'
|
|
42
|
-
|
|
40
|
+
gem.add_development_dependency 'pry-byebug'
|
|
43
41
|
gem.add_development_dependency 'fakefs', '0.5' # 0.6.0 blows up
|
|
44
42
|
gem.add_development_dependency 'hashie', '~> 2.0'
|
|
45
43
|
gem.add_development_dependency 'activesupport'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pact
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.43.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Fraser
|
|
@@ -12,22 +12,8 @@ authors:
|
|
|
12
12
|
autorequire:
|
|
13
13
|
bindir: bin
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date:
|
|
15
|
+
date: 2020-01-11 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
|
-
- !ruby/object:Gem::Dependency
|
|
18
|
-
name: randexp
|
|
19
|
-
requirement: !ruby/object:Gem::Requirement
|
|
20
|
-
requirements:
|
|
21
|
-
- - "~>"
|
|
22
|
-
- !ruby/object:Gem::Version
|
|
23
|
-
version: 0.1.7
|
|
24
|
-
type: :runtime
|
|
25
|
-
prerelease: false
|
|
26
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
27
|
-
requirements:
|
|
28
|
-
- - "~>"
|
|
29
|
-
- !ruby/object:Gem::Version
|
|
30
|
-
version: 0.1.7
|
|
31
17
|
- !ruby/object:Gem::Dependency
|
|
32
18
|
name: rspec
|
|
33
19
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -76,20 +62,6 @@ dependencies:
|
|
|
76
62
|
- - ">="
|
|
77
63
|
- !ruby/object:Gem::Version
|
|
78
64
|
version: '0'
|
|
79
|
-
- !ruby/object:Gem::Dependency
|
|
80
|
-
name: json
|
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
|
82
|
-
requirements:
|
|
83
|
-
- - ">"
|
|
84
|
-
- !ruby/object:Gem::Version
|
|
85
|
-
version: 1.8.5
|
|
86
|
-
type: :runtime
|
|
87
|
-
prerelease: false
|
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
-
requirements:
|
|
90
|
-
- - ">"
|
|
91
|
-
- !ruby/object:Gem::Version
|
|
92
|
-
version: 1.8.5
|
|
93
65
|
- !ruby/object:Gem::Dependency
|
|
94
66
|
name: webrick
|
|
95
67
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -174,6 +146,20 @@ dependencies:
|
|
|
174
146
|
- - "~>"
|
|
175
147
|
- !ruby/object:Gem::Version
|
|
176
148
|
version: '3.0'
|
|
149
|
+
- !ruby/object:Gem::Dependency
|
|
150
|
+
name: pry-byebug
|
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
|
152
|
+
requirements:
|
|
153
|
+
- - ">="
|
|
154
|
+
- !ruby/object:Gem::Version
|
|
155
|
+
version: '0'
|
|
156
|
+
type: :development
|
|
157
|
+
prerelease: false
|
|
158
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
159
|
+
requirements:
|
|
160
|
+
- - ">="
|
|
161
|
+
- !ruby/object:Gem::Version
|
|
162
|
+
version: '0'
|
|
177
163
|
- !ruby/object:Gem::Dependency
|
|
178
164
|
name: fakefs
|
|
179
165
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -381,6 +367,7 @@ homepage: https://github.com/pact-foundation/pact-ruby
|
|
|
381
367
|
licenses:
|
|
382
368
|
- MIT
|
|
383
369
|
metadata:
|
|
370
|
+
changelog_uri: https://github.com/pact-foundation/pact-ruby/blob/master/CHANGELOG.md
|
|
384
371
|
source_code_uri: https://github.com/pact-foundation/pact-ruby
|
|
385
372
|
bug_tracker_uri: https://github.com/pact-foundation/pact-ruby/issues
|
|
386
373
|
documentation_uri: https://github.com/pact-foundation/pact-ruby/blob/master/README.md
|