Class: Sbmt::Pact::Provider::PactConfig::Base

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

Direct Known Subclasses

Async, Grpc, Http

Constant Summary collapse

PACT_BROKER_FILTER_TYPE_NONE =
PactBrokerProxyRunner::FILTER_TYPE_NONE
PACT_BROKER_FILTER_TYPE_GRPC =
PactBrokerProxyRunner::FILTER_TYPE_GRPC
PACT_BROKER_FILTER_TYPE_ASYNC =
PactBrokerProxyRunner::FILTER_TYPE_ASYNC
PACT_BROKER_FILTER_TYPE_SYNC =
PactBrokerProxyRunner::FILTER_TYPE_SYNC
PACT_BROKER_FILTER_TYPE_HTTP =
PactBrokerProxyRunner::FILTER_TYPE_HTTP

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Base.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 17

def initialize(provider_name:, opts: {})
  @provider_name = provider_name
  @log_level = opts[:log_level] || :info
  @provider_setup_port = opts[:provider_setup_port] || 9001
  @pact_proxy_port = opts[:provider_setup_port] || 9002
  @provider_version = opts[:provider_version] || ENV.fetch("PACT_PROVIDER_VERSION", "1.0.0")
  @consumer_branch = opts[:consumer_branch] || ENV.fetch("PACT_CONSUMER_BRANCH", nil)
  @consumer_version = opts[:consumer_version] || ENV.fetch("PACT_CONSUMER_VERSION", nil)
  @consumer_name = opts[:consumer_name]
  @broker_url = opts[:broker_url] || ENV.fetch("PACT_BROKER_URL", nil)
  @broker_username = opts[:broker_username] || ENV.fetch("PACT_BROKER_USERNAME", "")
  @broker_password = opts[:broker_password] || ENV.fetch("PACT_BROKER_PASSWORD", "")
  @verify_only = opts[:verify_only] || [ENV.fetch("PACT_CONSUMER_FULL_NAME", nil)].compact

  @provider_setup_server = ProviderServerRunner.new(port: @provider_setup_port)
  if @broker_url.present?
    @pact_proxy_server = PactBrokerProxyRunner.new(
      port: @pact_proxy_port, pact_broker_host: @broker_url, filter_type: filter_type,
      pact_broker_user: @broker_username, pact_broker_password: @broker_password
    )
  end
end

Instance Attribute Details

#broker_passwordObject (readonly)

Returns the value of attribute broker_password.



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

def broker_password
  @broker_password
end

#broker_urlObject (readonly)

Returns the value of attribute broker_url.



8
9
10
# File 'lib/sbmt/pact/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/sbmt/pact/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/sbmt/pact/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/sbmt/pact/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/sbmt/pact/provider/pact_config/base.rb', line 8

def consumer_version
  @consumer_version
end

#log_levelObject (readonly)

Returns the value of attribute log_level.



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

def log_level
  @log_level
end

#pact_proxy_portObject (readonly)

Returns the value of attribute pact_proxy_port.



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

def pact_proxy_port
  @pact_proxy_port
end

#provider_nameObject (readonly)

Returns the value of attribute provider_name.



8
9
10
# File 'lib/sbmt/pact/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/sbmt/pact/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/sbmt/pact/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/sbmt/pact/provider/pact_config/base.rb', line 8

def provider_version
  @provider_version
end

#verify_onlyObject (readonly)

Returns the value of attribute verify_only.



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

def verify_only
  @verify_only
end

Instance Method Details

#after_teardown(&block) ⇒ Object



81
82
83
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 81

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

#before_setup(&block) ⇒ Object



77
78
79
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 77

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

#filter_typeObject



40
41
42
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 40

def filter_type
  PACT_BROKER_FILTER_TYPE_NONE
end

#message_setup_urlObject



58
59
60
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 58

def message_setup_url
  @provider_setup_server.message_setup_url
end

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



66
67
68
69
70
71
72
73
74
75
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 66

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



85
86
87
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 85

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

#pact_broker_proxy_urlObject



62
63
64
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 62

def pact_broker_proxy_url
  @pact_proxy_server&.proxy_url
end

#provider_setup_urlObject



54
55
56
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 54

def provider_setup_url
  @provider_setup_server.state_setup_url
end

#start_serversObject



44
45
46
47
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 44

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

#stop_serversObject



49
50
51
52
# File 'lib/sbmt/pact/provider/pact_config/base.rb', line 49

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