Sha256: 53a1303f9ad548fcbfd0f58f1a9cbff9bc88bdd76e1f73e137493fc8691406bf

Contents?: true

Size: 1.32 KB

Versions: 6

Compression:

Stored size: 1.32 KB

Contents

require 'json'
require 'pact/reification'
require 'pact/shared/null_expectation'

module Pact
  module Provider
    module Request
      class Replayable

        def initialize expected_request
          @expected_request = expected_request
        end

        def method
          expected_request.method
        end

        def path
          expected_request.full_path
        end

        def body
          case expected_request.body
          when String then expected_request.body
          when NullExpectation then ''
          else
            reified_body
          end
        end

        def headers
          request_headers = {}
          return request_headers if expected_request.headers.is_a?(Pact::NullExpectation)
          expected_request.headers.each do |key, value|
            key = key.upcase
            if key.match(/CONTENT.TYPE/)
              request_headers['CONTENT_TYPE'] = value
            else
              request_headers['HTTP_' + key.to_s] = value
            end
          end
          request_headers
        end

        private
        attr_reader :expected_request

        def reified_body
          rb = Pact::Reification.from_term(expected_request.body)
          if rb.is_a?(String)
            rb
          else
            JSON.dump(rb)
          end
        end
      end      
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
pact-1.0.18 lib/pact/provider/request.rb
pact-1.0.15 lib/pact/provider/request.rb
pact-1.0.13 lib/pact/provider/request.rb
pact-1.0.12 lib/pact/provider/request.rb
pact-1.0.11 lib/pact/provider/request.rb
pact-1.0.10 lib/pact/provider/request.rb