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();
+});