pact-v2 2.0.0.pre.preview2 → 2.0.0.pre.preview3
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 +13 -0
- data/lib/pact/provider/request.rb +14 -1
- data/lib/pact/v2/consumer/grpc_interaction_builder.rb +10 -3
- data/lib/pact/v2/consumer/http_interaction_builder.rb +1 -2
- data/lib/pact/v2/consumer/interaction_contents.rb +8 -0
- data/lib/pact/v2/consumer/message_interaction_builder.rb +9 -2
- data/lib/pact/v2/consumer/mock_server.rb +4 -3
- data/lib/pact/v2/consumer/pact_config/plugin_async_message.rb +26 -0
- data/lib/pact/v2/consumer/pact_config/plugin_http.rb +26 -0
- data/lib/pact/v2/consumer/pact_config/plugin_sync_message.rb +26 -0
- data/lib/pact/v2/consumer/pact_config.rb +6 -0
- data/lib/pact/v2/consumer/plugin_async_message_interaction_builder.rb +171 -0
- data/lib/pact/v2/consumer/plugin_http_interaction_builder.rb +201 -0
- data/lib/pact/v2/consumer/plugin_sync_message_interaction_builder.rb +180 -0
- data/lib/pact/v2/generators/base.rb +287 -0
- data/lib/pact/v2/generators.rb +49 -0
- data/lib/pact/v2/matchers/base.rb +13 -6
- data/lib/pact/v2/matchers/v3/content_type.rb +32 -0
- data/lib/pact/v2/matchers/v3/null.rb +16 -0
- data/lib/pact/v2/matchers/v3/semver.rb +23 -0
- data/lib/pact/v2/matchers/v3/values.rb +16 -0
- data/lib/pact/v2/matchers/v4/not_empty.rb +10 -3
- data/lib/pact/v2/matchers/v4/status_code.rb +17 -0
- data/lib/pact/v2/matchers.rb +16 -0
- data/lib/pact/v2/provider/pact_broker_proxy.rb +0 -5
- data/lib/pact/v2/rspec/support/pact_consumer_helpers.rb +14 -1
- data/lib/pact/v2/version.rb +2 -2
- data/lib/pact/version.rb +1 -1
- data/lib/pact.rb +7 -13
- data/pact.gemspec +57 -67
- metadata +203 -204
data/lib/pact/v2/matchers.rb
CHANGED
@@ -89,6 +89,22 @@ module Pact
|
|
89
89
|
def match_each_kv(template, key_matchers)
|
90
90
|
V4::EachKeyValue.new(key_matchers.is_a?(Array) ? key_matchers : [key_matchers], template)
|
91
91
|
end
|
92
|
+
|
93
|
+
def match_semver(template = nil)
|
94
|
+
V3::Semver.new(template)
|
95
|
+
end
|
96
|
+
|
97
|
+
def match_content_type(content_type, template = nil)
|
98
|
+
V3::ContentType.new(content_type, template: template)
|
99
|
+
end
|
100
|
+
|
101
|
+
def match_not_empty(template = nil)
|
102
|
+
V4::NotEmpty.new(template)
|
103
|
+
end
|
104
|
+
|
105
|
+
def match_status_code(template)
|
106
|
+
V4::StatusCode.new(template)
|
107
|
+
end
|
92
108
|
end
|
93
109
|
end
|
94
110
|
end
|
@@ -60,11 +60,6 @@ module Pact
|
|
60
60
|
logger.error("cannot parse broker response: #{ex.message}")
|
61
61
|
end
|
62
62
|
|
63
|
-
|
64
|
-
def set_description_prefix(interaction, prefix)
|
65
|
-
orig_description = interaction["description"]
|
66
|
-
interaction["description"] = "#{prefix} #{orig_description}" unless orig_description.start_with?(prefix)
|
67
|
-
end
|
68
63
|
end
|
69
64
|
end
|
70
65
|
end
|
@@ -5,6 +5,7 @@ require "json"
|
|
5
5
|
|
6
6
|
module PactV2ConsumerDsl
|
7
7
|
include Pact::V2::Matchers
|
8
|
+
include Pact::V2::Generators
|
8
9
|
|
9
10
|
module ClassMethods
|
10
11
|
def has_http_pact_between(consumer, provider, opts: {})
|
@@ -19,6 +20,18 @@ module PactV2ConsumerDsl
|
|
19
20
|
_has_pact_between(:message, consumer, provider, opts: opts)
|
20
21
|
end
|
21
22
|
|
23
|
+
def has_plugin_http_pact_between(consumer, provider, opts: {})
|
24
|
+
_has_pact_between(:plugin_http, consumer, provider, opts: opts)
|
25
|
+
end
|
26
|
+
|
27
|
+
def has_plugin_sync_message_pact_between(consumer, provider, opts: {})
|
28
|
+
_has_pact_between(:plugin_sync_message, consumer, provider, opts: opts)
|
29
|
+
end
|
30
|
+
|
31
|
+
def has_plugin_async_message_pact_between(consumer, provider, opts: {})
|
32
|
+
_has_pact_between(:plugin_async_message, consumer, provider, opts: opts)
|
33
|
+
end
|
34
|
+
|
22
35
|
def _has_pact_between(transport_type, consumer, provider, opts: {})
|
23
36
|
raise "has_#{transport_type}_pact_between is designed to be used with RSpec 3+" unless defined?(::RSpec)
|
24
37
|
raise "has_#{transport_type}_pact_between has to be declared at the top level of a suite" unless top_level?
|
@@ -52,13 +65,13 @@ module PactV2ConsumerDsl
|
|
52
65
|
|
53
66
|
yield(mock_server)
|
54
67
|
|
68
|
+
ensure
|
55
69
|
if mock_server.matched?
|
56
70
|
mock_server.write_pacts!(pact_config.pact_dir)
|
57
71
|
else
|
58
72
|
msg = mismatches_error_msg(mock_server)
|
59
73
|
raise Pact::V2::Consumer::HttpInteractionBuilder::InteractionMismatchesError.new(msg)
|
60
74
|
end
|
61
|
-
ensure
|
62
75
|
@used = true
|
63
76
|
mock_server&.cleanup
|
64
77
|
reset_pact
|
data/lib/pact/v2/version.rb
CHANGED
data/lib/pact/version.rb
CHANGED
data/lib/pact.rb
CHANGED
@@ -1,13 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
require 'pact/provider'
|
9
|
-
require 'pact/consumer_contract'
|
10
|
-
end
|
11
|
-
if ENV['PACT_RUBY_V2_ENABLE'] == 'true'
|
12
|
-
require 'pact/v2'
|
13
|
-
end
|
1
|
+
require 'pact/support'
|
2
|
+
require 'pact/version'
|
3
|
+
require 'pact/configuration'
|
4
|
+
require 'pact/consumer'
|
5
|
+
require 'pact/provider'
|
6
|
+
require 'pact/consumer_contract'
|
7
|
+
require 'pact/v2'
|
data/pact.gemspec
CHANGED
@@ -26,81 +26,71 @@ Gem::Specification.new do |gem|
|
|
26
26
|
'documentation_uri' => 'https://github.com/pact-foundation/pact-ruby/blob/master/README.md'
|
27
27
|
}
|
28
28
|
|
29
|
-
# Shared dependencies between v1 and v2
|
29
|
+
# Shared dev dependencies between v1 and v2
|
30
30
|
gem.add_development_dependency 'rake', '~> 13.0'
|
31
31
|
gem.add_development_dependency 'faraday', '~>2.0', '<3.0'
|
32
32
|
gem.add_development_dependency 'webmock', '~> 3.0'
|
33
33
|
|
34
|
-
#
|
35
|
-
|
36
|
-
# PACT_RUBY_V2_ENABLE=true to enable v2 (default is disabled)
|
37
|
-
# Both can be enabled at the same time, to enable transition
|
38
|
-
|
39
|
-
if ENV['PACT_RUBY_V1_ENABLE'] != 'false'
|
40
|
-
gem.add_runtime_dependency 'rspec', '~> 3.0'
|
41
|
-
gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 3.0.0'
|
42
|
-
gem.add_runtime_dependency 'thor', '>= 0.20', '< 2.0'
|
43
|
-
gem.add_runtime_dependency "rainbow", '~> 3.1'
|
44
|
-
gem.add_runtime_dependency 'string_pattern', '~> 2.0'
|
45
|
-
gem.add_runtime_dependency 'jsonpath', '~> 1.0'
|
34
|
+
# Shared runtime dependencies between v1 and v2
|
35
|
+
gem.add_runtime_dependency 'rspec', '~> 3.0'
|
46
36
|
|
47
|
-
|
48
|
-
gem.add_runtime_dependency 'pact-mock_service', '~> 3.0', '>= 3.3.1'
|
49
|
-
gem.add_development_dependency 'fakefs', '2.4'
|
50
|
-
gem.add_development_dependency 'hashie', '~> 5.0'
|
51
|
-
gem.add_development_dependency 'faraday-multipart', '~> 1.0'
|
52
|
-
gem.add_development_dependency 'conventional-changelog', '~> 1.3'
|
53
|
-
gem.add_development_dependency 'bump', '~> 0.5'
|
54
|
-
gem.add_development_dependency 'pact-message', '~> 0.8'
|
55
|
-
gem.add_development_dependency 'rspec-its', '~> 1.3'
|
56
|
-
gem.add_development_dependency 'webrick', '~> 1.8'
|
57
|
-
gem.add_development_dependency 'ostruct'
|
58
|
-
end
|
37
|
+
# Pact v2 dependencies
|
59
38
|
|
60
|
-
|
39
|
+
# Core dependencies (code loading)
|
40
|
+
gem.add_dependency "zeitwerk", "~> 2.3"
|
41
|
+
# For Pact support via Pact Rust Core
|
42
|
+
gem.add_dependency "pact-ffi", "~> 0.4.28"
|
43
|
+
# For Provider Side Verification
|
44
|
+
gem.add_dependency "rack"
|
45
|
+
gem.add_dependency "rack-proxy"
|
46
|
+
gem.add_dependency "webrick", '~> 1.8'
|
47
|
+
# For Rails support, including testing non rails apps
|
48
|
+
gem.add_development_dependency "combustion", ">= 1.3"
|
49
|
+
# For Kafka support
|
50
|
+
unless RUBY_PLATFORM =~ /win32|x64-mingw32|x64-mingw-ucrt/
|
51
|
+
# windows does not support librdkafka
|
52
|
+
gem.add_development_dependency "sbmt-kafka_consumer", ">= 2.0.1"
|
53
|
+
gem.add_development_dependency "sbmt-kafka_producer", ">= 1.0"
|
54
|
+
end
|
55
|
+
if ENV['X_PACT_DEVELOPMENT_RDKAFKA'] == 'true'
|
56
|
+
# darwin-arm64 prebuilt gems available from 0.20.0
|
57
|
+
gem.add_development_dependency "karafka-rdkafka", ">= 0.20.0"
|
58
|
+
end
|
59
|
+
# For gRPC support
|
60
|
+
gem.add_development_dependency "gruf", ">= 2.18"
|
61
|
+
gem.add_development_dependency "gruf-rspec", ">= 0.6.0"
|
62
|
+
# Testing tools
|
63
|
+
gem.add_development_dependency "rspec"
|
64
|
+
gem.add_development_dependency "rspec-rails"
|
65
|
+
gem.add_development_dependency "rspec_junit_formatter"
|
66
|
+
gem.add_development_dependency "vcr", ">= 6.0"
|
67
|
+
# Development and linting tools
|
68
|
+
gem.add_development_dependency "appraisal", ">= 2.4"
|
69
|
+
gem.add_development_dependency "bundler", ">= 2.2"
|
70
|
+
gem.add_development_dependency "rubocop"
|
71
|
+
gem.add_development_dependency "rubocop-rspec"
|
72
|
+
gem.add_development_dependency "rubocop-rails"
|
73
|
+
gem.add_development_dependency "rubocop-performance"
|
74
|
+
gem.add_development_dependency "standard", ">= 1.35.1"
|
61
75
|
|
62
|
-
# Core dependencies (code loading)
|
63
|
-
gem.add_dependency "zeitwerk", "~> 2.3"
|
64
|
-
|
65
|
-
# For Pact support via Pact Rust Core
|
66
|
-
gem.add_dependency "pact-ffi", "~> 0.4.28"
|
67
|
-
|
68
|
-
# For Provider Side Verification
|
69
|
-
gem.add_dependency "rack"
|
70
|
-
gem.add_dependency "rack-proxy"
|
71
|
-
gem.add_dependency "webrick", '~> 1.8'
|
72
|
-
|
73
|
-
# For Rails support, including testing non rails apps
|
74
|
-
gem.add_development_dependency "combustion", ">= 1.3"
|
75
76
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
if ENV['X_PACT_DEVELOPMENT_RDKAFKA'] == 'true'
|
83
|
-
# darwin-arm64 prebuilt gems available from 0.20.0
|
84
|
-
gem.add_development_dependency "karafka-rdkafka", ">= 0.20.0"
|
85
|
-
end
|
86
|
-
|
87
|
-
# For gRPC support
|
88
|
-
gem.add_development_dependency "gruf", ">= 2.18"
|
89
|
-
gem.add_development_dependency "gruf-rspec", ">= 0.6.0"
|
77
|
+
# Pact v1 dependencies
|
78
|
+
gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 3.0.0'
|
79
|
+
gem.add_runtime_dependency 'thor', '>= 0.20', '< 2.0'
|
80
|
+
gem.add_runtime_dependency "rainbow", '~> 3.1'
|
81
|
+
gem.add_runtime_dependency 'string_pattern', '~> 2.0'
|
82
|
+
gem.add_runtime_dependency 'jsonpath', '~> 1.0'
|
90
83
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
84
|
+
gem.add_runtime_dependency "pact-support" , "~> 1.21", ">=1.21.2"
|
85
|
+
gem.add_runtime_dependency 'pact-mock_service', '~> 3.0', '>= 3.3.1'
|
86
|
+
gem.add_development_dependency 'fakefs', '2.4'
|
87
|
+
gem.add_development_dependency 'hashie', '~> 5.0'
|
88
|
+
gem.add_development_dependency 'faraday-multipart', '~> 1.0'
|
89
|
+
gem.add_development_dependency 'conventional-changelog', '~> 1.3'
|
90
|
+
gem.add_development_dependency 'bump', '~> 0.5'
|
91
|
+
gem.add_development_dependency 'pact-message', '~> 0.8'
|
92
|
+
gem.add_development_dependency 'rspec-its', '~> 1.3'
|
93
|
+
# gem.add_development_dependency 'webrick', '~> 1.8' # webrick is a runtime dependency of pact v2, so included above
|
94
|
+
gem.add_development_dependency 'ostruct'
|
96
95
|
|
97
|
-
# Development and linting tools
|
98
|
-
gem.add_development_dependency "appraisal", ">= 2.4"
|
99
|
-
gem.add_development_dependency "bundler", ">= 2.2"
|
100
|
-
gem.add_development_dependency "rubocop"
|
101
|
-
gem.add_development_dependency "rubocop-rspec"
|
102
|
-
gem.add_development_dependency "rubocop-rails"
|
103
|
-
gem.add_development_dependency "rubocop-performance"
|
104
|
-
gem.add_development_dependency "standard", ">= 1.35.1"
|
105
|
-
end
|
106
96
|
end
|