Skip to content
This repository was archived by the owner on Nov 8, 2024. It is now read-only.

Commit 72e714a

Browse files
klokanekylef
authored andcommitted
fix(oas3): handle malformed query name (#214)
1 parent c520cdd commit 72e714a

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

packages/fury-adapter-oas3-parser/lib/parser/oas/parseParameterObject.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,8 @@ function parseParameterObject(context, object) {
110110

111111
const createReservedHeaderNamesWarning = createWarning(namespace, `'${name}' 'name' in location 'header' should not be 'Accept', 'Content-Type' or 'Authorization'`);
112112

113+
const createMalformedUriCharacterError = createError(namespace, `'${name}' 'name' in location 'query' contains URI malformed characters`);
114+
113115
const hasLocation = R.curry((location, parameter) => parameter.getValue('in') === location);
114116

115117
const validatePathName = R.when(nameContainsReservedCharacter, createUnsupportedNameError);
@@ -118,11 +120,12 @@ function parseParameterObject(context, object) {
118120
.toValue()
119121
.match(reservedHeaderNamesRegex);
120122

121-
const sanitizeQueryName = (parameter) => {
123+
const sanitizeQueryName = R.tryCatch((parameter) => {
122124
const name = parameter.get('name');
123125
name.content = encodeQueryName(name.toValue());
124126
return parameter;
125-
};
127+
},
128+
(err, parameter) => createMalformedUriCharacterError(parameter.get('name')));
126129

127130
const validateHeaderName = pipeParseResult(namespace,
128131
R.when(nameContainsReservedCharacter, createUnsupportedNameError),

packages/fury-adapter-oas3-parser/test/unit/parser/oas/parseParameterObject-test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,17 @@ describe('Parameter Object', () => {
9393
expect(parseResult.get(0).key.toValue()).to.equal(input);
9494
});
9595

96+
it('handle throw while encoding query', () => {
97+
const parameter = new namespace.elements.Object({
98+
name: '\uD800',
99+
in: 'query',
100+
});
101+
102+
const parseResult = parse(context, parameter);
103+
104+
expect(parseResult).to.contain.error('\'Parameter Object\' \'name\' in location \'query\' contains URI malformed characters');
105+
});
106+
96107
it('allows header name to contain unreserved characters', () => {
97108
const alpha = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
98109
const digit = '0123456789';

0 commit comments

Comments
 (0)