From c3f9e6bdb248ca86541c69a384cf4137ac427b77 Mon Sep 17 00:00:00 2001 From: Tymoteusz Czech <2625371+Tymek@users.noreply.github.com> Date: Fri, 12 Jul 2024 14:16:53 +0200 Subject: [PATCH] test: api tokens limit ui testing --- .../CreateApiToken/CreateApiToken.test.tsx | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 frontend/src/component/admin/apiToken/CreateApiToken/CreateApiToken.test.tsx diff --git a/frontend/src/component/admin/apiToken/CreateApiToken/CreateApiToken.test.tsx b/frontend/src/component/admin/apiToken/CreateApiToken/CreateApiToken.test.tsx new file mode 100644 index 0000000000..387e1f0f83 --- /dev/null +++ b/frontend/src/component/admin/apiToken/CreateApiToken/CreateApiToken.test.tsx @@ -0,0 +1,64 @@ +import { render } from 'utils/testRenderer'; +import { screen, waitFor } from '@testing-library/react'; +import { testServerRoute, testServerSetup } from 'utils/testServer'; +import { CreateApiToken } from './CreateApiToken'; +import { + ADMIN, + CREATE_CLIENT_API_TOKEN, + CREATE_FRONTEND_API_TOKEN, +} from '@server/types/permissions'; + +const permissions = [ + { permission: CREATE_CLIENT_API_TOKEN }, + { permission: CREATE_FRONTEND_API_TOKEN }, + { permission: ADMIN }, +]; + +const server = testServerSetup(); + +const setupApi = (existingTokensCount: number) => { + testServerRoute(server, '/api/admin/ui-config', { + flags: { + resourceLimits: true, + }, + resourceLimits: { + apiTokens: 1, + }, + versionInfo: { + current: { enterprise: 'version' }, + }, + }); + + testServerRoute(server, '/api/admin/api-tokens', { + tokens: [...Array(existingTokensCount).keys()].map((_, i) => ({ + secret: `token${i}`, + })), + }); +}; + +test('Enabled new token button when limits, version and permission allow for it', async () => { + setupApi(0); + render(, { + permissions, + }); + + const button = await screen.findByText('Create token'); + expect(button).toBeDisabled(); + + await waitFor(async () => { + const button = await screen.findByText('Create token'); + expect(button).not.toBeDisabled(); + }); +}); + +test('Token limit reached', async () => { + setupApi(1); + render(, { + permissions, + }); + + await screen.findByText('You have reached the limit for API tokens'); + + const button = await screen.findByText('Create token'); + expect(button).toBeDisabled(); +});