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

Commit 1ed6430

Browse files
committed
fix(oas3): validate server variable enum is not empty
1 parent 415abb8 commit 1ed6430

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

packages/openapi3-parser/lib/parser/oas/parseServerVariableObject.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,15 @@ const parseEnumStrings = R.curry((context, element) => {
2020
const parseEnumString = R.unless(isString,
2121
createWarning(namespace, `'${name}' 'enum' array value is not a string`));
2222

23+
const validateArrayNotEmpty = R.when(
24+
array => array.isEmpty,
25+
createWarning(namespace, `'${name}' 'enum' array must contain 1 or more values`)
26+
);
27+
2328
const parseEnum = pipeParseResult(
2429
namespace,
2530
parseArray(context, `${name}' 'enum`, parseEnumString),
31+
validateArrayNotEmpty,
2632
(array) => {
2733
const element = new context.namespace.elements.Enum();
2834
element.enumerations = array.map((value) => {

packages/openapi3-parser/test/unit/parser/oas/parseServerVariableObject-test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,5 +149,20 @@ describe('#parseServerVariableObject', () => {
149149
expect(enumeration.toValue()).to.deep.equal('Tony');
150150
expect(enumeration.attributes.getValue('typeAttributes')).to.deep.equal(['fixed']);
151151
});
152+
153+
it('warns when enum is empty', () => {
154+
const serverVariable = new namespace.elements.Object({
155+
default: 'Mario',
156+
enum: [],
157+
});
158+
159+
const parseResult = parse(context)(serverVariable, 'name');
160+
161+
expect(parseResult).to.contain.warning("'Server Variable Object' 'enum' array must contain 1 or more values");
162+
163+
const member = parseResult.get(0);
164+
expect(member).to.be.instanceof(namespace.elements.Member);
165+
expect(member.value).to.be.instanceof(namespace.elements.String);
166+
});
152167
});
153168
});

0 commit comments

Comments
 (0)