diff --git a/packages/rulesets/src/oas/__tests__/duplicated-entry-in-enum.test.ts b/packages/rulesets/src/oas/__tests__/duplicated-entry-in-enum.test.ts index b6cc674b4..1e772d6af 100644 --- a/packages/rulesets/src/oas/__tests__/duplicated-entry-in-enum.test.ts +++ b/packages/rulesets/src/oas/__tests__/duplicated-entry-in-enum.test.ts @@ -85,7 +85,7 @@ testRule('duplicated-entry-in-enum', [ }, { - name: 'osa3: enum with duplicated entries', + name: 'oas3: enum with duplicated entries', document: { openapi: '3.0.0', components: { @@ -158,4 +158,62 @@ testRule('duplicated-entry-in-enum', [ }, errors: [], }, + { + name: 'oas3.1: valid model', + document: { + openapi: '3.1.0', + components: { + schemas: { + Test: { + type: 'integer', + enum: [1, 2, 3, null], + }, + }, + }, + }, + errors: [], + }, + + { + name: 'oas3.1: enum with duplicated entries', + document: { + openapi: '3.1.0', + components: { + schemas: { + Test: { + type: 'integer', + enum: [1, 2, 3, 4, 5, 2], + }, + }, + }, + }, + errors: [ + { + message: `"enum" property must not have duplicate items (items ## 1 and 5 are identical)`, + path: ['components', 'schemas', 'Test', 'enum'], + severity: DiagnosticSeverity.Warning, + }, + ], + }, + { + name: 'oas3.1: enum with duplicated null entries', + document: { + openapi: '3.1.0', + components: { + schemas: { + Test: { + type: 'integer', + enum: [null, 1, 3, 4, 5, 2, null], + }, + }, + }, + }, + errors: [ + { + message: `"enum" property must not have duplicate items (items ## 0 and 6 are identical)`, + path: ['components', 'schemas', 'Test', 'enum'], + severity: DiagnosticSeverity.Warning, + }, + ], + }, ]); diff --git a/packages/rulesets/src/oas/index.ts b/packages/rulesets/src/oas/index.ts index 9505dc9c7..9ad40310f 100644 --- a/packages/rulesets/src/oas/index.ts +++ b/packages/rulesets/src/oas/index.ts @@ -159,7 +159,7 @@ const ruleset = { severity: 'warn', recommended: true, message: '{{error}}', - given: ["$..[?(@property !== 'properties' && @.enum && @.enum.constructor.name === 'Array')]"], + given: ["$..[?(@property !== 'properties' && @ != null && @.enum && @.enum.constructor.name === 'Array')]"], then: { field: 'enum', function: oasSchema,