Skip to content

Commit

Permalink
Showing expected header value in the message
Browse files Browse the repository at this point in the history
  • Loading branch information
Adam Kliment committed May 25, 2015
1 parent b4a771a commit d01272a
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 12 deletions.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"dependencies": {
"amanda": "^0.5.1",
"async": "^1.0.0",
"caseless": "^0.10.0",
"clone": "^1.0.0",
"commander": "^2.6.0",
"curl-trace-parser": "0.0.8",
Expand Down
6 changes: 3 additions & 3 deletions src/mixins/validatable-http-message.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ class Validatable
@validation.body.validator = 'JsonExample'
else
message =
message: "Can't validate real media type '#{@validation.body.realType}' against expected media type '#{@validation.body.realType}'."
message: "Can't validate real media type '#{@validation.body.realType}' against expected media type '#{@validation.body.expectedType}'."
severity: 'error'

@validation.body.results.push message
Expand All @@ -231,14 +231,14 @@ class Validatable
@validation.body.validator = 'TextDiff'
else
message =
message: "Can't validate real media type '#{@validation.body.realType}' against expected media type '#{@validation.body.realType}'."
message: "Can't validate real media type '#{@validation.body.realType}' against expected media type '#{@validation.body.expectedType}'."
severity: 'error'

@validation.body.results.push message

else
message =
message: "Can't validate real media type '#{@validation.body.realType}' against expected media type '#{@validation.body.realType}'."
message: "Can't validate real media type '#{@validation.body.realType}' against expected media type '#{@validation.body.expectedType}'."
severity: 'error'

@validation.body.results.push message
Expand Down
7 changes: 5 additions & 2 deletions src/utils/tv4-to-headers-message.coffee
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
module.exports = (message) ->
caseless = require 'caseless'

module.exports = (message, expectedHeaders) ->
if message.indexOf("Missing required property:") > 1
headerName = message.split("Missing required property: ")[1]
newMessage = "Header '#{headerName}' is missing"
Expand All @@ -12,8 +14,9 @@ module.exports = (message) ->
headerValue = splitted[1]
headerValue = headerValue.replace(/"$/, '')

expected = caseless(expectedHeaders).get headerName

newMessage = "Header '#{headerName}' doesn't have value '#{headerValue}'"
newMessage = "Header '#{headerName}' has value '#{headerValue}' instead of '#{expected}'"

else
throw new Error 'Unknown tv4 error message can\'t convert to headers message.'
Expand Down
2 changes: 1 addition & 1 deletion src/validators/headers-json-example.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class HeadersJsonExample extends JsonSchema
result = super()
if result.length > 0
for i in [0..(result.length - 1)]
result[i]['message'] = tv4ToHeadersMessage result[i]['message']
result[i]['message'] = tv4ToHeadersMessage result[i]['message'], @expected

result
#@private
Expand Down
10 changes: 6 additions & 4 deletions test/unit/utils/tv4-to-headers-message-test.coffee
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
{assert} = require 'chai'

tv4ToHeadersMessage = require '../../../src/utils/tv4-to-headers-message'
fixtures = require '../../fixtures'

describe 'tv4ToHeadersMessages()', ->

expectedHeaders = fixtures.sampleHeaders
describe 'when message for missing header', ->
it 'should return message with right text', ->
tv4Message = 'At \'/header2\' Missing required property: header2'
message = tv4ToHeadersMessage(tv4Message)
message = tv4ToHeadersMessage(tv4Message, expectedHeaders)
assert.equal message, "Header 'header2' is missing"

describe 'when message for different value', ->
it 'should return message with right text', ->
tv4Message = 'At \'/content-type\' No enum match for: "application/fancy-madiatype"'
message = tv4ToHeadersMessage(tv4Message)
assert.equal message, "Header 'content-type' doesn't have value 'application/fancy-madiatype'"
message = tv4ToHeadersMessage(tv4Message, expectedHeaders)
assert.equal message, "Header 'content-type' has value 'application/fancy-madiatype' instead of 'application/json'"

describe 'when unknonw message', ->
it 'should throw an error', ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,7 @@ describe 'HeadersJsonExample', ->

it 'should have beautiful error message', ->
result = headersValidator.validate()
console.log result
assert.equal result[0].message, "Header 'content-type' doesn't have value 'application/fancy-madiatype'"
assert.equal result[0].message, "Header 'content-type' has value 'application/fancy-madiatype' instead of 'application/json'"

describe 'when key is added to provided headers', ->
before ->
Expand Down

0 comments on commit d01272a

Please sign in to comment.