From 697d5568132f317f1e8819ada92603ef42478c04 Mon Sep 17 00:00:00 2001 From: Greg Date: Wed, 17 Aug 2022 01:34:37 +0200 Subject: [PATCH] fix: Optional authentication not rendered properly (#2117) --- .../SecurityRequirement/SecurityHeader.tsx | 2 ++ .../__tests__/SecurityRequirement.test.tsx | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/components/SecurityRequirement/SecurityHeader.tsx b/src/components/SecurityRequirement/SecurityHeader.tsx index c542b51c7f..12047db1ee 100644 --- a/src/components/SecurityRequirement/SecurityHeader.tsx +++ b/src/components/SecurityRequirement/SecurityHeader.tsx @@ -17,6 +17,8 @@ export function SecurityHeader(props: SecurityRequirementProps) { const { security, showSecuritySchemeType, expanded } = props; const grouping = security.schemes.length > 1; + if (security.schemes.length === 0) + return None; return ( {grouping && '('} diff --git a/src/components/__tests__/SecurityRequirement.test.tsx b/src/components/__tests__/SecurityRequirement.test.tsx index 8d5e57618c..ad17b81be2 100644 --- a/src/components/__tests__/SecurityRequirement.test.tsx +++ b/src/components/__tests__/SecurityRequirement.test.tsx @@ -9,6 +9,7 @@ import { SecuritySchemesModel, } from '../../services'; import { StoreProvider } from '../StoreBuilder'; +import { SecurityRequirementModel } from '../../services/models/SecurityRequirement'; import { SecurityRequirements } from '../SecurityRequirement/SecurityRequirement'; import { withTheme } from '../testProviders'; import { SecurityDefs } from '../SecuritySchemes/SecuritySchemes'; @@ -50,6 +51,20 @@ describe('SecurityRequirement', () => { expect(component.html()).toMatchSnapshot(); }); + it("should render 'None' when empty object in security open api", () => { + const options = new RedocNormalizedOptions({}); + const parser = new OpenAPIParser( + { openapi: '3.0', info: { title: 'test', version: '0' }, paths: {} }, + undefined, + options, + ); + const securityRequirement = [new SecurityRequirementModel({}, parser)]; + const component = mount( + withTheme(), + ); + expect(component.find('span').at(0).text()).toEqual('None'); + }); + it('should hide authDefinition', async () => { const store = await createStore(simpleSecurityFixture, undefined, { hideSecuritySection: true,