diff --git a/lib/types/operation.js b/lib/types/operation.js index 37e7fe574..c42f16bce 100644 --- a/lib/types/operation.js +++ b/lib/types/operation.js @@ -430,20 +430,26 @@ Operation.prototype.supportedSubmitMethods = function () { Operation.prototype.getHeaderParams = function (args) { var headers = this.setContentTypes(args, {}); + var headerParamsByLowerCase = {}; for (var i = 0; i < this.parameters.length; i++) { var param = this.parameters[i]; - if (typeof args[param.name] !== 'undefined') { - if (param.in === 'header') { - var value = args[param.name]; + if (param.in === 'header') { + headerParamsByLowerCase[param.name.toLowerCase()] = param; + } + } - if (Array.isArray(value)) { - value = value.toString(); - } + for (var arg in args) { + var headerParam = headerParamsByLowerCase[arg.toLowerCase()]; + if (typeof headerParam !== 'undefined') { + var value = args[arg]; - headers[param.name] = value; + if (Array.isArray(value)) { + value = value.toString(); } + + headers[headerParam.name] = value; } } diff --git a/test/headers.js b/test/headers.js index 0a0069437..c47aae9f0 100644 --- a/test/headers.js +++ b/test/headers.js @@ -25,6 +25,24 @@ describe('header extraction', function () { expect(headers.myHeader).toBe('tony'); }); + it('should extract header params with case insensitivity', function () { + var parameters = [ + { + in: 'header', + name: 'myHeader', + type: 'string' + } + ]; + var op = new Operation({}, 'http', 'test', 'get', '/path', { parameters: parameters }); + var args = { + MyHeAdeR: 'nick' + }; + var url = op.urlify(args); + var headers = op.getHeaderParams(args); + + expect(url).toBe('http://localhost/path'); + expect(headers.myHeader).toBe('nick'); + }); it('should not URL encode header string values', function () { var parameters = [