pact 1.62.0 → 1.64.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 +33 -0
- data/lib/pact/hal/entity.rb +4 -0
- data/lib/pact/hal/http_client.rb +19 -0
- data/lib/pact/provider/configuration/message_provider_dsl.rb +1 -1
- data/lib/pact/provider/configuration/service_provider_config.rb +3 -2
- data/lib/pact/provider/configuration/service_provider_dsl.rb +14 -4
- data/lib/pact/provider/pact_uri.rb +1 -1
- data/lib/pact/provider/state/provider_state.rb +5 -5
- data/lib/pact/provider/verification_results/create.rb +7 -1
- data/lib/pact/provider/verification_results/publish.rb +1 -1
- data/lib/pact/provider/verification_results/verification_result.rb +4 -2
- data/lib/pact/utils/metrics.rb +19 -4
- data/lib/pact/version.rb +1 -1
- data/pact.gemspec +7 -7
- metadata +25 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 174a9376cd442f1edd545cd006e1b15f07804077bb91060678e224d1717c6a5b
|
4
|
+
data.tar.gz: 4b5d1a84949fbad2dedeb1233626ef649ac4352840a204ea20c6496d3c0c0493
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 957b95b85b59906f1a59bb23fe2b85674c1574171a0880a508df9c6413bc7fe3f2b54fc3fe766eab3fdd8f18e68eaabf4efda43da50df01c66ebe2e9a0f19111
|
7
|
+
data.tar.gz: 6a34522651d931773d8ee92565ffd5173fd3f2cd99ba1211d25985da499b62d993a5b62b87257afb11a759cf691aa7702efe9e1773d11165794980d1301138e1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,36 @@
|
|
1
|
+
<a name="v1.64.0"></a>
|
2
|
+
### v1.64.0 (2023-11-09)
|
3
|
+
|
4
|
+
#### Features
|
5
|
+
|
6
|
+
* support x509 certs in HTTP Client (#298) ([3ed5680](/../../commit/3ed5680))
|
7
|
+
|
8
|
+
* **CI**
|
9
|
+
* use setup-ruby's bundle installer and cache (#275) ([f5621b6](/../../commit/f5621b6))
|
10
|
+
|
11
|
+
#### Bug Fixes
|
12
|
+
|
13
|
+
* assert provider retrieved successfully before using link ([0af0691](/../../commit/0af0691))
|
14
|
+
* update call to Rack::Builder.parse_file for rack 3 ([652047c](/../../commit/652047c))
|
15
|
+
* example/zoo-app/Gemfile to reduce vulnerabilities ([b4ca8cb](/../../commit/b4ca8cb))
|
16
|
+
* example/animal-service/Gemfile to reduce vulnerabilities ([7ad2073](/../../commit/7ad2073))
|
17
|
+
* example/zoo-app/Gemfile to reduce vulnerabilities ([dd417fd](/../../commit/dd417fd))
|
18
|
+
* example/animal-service/Gemfile to reduce vulnerabilities (#281) ([4ea07cd](/../../commit/4ea07cd))
|
19
|
+
|
20
|
+
<a name="v1.63.0"></a>
|
21
|
+
### v1.63.0 (2022-09-28)
|
22
|
+
|
23
|
+
#### Features
|
24
|
+
|
25
|
+
* relax rack-test dependency to allow version 2 (#270) ([a619deb](/../../commit/a619deb))
|
26
|
+
* only print metrics warning once per thread ([91da38f](/../../commit/91da38f))
|
27
|
+
* provide configuration for build url to be published in verification results (#252) ([ce1c9bc](/../../commit/ce1c9bc))
|
28
|
+
|
29
|
+
#### Bug Fixes
|
30
|
+
|
31
|
+
* example/animal-service/Gemfile to reduce vulnerabilities (#263) ([8f3b732](/../../commit/8f3b732))
|
32
|
+
* Fixup ruby warnings (#262) ([3640593](/../../commit/3640593))
|
33
|
+
|
1
34
|
<a name="v1.62.0"></a>
|
2
35
|
### v1.62.0 (2022-02-21)
|
3
36
|
|
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
|
@@ -4,14 +4,15 @@ module Pact
|
|
4
4
|
class ServiceProviderConfig
|
5
5
|
|
6
6
|
attr_accessor :application_version
|
7
|
-
attr_reader :branch
|
7
|
+
attr_reader :branch, :build_url
|
8
8
|
|
9
|
-
def initialize application_version, branch, tags, publish_verification_results, &app_block
|
9
|
+
def initialize application_version, branch, tags, publish_verification_results, build_url, &app_block
|
10
10
|
@application_version = application_version
|
11
11
|
@branch = branch
|
12
12
|
@tags = [*tags]
|
13
13
|
@publish_verification_results = publish_verification_results
|
14
14
|
@app_block = app_block
|
15
|
+
@build_url = build_url
|
15
16
|
end
|
16
17
|
|
17
18
|
def app
|
@@ -15,13 +15,19 @@ module Pact
|
|
15
15
|
|
16
16
|
extend Pact::DSL
|
17
17
|
|
18
|
-
attr_accessor :name, :app_block, :application_version, :branch, :tags, :publish_verification_results
|
18
|
+
attr_accessor :name, :app_block, :application_version, :branch, :tags, :publish_verification_results, :build_url
|
19
19
|
|
20
20
|
CONFIG_RU_APP = lambda {
|
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
|
@@ -48,6 +54,10 @@ module Pact
|
|
48
54
|
self.branch = branch
|
49
55
|
end
|
50
56
|
|
57
|
+
def build_url build_url
|
58
|
+
self.build_url = build_url
|
59
|
+
end
|
60
|
+
|
51
61
|
def publish_verification_results publish_verification_results
|
52
62
|
self.publish_verification_results = publish_verification_results
|
53
63
|
Pact::RSpec.with_rspec_2 do
|
@@ -60,7 +70,7 @@ module Pact
|
|
60
70
|
end
|
61
71
|
|
62
72
|
def honours_pacts_from_pact_broker &block
|
63
|
-
create_pact_verification_from_broker
|
73
|
+
create_pact_verification_from_broker(&block)
|
64
74
|
end
|
65
75
|
end
|
66
76
|
|
@@ -89,7 +99,7 @@ module Pact
|
|
89
99
|
end
|
90
100
|
|
91
101
|
def create_service_provider
|
92
|
-
Pact.configuration.provider = ServiceProviderConfig.new(application_version, branch, tags, publish_verification_results, &@app_block)
|
102
|
+
Pact.configuration.provider = ServiceProviderConfig.new(application_version, branch, tags, publish_verification_results, build_url, &@app_block)
|
93
103
|
end
|
94
104
|
end
|
95
105
|
end
|
@@ -3,7 +3,7 @@ module Pact
|
|
3
3
|
class PactURI
|
4
4
|
attr_reader :uri, :options, :metadata
|
5
5
|
|
6
|
-
def initialize
|
6
|
+
def initialize(uri, options = nil, metadata = nil)
|
7
7
|
@uri = uri
|
8
8
|
@options = options || {}
|
9
9
|
@metadata = metadata || {} # make sure it's not nil if nil is passed in
|
@@ -12,11 +12,11 @@ module Pact
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def set_up &block
|
15
|
-
ProviderStates.base_provider_state.register.register_set_up
|
15
|
+
ProviderStates.base_provider_state.register.register_set_up(&block)
|
16
16
|
end
|
17
17
|
|
18
18
|
def tear_down &block
|
19
|
-
ProviderStates.base_provider_state.register_tear_down
|
19
|
+
ProviderStates.base_provider_state.register_tear_down(&block)
|
20
20
|
end
|
21
21
|
|
22
22
|
def provider_states_for name, &block
|
@@ -60,7 +60,7 @@ module Pact
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def self.namespaced_name name, options = {}
|
63
|
-
|
63
|
+
options[:for] ? "#{options[:for]}.#{name}" : name
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
@@ -81,11 +81,11 @@ module Pact
|
|
81
81
|
|
82
82
|
dsl do
|
83
83
|
def set_up &block
|
84
|
-
self.register_set_up
|
84
|
+
self.register_set_up(&block)
|
85
85
|
end
|
86
86
|
|
87
87
|
def tear_down &block
|
88
|
-
self.register_tear_down
|
88
|
+
self.register_tear_down(&block)
|
89
89
|
end
|
90
90
|
|
91
91
|
def no_op
|
@@ -14,7 +14,13 @@ module Pact
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def call
|
17
|
-
VerificationResult.new(
|
17
|
+
VerificationResult.new(
|
18
|
+
publishable?,
|
19
|
+
!any_failures?,
|
20
|
+
Pact.configuration.provider.application_version,
|
21
|
+
test_results_hash_for_pact_uri,
|
22
|
+
Pact.configuration.provider.build_url
|
23
|
+
)
|
18
24
|
end
|
19
25
|
|
20
26
|
private
|
@@ -6,11 +6,12 @@ module Pact
|
|
6
6
|
class VerificationResult
|
7
7
|
attr_reader :success, :provider_application_version, :test_results_hash
|
8
8
|
|
9
|
-
def initialize publishable, success, provider_application_version, test_results_hash
|
9
|
+
def initialize publishable, success, provider_application_version, test_results_hash, build_url
|
10
10
|
@publishable = publishable
|
11
11
|
@success = success
|
12
12
|
@provider_application_version = provider_application_version
|
13
13
|
@test_results_hash = test_results_hash
|
14
|
+
@build_url = build_url
|
14
15
|
end
|
15
16
|
|
16
17
|
def publishable?
|
@@ -25,7 +26,8 @@ module Pact
|
|
25
26
|
{
|
26
27
|
success: success,
|
27
28
|
providerApplicationVersion: provider_application_version,
|
28
|
-
testResults: test_results_hash
|
29
|
+
testResults: test_results_hash,
|
30
|
+
buildUrl: @build_url
|
29
31
|
}.to_json(options)
|
30
32
|
end
|
31
33
|
|
data/lib/pact/utils/metrics.rb
CHANGED
@@ -9,13 +9,17 @@ module Pact
|
|
9
9
|
class Metrics
|
10
10
|
|
11
11
|
def self.report_metric(event, category, action, value = 1)
|
12
|
+
do_once_per_thread(:pact_metrics_message_shown) do
|
13
|
+
if track_events?
|
14
|
+
Pact.configuration.output_stream.puts "pact WARN: Please note: we are tracking events anonymously to gather important usage statistics like Pact-Ruby version
|
15
|
+
and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment
|
16
|
+
variable to 'true'."
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
12
20
|
in_thread do
|
13
21
|
begin
|
14
22
|
if track_events?
|
15
|
-
Pact.configuration.output_stream.puts "WARN: Please note: we are tracking events anonymously to gather important usage statistics like Pact-Ruby version
|
16
|
-
and operating system. To disable tracking, set the 'PACT_DO_NOT_TRACK' environment
|
17
|
-
variable to 'true'."
|
18
|
-
|
19
23
|
uri = URI('https://www.google-analytics.com/collect')
|
20
24
|
req = Net::HTTP::Post.new(uri)
|
21
25
|
req.set_form_data(create_tracking_event(event, category, action, value))
|
@@ -31,6 +35,7 @@ module Pact
|
|
31
35
|
end
|
32
36
|
|
33
37
|
private
|
38
|
+
|
34
39
|
def self.handle_error e
|
35
40
|
if ENV['PACT_METRICS_DEBUG'] == 'true'
|
36
41
|
Pact.configuration.output_stream.puts("DEBUG: #{e.inspect}\n" + e.backtrace.join("\n"))
|
@@ -43,6 +48,16 @@ module Pact
|
|
43
48
|
end
|
44
49
|
end
|
45
50
|
|
51
|
+
# not super safe to use the thread, but it's good enough for this usecase
|
52
|
+
def self.do_once_per_thread(key)
|
53
|
+
result = nil
|
54
|
+
if !Thread.current[key]
|
55
|
+
result = yield
|
56
|
+
end
|
57
|
+
Thread.current[key] = true
|
58
|
+
result
|
59
|
+
end
|
60
|
+
|
46
61
|
def self.create_tracking_event(event, category, action, value)
|
47
62
|
{
|
48
63
|
"v" => 1,
|
data/lib/pact/version.rb
CHANGED
data/pact.gemspec
CHANGED
@@ -27,20 +27,20 @@ Gem::Specification.new do |gem|
|
|
27
27
|
}
|
28
28
|
|
29
29
|
gem.add_runtime_dependency 'rspec', '~> 3.0'
|
30
|
-
gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '<
|
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', '~>
|
42
|
-
gem.add_development_dependency '
|
43
|
-
gem.add_development_dependency 'faraday', '~> 0
|
40
|
+
gem.add_development_dependency 'fakefs', '2.4' # 0.6.0 blows up
|
41
|
+
gem.add_development_dependency 'hashie', '~> 5.0'
|
42
|
+
gem.add_development_dependency 'faraday', '~>1.0', '<3.0'
|
43
|
+
gem.add_development_dependency 'faraday-multipart', '~> 1.0'
|
44
44
|
gem.add_development_dependency 'conventional-changelog', '~> 1.3'
|
45
45
|
gem.add_development_dependency 'bump', '~> 0.5'
|
46
46
|
gem.add_development_dependency 'pact-message', '~> 0.8'
|
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.64.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: 2023-12-20 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rspec
|
@@ -37,7 +37,7 @@ dependencies:
|
|
37
37
|
version: 0.6.3
|
38
38
|
- - "<"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 3.0.0
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
version: 0.6.3
|
48
48
|
- - "<"
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
50
|
+
version: 3.0.0
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
name: thor
|
53
53
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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,56 +170,62 @@ 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
|
-
name:
|
196
|
+
name: faraday
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
199
|
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: '
|
201
|
+
version: '1.0'
|
202
|
+
- - "<"
|
203
|
+
- !ruby/object:Gem::Version
|
204
|
+
version: '3.0'
|
202
205
|
type: :development
|
203
206
|
prerelease: false
|
204
207
|
version_requirements: !ruby/object:Gem::Requirement
|
205
208
|
requirements:
|
206
209
|
- - "~>"
|
207
210
|
- !ruby/object:Gem::Version
|
208
|
-
version: '
|
211
|
+
version: '1.0'
|
212
|
+
- - "<"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '3.0'
|
209
215
|
- !ruby/object:Gem::Dependency
|
210
|
-
name: faraday
|
216
|
+
name: faraday-multipart
|
211
217
|
requirement: !ruby/object:Gem::Requirement
|
212
218
|
requirements:
|
213
219
|
- - "~>"
|
214
220
|
- !ruby/object:Gem::Version
|
215
|
-
version: '0
|
221
|
+
version: '1.0'
|
216
222
|
type: :development
|
217
223
|
prerelease: false
|
218
224
|
version_requirements: !ruby/object:Gem::Requirement
|
219
225
|
requirements:
|
220
226
|
- - "~>"
|
221
227
|
- !ruby/object:Gem::Version
|
222
|
-
version: '0
|
228
|
+
version: '1.0'
|
223
229
|
- !ruby/object:Gem::Dependency
|
224
230
|
name: conventional-changelog
|
225
231
|
requirement: !ruby/object:Gem::Requirement
|
@@ -413,7 +419,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
413
419
|
- !ruby/object:Gem::Version
|
414
420
|
version: '0'
|
415
421
|
requirements: []
|
416
|
-
rubygems_version: 3.
|
422
|
+
rubygems_version: 3.5.1
|
417
423
|
signing_key:
|
418
424
|
specification_version: 4
|
419
425
|
summary: Enables consumer driven contract testing, providing a mock service and DSL
|