Class: Pact::V2::Provider::PactConfig::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/pact/v2/provider/pact_config/base.rb

Direct Known Subclasses

Async, Grpc, Http, Mixed

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(provider_name:, opts: {}) ⇒ Base

Returns a new instance of Base.



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/pact/v2/provider/pact_config/base.rb', line 14

def initialize(provider_name:, opts: {})
  @provider_name = provider_name
  @log_level = opts[:log_level] || :info
  @pact_dir = opts[:pact_dir] || nil
  @logger = opts[:logger] || nil
  @provider_setup_port = opts[:provider_setup_port] || 9001
  @pact_proxy_port = opts[:provider_setup_port] || 9002
  @pact_uri = ENV.fetch("PACT_URL", nil) || opts.fetch(:pact_uri, nil)
  @publish_verification_results = ENV.fetch("PACT_PUBLISH_VERIFICATION_RESULTS", nil) == "true" || opts.fetch(:publish_verification_results, false)
  @provider_version = ENV.fetch("PACT_PROVIDER_VERSION", nil) || opts.fetch(:provider_version, nil)
  @provider_build_uri = ENV.fetch("PACT_PROVIDER_BUILD_URL", nil) || opts.fetch(:provider_build_uri, nil)
  @provider_version_branch = ENV.fetch("PACT_PROVIDER_BRANCH", nil) || opts.fetch(:provider_version_branch, nil)
  @provider_version_tags = ENV.fetch("PACT_PROVIDER_VERSION_TAGS", nil) || opts.fetch(:provider_version_tags, [])
  @consumer_version_tags = ENV.fetch("PACT_CONSUMER_VERSION_TAGS", nil) || opts.fetch(:consumer_version_tags, [])
  @consumer_version_selectors = ENV.fetch("PACT_CONSUMER_VERSION_SELECTORS", nil) || opts.fetch(:consumer_version_selectors, nil)
  @enable_pending = ENV.fetch("PACT_VERIFIER_ENABLE_PENDING", nil) == "true" || opts.fetch(:enable_pending, false)
  @include_wip_pacts_since = ENV.fetch("PACT_INCLUDE_WIP_PACTS_SINCE", nil) || opts.fetch(:include_wip_pacts_since, nil)
  @fail_if_no_pacts_found = ENV.fetch("PACT_FAIL_IF_NO_PACTS_FOUND", nil) == "true" || opts.fetch(:fail_if_no_pacts_found, true)
  @consumer_branch = ENV.fetch("PACT_CONSUMER_BRANCH", nil) || opts.fetch(:consumer_branch, nil)
  @consumer_version = ENV.fetch("PACT_CONSUMER_VERSION", nil) || opts.fetch(:consumer_version, nil)
  @consumer_name = opts[:consumer_name]
  @broker_url = ENV.fetch("PACT_BROKER_BASE_URL", nil) || opts.fetch(:broker_url, nil)
  @broker_username = ENV.fetch("PACT_BROKER_USERNAME", nil) || opts.fetch(:broker_username, nil)
  @broker_password = ENV.fetch("PACT_BROKER_PASSWORD", nil) || opts.fetch(:broker_password, nil)
  @broker_token = ENV.fetch("PACT_BROKER_TOKEN", nil) || opts.fetch(:broker_token, nil)
  @verify_only = [ENV.fetch("PACT_CONSUMER_FULL_NAME", nil)].compact || opts.fetch(:verify_only, [])

  @provider_setup_server = opts[:provider_setup_server] || ProviderServerRunner.new(port: @provider_setup_port, logger: @logger)
  if @broker_url.present?
    @pact_proxy_server = PactBrokerProxyRunner.new(
      port: @pact_proxy_port,
      pact_broker_host: @broker_url,
      pact_broker_user: @broker_username,
      pact_broker_password: @broker_password,
      pact_broker_token: @broker_token,
      logger: @logger
    )
  end
end

Instance Attribute Details

#broker_passwordObject (readonly)

Returns the value of attribute broker_password.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def broker_password
  @broker_password
end

#broker_tokenObject (readonly)

Returns the value of attribute broker_token.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def broker_token
  @broker_token
end

#broker_urlObject (readonly)

Returns the value of attribute broker_url.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def broker_url
  @broker_url
end

#broker_usernameObject (readonly)

Returns the value of attribute broker_username.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def broker_username
  @broker_username
end

#consumer_branchObject (readonly)

Returns the value of attribute consumer_branch.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def consumer_branch
  @consumer_branch
end

#consumer_nameObject (readonly)

Returns the value of attribute consumer_name.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def consumer_name
  @consumer_name
end

#consumer_versionObject (readonly)

Returns the value of attribute consumer_version.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def consumer_version
  @consumer_version
end

#consumer_version_selectorsObject (readonly)

Returns the value of attribute consumer_version_selectors.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def consumer_version_selectors
  @consumer_version_selectors
end

#consumer_version_tagsObject (readonly)

Returns the value of attribute consumer_version_tags.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def consumer_version_tags
  @consumer_version_tags
end

#enable_pendingObject (readonly)

Returns the value of attribute enable_pending.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def enable_pending
  @enable_pending
end

#fail_if_no_pacts_foundObject (readonly)

Returns the value of attribute fail_if_no_pacts_found.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def fail_if_no_pacts_found
  @fail_if_no_pacts_found
end

#include_wip_pacts_sinceObject (readonly)

Returns the value of attribute include_wip_pacts_since.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def include_wip_pacts_since
  @include_wip_pacts_since
end

#log_levelObject (readonly)

Returns the value of attribute log_level.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def log_level
  @log_level
end

#loggerObject (readonly)

Returns the value of attribute logger.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def logger
  @logger
end

#pact_dirObject (readonly)

Returns the value of attribute pact_dir.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def pact_dir
  @pact_dir
end

#pact_proxy_portObject (readonly)

Returns the value of attribute pact_proxy_port.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def pact_proxy_port
  @pact_proxy_port
end

#pact_uriObject (readonly)

Returns the value of attribute pact_uri.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def pact_uri
  @pact_uri
end

#provider_build_uriObject (readonly)

Returns the value of attribute provider_build_uri.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_build_uri
  @provider_build_uri
end

#provider_nameObject (readonly)

Returns the value of attribute provider_name.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_name
  @provider_name
end

#provider_setup_portObject (readonly)

Returns the value of attribute provider_setup_port.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_setup_port
  @provider_setup_port
end

#provider_setup_serverObject (readonly)

Returns the value of attribute provider_setup_server.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_setup_server
  @provider_setup_server
end

#provider_versionObject (readonly)

Returns the value of attribute provider_version.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_version
  @provider_version
end

#provider_version_branchObject (readonly)

Returns the value of attribute provider_version_branch.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_version_branch
  @provider_version_branch
end

#provider_version_tagsObject (readonly)

Returns the value of attribute provider_version_tags.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def provider_version_tags
  @provider_version_tags
end

#publish_verification_resultsObject (readonly)

Returns the value of attribute publish_verification_results.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def publish_verification_results
  @publish_verification_results
end

#verify_onlyObject (readonly)

Returns the value of attribute verify_only.



8
9
10
# File 'lib/pact/v2/provider/pact_config/base.rb', line 8

def verify_only
  @verify_only
end

Instance Method Details

#after_teardown(&block) ⇒ Object



92
93
94
# File 'lib/pact/v2/provider/pact_config/base.rb', line 92

def after_teardown(&block)
  @provider_setup_server.set_after_teardown_hook(&block)
end

#before_setup(&block) ⇒ Object



88
89
90
# File 'lib/pact/v2/provider/pact_config/base.rb', line 88

def before_setup(&block)
  @provider_setup_server.set_before_setup_hook(&block)
end

#message_setup_urlObject

rubocop:disable Rails/Delegate



69
70
71
# File 'lib/pact/v2/provider/pact_config/base.rb', line 69

def message_setup_url # rubocop:disable Rails/Delegate
  @provider_setup_server.message_setup_url
end

#new_provider_state(name, opts: {}, &block) ⇒ Object



77
78
79
80
81
82
83
84
85
86
# File 'lib/pact/v2/provider/pact_config/base.rb', line 77

def new_provider_state(name, opts: {}, &block)
  config = ProviderStateConfiguration.new(name, opts: opts)
  config.instance_eval(&block)
  config.validate!

  use_hooks = !opts[:skip_hooks]

  @provider_setup_server.add_setup_state(name, use_hooks, &config.setup_proc) if config.setup_proc
  @provider_setup_server.add_teardown_state(name, use_hooks, &config.teardown_proc) if config.teardown_proc
end

#new_verifierObject



96
97
98
# File 'lib/pact/v2/provider/pact_config/base.rb', line 96

def new_verifier
  raise Pact::V2::ImplementationRequired, "#new_verifier should be implemented"
end

#pact_broker_proxy_urlObject



73
74
75
# File 'lib/pact/v2/provider/pact_config/base.rb', line 73

def pact_broker_proxy_url
  @pact_proxy_server&.proxy_url
end

#provider_setup_urlObject



65
66
67
# File 'lib/pact/v2/provider/pact_config/base.rb', line 65

def provider_setup_url
  @provider_setup_server.state_setup_url
end

#start_serversObject



55
56
57
58
# File 'lib/pact/v2/provider/pact_config/base.rb', line 55

def start_servers
  @provider_setup_server.start
  @pact_proxy_server&.start
end

#stop_serversObject



60
61
62
63
# File 'lib/pact/v2/provider/pact_config/base.rb', line 60

def stop_servers
  @provider_setup_server.stop
  @pact_proxy_server&.stop
end