diff --git a/packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/application.ts b/packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/application.ts index 09ab77a13cb9..d6c03f56c1a7 100644 --- a/packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/application.ts +++ b/packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/application.ts @@ -5,8 +5,8 @@ import {Application, createBindingFromClass} from '@loopback/core'; import {OASEnhancerService, OAS_ENHANCER_SERVICE} from '../../../..'; +import {SecuritySpecEnhancer} from '../../../../enhancers/extensions/security.spec.extension'; import {InfoSpecEnhancer} from './info.spec.extension'; -import {SecuritySpecEnhancer} from './security.spec.extension'; export class SpecServiceApplication extends Application { constructor() { diff --git a/packages/openapi-v3/src/__tests__/unit/enhancers/spec-enhancer.extensions.unit.ts b/packages/openapi-v3/src/__tests__/unit/enhancers/spec-enhancer.extensions.unit.ts index a3993cb31b53..f5cc76055291 100644 --- a/packages/openapi-v3/src/__tests__/unit/enhancers/spec-enhancer.extensions.unit.ts +++ b/packages/openapi-v3/src/__tests__/unit/enhancers/spec-enhancer.extensions.unit.ts @@ -34,7 +34,7 @@ describe('spec-enhancer-extension-point', () => { // the security scheme entry is added by the security enhancer components: { securitySchemes: { - bearerAuth: { + jwt: { type: 'http', scheme: 'bearer', bearerFormat: 'JWT', diff --git a/packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/security.spec.extension.ts b/packages/openapi-v3/src/enhancers/extensions/security.spec.extension.ts similarity index 70% rename from packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/security.spec.extension.ts rename to packages/openapi-v3/src/enhancers/extensions/security.spec.extension.ts index 9eb4eda9d283..f341909982d3 100644 --- a/packages/openapi-v3/src/__tests__/unit/enhancers/fixtures/security.spec.extension.ts +++ b/packages/openapi-v3/src/enhancers/extensions/security.spec.extension.ts @@ -6,13 +6,9 @@ import {bind} from '@loopback/core'; import debugModule from 'debug'; import {inspect} from 'util'; -import { - mergeOpenAPISpec, - ReferenceObject, - SecuritySchemeObject, -} from '../../../..'; -import {asSpecEnhancer, OASEnhancer} from '../../../../enhancers/types'; -import {OpenApiSpec} from '../../../../types'; +import {mergeOpenAPISpec, ReferenceObject, SecuritySchemeObject} from '../..'; +import {OpenApiSpec} from '../../types'; +import {asSpecEnhancer, OASEnhancer} from '../types'; const debug = debugModule('loopback:openapi:spec-enhancer'); export type SecuritySchemeObjects = { @@ -20,7 +16,7 @@ export type SecuritySchemeObjects = { }; export const SECURITY_SCHEME_SPEC: SecuritySchemeObjects = { - bearerAuth: { + jwt: { type: 'http', scheme: 'bearer', bearerFormat: 'JWT', @@ -28,7 +24,7 @@ export const SECURITY_SCHEME_SPEC: SecuritySchemeObjects = { }; /** - * A spec enhancer to add bearer token OpenAPI security entry to + * A spec enhancer to add jwt bearer token OpenAPI security entry to * `spec.component.securitySchemes` */ @bind(asSpecEnhancer) @@ -36,7 +32,10 @@ export class SecuritySpecEnhancer implements OASEnhancer { name = 'security'; modifySpec(spec: OpenApiSpec): OpenApiSpec { - const patchSpec = {components: {securitySchemes: SECURITY_SCHEME_SPEC}}; + if (spec?.components?.securitySchemes?.jwt) return spec; + const patchSpec = { + components: {securitySchemes: SECURITY_SCHEME_SPEC}, + }; const mergedSpec = mergeOpenAPISpec(spec, patchSpec); debug(`security spec extension, merged spec: ${inspect(mergedSpec)}`); return mergedSpec; diff --git a/packages/openapi-v3/src/enhancers/index.ts b/packages/openapi-v3/src/enhancers/index.ts index 6df3b5cb32b8..53d6a05c6604 100644 --- a/packages/openapi-v3/src/enhancers/index.ts +++ b/packages/openapi-v3/src/enhancers/index.ts @@ -3,6 +3,7 @@ // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT +export * from './extensions/security.spec.extension'; export * from './keys'; export * from './spec-enhancer.service'; export * from './types';