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-2.6.3 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.6.2 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.6.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.5.4 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.5.3 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.5.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.4.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.3.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.2.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.1.1.pre.alpha.2 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.1.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.0.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-2.0.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-1.2.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-1.1.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-1.0.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-0.12.1 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-0.12.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-0.11.0 lib/pact/mock_service/control_server/delegator.rb
pact-mock_service-0.10.2 lib/pact/mock_service/control_server/delegator.rb