Merge pull request #33 from vinh0604/master

Simplify response header validation
This commit is contained in:
domaindrivendev 2016-10-19 17:15:50 -07:00 committed by GitHub
commit e1fe9f3239
2 changed files with 5 additions and 11 deletions

View File

@ -28,15 +28,10 @@ module Rswag
def validate_headers!(headers) def validate_headers!(headers)
header_schema = @api_metadata[:response][:headers] header_schema = @api_metadata[:response][:headers]
return if header_schema.nil? return if header_schema.nil?
header_schema.each do |header_name, schema|
validate_header!(schema, header_name, headers[header_name.to_s])
end
end
def validate_header!(schema, header_name, header_value) header_schema.keys.each do |header_name|
JSON::Validator.validate!(schema.merge(@global_metadata), header_value.to_json) raise UnexpectedResponse, "Expected response header #{header_name} to be present" if headers[header_name.to_s].nil?
rescue JSON::Schema::ValidationError => ex end
raise UnexpectedResponse, "Expected response headers #{header_name} to match schema: #{ex.message}"
end end
def validate_body!(body) def validate_body!(body)

View File

@ -96,9 +96,8 @@ module Rswag
context 'response code matches & body does not' do context 'response code matches & body does not' do
let(:response) { OpenStruct.new(code: 200, body: '{}', headers: { let(:response) { OpenStruct.new(code: 200, body: '{}', headers: {
'X-Rate-Limit-Limit' => 'invalid', 'X-Rate-Limit-Limit' => 1,
'X-Rate-Limit-Remaining' => 'invalid', 'X-Rate-Limit-Remaining' => 1
'X-Rate-Limit-Reset' => 'invalid'
}) } }) }
it { expect { call }.to raise_error UnexpectedResponse } it { expect { call }.to raise_error UnexpectedResponse }
end end