From ad9544c483a1490bb7c4debf717bde237a43c770 Mon Sep 17 00:00:00 2001 From: Ilya Katlinski Date: Tue, 8 Aug 2023 12:10:19 +0200 Subject: [PATCH] test: update unit test for vault backend plugin api Signed-off-by: Ilya Katlinski --- .../src/service/vaultApi.test.ts | 56 +++++++++++-------- plugins/vault/src/api.test.ts | 2 + .../EntityVaultTable.test.tsx | 1 + 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/plugins/vault-backend/src/service/vaultApi.test.ts b/plugins/vault-backend/src/service/vaultApi.test.ts index 1fb869ef60..1d037bb77a 100644 --- a/plugins/vault-backend/src/service/vaultApi.test.ts +++ b/plugins/vault-backend/src/service/vaultApi.test.ts @@ -21,6 +21,8 @@ import { VaultSecret, VaultClient, VaultSecretList } from './vaultApi'; import { ConfigReader } from '@backstage/config'; describe('VaultApi', () => { + let api: VaultClient; + const server = setupServer(); setupRequestMockHandlers(server); @@ -43,20 +45,24 @@ describe('VaultApi', () => { }, }; - const mockSecretsResult: VaultSecret[] = [ - { - name: 'secret::one', - path: 'test/success', - editUrl: `${mockBaseUrl}/ui/vault/secrets/secrets/edit/test/success/secret::one`, - showUrl: `${mockBaseUrl}/ui/vault/secrets/secrets/show/test/success/secret::one`, - }, - { - name: 'secret::two', - path: 'test/success', - editUrl: `${mockBaseUrl}/ui/vault/secrets/secrets/edit/test/success/secret::two`, - showUrl: `${mockBaseUrl}/ui/vault/secrets/secrets/show/test/success/secret::two`, - }, - ]; + const mockSecretsResult = ( + secretEngine: string = 'secrets', + ): VaultSecret[] => { + return [ + { + name: 'secret::one', + path: 'test/success', + editUrl: `${mockBaseUrl}/ui/vault/secrets/${secretEngine}/edit/test/success/secret::one`, + showUrl: `${mockBaseUrl}/ui/vault/secrets/${secretEngine}/show/test/success/secret::one`, + }, + { + name: 'secret::two', + path: 'test/success', + editUrl: `${mockBaseUrl}/ui/vault/secrets/${secretEngine}/edit/test/success/secret::two`, + showUrl: `${mockBaseUrl}/ui/vault/secrets/${secretEngine}/show/test/success/secret::two`, + }, + ]; + }; const setupHandlers = () => { server.use( @@ -66,6 +72,9 @@ describe('VaultApi', () => { return res(ctx.json(mockListResult)); }, ), + rest.get(`${mockBaseUrl}/v1/kv/metadata/test/success`, (_, res, ctx) => { + return res(ctx.json(mockListResult)); + }), rest.get( `${mockBaseUrl}/v1/secrets/metadata/test/error`, (_, res, ctx) => { @@ -78,28 +87,31 @@ describe('VaultApi', () => { ); }; - it('should return secrets', async () => { + beforeEach(() => { setupHandlers(); - const api = new VaultClient({ config }); + api = new VaultClient({ config }); + }); + + it('should return secrets', async () => { const secrets = await api.listSecrets('test/success'); - expect(secrets).toEqual(mockSecretsResult); + expect(secrets).toEqual(mockSecretsResult()); + }); + + it('should return secrets for custom engine', async () => { + const secrets = await api.listSecrets('test/success', 'kv'); + expect(secrets).toEqual(mockSecretsResult('kv')); }); it('should return empty secret list', async () => { - setupHandlers(); - const api = new VaultClient({ config }); const secrets = await api.listSecrets('test/error'); expect(secrets).toEqual([]); }); it('should return success token renew', async () => { - setupHandlers(); - const api = new VaultClient({ config }); expect(await api.renewToken()).toBe(undefined); }); it('should render frontend url', () => { - const api = new VaultClient({ config }); const url = api.getFrontendSecretsUrl(); expect(url).toEqual(`${mockBaseUrl}/ui/vault/secrets/secrets`); }); diff --git a/plugins/vault/src/api.test.ts b/plugins/vault/src/api.test.ts index 47d33f2d99..03c75fbce3 100644 --- a/plugins/vault/src/api.test.ts +++ b/plugins/vault/src/api.test.ts @@ -68,6 +68,8 @@ describe('api', () => { }; beforeEach(() => { + jest.resetAllMocks(); + setupHandlers(); api = new VaultClient({ discoveryApi, fetchApi }); diff --git a/plugins/vault/src/components/EntityVaultTable/EntityVaultTable.test.tsx b/plugins/vault/src/components/EntityVaultTable/EntityVaultTable.test.tsx index 4cf5b60026..69fa5fec4e 100644 --- a/plugins/vault/src/components/EntityVaultTable/EntityVaultTable.test.tsx +++ b/plugins/vault/src/components/EntityVaultTable/EntityVaultTable.test.tsx @@ -100,6 +100,7 @@ describe('EntityVaultTable', () => { }; beforeEach(() => { + jest.resetAllMocks(); vaultClient = new VaultClient({ discoveryApi, fetchApi }); apis = TestApiRegistry.from([vaultApiRef, vaultClient]); listSecretsSpy = jest.spyOn(vaultClient, 'listSecrets');