class Pacto::Validators::ResponseHeaderValidator

Constants

HeaderValidatorMap

Public Class Methods

new(app) click to toggle source
# File lib/pacto/validators/response_header_validator.rb, line 4
def initialize(app)
  @app = app
end
validate(expected_headers, actual_headers) click to toggle source
# File lib/pacto/validators/response_header_validator.rb, line 15
def self.validate(expected_headers, actual_headers)
  actual_headers = Pacto::Extensions.normalize_header_keys actual_headers
  headers_to_validate = Pacto::Extensions.normalize_header_keys expected_headers

  headers_to_validate.map do |expected_header, expected_value|
    if actual_headers.key? expected_header
      actual_value = actual_headers[expected_header]
      HeaderValidatorMap[expected_header].call(expected_value, actual_value)
    else
      "Missing expected response header: #{expected_header}"
    end
  end.compact
end

Public Instance Methods

call(env) click to toggle source
# File lib/pacto/validators/response_header_validator.rb, line 8
def call(env)
  expected_headers = env[:contract].response.headers
  actual_headers = env[:actual_response].headers
  env[:validation_results].concat self.class.validate(expected_headers, actual_headers)
  @app.call env
end