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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/lib/pact/configuration.rb +21 -0
- data/lib/pact/consumer/grpc_interaction_builder.rb +192 -0
- data/lib/pact/consumer/http_interaction_builder.rb +160 -0
- data/lib/pact/consumer/interaction_contents.rb +60 -0
- data/lib/pact/consumer/message_interaction_builder.rb +286 -0
- data/lib/pact/consumer/mock_server.rb +106 -0
- data/lib/pact/consumer/pact_config/base.rb +22 -0
- data/lib/pact/consumer/pact_config/grpc.rb +24 -0
- data/lib/pact/consumer/pact_config/http.rb +53 -0
- data/lib/pact/consumer/pact_config/message.rb +15 -0
- data/lib/pact/consumer/pact_config/plugin_async_message.rb +24 -0
- data/lib/pact/consumer/pact_config/plugin_http.rb +24 -0
- data/lib/pact/consumer/pact_config/plugin_sync_message.rb +24 -0
- data/lib/pact/consumer/pact_config.rb +28 -0
- data/lib/pact/consumer/plugin_async_message_interaction_builder.rb +169 -0
- data/lib/pact/consumer/plugin_http_interaction_builder.rb +199 -0
- data/lib/pact/consumer/plugin_sync_message_interaction_builder.rb +178 -0
- data/lib/pact/consumer.rb +6 -7
- data/lib/pact/generators/base.rb +285 -0
- data/lib/pact/generators.rb +47 -0
- data/lib/pact/matchers/base.rb +72 -0
- data/lib/pact/matchers/v1/equality.rb +17 -0
- data/lib/pact/matchers/v2/regex.rb +26 -0
- data/lib/pact/matchers/v2/type.rb +18 -0
- data/lib/pact/matchers/v3/boolean.rb +18 -0
- data/lib/pact/matchers/v3/content_type.rb +30 -0
- data/lib/pact/matchers/v3/date.rb +22 -0
- data/lib/pact/matchers/v3/date_time.rb +22 -0
- data/lib/pact/matchers/v3/decimal.rb +18 -0
- data/lib/pact/matchers/v3/each.rb +46 -0
- data/lib/pact/matchers/v3/include.rb +18 -0
- data/lib/pact/matchers/v3/integer.rb +18 -0
- data/lib/pact/matchers/v3/null.rb +13 -0
- data/lib/pact/matchers/v3/number.rb +18 -0
- data/lib/pact/matchers/v3/semver.rb +22 -0
- data/lib/pact/matchers/v3/time.rb +22 -0
- data/lib/pact/matchers/v3/values.rb +13 -0
- data/lib/pact/matchers/v4/each_key.rb +34 -0
- data/lib/pact/matchers/v4/each_key_value.rb +38 -0
- data/lib/pact/matchers/v4/each_value.rb +40 -0
- data/lib/pact/matchers/v4/not_empty.rb +22 -0
- data/lib/pact/matchers/v4/status_code.rb +15 -0
- data/lib/pact/matchers.rb +108 -0
- data/lib/pact/native/blocking_verifier.rb +15 -0
- data/lib/pact/native/logger.rb +24 -0
- data/lib/pact/provider/async_message_verifier.rb +29 -0
- data/lib/pact/provider/base_verifier.rb +259 -0
- data/lib/pact/provider/grpc_verifier.rb +40 -0
- data/lib/pact/provider/gruf_server.rb +73 -0
- data/lib/pact/provider/http_server.rb +77 -0
- data/lib/pact/provider/http_verifier.rb +45 -0
- data/lib/pact/provider/message_provider_servlet.rb +77 -0
- data/lib/pact/provider/mixed_verifier.rb +21 -0
- data/lib/pact/provider/pact_broker_proxy.rb +62 -0
- data/lib/pact/provider/pact_broker_proxy_runner.rb +78 -0
- data/lib/pact/provider/pact_config/async.rb +28 -0
- data/lib/pact/provider/pact_config/base.rb +101 -0
- data/lib/pact/provider/pact_config/grpc.rb +24 -0
- data/lib/pact/provider/pact_config/http.rb +25 -0
- data/lib/pact/provider/pact_config/mixed.rb +38 -0
- data/lib/pact/provider/pact_config.rb +24 -0
- data/lib/pact/provider/provider_server_runner.rb +90 -0
- data/lib/pact/provider/provider_state_configuration.rb +32 -0
- data/lib/pact/provider/provider_state_servlet.rb +84 -0
- data/lib/pact/provider.rb +6 -3
- data/lib/pact/railtie.rb +11 -0
- data/lib/pact/{v2/rspec → rspec}/support/pact_consumer_helpers.rb +8 -8
- data/lib/pact/{v2/rspec → rspec}/support/pact_provider_helpers.rb +25 -24
- data/lib/pact/{v2/rspec.rb → rspec.rb} +6 -5
- data/lib/pact/tasks/pact.rake +13 -0
- data/lib/pact/version.rb +1 -1
- data/lib/pact.rb +46 -11
- data/pact.gemspec +42 -65
- metadata +145 -404
- data/lib/pact/cli/generate_pact_docs.rb +0 -4
- data/lib/pact/cli/run_pact_verification.rb +0 -99
- data/lib/pact/cli/spec_criteria.rb +0 -26
- data/lib/pact/cli.rb +0 -45
- data/lib/pact/consumer/configuration/configuration_extensions.rb +0 -90
- data/lib/pact/consumer/configuration/dsl.rb +0 -11
- data/lib/pact/consumer/configuration/mock_service.rb +0 -112
- data/lib/pact/consumer/configuration/service_consumer.rb +0 -51
- data/lib/pact/consumer/configuration/service_provider.rb +0 -40
- data/lib/pact/consumer/configuration.rb +0 -10
- data/lib/pact/consumer/consumer_contract_builder.rb +0 -82
- data/lib/pact/consumer/consumer_contract_builders.rb +0 -10
- data/lib/pact/consumer/interaction_builder.rb +0 -45
- data/lib/pact/consumer/rspec.rb +0 -35
- data/lib/pact/consumer/spec_hooks.rb +0 -40
- data/lib/pact/consumer/world.rb +0 -37
- data/lib/pact/doc/README.md +0 -13
- data/lib/pact/doc/doc_file.rb +0 -40
- data/lib/pact/doc/generate.rb +0 -11
- data/lib/pact/doc/generator.rb +0 -82
- data/lib/pact/doc/interaction_view_model.rb +0 -124
- data/lib/pact/doc/markdown/consumer_contract_renderer.rb +0 -68
- data/lib/pact/doc/markdown/generator.rb +0 -26
- data/lib/pact/doc/markdown/index_renderer.rb +0 -43
- data/lib/pact/doc/markdown/interaction.erb +0 -14
- data/lib/pact/doc/markdown/interaction_renderer.rb +0 -43
- data/lib/pact/doc/sort_interactions.rb +0 -16
- data/lib/pact/hal/authorization_header_redactor.rb +0 -32
- data/lib/pact/hal/entity.rb +0 -110
- data/lib/pact/hal/http_client.rb +0 -128
- data/lib/pact/hal/link.rb +0 -112
- data/lib/pact/hal/non_json_entity.rb +0 -28
- data/lib/pact/hash_refinements.rb +0 -17
- data/lib/pact/pact_broker/fetch_pact_uris_for_verification.rb +0 -112
- data/lib/pact/pact_broker/fetch_pacts.rb +0 -103
- data/lib/pact/pact_broker/notices.rb +0 -34
- data/lib/pact/pact_broker/pact_selection_description.rb +0 -66
- data/lib/pact/pact_broker.rb +0 -25
- data/lib/pact/project_root.rb +0 -7
- data/lib/pact/provider/configuration/configuration_extension.rb +0 -69
- data/lib/pact/provider/configuration/dsl.rb +0 -18
- data/lib/pact/provider/configuration/message_provider_dsl.rb +0 -63
- data/lib/pact/provider/configuration/pact_verification.rb +0 -48
- data/lib/pact/provider/configuration/pact_verification_from_broker.rb +0 -126
- data/lib/pact/provider/configuration/service_provider_config.rb +0 -32
- data/lib/pact/provider/configuration/service_provider_dsl.rb +0 -107
- data/lib/pact/provider/configuration.rb +0 -7
- data/lib/pact/provider/context.rb +0 -0
- data/lib/pact/provider/help/console_text.rb +0 -76
- data/lib/pact/provider/help/content.rb +0 -38
- data/lib/pact/provider/help/pact_diff.rb +0 -43
- data/lib/pact/provider/help/prompt_text.rb +0 -49
- data/lib/pact/provider/help/write.rb +0 -56
- data/lib/pact/provider/matchers/messages.rb +0 -66
- data/lib/pact/provider/pact_helper_locator.rb +0 -24
- data/lib/pact/provider/pact_source.rb +0 -40
- data/lib/pact/provider/pact_spec_runner.rb +0 -188
- data/lib/pact/provider/pact_uri.rb +0 -55
- data/lib/pact/provider/pact_verification.rb +0 -17
- data/lib/pact/provider/print_missing_provider_states.rb +0 -35
- data/lib/pact/provider/request.rb +0 -90
- data/lib/pact/provider/rspec/backtrace_formatter.rb +0 -43
- data/lib/pact/provider/rspec/calculate_exit_code.rb +0 -18
- data/lib/pact/provider/rspec/custom_options_file +0 -0
- data/lib/pact/provider/rspec/formatter_rspec_2.rb +0 -76
- data/lib/pact/provider/rspec/formatter_rspec_3.rb +0 -195
- data/lib/pact/provider/rspec/json_formatter.rb +0 -100
- data/lib/pact/provider/rspec/matchers.rb +0 -80
- data/lib/pact/provider/rspec/pact_broker_formatter.rb +0 -76
- data/lib/pact/provider/rspec.rb +0 -234
- data/lib/pact/provider/state/provider_state.rb +0 -180
- data/lib/pact/provider/state/provider_state_configured_modules.rb +0 -15
- data/lib/pact/provider/state/provider_state_manager.rb +0 -42
- data/lib/pact/provider/state/provider_state_proxy.rb +0 -39
- data/lib/pact/provider/state/set_up.rb +0 -13
- data/lib/pact/provider/state/tear_down.rb +0 -13
- data/lib/pact/provider/test_methods.rb +0 -77
- data/lib/pact/provider/verification_report.rb +0 -36
- data/lib/pact/provider/verification_results/create.rb +0 -88
- data/lib/pact/provider/verification_results/publish.rb +0 -143
- data/lib/pact/provider/verification_results/publish_all.rb +0 -50
- data/lib/pact/provider/verification_results/verification_result.rb +0 -40
- data/lib/pact/provider/world.rb +0 -50
- data/lib/pact/retry.rb +0 -37
- data/lib/pact/tasks/task_helper.rb +0 -62
- data/lib/pact/tasks/verification_task.rb +0 -95
- data/lib/pact/tasks.rb +0 -2
- data/lib/pact/templates/help.erb +0 -22
- data/lib/pact/templates/provider_state.erb +0 -14
- data/lib/pact/utils/metrics.rb +0 -100
- data/lib/pact/utils/string.rb +0 -35
- data/lib/pact/v2/configuration.rb +0 -23
- data/lib/pact/v2/consumer/grpc_interaction_builder.rb +0 -194
- data/lib/pact/v2/consumer/http_interaction_builder.rb +0 -162
- data/lib/pact/v2/consumer/interaction_contents.rb +0 -62
- data/lib/pact/v2/consumer/message_interaction_builder.rb +0 -288
- data/lib/pact/v2/consumer/mock_server.rb +0 -108
- data/lib/pact/v2/consumer/pact_config/base.rb +0 -24
- data/lib/pact/v2/consumer/pact_config/grpc.rb +0 -26
- data/lib/pact/v2/consumer/pact_config/http.rb +0 -55
- data/lib/pact/v2/consumer/pact_config/message.rb +0 -17
- data/lib/pact/v2/consumer/pact_config/plugin_async_message.rb +0 -26
- data/lib/pact/v2/consumer/pact_config/plugin_http.rb +0 -26
- data/lib/pact/v2/consumer/pact_config/plugin_sync_message.rb +0 -26
- data/lib/pact/v2/consumer/pact_config.rb +0 -30
- data/lib/pact/v2/consumer/plugin_async_message_interaction_builder.rb +0 -171
- data/lib/pact/v2/consumer/plugin_http_interaction_builder.rb +0 -201
- data/lib/pact/v2/consumer/plugin_sync_message_interaction_builder.rb +0 -180
- data/lib/pact/v2/consumer.rb +0 -8
- data/lib/pact/v2/generators/base.rb +0 -287
- data/lib/pact/v2/generators.rb +0 -49
- data/lib/pact/v2/matchers/base.rb +0 -74
- data/lib/pact/v2/matchers/v1/equality.rb +0 -19
- data/lib/pact/v2/matchers/v2/regex.rb +0 -19
- data/lib/pact/v2/matchers/v2/type.rb +0 -17
- data/lib/pact/v2/matchers/v3/boolean.rb +0 -17
- data/lib/pact/v2/matchers/v3/content_type.rb +0 -32
- data/lib/pact/v2/matchers/v3/date.rb +0 -18
- data/lib/pact/v2/matchers/v3/date_time.rb +0 -18
- data/lib/pact/v2/matchers/v3/decimal.rb +0 -17
- data/lib/pact/v2/matchers/v3/each.rb +0 -42
- data/lib/pact/v2/matchers/v3/include.rb +0 -17
- data/lib/pact/v2/matchers/v3/integer.rb +0 -17
- data/lib/pact/v2/matchers/v3/null.rb +0 -16
- data/lib/pact/v2/matchers/v3/number.rb +0 -17
- data/lib/pact/v2/matchers/v3/semver.rb +0 -23
- data/lib/pact/v2/matchers/v3/time.rb +0 -18
- data/lib/pact/v2/matchers/v3/values.rb +0 -16
- data/lib/pact/v2/matchers/v4/each_key.rb +0 -26
- data/lib/pact/v2/matchers/v4/each_key_value.rb +0 -32
- data/lib/pact/v2/matchers/v4/each_value.rb +0 -33
- data/lib/pact/v2/matchers/v4/not_empty.rb +0 -24
- data/lib/pact/v2/matchers/v4/status_code.rb +0 -17
- data/lib/pact/v2/matchers.rb +0 -110
- data/lib/pact/v2/native/blocking_verifier.rb +0 -17
- data/lib/pact/v2/native/logger.rb +0 -25
- data/lib/pact/v2/provider/async_message_verifier.rb +0 -28
- data/lib/pact/v2/provider/base_verifier.rb +0 -242
- data/lib/pact/v2/provider/grpc_verifier.rb +0 -38
- data/lib/pact/v2/provider/gruf_server.rb +0 -75
- data/lib/pact/v2/provider/http_server.rb +0 -79
- data/lib/pact/v2/provider/http_verifier.rb +0 -43
- data/lib/pact/v2/provider/message_provider_servlet.rb +0 -79
- data/lib/pact/v2/provider/mixed_verifier.rb +0 -22
- data/lib/pact/v2/provider/pact_broker_proxy.rb +0 -66
- data/lib/pact/v2/provider/pact_broker_proxy_runner.rb +0 -80
- data/lib/pact/v2/provider/pact_config/async.rb +0 -29
- data/lib/pact/v2/provider/pact_config/base.rb +0 -103
- data/lib/pact/v2/provider/pact_config/grpc.rb +0 -26
- data/lib/pact/v2/provider/pact_config/http.rb +0 -27
- data/lib/pact/v2/provider/pact_config/mixed.rb +0 -40
- data/lib/pact/v2/provider/pact_config.rb +0 -26
- data/lib/pact/v2/provider/provider_server_runner.rb +0 -92
- data/lib/pact/v2/provider/provider_state_configuration.rb +0 -32
- data/lib/pact/v2/provider/provider_state_servlet.rb +0 -86
- data/lib/pact/v2/provider.rb +0 -8
- data/lib/pact/v2/railtie.rb +0 -13
- data/lib/pact/v2/tasks/pact.rake +0 -13
- data/lib/pact/v2.rb +0 -71
- data/lib/tasks/pact.rake +0 -34
- /data/lib/pact/{v2/rspec → rspec}/support/pact_message_helpers.rb +0 -0
- /data/lib/pact/{v2/rspec → rspec}/support/waterdrop/pact_waterdrop_client.rb +0 -0
- /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
|
data/lib/pact/v2/provider.rb
DELETED
data/lib/pact/v2/railtie.rb
DELETED
data/lib/pact/v2/tasks/pact.rake
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|