pact 1.64.0 → 1.67.5

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 (97) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +130 -0
  3. data/lib/pact/cli/run_pact_verification.rb +0 -1
  4. data/lib/pact/consumer/consumer_contract_builder.rb +1 -1
  5. data/lib/pact/hal/http_client.rb +19 -1
  6. data/lib/pact/pact_broker/fetch_pact_uris_for_verification.rb +19 -8
  7. data/lib/pact/provider/configuration/message_provider_dsl.rb +4 -0
  8. data/lib/pact/provider/configuration/pact_verification_from_broker.rb +8 -2
  9. data/lib/pact/provider/help/console_text.rb +4 -8
  10. data/lib/pact/provider/help/prompt_text.rb +2 -4
  11. data/lib/pact/provider/matchers/messages.rb +3 -5
  12. data/lib/pact/provider/print_missing_provider_states.rb +3 -5
  13. data/lib/pact/provider/request.rb +25 -5
  14. data/lib/pact/provider/rspec/formatter_rspec_2.rb +1 -3
  15. data/lib/pact/provider/rspec/formatter_rspec_3.rb +1 -3
  16. data/lib/pact/provider/rspec/pact_broker_formatter.rb +2 -2
  17. data/lib/pact/provider/rspec.rb +5 -3
  18. data/lib/pact/provider/test_methods.rb +9 -3
  19. data/lib/pact/v2/configuration.rb +23 -0
  20. data/lib/pact/v2/consumer/grpc_interaction_builder.rb +194 -0
  21. data/lib/pact/v2/consumer/http_interaction_builder.rb +162 -0
  22. data/lib/pact/v2/consumer/interaction_contents.rb +62 -0
  23. data/lib/pact/v2/consumer/message_interaction_builder.rb +288 -0
  24. data/lib/pact/v2/consumer/mock_server.rb +108 -0
  25. data/lib/pact/v2/consumer/pact_config/base.rb +24 -0
  26. data/lib/pact/v2/consumer/pact_config/grpc.rb +26 -0
  27. data/lib/pact/v2/consumer/pact_config/http.rb +55 -0
  28. data/lib/pact/v2/consumer/pact_config/message.rb +17 -0
  29. data/lib/pact/v2/consumer/pact_config/plugin_async_message.rb +26 -0
  30. data/lib/pact/v2/consumer/pact_config/plugin_http.rb +26 -0
  31. data/lib/pact/v2/consumer/pact_config/plugin_sync_message.rb +26 -0
  32. data/lib/pact/v2/consumer/pact_config.rb +30 -0
  33. data/lib/pact/v2/consumer/plugin_async_message_interaction_builder.rb +171 -0
  34. data/lib/pact/v2/consumer/plugin_http_interaction_builder.rb +201 -0
  35. data/lib/pact/v2/consumer/plugin_sync_message_interaction_builder.rb +180 -0
  36. data/lib/pact/v2/consumer.rb +8 -0
  37. data/lib/pact/v2/generators/base.rb +287 -0
  38. data/lib/pact/v2/generators.rb +49 -0
  39. data/lib/pact/v2/matchers/base.rb +74 -0
  40. data/lib/pact/v2/matchers/v1/equality.rb +19 -0
  41. data/lib/pact/v2/matchers/v2/regex.rb +19 -0
  42. data/lib/pact/v2/matchers/v2/type.rb +17 -0
  43. data/lib/pact/v2/matchers/v3/boolean.rb +17 -0
  44. data/lib/pact/v2/matchers/v3/content_type.rb +32 -0
  45. data/lib/pact/v2/matchers/v3/date.rb +18 -0
  46. data/lib/pact/v2/matchers/v3/date_time.rb +18 -0
  47. data/lib/pact/v2/matchers/v3/decimal.rb +17 -0
  48. data/lib/pact/v2/matchers/v3/each.rb +42 -0
  49. data/lib/pact/v2/matchers/v3/include.rb +17 -0
  50. data/lib/pact/v2/matchers/v3/integer.rb +17 -0
  51. data/lib/pact/v2/matchers/v3/null.rb +16 -0
  52. data/lib/pact/v2/matchers/v3/number.rb +17 -0
  53. data/lib/pact/v2/matchers/v3/semver.rb +23 -0
  54. data/lib/pact/v2/matchers/v3/time.rb +18 -0
  55. data/lib/pact/v2/matchers/v3/values.rb +16 -0
  56. data/lib/pact/v2/matchers/v4/each_key.rb +26 -0
  57. data/lib/pact/v2/matchers/v4/each_key_value.rb +32 -0
  58. data/lib/pact/v2/matchers/v4/each_value.rb +33 -0
  59. data/lib/pact/v2/matchers/v4/not_empty.rb +24 -0
  60. data/lib/pact/v2/matchers/v4/status_code.rb +17 -0
  61. data/lib/pact/v2/matchers.rb +110 -0
  62. data/lib/pact/v2/native/blocking_verifier.rb +17 -0
  63. data/lib/pact/v2/native/logger.rb +25 -0
  64. data/lib/pact/v2/provider/async_message_verifier.rb +28 -0
  65. data/lib/pact/v2/provider/base_verifier.rb +242 -0
  66. data/lib/pact/v2/provider/grpc_verifier.rb +38 -0
  67. data/lib/pact/v2/provider/gruf_server.rb +75 -0
  68. data/lib/pact/v2/provider/http_server.rb +79 -0
  69. data/lib/pact/v2/provider/http_verifier.rb +43 -0
  70. data/lib/pact/v2/provider/message_provider_servlet.rb +79 -0
  71. data/lib/pact/v2/provider/mixed_verifier.rb +22 -0
  72. data/lib/pact/v2/provider/pact_broker_proxy.rb +66 -0
  73. data/lib/pact/v2/provider/pact_broker_proxy_runner.rb +80 -0
  74. data/lib/pact/v2/provider/pact_config/async.rb +29 -0
  75. data/lib/pact/v2/provider/pact_config/base.rb +103 -0
  76. data/lib/pact/v2/provider/pact_config/grpc.rb +26 -0
  77. data/lib/pact/v2/provider/pact_config/http.rb +27 -0
  78. data/lib/pact/v2/provider/pact_config/mixed.rb +40 -0
  79. data/lib/pact/v2/provider/pact_config.rb +26 -0
  80. data/lib/pact/v2/provider/provider_server_runner.rb +92 -0
  81. data/lib/pact/v2/provider/provider_state_configuration.rb +32 -0
  82. data/lib/pact/v2/provider/provider_state_servlet.rb +86 -0
  83. data/lib/pact/v2/provider.rb +8 -0
  84. data/lib/pact/v2/railtie.rb +13 -0
  85. data/lib/pact/v2/rspec/support/pact_consumer_helpers.rb +93 -0
  86. data/lib/pact/v2/rspec/support/pact_message_helpers.rb +42 -0
  87. data/lib/pact/v2/rspec/support/pact_provider_helpers.rb +129 -0
  88. data/lib/pact/v2/rspec/support/waterdrop/pact_waterdrop_client.rb +27 -0
  89. data/lib/pact/v2/rspec/support/webmock/webmock_helpers.rb +30 -0
  90. data/lib/pact/v2/rspec.rb +17 -0
  91. data/lib/pact/v2/tasks/pact.rake +13 -0
  92. data/lib/pact/v2.rb +71 -0
  93. data/lib/pact/version.rb +1 -1
  94. data/lib/pact.rb +6 -0
  95. data/lib/tasks/pact.rake +2 -2
  96. data/pact.gemspec +57 -9
  97. metadata +420 -69
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 = "1.64.0"
3
+ VERSION = "1.67.5"
4
4
  end
data/lib/pact.rb CHANGED
@@ -4,3 +4,9 @@ require 'pact/configuration'
4
4
  require 'pact/consumer'
5
5
  require 'pact/provider'
6
6
  require 'pact/consumer_contract'
7
+
8
+ begin
9
+ require 'pact/v2'
10
+ rescue LoadError
11
+ # "Please ensure that the 'pact-ffi' gem is included in your Gemfile for pact/v2 support."
12
+ end
data/lib/tasks/pact.rake CHANGED
@@ -15,12 +15,12 @@ namespace :pact do
15
15
 
16
16
  desc "Verifies the pact at the given URI against this service provider."
17
17
  task 'verify:at', :pact_uri do | t, args |
18
- require 'term/ansicolor'
18
+ require 'rainbow'
19
19
  require 'pact/tasks/task_helper'
20
20
 
21
21
  include Pact::TaskHelper
22
22
 
23
- abort(::Term::ANSIColor.red("Please provide a pact URI. eg. rake pact:verify:at[../my-consumer/spec/pacts/my_consumer-my_provider.json]")) unless args[:pact_uri]
23
+ abort(Rainbow("Please provide a pact URI. eg. rake pact:verify:at[../my-consumer/spec/pacts/my_consumer-my_provider.json]").red) unless args[:pact_uri]
24
24
  handle_verification_failure do
25
25
  execute_pact_verify args[:pact_uri]
26
26
  end
data/pact.gemspec CHANGED
@@ -26,23 +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 dev dependencies between v1 and v2
30
+ gem.add_development_dependency 'rake', '~> 13.0'
31
+ gem.add_development_dependency 'faraday', '~>2.0', '<3.0'
32
+ gem.add_development_dependency 'webmock', '~> 3.0'
33
+
34
+ # Shared runtime dependencies between v1 and v2
29
35
  gem.add_runtime_dependency 'rspec', '~> 3.0'
36
+
37
+ # Pact v2 dependencies
38
+
39
+ # Core dependencies (code loading)
40
+ gem.add_dependency "zeitwerk", "~> 2.3"
41
+ # For Pact support via Pact Rust Core
42
+ # moved to optional group in Gemfile, to allow opt in for users who want Pact v2
43
+ # and to support pact-ruby-standalone which cannot package the ffi for all supported platforms
44
+ # gem.add_dependency "pact-ffi", "~> 0.4.28"
45
+ # For Provider Side Verification
46
+ gem.add_dependency "rack"
47
+ gem.add_dependency "rack-proxy"
48
+ gem.add_dependency "webrick", '~> 1.8'
49
+ # For Rails support, including testing non rails apps
50
+ gem.add_development_dependency "combustion", ">= 1.3"
51
+ # For Kafka support
52
+ unless RUBY_PLATFORM =~ /win32|x64-mingw32|x64-mingw-ucrt/
53
+ # windows does not support librdkafka
54
+ gem.add_development_dependency "sbmt-kafka_consumer", ">= 2.0.1"
55
+ gem.add_development_dependency "sbmt-kafka_producer", ">= 1.0"
56
+ end
57
+ if ENV['X_PACT_DEVELOPMENT_RDKAFKA'] == 'true'
58
+ # darwin-arm64 prebuilt gems available from 0.20.0
59
+ gem.add_development_dependency "karafka-rdkafka", ">= 0.20.0"
60
+ end
61
+ # For gRPC support
62
+ gem.add_development_dependency "gruf", ">= 2.18"
63
+ gem.add_development_dependency "gruf-rspec", ">= 0.6.0"
64
+ # Testing tools
65
+ gem.add_development_dependency "rspec"
66
+ gem.add_development_dependency "rspec-rails"
67
+ gem.add_development_dependency "rspec_junit_formatter"
68
+ gem.add_development_dependency "vcr", ">= 6.0"
69
+ # Development and linting tools
70
+ gem.add_development_dependency "appraisal", ">= 2.4"
71
+ gem.add_development_dependency "bundler", ">= 2.2"
72
+ gem.add_development_dependency "rubocop"
73
+ gem.add_development_dependency "rubocop-rspec"
74
+ gem.add_development_dependency "rubocop-rails"
75
+ gem.add_development_dependency "rubocop-performance"
76
+ gem.add_development_dependency "standard", ">= 1.35.1"
77
+
78
+
79
+ # Pact v1 dependencies
30
80
  gem.add_runtime_dependency 'rack-test', '>= 0.6.3', '< 3.0.0'
31
81
  gem.add_runtime_dependency 'thor', '>= 0.20', '< 2.0'
32
- gem.add_runtime_dependency 'webrick', '~> 1.8'
33
- gem.add_runtime_dependency 'term-ansicolor', '~> 1.7'
82
+ gem.add_runtime_dependency "rainbow", '~> 3.1'
34
83
 
35
- gem.add_runtime_dependency 'pact-support', '~> 1.16', '>= 1.16.9'
84
+ gem.add_runtime_dependency "pact-support" , "~> 1.21", ">=1.21.2"
36
85
  gem.add_runtime_dependency 'pact-mock_service', '~> 3.0', '>= 3.3.1'
37
-
38
- gem.add_development_dependency 'rake', '~> 13.0'
39
- gem.add_development_dependency 'webmock', '~> 3.0'
40
- gem.add_development_dependency 'fakefs', '2.4' # 0.6.0 blows up
86
+ gem.add_development_dependency 'fakefs', '2.4'
41
87
  gem.add_development_dependency 'hashie', '~> 5.0'
42
- gem.add_development_dependency 'faraday', '~>1.0', '<3.0'
43
88
  gem.add_development_dependency 'faraday-multipart', '~> 1.0'
44
89
  gem.add_development_dependency 'conventional-changelog', '~> 1.3'
45
90
  gem.add_development_dependency 'bump', '~> 0.5'
46
91
  gem.add_development_dependency 'pact-message', '~> 0.8'
47
92
  gem.add_development_dependency 'rspec-its', '~> 1.3'
48
- end
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'
95
+
96
+ end