pact 1.63.0 → 1.65.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +41 -0
- data/lib/pact/cli/run_pact_verification.rb +0 -1
- data/lib/pact/consumer/consumer_contract_builder.rb +1 -1
- data/lib/pact/hal/entity.rb +4 -0
- data/lib/pact/hal/http_client.rb +19 -0
- data/lib/pact/pact_broker/fetch_pact_uris_for_verification.rb +19 -8
- data/lib/pact/provider/configuration/message_provider_dsl.rb +4 -0
- data/lib/pact/provider/configuration/pact_verification_from_broker.rb +8 -2
- data/lib/pact/provider/configuration/service_provider_dsl.rb +7 -1
- data/lib/pact/provider/verification_results/publish.rb +1 -1
- data/lib/pact/version.rb +1 -1
- data/pact.gemspec +4 -4
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24b61e9c910570243bd6054ebc23bf968f5bd20a308ab887184d0860c2b2018d
|
4
|
+
data.tar.gz: 62ba67e2a1ff00b591da39accfe05010d2836f5aa386df0129aa9df786b89156
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b473ff4c78e3310449e8cae9a78bc379c36d20c6b646d3d587d83652598e32cae6f12ec50ad84623a1349655bbb841f7dc79aa8c0784dc79b53306f006ddc990
|
7
|
+
data.tar.gz: 91464395e4565d96df5025b998caa1e42a9ba71d9a72bfa0220dad95745bf3cc7d911f22171a1957d01a40a06c7042b9d53d49f75206ef757457227db5931260
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,44 @@
|
|
1
|
+
<a name="v1.65.0"></a>
|
2
|
+
### v1.65.0 (2024-08-06)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* support app_version_branch in MessageProviderDSL ([1653128](/../../commit/1653128))
|
7
|
+
* allow setting fail_if_no_pacts_found in honours_pacts_from_pact_broker ([f0f142e](/../../commit/f0f142e))
|
8
|
+
|
9
|
+
#### Bug Fixes
|
10
|
+
|
11
|
+
* handle case in no_pacts_found - undefined method empty? for nil ([0145d2d](/../../commit/0145d2d))
|
12
|
+
* remove unused ConsumerContractBuilder contract_details accessor ([fb5488e](/../../commit/fb5488e))
|
13
|
+
* example/animal-service/Gemfile to reduce vulnerabilities ([2bbefe2](/../../commit/2bbefe2))
|
14
|
+
* example/zoo-app/Gemfile to reduce vulnerabilities ([e10f914](/../../commit/e10f914))
|
15
|
+
* example/animal-service/Gemfile to reduce vulnerabilities ([7560918](/../../commit/7560918))
|
16
|
+
* example/zoo-app/Gemfile to reduce vulnerabilities ([b4cbe85](/../../commit/b4cbe85))
|
17
|
+
* example/animal-service/Gemfile to reduce vulnerabilities ([4028087](/../../commit/4028087))
|
18
|
+
* ConsumerContractBuilder exposing incorrect field ([c805c3e](/../../commit/c805c3e))
|
19
|
+
|
20
|
+
* **test**
|
21
|
+
* alias Rack/Rackup WEBrick handler in x509 test for backwards compat ([cc77498](/../../commit/cc77498))
|
22
|
+
|
23
|
+
<a name="v1.64.0"></a>
|
24
|
+
### v1.64.0 (2023-11-09)
|
25
|
+
|
26
|
+
#### Features
|
27
|
+
|
28
|
+
* support x509 certs in HTTP Client (#298) ([3ed5680](/../../commit/3ed5680))
|
29
|
+
|
30
|
+
* **CI**
|
31
|
+
* use setup-ruby's bundle installer and cache (#275) ([f5621b6](/../../commit/f5621b6))
|
32
|
+
|
33
|
+
#### Bug Fixes
|
34
|
+
|
35
|
+
* assert provider retrieved successfully before using link ([0af0691](/../../commit/0af0691))
|
36
|
+
* update call to Rack::Builder.parse_file for rack 3 ([652047c](/../../commit/652047c))
|
37
|
+
* example/zoo-app/Gemfile to reduce vulnerabilities ([b4ca8cb](/../../commit/b4ca8cb))
|
38
|
+
* example/animal-service/Gemfile to reduce vulnerabilities ([7ad2073](/../../commit/7ad2073))
|
39
|
+
* example/zoo-app/Gemfile to reduce vulnerabilities ([dd417fd](/../../commit/dd417fd))
|
40
|
+
* example/animal-service/Gemfile to reduce vulnerabilities (#281) ([4ea07cd](/../../commit/4ea07cd))
|
41
|
+
|
1
42
|
<a name="v1.63.0"></a>
|
2
43
|
### v1.63.0 (2022-09-28)
|
3
44
|
|
data/lib/pact/hal/entity.rb
CHANGED
data/lib/pact/hal/http_client.rb
CHANGED
@@ -53,6 +53,12 @@ module Pact
|
|
53
53
|
http.use_ssl = (uri.scheme == 'https')
|
54
54
|
http.ca_file = ENV['SSL_CERT_FILE'] if ENV['SSL_CERT_FILE'] && ENV['SSL_CERT_FILE'] != ''
|
55
55
|
http.ca_path = ENV['SSL_CERT_DIR'] if ENV['SSL_CERT_DIR'] && ENV['SSL_CERT_DIR'] != ''
|
56
|
+
|
57
|
+
if x509_certificate?
|
58
|
+
http.cert = OpenSSL::X509::Certificate.new(x509_client_cert_file)
|
59
|
+
http.key = OpenSSL::PKey::RSA.new(x509_client_key_file)
|
60
|
+
end
|
61
|
+
|
56
62
|
if disable_ssl_verification?
|
57
63
|
if verbose?
|
58
64
|
Pact.configuration.output_stream.puts("SSL verification is disabled")
|
@@ -74,6 +80,19 @@ module Pact
|
|
74
80
|
verbose || ENV['VERBOSE'] == 'true'
|
75
81
|
end
|
76
82
|
|
83
|
+
def x509_certificate?
|
84
|
+
ENV['X509_CLIENT_CERT_FILE'] && ENV['X509_CLIENT_CERT_FILE'] != '' &&
|
85
|
+
ENV['X509_CLIENT_KEY_FILE'] && ENV['X509_CLIENT_KEY_FILE'] != ''
|
86
|
+
end
|
87
|
+
|
88
|
+
def x509_client_cert_file
|
89
|
+
File.read(ENV['X509_CLIENT_CERT_FILE'])
|
90
|
+
end
|
91
|
+
|
92
|
+
def x509_client_key_file
|
93
|
+
File.read(ENV['X509_CLIENT_KEY_FILE'])
|
94
|
+
end
|
95
|
+
|
77
96
|
def disable_ssl_verification?
|
78
97
|
ENV['PACT_DISABLE_SSL_VERIFICATION'] == 'true' || ENV['PACT_BROKER_DISABLE_SSL_VERIFICATION'] == 'true'
|
79
98
|
end
|
@@ -39,15 +39,17 @@ module Pact
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def call
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
42
|
+
handling_no_pacts_found do
|
43
|
+
if index.can?(PACTS_FOR_VERIFICATION_RELATION) || index.can?(PACTS_FOR_VERIFICATION_RELATION_BETA)
|
44
|
+
log_message
|
45
|
+
pacts_for_verification
|
46
|
+
else
|
47
|
+
old_selectors = consumer_version_selectors.collect do | selector |
|
48
|
+
{ name: selector[:tag], all: !selector[:latest], fallback: selector[:fallbackTag]}
|
49
|
+
end
|
50
|
+
# Fall back to old method of fetching pacts
|
51
|
+
FetchPacts.call(provider, old_selectors, broker_base_url, http_client_options)
|
48
52
|
end
|
49
|
-
# Fall back to old method of fetching pacts
|
50
|
-
FetchPacts.call(provider, old_selectors, broker_base_url, http_client_options)
|
51
53
|
end
|
52
54
|
end
|
53
55
|
|
@@ -96,6 +98,15 @@ module Pact
|
|
96
98
|
def log_message
|
97
99
|
Pact.configuration.output_stream.puts "INFO: #{pact_selection_description(provider, consumer_version_selectors, options, broker_base_url)}"
|
98
100
|
end
|
101
|
+
|
102
|
+
def handling_no_pacts_found
|
103
|
+
pacts_found = yield
|
104
|
+
raise "No pacts found to verify" if pacts_found.blank? && options[:fail_if_no_pacts_found] != false
|
105
|
+
if pacts_found.blank? && options[:fail_if_no_pacts_found] == false
|
106
|
+
Pact.configuration.output_stream.puts "WARN: No pacts found to verify & fail_if_no_pacts_found is set to false."
|
107
|
+
end
|
108
|
+
pacts_found
|
109
|
+
end
|
99
110
|
end
|
100
111
|
end
|
101
112
|
end
|
@@ -34,6 +34,10 @@ module Pact
|
|
34
34
|
self.tags = tags
|
35
35
|
end
|
36
36
|
|
37
|
+
def app_version_branch branch
|
38
|
+
self.branch = branch
|
39
|
+
end
|
40
|
+
|
37
41
|
def publish_verification_results publish_verification_results
|
38
42
|
self.publish_verification_results = publish_verification_results
|
39
43
|
Pact::RSpec.with_rspec_2 do
|
@@ -15,7 +15,7 @@ module Pact
|
|
15
15
|
# in parent scope, it will clash with these ones,
|
16
16
|
# so put an underscore in front of the name to be safer.
|
17
17
|
|
18
|
-
attr_accessor :_provider_name, :_pact_broker_base_url, :_consumer_version_tags, :_provider_version_branch, :_provider_version_tags, :_basic_auth_options, :_enable_pending, :_include_wip_pacts_since, :_verbose, :_consumer_version_selectors
|
18
|
+
attr_accessor :_provider_name, :_pact_broker_base_url, :_consumer_version_tags, :_provider_version_branch, :_provider_version_tags, :_basic_auth_options, :_enable_pending, :_include_wip_pacts_since, :_verbose, :_consumer_version_selectors, :_fail_if_no_pacts_found
|
19
19
|
|
20
20
|
def initialize(provider_name, provider_version_branch, provider_version_tags)
|
21
21
|
@_provider_name = provider_name
|
@@ -26,6 +26,7 @@ module Pact
|
|
26
26
|
@_enable_pending = false
|
27
27
|
@_include_wip_pacts_since = nil
|
28
28
|
@_verbose = false
|
29
|
+
@_fail_if_no_pacts_found = true # CLI defaults to false, unfortunately for consistency
|
29
30
|
end
|
30
31
|
|
31
32
|
dsl do
|
@@ -46,6 +47,11 @@ module Pact
|
|
46
47
|
self._enable_pending = enable_pending
|
47
48
|
end
|
48
49
|
|
50
|
+
# Underlying code defaults to true if not specified
|
51
|
+
def fail_if_no_pacts_found fail_if_no_pacts_found
|
52
|
+
self._fail_if_no_pacts_found = fail_if_no_pacts_found
|
53
|
+
end
|
54
|
+
|
49
55
|
def include_wip_pacts_since since
|
50
56
|
self._include_wip_pacts_since = if since.respond_to?(:xmlschema)
|
51
57
|
since.xmlschema
|
@@ -74,7 +80,7 @@ module Pact
|
|
74
80
|
_provider_version_tags,
|
75
81
|
_pact_broker_base_url,
|
76
82
|
_basic_auth_options.merge(verbose: _verbose),
|
77
|
-
{ include_pending_status: _enable_pending, include_wip_pacts_since: _include_wip_pacts_since }
|
83
|
+
{ include_pending_status: _enable_pending, include_wip_pacts_since: _include_wip_pacts_since, fail_if_no_pacts_found: _fail_if_no_pacts_found }
|
78
84
|
)
|
79
85
|
|
80
86
|
Pact.provider_world.add_pact_uri_source fetch_pacts
|
@@ -21,7 +21,13 @@ module Pact
|
|
21
21
|
unless File.exist? Pact.configuration.config_ru_path
|
22
22
|
raise "Could not find config.ru file at #{Pact.configuration.config_ru_path} Please configure the service provider app or create a config.ru file in the root directory of the project. See https://github.com/pact-foundation/pact-ruby/wiki/Verifying-pacts for more information."
|
23
23
|
end
|
24
|
-
Rack::Builder.parse_file(Pact.configuration.config_ru_path)
|
24
|
+
result = Rack::Builder.parse_file(Pact.configuration.config_ru_path)
|
25
|
+
|
26
|
+
if result.respond_to?(:first) # rack 2
|
27
|
+
result.first
|
28
|
+
else # rack 3
|
29
|
+
result
|
30
|
+
end
|
25
31
|
}
|
26
32
|
|
27
33
|
def initialize name
|
data/lib/pact/version.rb
CHANGED
data/pact.gemspec
CHANGED
@@ -29,16 +29,16 @@ Gem::Specification.new do |gem|
|
|
29
29
|
gem.add_runtime_dependency 'rspec', '~> 3.0'
|
30
30
|
gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 3.0.0'
|
31
31
|
gem.add_runtime_dependency 'thor', '>= 0.20', '< 2.0'
|
32
|
-
gem.add_runtime_dependency 'webrick', '~> 1.
|
33
|
-
gem.add_runtime_dependency 'term-ansicolor', '~> 1.
|
32
|
+
gem.add_runtime_dependency 'webrick', '~> 1.8'
|
33
|
+
gem.add_runtime_dependency 'term-ansicolor', '~> 1.7'
|
34
34
|
|
35
35
|
gem.add_runtime_dependency 'pact-support', '~> 1.16', '>= 1.16.9'
|
36
36
|
gem.add_runtime_dependency 'pact-mock_service', '~> 3.0', '>= 3.3.1'
|
37
37
|
|
38
38
|
gem.add_development_dependency 'rake', '~> 13.0'
|
39
39
|
gem.add_development_dependency 'webmock', '~> 3.0'
|
40
|
-
gem.add_development_dependency 'fakefs', '
|
41
|
-
gem.add_development_dependency 'hashie', '~>
|
40
|
+
gem.add_development_dependency 'fakefs', '2.4' # 0.6.0 blows up
|
41
|
+
gem.add_development_dependency 'hashie', '~> 5.0'
|
42
42
|
gem.add_development_dependency 'faraday', '~>1.0', '<3.0'
|
43
43
|
gem.add_development_dependency 'faraday-multipart', '~> 1.0'
|
44
44
|
gem.add_development_dependency 'conventional-changelog', '~> 1.3'
|
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.65.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Fraser
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date:
|
15
|
+
date: 2024-08-07 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rspec
|
@@ -74,28 +74,28 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '1.
|
77
|
+
version: '1.8'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
82
|
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '1.
|
84
|
+
version: '1.8'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: term-ansicolor
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: '1.
|
91
|
+
version: '1.7'
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: '1.
|
98
|
+
version: '1.7'
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: pact-support
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,28 +170,28 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - '='
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
173
|
+
version: '2.4'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - '='
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
180
|
+
version: '2.4'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: hashie
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
185
|
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
187
|
+
version: '5.0'
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
194
|
+
version: '5.0'
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: faraday
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -419,7 +419,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
419
419
|
- !ruby/object:Gem::Version
|
420
420
|
version: '0'
|
421
421
|
requirements: []
|
422
|
-
rubygems_version: 3.
|
422
|
+
rubygems_version: 3.5.17
|
423
423
|
signing_key:
|
424
424
|
specification_version: 4
|
425
425
|
summary: Enables consumer driven contract testing, providing a mock service and DSL
|