pact 1.67.4 → 2.0.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.
Files changed (239) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/lib/pact/configuration.rb +21 -0
  4. data/lib/pact/consumer/grpc_interaction_builder.rb +192 -0
  5. data/lib/pact/consumer/http_interaction_builder.rb +160 -0
  6. data/lib/pact/consumer/interaction_contents.rb +60 -0
  7. data/lib/pact/consumer/message_interaction_builder.rb +286 -0
  8. data/lib/pact/consumer/mock_server.rb +106 -0
  9. data/lib/pact/consumer/pact_config/base.rb +22 -0
  10. data/lib/pact/consumer/pact_config/grpc.rb +24 -0
  11. data/lib/pact/consumer/pact_config/http.rb +53 -0
  12. data/lib/pact/consumer/pact_config/message.rb +15 -0
  13. data/lib/pact/consumer/pact_config/plugin_async_message.rb +24 -0
  14. data/lib/pact/consumer/pact_config/plugin_http.rb +24 -0
  15. data/lib/pact/consumer/pact_config/plugin_sync_message.rb +24 -0
  16. data/lib/pact/consumer/pact_config.rb +28 -0
  17. data/lib/pact/consumer/plugin_async_message_interaction_builder.rb +169 -0
  18. data/lib/pact/consumer/plugin_http_interaction_builder.rb +199 -0
  19. data/lib/pact/consumer/plugin_sync_message_interaction_builder.rb +178 -0
  20. data/lib/pact/consumer.rb +6 -7
  21. data/lib/pact/generators/base.rb +285 -0
  22. data/lib/pact/generators.rb +47 -0
  23. data/lib/pact/matchers/base.rb +72 -0
  24. data/lib/pact/matchers/v1/equality.rb +17 -0
  25. data/lib/pact/matchers/v2/regex.rb +26 -0
  26. data/lib/pact/matchers/v2/type.rb +18 -0
  27. data/lib/pact/matchers/v3/boolean.rb +18 -0
  28. data/lib/pact/matchers/v3/content_type.rb +30 -0
  29. data/lib/pact/matchers/v3/date.rb +22 -0
  30. data/lib/pact/matchers/v3/date_time.rb +22 -0
  31. data/lib/pact/matchers/v3/decimal.rb +18 -0
  32. data/lib/pact/matchers/v3/each.rb +46 -0
  33. data/lib/pact/matchers/v3/include.rb +18 -0
  34. data/lib/pact/matchers/v3/integer.rb +18 -0
  35. data/lib/pact/matchers/v3/null.rb +13 -0
  36. data/lib/pact/matchers/v3/number.rb +18 -0
  37. data/lib/pact/matchers/v3/semver.rb +22 -0
  38. data/lib/pact/matchers/v3/time.rb +22 -0
  39. data/lib/pact/matchers/v3/values.rb +13 -0
  40. data/lib/pact/matchers/v4/each_key.rb +34 -0
  41. data/lib/pact/matchers/v4/each_key_value.rb +38 -0
  42. data/lib/pact/matchers/v4/each_value.rb +40 -0
  43. data/lib/pact/matchers/v4/not_empty.rb +22 -0
  44. data/lib/pact/matchers/v4/status_code.rb +15 -0
  45. data/lib/pact/matchers.rb +108 -0
  46. data/lib/pact/native/blocking_verifier.rb +15 -0
  47. data/lib/pact/native/logger.rb +24 -0
  48. data/lib/pact/provider/async_message_verifier.rb +29 -0
  49. data/lib/pact/provider/base_verifier.rb +259 -0
  50. data/lib/pact/provider/grpc_verifier.rb +40 -0
  51. data/lib/pact/provider/gruf_server.rb +73 -0
  52. data/lib/pact/provider/http_server.rb +77 -0
  53. data/lib/pact/provider/http_verifier.rb +45 -0
  54. data/lib/pact/provider/message_provider_servlet.rb +77 -0
  55. data/lib/pact/provider/mixed_verifier.rb +21 -0
  56. data/lib/pact/provider/pact_broker_proxy.rb +62 -0
  57. data/lib/pact/provider/pact_broker_proxy_runner.rb +78 -0
  58. data/lib/pact/provider/pact_config/async.rb +28 -0
  59. data/lib/pact/provider/pact_config/base.rb +101 -0
  60. data/lib/pact/provider/pact_config/grpc.rb +24 -0
  61. data/lib/pact/provider/pact_config/http.rb +25 -0
  62. data/lib/pact/provider/pact_config/mixed.rb +38 -0
  63. data/lib/pact/provider/pact_config.rb +24 -0
  64. data/lib/pact/provider/provider_server_runner.rb +90 -0
  65. data/lib/pact/provider/provider_state_configuration.rb +32 -0
  66. data/lib/pact/provider/provider_state_servlet.rb +84 -0
  67. data/lib/pact/provider.rb +6 -3
  68. data/lib/pact/railtie.rb +11 -0
  69. data/lib/pact/{v2/rspec → rspec}/support/pact_consumer_helpers.rb +8 -8
  70. data/lib/pact/{v2/rspec → rspec}/support/pact_provider_helpers.rb +25 -24
  71. data/lib/pact/{v2/rspec.rb → rspec.rb} +6 -5
  72. data/lib/pact/tasks/pact.rake +13 -0
  73. data/lib/pact/version.rb +1 -1
  74. data/lib/pact.rb +46 -11
  75. data/pact.gemspec +42 -65
  76. metadata +145 -404
  77. data/lib/pact/cli/generate_pact_docs.rb +0 -4
  78. data/lib/pact/cli/run_pact_verification.rb +0 -99
  79. data/lib/pact/cli/spec_criteria.rb +0 -26
  80. data/lib/pact/cli.rb +0 -45
  81. data/lib/pact/consumer/configuration/configuration_extensions.rb +0 -90
  82. data/lib/pact/consumer/configuration/dsl.rb +0 -11
  83. data/lib/pact/consumer/configuration/mock_service.rb +0 -112
  84. data/lib/pact/consumer/configuration/service_consumer.rb +0 -51
  85. data/lib/pact/consumer/configuration/service_provider.rb +0 -40
  86. data/lib/pact/consumer/configuration.rb +0 -10
  87. data/lib/pact/consumer/consumer_contract_builder.rb +0 -82
  88. data/lib/pact/consumer/consumer_contract_builders.rb +0 -10
  89. data/lib/pact/consumer/interaction_builder.rb +0 -45
  90. data/lib/pact/consumer/rspec.rb +0 -35
  91. data/lib/pact/consumer/spec_hooks.rb +0 -40
  92. data/lib/pact/consumer/world.rb +0 -37
  93. data/lib/pact/doc/README.md +0 -13
  94. data/lib/pact/doc/doc_file.rb +0 -40
  95. data/lib/pact/doc/generate.rb +0 -11
  96. data/lib/pact/doc/generator.rb +0 -82
  97. data/lib/pact/doc/interaction_view_model.rb +0 -124
  98. data/lib/pact/doc/markdown/consumer_contract_renderer.rb +0 -68
  99. data/lib/pact/doc/markdown/generator.rb +0 -26
  100. data/lib/pact/doc/markdown/index_renderer.rb +0 -43
  101. data/lib/pact/doc/markdown/interaction.erb +0 -14
  102. data/lib/pact/doc/markdown/interaction_renderer.rb +0 -43
  103. data/lib/pact/doc/sort_interactions.rb +0 -16
  104. data/lib/pact/hal/authorization_header_redactor.rb +0 -32
  105. data/lib/pact/hal/entity.rb +0 -110
  106. data/lib/pact/hal/http_client.rb +0 -128
  107. data/lib/pact/hal/link.rb +0 -112
  108. data/lib/pact/hal/non_json_entity.rb +0 -28
  109. data/lib/pact/hash_refinements.rb +0 -17
  110. data/lib/pact/pact_broker/fetch_pact_uris_for_verification.rb +0 -112
  111. data/lib/pact/pact_broker/fetch_pacts.rb +0 -103
  112. data/lib/pact/pact_broker/notices.rb +0 -34
  113. data/lib/pact/pact_broker/pact_selection_description.rb +0 -66
  114. data/lib/pact/pact_broker.rb +0 -25
  115. data/lib/pact/project_root.rb +0 -7
  116. data/lib/pact/provider/configuration/configuration_extension.rb +0 -69
  117. data/lib/pact/provider/configuration/dsl.rb +0 -18
  118. data/lib/pact/provider/configuration/message_provider_dsl.rb +0 -63
  119. data/lib/pact/provider/configuration/pact_verification.rb +0 -48
  120. data/lib/pact/provider/configuration/pact_verification_from_broker.rb +0 -126
  121. data/lib/pact/provider/configuration/service_provider_config.rb +0 -32
  122. data/lib/pact/provider/configuration/service_provider_dsl.rb +0 -107
  123. data/lib/pact/provider/configuration.rb +0 -7
  124. data/lib/pact/provider/context.rb +0 -0
  125. data/lib/pact/provider/help/console_text.rb +0 -76
  126. data/lib/pact/provider/help/content.rb +0 -38
  127. data/lib/pact/provider/help/pact_diff.rb +0 -43
  128. data/lib/pact/provider/help/prompt_text.rb +0 -49
  129. data/lib/pact/provider/help/write.rb +0 -56
  130. data/lib/pact/provider/matchers/messages.rb +0 -66
  131. data/lib/pact/provider/pact_helper_locator.rb +0 -24
  132. data/lib/pact/provider/pact_source.rb +0 -40
  133. data/lib/pact/provider/pact_spec_runner.rb +0 -188
  134. data/lib/pact/provider/pact_uri.rb +0 -55
  135. data/lib/pact/provider/pact_verification.rb +0 -17
  136. data/lib/pact/provider/print_missing_provider_states.rb +0 -35
  137. data/lib/pact/provider/request.rb +0 -90
  138. data/lib/pact/provider/rspec/backtrace_formatter.rb +0 -43
  139. data/lib/pact/provider/rspec/calculate_exit_code.rb +0 -18
  140. data/lib/pact/provider/rspec/custom_options_file +0 -0
  141. data/lib/pact/provider/rspec/formatter_rspec_2.rb +0 -76
  142. data/lib/pact/provider/rspec/formatter_rspec_3.rb +0 -195
  143. data/lib/pact/provider/rspec/json_formatter.rb +0 -100
  144. data/lib/pact/provider/rspec/matchers.rb +0 -80
  145. data/lib/pact/provider/rspec/pact_broker_formatter.rb +0 -76
  146. data/lib/pact/provider/rspec.rb +0 -234
  147. data/lib/pact/provider/state/provider_state.rb +0 -180
  148. data/lib/pact/provider/state/provider_state_configured_modules.rb +0 -15
  149. data/lib/pact/provider/state/provider_state_manager.rb +0 -42
  150. data/lib/pact/provider/state/provider_state_proxy.rb +0 -39
  151. data/lib/pact/provider/state/set_up.rb +0 -13
  152. data/lib/pact/provider/state/tear_down.rb +0 -13
  153. data/lib/pact/provider/test_methods.rb +0 -77
  154. data/lib/pact/provider/verification_report.rb +0 -36
  155. data/lib/pact/provider/verification_results/create.rb +0 -88
  156. data/lib/pact/provider/verification_results/publish.rb +0 -143
  157. data/lib/pact/provider/verification_results/publish_all.rb +0 -50
  158. data/lib/pact/provider/verification_results/verification_result.rb +0 -40
  159. data/lib/pact/provider/world.rb +0 -50
  160. data/lib/pact/retry.rb +0 -37
  161. data/lib/pact/tasks/task_helper.rb +0 -62
  162. data/lib/pact/tasks/verification_task.rb +0 -95
  163. data/lib/pact/tasks.rb +0 -2
  164. data/lib/pact/templates/help.erb +0 -22
  165. data/lib/pact/templates/provider_state.erb +0 -14
  166. data/lib/pact/utils/metrics.rb +0 -100
  167. data/lib/pact/utils/string.rb +0 -35
  168. data/lib/pact/v2/configuration.rb +0 -23
  169. data/lib/pact/v2/consumer/grpc_interaction_builder.rb +0 -194
  170. data/lib/pact/v2/consumer/http_interaction_builder.rb +0 -162
  171. data/lib/pact/v2/consumer/interaction_contents.rb +0 -62
  172. data/lib/pact/v2/consumer/message_interaction_builder.rb +0 -288
  173. data/lib/pact/v2/consumer/mock_server.rb +0 -108
  174. data/lib/pact/v2/consumer/pact_config/base.rb +0 -24
  175. data/lib/pact/v2/consumer/pact_config/grpc.rb +0 -26
  176. data/lib/pact/v2/consumer/pact_config/http.rb +0 -55
  177. data/lib/pact/v2/consumer/pact_config/message.rb +0 -17
  178. data/lib/pact/v2/consumer/pact_config/plugin_async_message.rb +0 -26
  179. data/lib/pact/v2/consumer/pact_config/plugin_http.rb +0 -26
  180. data/lib/pact/v2/consumer/pact_config/plugin_sync_message.rb +0 -26
  181. data/lib/pact/v2/consumer/pact_config.rb +0 -30
  182. data/lib/pact/v2/consumer/plugin_async_message_interaction_builder.rb +0 -171
  183. data/lib/pact/v2/consumer/plugin_http_interaction_builder.rb +0 -201
  184. data/lib/pact/v2/consumer/plugin_sync_message_interaction_builder.rb +0 -180
  185. data/lib/pact/v2/consumer.rb +0 -8
  186. data/lib/pact/v2/generators/base.rb +0 -287
  187. data/lib/pact/v2/generators.rb +0 -49
  188. data/lib/pact/v2/matchers/base.rb +0 -74
  189. data/lib/pact/v2/matchers/v1/equality.rb +0 -19
  190. data/lib/pact/v2/matchers/v2/regex.rb +0 -19
  191. data/lib/pact/v2/matchers/v2/type.rb +0 -17
  192. data/lib/pact/v2/matchers/v3/boolean.rb +0 -17
  193. data/lib/pact/v2/matchers/v3/content_type.rb +0 -32
  194. data/lib/pact/v2/matchers/v3/date.rb +0 -18
  195. data/lib/pact/v2/matchers/v3/date_time.rb +0 -18
  196. data/lib/pact/v2/matchers/v3/decimal.rb +0 -17
  197. data/lib/pact/v2/matchers/v3/each.rb +0 -42
  198. data/lib/pact/v2/matchers/v3/include.rb +0 -17
  199. data/lib/pact/v2/matchers/v3/integer.rb +0 -17
  200. data/lib/pact/v2/matchers/v3/null.rb +0 -16
  201. data/lib/pact/v2/matchers/v3/number.rb +0 -17
  202. data/lib/pact/v2/matchers/v3/semver.rb +0 -23
  203. data/lib/pact/v2/matchers/v3/time.rb +0 -18
  204. data/lib/pact/v2/matchers/v3/values.rb +0 -16
  205. data/lib/pact/v2/matchers/v4/each_key.rb +0 -26
  206. data/lib/pact/v2/matchers/v4/each_key_value.rb +0 -32
  207. data/lib/pact/v2/matchers/v4/each_value.rb +0 -33
  208. data/lib/pact/v2/matchers/v4/not_empty.rb +0 -24
  209. data/lib/pact/v2/matchers/v4/status_code.rb +0 -17
  210. data/lib/pact/v2/matchers.rb +0 -110
  211. data/lib/pact/v2/native/blocking_verifier.rb +0 -17
  212. data/lib/pact/v2/native/logger.rb +0 -25
  213. data/lib/pact/v2/provider/async_message_verifier.rb +0 -28
  214. data/lib/pact/v2/provider/base_verifier.rb +0 -242
  215. data/lib/pact/v2/provider/grpc_verifier.rb +0 -38
  216. data/lib/pact/v2/provider/gruf_server.rb +0 -75
  217. data/lib/pact/v2/provider/http_server.rb +0 -79
  218. data/lib/pact/v2/provider/http_verifier.rb +0 -43
  219. data/lib/pact/v2/provider/message_provider_servlet.rb +0 -79
  220. data/lib/pact/v2/provider/mixed_verifier.rb +0 -22
  221. data/lib/pact/v2/provider/pact_broker_proxy.rb +0 -66
  222. data/lib/pact/v2/provider/pact_broker_proxy_runner.rb +0 -80
  223. data/lib/pact/v2/provider/pact_config/async.rb +0 -29
  224. data/lib/pact/v2/provider/pact_config/base.rb +0 -103
  225. data/lib/pact/v2/provider/pact_config/grpc.rb +0 -26
  226. data/lib/pact/v2/provider/pact_config/http.rb +0 -27
  227. data/lib/pact/v2/provider/pact_config/mixed.rb +0 -40
  228. data/lib/pact/v2/provider/pact_config.rb +0 -26
  229. data/lib/pact/v2/provider/provider_server_runner.rb +0 -92
  230. data/lib/pact/v2/provider/provider_state_configuration.rb +0 -32
  231. data/lib/pact/v2/provider/provider_state_servlet.rb +0 -86
  232. data/lib/pact/v2/provider.rb +0 -8
  233. data/lib/pact/v2/railtie.rb +0 -13
  234. data/lib/pact/v2/tasks/pact.rake +0 -13
  235. data/lib/pact/v2.rb +0 -71
  236. data/lib/tasks/pact.rake +0 -34
  237. /data/lib/pact/{v2/rspec → rspec}/support/pact_message_helpers.rb +0 -0
  238. /data/lib/pact/{v2/rspec → rspec}/support/waterdrop/pact_waterdrop_client.rb +0 -0
  239. /data/lib/pact/{v2/rspec → rspec}/support/webmock/webmock_helpers.rb +0 -0
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # require_relative "pact_config/grpc"
4
-
5
- module Pact
6
- module V2
7
- module Provider
8
- module PactConfig
9
- def self.new(transport_type, provider_name:, opts: {})
10
- case transport_type
11
- when :http
12
- Http.new(provider_name: provider_name, opts: opts)
13
- when :grpc
14
- Grpc.new(provider_name: provider_name, opts: opts)
15
- when :async
16
- Async.new(provider_name: provider_name, opts: opts)
17
- when :mixed
18
- Mixed.new(provider_name: provider_name, opts: opts)
19
- else
20
- raise ArgumentError, "unknown transport_type: #{transport_type}"
21
- end
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,92 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "webrick"
4
-
5
- module Pact
6
- module V2
7
- module Provider
8
- class ProviderServerRunner
9
- attr_reader :logger
10
-
11
- SETUP_PROVIDER_STATE_PATH = "/setup-provider"
12
- VERIFY_MESSAGE_PATH = "/verify-message"
13
-
14
- def initialize(port: 9001, host: "127.0.0.1", logger: nil)
15
- @host = host
16
- @port = port
17
- @provider_setup_states = {}
18
- @provider_teardown_states = {}
19
- @logger = logger || Logger.new($stdout)
20
-
21
- @state_servlet = ProviderStateServlet.new(logger: @logger)
22
- @message_servlet = MessageProviderServlet.new(logger: @logger)
23
- @thread = nil
24
- end
25
-
26
- def state_setup_url
27
- "http://#{@host}:#{@port}#{SETUP_PROVIDER_STATE_PATH}"
28
- end
29
-
30
- def message_setup_url
31
- "http://#{@host}:#{@port}#{VERIFY_MESSAGE_PATH}"
32
- end
33
-
34
- def start
35
- raise "server already running, stop server before starting new one" if @thread
36
-
37
- @server = WEBrick::HTTPServer.new(
38
- { BindAddress: @host, Port: @port, Logger: @logger, AccessLog: [] },
39
- WEBrick::Config::HTTP
40
- )
41
- @server.mount(SETUP_PROVIDER_STATE_PATH, @state_servlet)
42
- @server.mount(VERIFY_MESSAGE_PATH, @message_servlet)
43
-
44
- @thread = Thread.new do
45
- @logger.debug "starting provider setup server"
46
- @server.start
47
- end
48
- end
49
-
50
- def stop
51
- @logger.info("stopping provider setup server")
52
-
53
- @server&.shutdown
54
- @thread&.join
55
-
56
- @logger.info("provider setup server stopped")
57
- end
58
-
59
- def run
60
- start
61
-
62
- yield
63
- rescue => e
64
- logger.fatal("FATAL ERROR: #{e.message} #{e.backtrace.join("\n")}")
65
- raise
66
- ensure
67
- stop
68
- end
69
-
70
- def add_message_handler(state_name, &block)
71
- @message_servlet.add_message_handler(state_name, &block)
72
- end
73
-
74
- def add_setup_state(state_name, use_before_setup_hook = true, &block)
75
- @state_servlet.add_setup_state(state_name, use_before_setup_hook, &block)
76
- end
77
-
78
- def add_teardown_state(state_name, use_after_teardown_hook = true, &block)
79
- @state_servlet.add_teardown_state(state_name, use_after_teardown_hook, &block)
80
- end
81
-
82
- def set_before_setup_hook(&block)
83
- @state_servlet.before_setup(&block)
84
- end
85
-
86
- def set_after_teardown_hook(&block)
87
- @state_servlet.after_teardown(&block)
88
- end
89
- end
90
- end
91
- end
92
- end
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pact
4
- module V2
5
- module Provider
6
- class ProviderStateConfiguration
7
- attr_reader :name, :opts, :setup_proc, :teardown_proc
8
-
9
- class ProviderStateConfigurationError < ::Pact::V2::Error; end
10
-
11
- def initialize(name, opts: {})
12
- @name = name
13
- @opts = opts
14
- @setup_proc = nil
15
- @teardown_proc = nil
16
- end
17
-
18
- def set_up(&block)
19
- @setup_proc = block
20
- end
21
-
22
- def tear_down(&block)
23
- @teardown_proc = block
24
- end
25
-
26
- def validate!
27
- raise ProviderStateConfigurationError.new("no hooks configured for state #{@name}: \"provider_state\" declaration only needed if setup/teardown hooks are used for that state. Please add hooks or remove \"provider_state\" declaration") unless @setup_proc || @teardown_proc
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "webrick"
4
-
5
- module Pact
6
- module V2
7
- module Provider
8
- class ProviderStateServlet < WEBrick::HTTPServlet::ProcHandler
9
- attr_reader :logger
10
-
11
- def initialize(logger: nil)
12
- super(build_proc)
13
-
14
- @logger = logger || Logger.new($stdout)
15
-
16
- @provider_setup_states = {}
17
- @provider_teardown_states = {}
18
-
19
- @before_setup_hook_proc = nil
20
- @after_teardown_hook_proc = nil
21
-
22
- @global_setup_hook = ::Pact::V2.configuration.before_provider_state_proc
23
- @global_teardown_hook = ::Pact::V2.configuration.after_provider_state_proc
24
- end
25
-
26
- def add_setup_state(name, use_before_setup_hook, &block)
27
- raise "provider state #{name} already configured" if @provider_setup_states[name].present?
28
-
29
- @provider_setup_states[name] = {proc: block, use_hooks: use_before_setup_hook}
30
- end
31
-
32
- def add_teardown_state(name, use_after_teardown_hook, &block)
33
- raise "provider state #{name} already configured" if @provider_teardown_states[name].present?
34
-
35
- @provider_teardown_states[name] = {proc: block, use_hooks: use_after_teardown_hook}
36
- end
37
-
38
- def before_setup(&block)
39
- @before_setup_hook_proc = block
40
- end
41
-
42
- def after_teardown(&block)
43
- @after_teardown_hook_proc = block
44
- end
45
-
46
- private
47
-
48
- def call_setup(state_name, state_data)
49
- logger.debug "call_setup #{state_name} with #{state_data}"
50
- @global_setup_hook&.call
51
- @before_setup_hook_proc&.call(state_name, state_data) if @provider_setup_states.dig(state_name, :use_hooks)
52
- @provider_setup_states.dig(state_name, :proc)&.call(state_data)
53
- end
54
-
55
- def call_teardown(state_name, state_data)
56
- logger.debug "call_teardown #{state_name} with #{state_data}"
57
- @provider_teardown_states.dig(state_name, :proc)&.call(state_data)
58
- @after_teardown_hook_proc&.call(state_name, state_data) if @provider_setup_states.dig(state_name, :use_hooks)
59
- @global_teardown_hook&.call
60
- end
61
-
62
- def build_proc
63
- proc do |request, response|
64
- # {"action" => "setup", "params" => {"order_uuid" => "mxfcpcsfUOHO"},"state" => "order exists and can be saved"}
65
- # {"action"=> "teardown", "params" => {"order_uuid" => "mxfcpcsfUOHO"}, "state" => "order exists and can be saved"}
66
- data = JSON.parse(request.body)
67
-
68
- action = data["action"]
69
- state_name = data["state"]
70
- state_data = data["params"]
71
-
72
- logger.warn("unknown callback state action: #{action}") if action.blank?
73
-
74
- call_setup(state_name, state_data) if action == "setup"
75
- call_teardown(state_name, state_data) if action == "teardown"
76
-
77
- response.status = 200
78
- rescue JSON::ParserError => ex
79
- logger.error("cannot parse request: #{ex.message}")
80
- response.status = 500
81
- end
82
- end
83
- end
84
- end
85
- end
86
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pact
4
- module V2
5
- module Provider
6
- end
7
- end
8
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails/railtie"
4
-
5
- module Pact
6
- module V2
7
- class Railtie < Rails::Railtie
8
- rake_tasks do
9
- load "pact/v2/tasks/pact.rake"
10
- end
11
- end
12
- end
13
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rspec/core/rake_task"
4
-
5
- RSpec::Core::RakeTask.new(:pact_v2).tap do |task|
6
- task.pattern = "spec/pact/consumers/**/*_spec.rb"
7
- task.rspec_opts = "--require rails_helper_v2 --tag pact_v2"
8
- end
9
-
10
- namespace :pact_v2 do
11
- desc "Verifies the pact files"
12
- task verify: :pact_v2
13
- end
data/lib/pact/v2.rb DELETED
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "zeitwerk"
4
- require "pact/ffi"
5
-
6
- require "pact/v2/railtie" if defined?(Rails::Railtie)
7
-
8
- module Pact
9
- module V2
10
- class Error < StandardError; end
11
-
12
- class ImplementationRequired < Error; end
13
-
14
- class FfiError < Error
15
- def initialize(msg, reason, status)
16
- super(msg)
17
-
18
- @msg = msg
19
- @reason = reason
20
- @status = status
21
- end
22
-
23
- def message
24
- "FFI error: reason: #{@reason}, status: #{@status}, message: #{@msg}"
25
- end
26
- end
27
-
28
- def self.configure
29
- yield configuration if block_given?
30
- end
31
-
32
- def self.configuration
33
- @configuration ||= Pact::V2::Configuration.new
34
- end
35
- end
36
- end
37
-
38
- loader = Zeitwerk::Loader.new
39
- loader.push_dir(File.join(__dir__, ".."))
40
-
41
- loader.tag = "pact-v2"
42
-
43
- # existing pact-ruby ignores
44
- # loader.ignore("#{__dir__}/../pact") # ignore the pact dir at the root of the repo
45
- # loader.ignore("#{__dir__}/../pact/v2",false) # ignore the pact dir at the root of the repo
46
- # loader.push_dir(File.join(__dir__))
47
-
48
-
49
- loader.ignore("#{__dir__}/../pact/version.rb")
50
- loader.ignore("#{__dir__}/../pact/cli")
51
- loader.ignore("#{__dir__}/../pact/cli.rb")
52
- loader.ignore("#{__dir__}/../pact/consumer")
53
- loader.ignore("#{__dir__}/../pact/consumer.rb")
54
- loader.ignore("#{__dir__}/../pact/doc")
55
- loader.ignore("#{__dir__}/../pact/hal")
56
- loader.ignore("#{__dir__}/../pact/hash_refinements.rb")
57
- loader.ignore("#{__dir__}/../pact/pact_broker")
58
- loader.ignore("#{__dir__}/../pact/pact_broker.rb")
59
- loader.ignore("#{__dir__}/../pact/project_root.rb")
60
- loader.ignore("#{__dir__}/../pact/provider")
61
- loader.ignore("#{__dir__}/../pact/provider.rb")
62
- loader.ignore("#{__dir__}/../pact/retry.rb")
63
- loader.ignore("#{__dir__}/../pact/tasks")
64
- loader.ignore("#{__dir__}/../pact/tasks.rb")
65
- loader.ignore("#{__dir__}/../pact/templates")
66
- loader.ignore("#{__dir__}/../pact/utils")
67
- loader.ignore("#{__dir__}/../pact/v2/rspec.rb")
68
- loader.ignore("#{__dir__}/../pact/v2/rspec")
69
- loader.ignore("#{__dir__}/../pact/v2/railtie.rb") unless defined?(Rails::Railtie)
70
- loader.setup
71
- loader.eager_load
data/lib/tasks/pact.rake DELETED
@@ -1,34 +0,0 @@
1
-
2
- namespace :pact do
3
-
4
- desc "Verifies the pact files configured in the pact_helper.rb against this service provider."
5
- task :verify do
6
-
7
- require 'pact/tasks/task_helper'
8
-
9
- include Pact::TaskHelper
10
-
11
- handle_verification_failure do
12
- execute_pact_verify
13
- end
14
- end
15
-
16
- desc "Verifies the pact at the given URI against this service provider."
17
- task 'verify:at', :pact_uri do | t, args |
18
- require 'rainbow'
19
- require 'pact/tasks/task_helper'
20
-
21
- include Pact::TaskHelper
22
-
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
- handle_verification_failure do
25
- execute_pact_verify args[:pact_uri]
26
- end
27
- end
28
-
29
- desc "Get help debugging pact:verify failures."
30
- task 'verify:help', :reports_dir do | t, args |
31
- require 'pact/provider/help/console_text'
32
- puts Pact::Provider::Help::ConsoleText.(args[:reports_dir])
33
- end
34
- end