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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +13 -0
  3. data/lib/pact/provider/request.rb +14 -1
  4. data/lib/pact/v2/consumer/grpc_interaction_builder.rb +10 -3
  5. data/lib/pact/v2/consumer/http_interaction_builder.rb +1 -2
  6. data/lib/pact/v2/consumer/interaction_contents.rb +8 -0
  7. data/lib/pact/v2/consumer/message_interaction_builder.rb +9 -2
  8. data/lib/pact/v2/consumer/mock_server.rb +4 -3
  9. data/lib/pact/v2/consumer/pact_config/plugin_async_message.rb +26 -0
  10. data/lib/pact/v2/consumer/pact_config/plugin_http.rb +26 -0
  11. data/lib/pact/v2/consumer/pact_config/plugin_sync_message.rb +26 -0
  12. data/lib/pact/v2/consumer/pact_config.rb +6 -0
  13. data/lib/pact/v2/consumer/plugin_async_message_interaction_builder.rb +171 -0
  14. data/lib/pact/v2/consumer/plugin_http_interaction_builder.rb +201 -0
  15. data/lib/pact/v2/consumer/plugin_sync_message_interaction_builder.rb +180 -0
  16. data/lib/pact/v2/generators/base.rb +287 -0
  17. data/lib/pact/v2/generators.rb +49 -0
  18. data/lib/pact/v2/matchers/base.rb +13 -6
  19. data/lib/pact/v2/matchers/v3/content_type.rb +32 -0
  20. data/lib/pact/v2/matchers/v3/null.rb +16 -0
  21. data/lib/pact/v2/matchers/v3/semver.rb +23 -0
  22. data/lib/pact/v2/matchers/v3/values.rb +16 -0
  23. data/lib/pact/v2/matchers/v4/not_empty.rb +10 -3
  24. data/lib/pact/v2/matchers/v4/status_code.rb +17 -0
  25. data/lib/pact/v2/matchers.rb +16 -0
  26. data/lib/pact/v2/provider/pact_broker_proxy.rb +0 -5
  27. data/lib/pact/v2/rspec/support/pact_consumer_helpers.rb +14 -1
  28. data/lib/pact/v2/version.rb +2 -2
  29. data/lib/pact/version.rb +1 -1
  30. data/lib/pact.rb +7 -13
  31. data/pact.gemspec +57 -67
  32. metadata +203 -204
@@ -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
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Pact
4
4
  module V2
5
- VERSION = '2.0.0-preview2'
6
- Version = '2.0.0-preview2'
5
+ VERSION = '0.12.0'
6
+ Version = '0.12.0'
7
7
  end
8
8
  end
data/lib/pact/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # Remember to bump pact-provider-proxy when this changes major version
2
2
  module Pact
3
- VERSION = '2.0.0-preview2'
3
+ VERSION = "2.0.0-preview3"
4
4
  end
data/lib/pact.rb CHANGED
@@ -1,13 +1,7 @@
1
-
2
- # Selective loading of pact v1 and v2 based on environment variables
3
- if ENV['PACT_RUBY_V1_ENABLE'] != 'false'
4
- require 'pact/support'
5
- require 'pact/version'
6
- require 'pact/configuration'
7
- require 'pact/consumer'
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
- # Control which version of pact to use
35
- # PACT_RUBY_V1_ENABLE=true to disable v1 (default is enabled)
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
- gem.add_runtime_dependency "pact-support" , "~> 1.21", ">=1.21.2"
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
- if ENV['PACT_RUBY_V2_ENABLE'] == 'true'
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
- # For Kafka support
77
- unless RUBY_PLATFORM =~ /win32|x64-mingw32|x64-mingw-ucrt/
78
- # windows does not support librdkafka
79
- gem.add_development_dependency "sbmt-kafka_consumer", ">= 2.0.1"
80
- gem.add_development_dependency "sbmt-kafka_producer", ">= 1.0"
81
- end
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
- # Testing tools
92
- gem.add_development_dependency "rspec"
93
- gem.add_development_dependency "rspec-rails"
94
- gem.add_development_dependency "rspec_junit_formatter"
95
- gem.add_development_dependency "vcr", ">= 6.0"
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