Sha256: 2e4e518806ec47457e3e6c8263f2f964031d626b319a6241ffc6fa446abaf280

Contents?: true

Size: 1.2 KB

Versions: 80

Compression:

Stored size: 1.2 KB

Contents

# Delegates the incoming request that was sent to the control server
# to the underlying MockService
# if the X-Pact-Consumer and X-Pact-Provider headers match
# the consumer and provider for this MockService.

module Pact
  module MockService
    module ControlServer

      class Delegator

        HTTP_X_PACT_CONSUMER = 'HTTP_X_PACT_CONSUMER'.freeze
        HTTP_X_PACT_PROVIDER = 'HTTP_X_PACT_PROVIDER'.freeze
        PACT_MOCK_SERVICE_HEADER = {'HTTP_X_PACT_MOCK_SERVICE' => 'true'}.freeze
        NOT_FOUND_RESPONSE = [404, {}, []].freeze

        def initialize app, consumer_name, provider_name
          @app = app
          @consumer_name = consumer_name
          @provider_name = provider_name
        end

        def call env
          return NOT_FOUND_RESPONSE unless consumer_and_provider_headers_match?(env)
          delegate env
        end

        def shutdown
          @app.shutdown
        end

        private

        def consumer_and_provider_headers_match? env
          env[HTTP_X_PACT_CONSUMER] == @consumer_name && env[HTTP_X_PACT_PROVIDER] == @provider_name
        end

        def delegate env
          @app.call(env.merge(PACT_MOCK_SERVICE_HEADER))
        end
      end
    end
  end
end

Version data entries

80 entries across 80 versions & 2 rubygems

Version Path
pact-mock_service-3.12.3 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.12.2 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.12.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.12.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.11.2 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.11.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.11.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.10.0 lib/pact/mock_service/control_server/delegator.rb
hs-pact-mock_service-3.9.2 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.9.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.9.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.8.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.7.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.6.2 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.6.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.6.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.5.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.4.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.3.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-3.3.0 lib/pact/mock_service/control_server/delegator.rb