Skip to content

Commit

Permalink
feat(ls): add rules for OpenAPI 2.0 Security Definitions Object (#3662)
Browse files Browse the repository at this point in the history
Refs #3618
  • Loading branch information
char0n authored Jan 12, 2024
1 parent 8bb660a commit 2323129
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 0 deletions.
3 changes: 3 additions & 0 deletions packages/apidom-ls/src/config/codes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -772,6 +772,9 @@ enum ApilintCodes {
OPENAPI2_RESPONSES_DEFINITIONS = 3160000,
OPENAPI2_RESPONSES_DEFINITIONS_VALUES_TYPE = 3160100,

OPENAPI2_SECURITY_DEFINITIONS = 3170000,
OPENAPI2_SECURITY_DEFINITIONS_VALUES_TYPE = 3170100,

OPENAPI3_0 = 5000000,

OPENAPI3_0_OPENAPI_VALUE_PATTERN_3_0_0 = 5000100,
Expand Down
2 changes: 2 additions & 0 deletions packages/apidom-ls/src/config/openapi/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ import responsesMeta from './responses/meta';
import responsesDefinitionsMeta from './responses-definitions/meta';
import securityRequirementMeta from './security-requirement/meta';
import securitySchemeMeta from './security-scheme/meta';
import securityDefinitionsMeta from './security-definitions/meta';
import serverMeta from './server/meta';
import serverVariableMeta from './server-variable/meta';
import swaggerMeta from './swagger/meta';
Expand Down Expand Up @@ -87,6 +88,7 @@ export default {
responsesDefinitions: responsesDefinitionsMeta,
securityRequirement: securityRequirementMeta,
securityScheme: securitySchemeMeta,
securityDefinitions: securityDefinitionsMeta,
server: serverMeta,
serverVariable: serverVariableMeta,
swagger: swaggerMeta,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { OpenAPI2 } from '../target-specs';

const documentation = [
{
docs: '#### [Security Definitions Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#securityDefinitionsObject)\n\nA declaration of the security schemes available to be used in the specification. This does not enforce the security schemes on the operations and only serves to provide the relevant details for each scheme.\n\n##### Patterned Fields\nField Pattern | Type | Description\n---|:---:|---\n{name} | [Security Scheme Object](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#securitySchemeObject) | A single security scheme definition, mapping a "name" to the scheme it defines.\n\n##### Security Definitions Object Example\n\n```js\n{\n "api_key": {\n "type": "apiKey",\n "name": "api_key",\n "in": "header"\n },\n "petstore_auth": {\n "type": "oauth2",\n "authorizationUrl": "http://swagger.io/api/oauth/dialog",\n "flow": "implicit",\n "scopes": {\n "write:pets": "modify pets in your account",\n "read:pets": "read your pets"\n }\n }\n}\n```\n\n\n\\\nYAML\n```yaml\napi_key:\n type: apiKey\n name: api_key\n in: header\npetstore_auth:\n type: oauth2\n authorizationUrl: http://swagger.io/api/oauth/dialog\n flow: implicit\n scopes:\n write:pets: modify pets in your account\n read:pets: read your pets\n```',
targetSpecs: OpenAPI2,
},
];

export default documentation;
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import valuesTypeLint from './values--type';

const lints = [valuesTypeLint];

export default lints;
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { DiagnosticSeverity } from 'vscode-languageserver-types';

import ApilintCodes from '../../../codes';
import { LinterMeta } from '../../../../apidom-language-types';
import { OpenAPI2 } from '../../target-specs';

const valuesTypeLint: LinterMeta = {
code: ApilintCodes.OPENAPI2_SECURITY_DEFINITIONS_VALUES_TYPE,
source: 'apilint',
message: 'Security Definitions Object values must be of Security Scheme Object shape',
severity: DiagnosticSeverity.Error,
linterFunction: 'apilintChildrenOfElementsOrClasses',
linterParams: [['securityScheme']],
marker: 'key',
data: {},
targetSpecs: OpenAPI2,
};

export default valuesTypeLint;
10 changes: 10 additions & 0 deletions packages/apidom-ls/src/config/openapi/security-definitions/meta.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import lint from './lint';
import documentation from './documentation';
import { FormatMeta } from '../../../apidom-language-types';

const meta: FormatMeta = {
lint,
documentation,
};

export default meta;

0 comments on commit 2323129

Please sign in to comment.