diff --git a/app/transformers/securityDefinitions.js b/app/transformers/securityDefinitions.js index 0584941..df28836 100644 --- a/app/transformers/securityDefinitions.js +++ b/app/transformers/securityDefinitions.js @@ -27,8 +27,15 @@ module.exports = securityDefinitions => { + `${securityDefinitions[type][value][scope].replace(/[\r\n]/g, ' ')}|`); }); } else if (value !== 'type' && securityDefinitions[type][value].replace) { - res.push(`|${nameResolver[value]}|` - + `${securityDefinitions[type][value].replace(/[\r\n]/g, ' ')}|`); + let key = nameResolver[value]; + if (key === undefined) { + if (value.match(/^x-/i)) { + key = value; + } else { + return; + } + } + res.push(`|${key}|${securityDefinitions[type][value].replace(/[\r\n]/g, ' ')}|`); } }); res.push(''); diff --git a/tests/transformers/securityDefinitions.spec.js b/tests/transformers/securityDefinitions.spec.js index fa30b5a..ad0284a 100644 --- a/tests/transformers/securityDefinitions.spec.js +++ b/tests/transformers/securityDefinitions.spec.js @@ -42,4 +42,17 @@ describe('Security definitions', () => { const res = transformSecurituDefinitions(fixture); expect(res).to.exist; }); + it('Should ignore undefined keys unless it is prefixed with x-', () => { + const fixture = { + 'complex-structure': { + type: 'apiKey', + name: 'Name', + 'x-special-key': 'Special key', + 'unknown-key': 'Uknown key', + } + }; + const result = transformSecurituDefinitions(fixture); + expect(result.match(/undefined/ig)).to.be.null; + expect(result.match(/x-special-key/ig)).to.be.not.null; + }); });