pact 1.41.2 → 1.52.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 +5 -5
- data/CHANGELOG.md +212 -0
- data/lib/pact/cli/run_pact_verification.rb +23 -7
- data/lib/pact/cli/spec_criteria.rb +3 -0
- data/lib/pact/cli.rb +5 -0
- data/lib/pact/consumer/configuration/dsl.rb +0 -1
- data/lib/pact/consumer/consumer_contract_builder.rb +4 -0
- data/lib/pact/consumer/interaction_builder.rb +6 -0
- data/lib/pact/consumer/spec_hooks.rb +2 -2
- data/lib/pact/doc/sort_interactions.rb +2 -3
- data/lib/pact/hal/http_client.rb +11 -5
- data/lib/pact/hal/link.rb +50 -13
- data/lib/pact/hal/non_json_entity.rb +28 -0
- data/lib/pact/pact_broker/fetch_pact_uris_for_verification.rb +93 -0
- data/lib/pact/pact_broker/notices.rb +34 -0
- data/lib/pact/pact_broker/pact_selection_description.rb +24 -0
- data/lib/pact/pact_broker.rb +10 -4
- data/lib/pact/provider/configuration/dsl.rb +6 -1
- data/lib/pact/provider/configuration/message_provider_dsl.rb +59 -0
- data/lib/pact/provider/configuration/pact_verification_from_broker.rb +22 -4
- data/lib/pact/provider/configuration/service_provider_dsl.rb +1 -1
- data/lib/pact/provider/help/content.rb +4 -4
- data/lib/pact/provider/help/pact_diff.rb +10 -34
- data/lib/pact/provider/help/write.rb +6 -7
- data/lib/pact/provider/pact_helper_locator.rb +0 -1
- data/lib/pact/provider/pact_source.rb +10 -1
- data/lib/pact/provider/pact_spec_runner.rb +24 -16
- data/lib/pact/provider/pact_uri.rb +8 -6
- data/lib/pact/provider/request.rb +1 -1
- data/lib/pact/provider/rspec/formatter_rspec_3.rb +21 -6
- data/lib/pact/provider/rspec/json_formatter.rb +100 -0
- data/lib/pact/provider/rspec/pact_broker_formatter.rb +1 -1
- data/lib/pact/provider/rspec.rb +17 -7
- data/lib/pact/provider/test_methods.rb +9 -3
- data/lib/pact/provider/verification_results/publish.rb +3 -0
- data/lib/pact/provider/verification_results/publish_all.rb +14 -1
- data/lib/pact/provider/verification_results/verification_result.rb +1 -4
- data/lib/pact/provider/world.rb +1 -1
- data/lib/pact/tasks/task_helper.rb +6 -1
- data/lib/pact/version.rb +1 -1
- data/pact.gemspec +11 -13
- metadata +59 -56
- data/lib/pact/pact_broker/fetch_pending_pacts.rb +0 -58
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'rspec/core/formatters/json_formatter'
|
|
2
|
+
|
|
3
|
+
module Pact
|
|
4
|
+
module Provider
|
|
5
|
+
module RSpec
|
|
6
|
+
class JsonFormatter < ::RSpec::Core::Formatters::JsonFormatter
|
|
7
|
+
::RSpec::Core::Formatters.register self, :message, :dump_summary, :dump_profile, :stop, :seed, :close
|
|
8
|
+
|
|
9
|
+
def dump_summary(summary)
|
|
10
|
+
super(create_custom_summary(summary))
|
|
11
|
+
output_hash[:summary][:pacts] = pacts(summary)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def format_example(example)
|
|
15
|
+
{
|
|
16
|
+
:id => example.id,
|
|
17
|
+
:interaction_index => example.metadata[:pact_interaction].index,
|
|
18
|
+
:description => example.description,
|
|
19
|
+
:full_description => example.full_description,
|
|
20
|
+
:status => calculate_status(example),
|
|
21
|
+
:file_path => example.metadata[:file_path],
|
|
22
|
+
:line_number => example.metadata[:line_number],
|
|
23
|
+
:run_time => example.execution_result.run_time,
|
|
24
|
+
:mismatches => extract_differences(example),
|
|
25
|
+
:pact_url => example.metadata[:pact_uri].uri
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def stop(notification)
|
|
30
|
+
output_hash[:examples] = notification.examples.map do |example|
|
|
31
|
+
format_example(example).tap do |hash|
|
|
32
|
+
e = example.exception
|
|
33
|
+
if e
|
|
34
|
+
hash[:exception] = {
|
|
35
|
+
class: e.class.name,
|
|
36
|
+
message: e.message,
|
|
37
|
+
}
|
|
38
|
+
# No point providing a backtrace for a mismatch, too much noise
|
|
39
|
+
if !e.is_a?(::RSpec::Expectations::ExpectationNotMetError)
|
|
40
|
+
hash[:exception][:backtrace]
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def calculate_status(example)
|
|
48
|
+
if example.execution_result.status == :failed && example.metadata[:pact_ignore_failures]
|
|
49
|
+
'pending'
|
|
50
|
+
else
|
|
51
|
+
example.execution_result.status.to_s
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# There will most likely be only one pact associated with this RSpec execution, because
|
|
56
|
+
# the most likely user of this formatter is the Go implementation that parses the JSON
|
|
57
|
+
# and builds Go tests from them.
|
|
58
|
+
# If the JSON formatter is used by someone else and they have multiple pacts, all the notices
|
|
59
|
+
# for the pacts will be mushed together in one collection, so it will be hard to know which notice
|
|
60
|
+
# belongs to which pact.
|
|
61
|
+
def pacts(summary)
|
|
62
|
+
unique_pact_metadatas(summary).collect do | example_metadata |
|
|
63
|
+
pact_uri = example_metadata[:pact_uri]
|
|
64
|
+
notices = (pact_uri.metadata[:notices] && pact_uri.metadata[:notices].before_verification_notices) || []
|
|
65
|
+
{
|
|
66
|
+
notices: notices,
|
|
67
|
+
url: pact_uri.uri,
|
|
68
|
+
consumer_name: example_metadata[:pact_consumer_contract].consumer.name,
|
|
69
|
+
provider_name: example_metadata[:pact_consumer_contract].provider.name,
|
|
70
|
+
short_description: pact_uri.metadata[:short_description]
|
|
71
|
+
}
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def unique_pact_metadatas(summary)
|
|
76
|
+
summary.examples.collect(&:metadata).group_by{ | metadata | metadata[:pact_uri].uri }.values.collect(&:first)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def create_custom_summary(summary)
|
|
80
|
+
::RSpec::Core::Notifications::SummaryNotification.new(
|
|
81
|
+
summary.duration,
|
|
82
|
+
summary.examples,
|
|
83
|
+
summary.examples.select{ | example | example.execution_result.status == :failed && !example.metadata[:pact_ignore_failures] },
|
|
84
|
+
summary.examples.select{ | example | example.execution_result.status == :failed && example.metadata[:pact_ignore_failures] },
|
|
85
|
+
summary.load_time,
|
|
86
|
+
summary.errors_outside_of_examples_count
|
|
87
|
+
)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def extract_differences(example)
|
|
91
|
+
if example.metadata[:pact_diff]
|
|
92
|
+
Pact::Matchers::ExtractDiffMessages.call(example.metadata[:pact_diff]).to_a
|
|
93
|
+
else
|
|
94
|
+
[]
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
@@ -66,7 +66,7 @@ module Pact
|
|
|
66
66
|
if example.metadata[:pact_diff]
|
|
67
67
|
hash[:differences] = Pact::Matchers::ExtractDiffMessages.call(example.metadata[:pact_diff])
|
|
68
68
|
.to_a
|
|
69
|
-
.collect{ | description | {description: description} }
|
|
69
|
+
.collect{ | description | { description: description } }
|
|
70
70
|
end
|
|
71
71
|
end
|
|
72
72
|
end
|
data/lib/pact/provider/rspec.rb
CHANGED
|
@@ -17,16 +17,24 @@ module Pact
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
module ClassMethods
|
|
20
|
+
EMPTY_ARRAY = [].freeze
|
|
20
21
|
|
|
21
22
|
include ::RSpec::Core::DSL
|
|
22
23
|
|
|
23
|
-
def honour_pactfile
|
|
24
|
-
|
|
25
|
-
Pact.configuration.output_stream.puts "INFO: Reading
|
|
26
|
-
|
|
24
|
+
def honour_pactfile pact_source, pact_json, options
|
|
25
|
+
pact_uri = pact_source.uri
|
|
26
|
+
Pact.configuration.output_stream.puts "INFO: Reading pact at #{pact_uri}"
|
|
27
|
+
if pact_uri.metadata[:notices]
|
|
28
|
+
pact_uri.metadata[:notices].before_verification_notices_text.each do | text |
|
|
29
|
+
Pact.configuration.output_stream.puts("DEBUG: #{text}")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Pact.configuration.output_stream.puts "DEBUG: Filtering interactions by: #{options[:criteria]}" if options[:criteria] && options[:criteria].any?
|
|
27
34
|
consumer_contract = Pact::ConsumerContract.from_json(pact_json)
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
suffix = pact_uri.metadata[:pending] ? " [PENDING]": ""
|
|
36
|
+
::RSpec.describe "Verifying a pact between #{consumer_contract.consumer.name} and #{consumer_contract.provider.name}#{suffix}", pactfile_uri: pact_uri do
|
|
37
|
+
honour_consumer_contract consumer_contract, options.merge(pact_json: pact_json, pact_uri: pact_uri, pact_source: pact_source, consumer_contract: consumer_contract)
|
|
30
38
|
end
|
|
31
39
|
end
|
|
32
40
|
|
|
@@ -74,7 +82,9 @@ module Pact
|
|
|
74
82
|
pact_interaction: interaction,
|
|
75
83
|
pact_interaction_example_description: interaction_description_for_rerun_command(interaction),
|
|
76
84
|
pact_uri: options[:pact_uri],
|
|
77
|
-
|
|
85
|
+
pact_source: options[:pact_source],
|
|
86
|
+
pact_ignore_failures: options[:pact_uri].metadata[:pending] || options[:ignore_failures],
|
|
87
|
+
pact_consumer_contract: options[:consumer_contract]
|
|
78
88
|
}
|
|
79
89
|
|
|
80
90
|
describe description_for(interaction), metadata do
|
|
@@ -21,7 +21,11 @@ module Pact
|
|
|
21
21
|
|
|
22
22
|
logger.info "Sending #{request.method.upcase} request to path: \"#{request.path}\" with headers: #{request.headers}, see debug logs for body"
|
|
23
23
|
logger.debug "body :#{request.body}"
|
|
24
|
-
response = self.
|
|
24
|
+
response = if self.respond_to?(:custom_request)
|
|
25
|
+
self.custom_request(request.method.upcase, *args)
|
|
26
|
+
else
|
|
27
|
+
self.send(request.method.downcase, *args)
|
|
28
|
+
end
|
|
25
29
|
logger.info "Received response with status: #{response.status}, headers: #{response.headers}, see debug logs for body"
|
|
26
30
|
logger.debug "body: #{response.body}"
|
|
27
31
|
end
|
|
@@ -29,7 +33,9 @@ module Pact
|
|
|
29
33
|
def parse_body_from_response rack_response
|
|
30
34
|
case rack_response.headers['Content-Type']
|
|
31
35
|
when /json/
|
|
32
|
-
|
|
36
|
+
# For https://github.com/pact-foundation/pact-net/issues/237
|
|
37
|
+
# Only required for the pact-ruby-standalone ¯\_(ツ)_/¯
|
|
38
|
+
JSON.load("[#{rack_response.body}]").first
|
|
33
39
|
else
|
|
34
40
|
rack_response.body
|
|
35
41
|
end
|
|
@@ -46,7 +52,7 @@ module Pact
|
|
|
46
52
|
def tear_down_provider_states provider_states, consumer, options = {}
|
|
47
53
|
# If there are no provider state, execute with an nil state to ensure global and base states are executed
|
|
48
54
|
Pact.configuration.provider_state_tear_down.call(nil, consumer, options) if provider_states.nil? || provider_states.empty?
|
|
49
|
-
provider_states.
|
|
55
|
+
provider_states.reverse_each do | provider_state |
|
|
50
56
|
Pact.configuration.provider_state_tear_down.call(provider_state.name, consumer, options.merge(params: provider_state.params))
|
|
51
57
|
end
|
|
52
58
|
end
|
|
@@ -17,7 +17,12 @@ module Pact
|
|
|
17
17
|
|
|
18
18
|
def call
|
|
19
19
|
verification_results.collect do | (pact_source, verification_result) |
|
|
20
|
-
|
|
20
|
+
published = false
|
|
21
|
+
begin
|
|
22
|
+
published = Publish.call(pact_source, verification_result)
|
|
23
|
+
ensure
|
|
24
|
+
print_after_verification_notices(pact_source, verification_result, published)
|
|
25
|
+
end
|
|
21
26
|
end
|
|
22
27
|
end
|
|
23
28
|
|
|
@@ -29,6 +34,14 @@ module Pact
|
|
|
29
34
|
end
|
|
30
35
|
end
|
|
31
36
|
|
|
37
|
+
def print_after_verification_notices(pact_source, verification_result, published)
|
|
38
|
+
if pact_source.uri.metadata[:notices]
|
|
39
|
+
pact_source.uri.metadata[:notices].after_verification_notices_text(verification_result.success, published).each do | text |
|
|
40
|
+
Pact.configuration.output_stream.puts "DEBUG: #{text}"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
32
45
|
attr_reader :pact_sources, :test_results_hash
|
|
33
46
|
end
|
|
34
47
|
end
|
|
@@ -4,6 +4,7 @@ module Pact
|
|
|
4
4
|
module Provider
|
|
5
5
|
module VerificationResults
|
|
6
6
|
class VerificationResult
|
|
7
|
+
attr_reader :success, :provider_application_version, :test_results_hash
|
|
7
8
|
|
|
8
9
|
def initialize publishable, success, provider_application_version, test_results_hash
|
|
9
10
|
@publishable = publishable
|
|
@@ -31,10 +32,6 @@ module Pact
|
|
|
31
32
|
def to_s
|
|
32
33
|
"[success: #{success}, providerApplicationVersion: #{provider_application_version}]"
|
|
33
34
|
end
|
|
34
|
-
|
|
35
|
-
private
|
|
36
|
-
|
|
37
|
-
attr_reader :success, :provider_application_version, :test_results_hash
|
|
38
35
|
end
|
|
39
36
|
end
|
|
40
37
|
end
|
data/lib/pact/provider/world.rb
CHANGED
|
@@ -7,6 +7,7 @@ module Pact
|
|
|
7
7
|
module TaskHelper
|
|
8
8
|
|
|
9
9
|
PACT_INTERACTION_RERUN_COMMAND = "bundle exec rake pact:verify:at[<PACT_URI>] PACT_DESCRIPTION=\"<PACT_DESCRIPTION>\" PACT_PROVIDER_STATE=\"<PACT_PROVIDER_STATE>\""
|
|
10
|
+
PACT_INTERACTION_RERUN_COMMAND_FOR_BROKER = "bundle exec rake pact:verify:at[<PACT_URI>] PACT_BROKER_INTERACTION_ID=\"<PACT_BROKER_INTERACTION_ID>\""
|
|
10
11
|
|
|
11
12
|
extend self
|
|
12
13
|
|
|
@@ -34,6 +35,8 @@ module Pact
|
|
|
34
35
|
command_parts << "--backtrace" if ENV['BACKTRACE'] == 'true'
|
|
35
36
|
command_parts << "--description #{Shellwords.escape(ENV['PACT_DESCRIPTION'])}" if ENV['PACT_DESCRIPTION']
|
|
36
37
|
command_parts << "--provider-state #{Shellwords.escape(ENV['PACT_PROVIDER_STATE'])}" if ENV['PACT_PROVIDER_STATE']
|
|
38
|
+
command_parts << "--pact-broker-interaction-id #{Shellwords.escape(ENV['PACT_BROKER_INTERACTION_ID'])}" if ENV['PACT_BROKER_INTERACTION_ID']
|
|
39
|
+
command_parts << "--interaction-index #{Shellwords.escape(ENV['PACT_INTERACTION_INDEX'])}" if ENV['PACT_INTERACTION_INDEX']
|
|
37
40
|
command_parts.flatten.join(" ")
|
|
38
41
|
end
|
|
39
42
|
|
|
@@ -41,7 +44,9 @@ module Pact
|
|
|
41
44
|
Pact.configuration.output_stream.puts command
|
|
42
45
|
temporarily_set_env_var 'PACT_EXECUTING_LANGUAGE', 'ruby' do
|
|
43
46
|
temporarily_set_env_var 'PACT_INTERACTION_RERUN_COMMAND', PACT_INTERACTION_RERUN_COMMAND do
|
|
44
|
-
|
|
47
|
+
temporarily_set_env_var 'PACT_INTERACTION_RERUN_COMMAND_FOR_BROKER', PACT_INTERACTION_RERUN_COMMAND_FOR_BROKER do
|
|
48
|
+
exit_status = system(command) ? 0 : 1
|
|
49
|
+
end
|
|
45
50
|
end
|
|
46
51
|
end
|
|
47
52
|
end
|
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,36 +14,35 @@ 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', '~> 3.0'
|
|
31
30
|
gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 2.0.0'
|
|
32
|
-
gem.add_runtime_dependency 'thor'
|
|
33
|
-
gem.add_runtime_dependency '
|
|
34
|
-
gem.add_runtime_dependency 'webrick'
|
|
31
|
+
gem.add_runtime_dependency 'thor', '>= 0.20', '< 2.0'
|
|
32
|
+
gem.add_runtime_dependency 'webrick', '~> 1.3'
|
|
35
33
|
gem.add_runtime_dependency 'term-ansicolor', '~> 1.0'
|
|
36
34
|
|
|
37
35
|
gem.add_runtime_dependency 'pact-support', '~> 1.9'
|
|
38
|
-
gem.add_runtime_dependency 'pact-mock_service', '~> 3.0'
|
|
36
|
+
gem.add_runtime_dependency 'pact-mock_service', '~> 3.0', '>= 3.3.1'
|
|
39
37
|
|
|
40
|
-
gem.add_development_dependency 'rake', '~>
|
|
38
|
+
gem.add_development_dependency 'rake', '~> 13.0'
|
|
41
39
|
gem.add_development_dependency 'webmock', '~> 3.0'
|
|
42
|
-
#gem.add_development_dependency 'pry-byebug'
|
|
43
40
|
gem.add_development_dependency 'fakefs', '0.5' # 0.6.0 blows up
|
|
44
41
|
gem.add_development_dependency 'hashie', '~> 2.0'
|
|
45
|
-
gem.add_development_dependency 'activesupport'
|
|
42
|
+
gem.add_development_dependency 'activesupport', '~> 5.2'
|
|
46
43
|
gem.add_development_dependency 'faraday', '~> 0.13'
|
|
47
|
-
gem.add_development_dependency 'appraisal', '~> 2.2'
|
|
48
44
|
gem.add_development_dependency 'conventional-changelog', '~> 1.3'
|
|
49
45
|
gem.add_development_dependency 'bump', '~> 0.5'
|
|
46
|
+
gem.add_development_dependency 'pact-message', '~> 0.6'
|
|
47
|
+
gem.add_development_dependency 'rspec-its', '~> 1.3'
|
|
50
48
|
end
|
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.52.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- James Fraser
|
|
@@ -12,36 +12,22 @@ authors:
|
|
|
12
12
|
autorequire:
|
|
13
13
|
bindir: bin
|
|
14
14
|
cert_chain: []
|
|
15
|
-
date:
|
|
15
|
+
date: 2020-09-10 00:00:00.000000000 Z
|
|
16
16
|
dependencies:
|
|
17
17
|
- !ruby/object:Gem::Dependency
|
|
18
|
-
name:
|
|
18
|
+
name: rspec
|
|
19
19
|
requirement: !ruby/object:Gem::Requirement
|
|
20
20
|
requirements:
|
|
21
21
|
- - "~>"
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
|
-
version: 0
|
|
23
|
+
version: '3.0'
|
|
24
24
|
type: :runtime
|
|
25
25
|
prerelease: false
|
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
|
27
27
|
requirements:
|
|
28
28
|
- - "~>"
|
|
29
29
|
- !ruby/object:Gem::Version
|
|
30
|
-
version: 0
|
|
31
|
-
- !ruby/object:Gem::Dependency
|
|
32
|
-
name: rspec
|
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
|
34
|
-
requirements:
|
|
35
|
-
- - ">="
|
|
36
|
-
- !ruby/object:Gem::Version
|
|
37
|
-
version: '2.14'
|
|
38
|
-
type: :runtime
|
|
39
|
-
prerelease: false
|
|
40
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
-
requirements:
|
|
42
|
-
- - ">="
|
|
43
|
-
- !ruby/object:Gem::Version
|
|
44
|
-
version: '2.14'
|
|
30
|
+
version: '3.0'
|
|
45
31
|
- !ruby/object:Gem::Dependency
|
|
46
32
|
name: rack-test
|
|
47
33
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -68,42 +54,34 @@ dependencies:
|
|
|
68
54
|
requirements:
|
|
69
55
|
- - ">="
|
|
70
56
|
- !ruby/object:Gem::Version
|
|
71
|
-
version: '0'
|
|
57
|
+
version: '0.20'
|
|
58
|
+
- - "<"
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '2.0'
|
|
72
61
|
type: :runtime
|
|
73
62
|
prerelease: false
|
|
74
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
75
64
|
requirements:
|
|
76
65
|
- - ">="
|
|
77
66
|
- !ruby/object:Gem::Version
|
|
78
|
-
version: '0'
|
|
79
|
-
-
|
|
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
|
-
- - ">"
|
|
67
|
+
version: '0.20'
|
|
68
|
+
- - "<"
|
|
91
69
|
- !ruby/object:Gem::Version
|
|
92
|
-
version:
|
|
70
|
+
version: '2.0'
|
|
93
71
|
- !ruby/object:Gem::Dependency
|
|
94
72
|
name: webrick
|
|
95
73
|
requirement: !ruby/object:Gem::Requirement
|
|
96
74
|
requirements:
|
|
97
|
-
- - "
|
|
75
|
+
- - "~>"
|
|
98
76
|
- !ruby/object:Gem::Version
|
|
99
|
-
version: '
|
|
77
|
+
version: '1.3'
|
|
100
78
|
type: :runtime
|
|
101
79
|
prerelease: false
|
|
102
80
|
version_requirements: !ruby/object:Gem::Requirement
|
|
103
81
|
requirements:
|
|
104
|
-
- - "
|
|
82
|
+
- - "~>"
|
|
105
83
|
- !ruby/object:Gem::Version
|
|
106
|
-
version: '
|
|
84
|
+
version: '1.3'
|
|
107
85
|
- !ruby/object:Gem::Dependency
|
|
108
86
|
name: term-ansicolor
|
|
109
87
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -139,6 +117,9 @@ dependencies:
|
|
|
139
117
|
- - "~>"
|
|
140
118
|
- !ruby/object:Gem::Version
|
|
141
119
|
version: '3.0'
|
|
120
|
+
- - ">="
|
|
121
|
+
- !ruby/object:Gem::Version
|
|
122
|
+
version: 3.3.1
|
|
142
123
|
type: :runtime
|
|
143
124
|
prerelease: false
|
|
144
125
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -146,20 +127,23 @@ dependencies:
|
|
|
146
127
|
- - "~>"
|
|
147
128
|
- !ruby/object:Gem::Version
|
|
148
129
|
version: '3.0'
|
|
130
|
+
- - ">="
|
|
131
|
+
- !ruby/object:Gem::Version
|
|
132
|
+
version: 3.3.1
|
|
149
133
|
- !ruby/object:Gem::Dependency
|
|
150
134
|
name: rake
|
|
151
135
|
requirement: !ruby/object:Gem::Requirement
|
|
152
136
|
requirements:
|
|
153
137
|
- - "~>"
|
|
154
138
|
- !ruby/object:Gem::Version
|
|
155
|
-
version:
|
|
139
|
+
version: '13.0'
|
|
156
140
|
type: :development
|
|
157
141
|
prerelease: false
|
|
158
142
|
version_requirements: !ruby/object:Gem::Requirement
|
|
159
143
|
requirements:
|
|
160
144
|
- - "~>"
|
|
161
145
|
- !ruby/object:Gem::Version
|
|
162
|
-
version:
|
|
146
|
+
version: '13.0'
|
|
163
147
|
- !ruby/object:Gem::Dependency
|
|
164
148
|
name: webmock
|
|
165
149
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -206,16 +190,16 @@ dependencies:
|
|
|
206
190
|
name: activesupport
|
|
207
191
|
requirement: !ruby/object:Gem::Requirement
|
|
208
192
|
requirements:
|
|
209
|
-
- - "
|
|
193
|
+
- - "~>"
|
|
210
194
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: '
|
|
195
|
+
version: '5.2'
|
|
212
196
|
type: :development
|
|
213
197
|
prerelease: false
|
|
214
198
|
version_requirements: !ruby/object:Gem::Requirement
|
|
215
199
|
requirements:
|
|
216
|
-
- - "
|
|
200
|
+
- - "~>"
|
|
217
201
|
- !ruby/object:Gem::Version
|
|
218
|
-
version: '
|
|
202
|
+
version: '5.2'
|
|
219
203
|
- !ruby/object:Gem::Dependency
|
|
220
204
|
name: faraday
|
|
221
205
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -231,47 +215,61 @@ dependencies:
|
|
|
231
215
|
- !ruby/object:Gem::Version
|
|
232
216
|
version: '0.13'
|
|
233
217
|
- !ruby/object:Gem::Dependency
|
|
234
|
-
name:
|
|
218
|
+
name: conventional-changelog
|
|
235
219
|
requirement: !ruby/object:Gem::Requirement
|
|
236
220
|
requirements:
|
|
237
221
|
- - "~>"
|
|
238
222
|
- !ruby/object:Gem::Version
|
|
239
|
-
version: '
|
|
223
|
+
version: '1.3'
|
|
240
224
|
type: :development
|
|
241
225
|
prerelease: false
|
|
242
226
|
version_requirements: !ruby/object:Gem::Requirement
|
|
243
227
|
requirements:
|
|
244
228
|
- - "~>"
|
|
245
229
|
- !ruby/object:Gem::Version
|
|
246
|
-
version: '
|
|
230
|
+
version: '1.3'
|
|
247
231
|
- !ruby/object:Gem::Dependency
|
|
248
|
-
name:
|
|
232
|
+
name: bump
|
|
249
233
|
requirement: !ruby/object:Gem::Requirement
|
|
250
234
|
requirements:
|
|
251
235
|
- - "~>"
|
|
252
236
|
- !ruby/object:Gem::Version
|
|
253
|
-
version: '
|
|
237
|
+
version: '0.5'
|
|
254
238
|
type: :development
|
|
255
239
|
prerelease: false
|
|
256
240
|
version_requirements: !ruby/object:Gem::Requirement
|
|
257
241
|
requirements:
|
|
258
242
|
- - "~>"
|
|
259
243
|
- !ruby/object:Gem::Version
|
|
260
|
-
version: '
|
|
244
|
+
version: '0.5'
|
|
261
245
|
- !ruby/object:Gem::Dependency
|
|
262
|
-
name:
|
|
246
|
+
name: pact-message
|
|
263
247
|
requirement: !ruby/object:Gem::Requirement
|
|
264
248
|
requirements:
|
|
265
249
|
- - "~>"
|
|
266
250
|
- !ruby/object:Gem::Version
|
|
267
|
-
version: '0.
|
|
251
|
+
version: '0.6'
|
|
268
252
|
type: :development
|
|
269
253
|
prerelease: false
|
|
270
254
|
version_requirements: !ruby/object:Gem::Requirement
|
|
271
255
|
requirements:
|
|
272
256
|
- - "~>"
|
|
273
257
|
- !ruby/object:Gem::Version
|
|
274
|
-
version: '0.
|
|
258
|
+
version: '0.6'
|
|
259
|
+
- !ruby/object:Gem::Dependency
|
|
260
|
+
name: rspec-its
|
|
261
|
+
requirement: !ruby/object:Gem::Requirement
|
|
262
|
+
requirements:
|
|
263
|
+
- - "~>"
|
|
264
|
+
- !ruby/object:Gem::Version
|
|
265
|
+
version: '1.3'
|
|
266
|
+
type: :development
|
|
267
|
+
prerelease: false
|
|
268
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
269
|
+
requirements:
|
|
270
|
+
- - "~>"
|
|
271
|
+
- !ruby/object:Gem::Version
|
|
272
|
+
version: '1.3'
|
|
275
273
|
description: Enables consumer driven contract testing, providing a mock service and
|
|
276
274
|
DSL for the consumer project, and interaction playback and verification for the
|
|
277
275
|
service provider project.
|
|
@@ -322,14 +320,18 @@ files:
|
|
|
322
320
|
- lib/pact/hal/entity.rb
|
|
323
321
|
- lib/pact/hal/http_client.rb
|
|
324
322
|
- lib/pact/hal/link.rb
|
|
323
|
+
- lib/pact/hal/non_json_entity.rb
|
|
325
324
|
- lib/pact/pact_broker.rb
|
|
325
|
+
- lib/pact/pact_broker/fetch_pact_uris_for_verification.rb
|
|
326
326
|
- lib/pact/pact_broker/fetch_pacts.rb
|
|
327
|
-
- lib/pact/pact_broker/
|
|
327
|
+
- lib/pact/pact_broker/notices.rb
|
|
328
|
+
- lib/pact/pact_broker/pact_selection_description.rb
|
|
328
329
|
- lib/pact/project_root.rb
|
|
329
330
|
- lib/pact/provider.rb
|
|
330
331
|
- lib/pact/provider/configuration.rb
|
|
331
332
|
- lib/pact/provider/configuration/configuration_extension.rb
|
|
332
333
|
- lib/pact/provider/configuration/dsl.rb
|
|
334
|
+
- lib/pact/provider/configuration/message_provider_dsl.rb
|
|
333
335
|
- lib/pact/provider/configuration/pact_verification.rb
|
|
334
336
|
- lib/pact/provider/configuration/pact_verification_from_broker.rb
|
|
335
337
|
- lib/pact/provider/configuration/service_provider_config.rb
|
|
@@ -353,6 +355,7 @@ files:
|
|
|
353
355
|
- lib/pact/provider/rspec/custom_options_file
|
|
354
356
|
- lib/pact/provider/rspec/formatter_rspec_2.rb
|
|
355
357
|
- lib/pact/provider/rspec/formatter_rspec_3.rb
|
|
358
|
+
- lib/pact/provider/rspec/json_formatter.rb
|
|
356
359
|
- lib/pact/provider/rspec/matchers.rb
|
|
357
360
|
- lib/pact/provider/rspec/pact_broker_formatter.rb
|
|
358
361
|
- lib/pact/provider/state/provider_state.rb
|
|
@@ -381,6 +384,7 @@ homepage: https://github.com/pact-foundation/pact-ruby
|
|
|
381
384
|
licenses:
|
|
382
385
|
- MIT
|
|
383
386
|
metadata:
|
|
387
|
+
changelog_uri: https://github.com/pact-foundation/pact-ruby/blob/master/CHANGELOG.md
|
|
384
388
|
source_code_uri: https://github.com/pact-foundation/pact-ruby
|
|
385
389
|
bug_tracker_uri: https://github.com/pact-foundation/pact-ruby/issues
|
|
386
390
|
documentation_uri: https://github.com/pact-foundation/pact-ruby/blob/master/README.md
|
|
@@ -399,8 +403,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
399
403
|
- !ruby/object:Gem::Version
|
|
400
404
|
version: '0'
|
|
401
405
|
requirements: []
|
|
402
|
-
|
|
403
|
-
rubygems_version: 2.6.14.3
|
|
406
|
+
rubygems_version: 3.1.4
|
|
404
407
|
signing_key:
|
|
405
408
|
specification_version: 4
|
|
406
409
|
summary: Enables consumer driven contract testing, providing a mock service and DSL
|