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

Commit ff27419

Browse files
committed
fix(oas3): warn for pathItems in components on 3.1
1 parent 1ed6430 commit ff27419

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,7 @@ function parseComponentsObject(context, element) {
224224
return parseResult;
225225
});
226226

227+
const isOpenAPI31OrHigher = () => context.isOpenAPIVersionMoreThanOrEqual(3, 1);
227228
const parseMember = R.cond([
228229
[hasKey('schemas'), parseSchemas],
229230
[hasKey('parameters'), parseComponentObjectMember(parseParameterObject)],
@@ -232,6 +233,7 @@ function parseComponentsObject(context, element) {
232233
[hasKey('examples'), parseComponentObjectMember(parseExampleObject)],
233234
[hasKey('headers'), parseComponentObjectMember(parseHeaderObject)],
234235
[hasKey('securitySchemes'), parseSecuritySchemes],
236+
[R.both(hasKey('pathItems'), isOpenAPI31OrHigher), createUnsupportedMemberWarning(namespace, name)],
235237

236238
[isUnsupportedKey, createUnsupportedMemberWarning(namespace, name)],
237239

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,27 @@ describe('Components Object', () => {
239239
});
240240
});
241241

242+
describe('#pathItems', () => {
243+
it('provides a warning when using OpenAPI < 3.1', () => {
244+
const components = new namespace.elements.Object({
245+
pathItems: {},
246+
});
247+
248+
const parseResult = parse(context, components);
249+
expect(parseResult).to.contain.warning("'Components Object' contains invalid key 'pathItems'");
250+
});
251+
252+
it('provides an unsupported warning when using OpenAPI >= 3.1', () => {
253+
context.openapiVersion = { major: 3, minor: 1 };
254+
const components = new namespace.elements.Object({
255+
pathItems: {},
256+
});
257+
258+
const parseResult = parse(context, components);
259+
expect(parseResult).to.contain.warning("'Components Object' contains unsupported key 'pathItems'");
260+
});
261+
});
262+
242263
describe('#requestBodies', () => {
243264
it('provides a warning when requestBodies is not an object', () => {
244265
const components = new namespace.elements.Object({

0 commit comments

Comments
 (0)