// SPDX-License-Identifier: AGPL-3.0-or-later import type {TestAccount} from '../../auth/tests/AuthTestUtils'; import type {ApiTestHarness} from '../../test/ApiTestHarness'; import {createBuilder} from '../../test/TestRequestBuilder'; interface AdminApiKey { keyId: string; key: string; name: string; acls: Array; token: string; } export async function createAdminApiKey( harness: ApiTestHarness, account: TestAccount, name: string, acls: Array, expiresInDays: number | null, ): Promise { const data = await createBuilder<{ key_id: string; key: string; name: string; acls: Array; }>(harness, `${account.token}`) .post('/admin/api-keys') .body({ name, acls, ...(expiresInDays !== null ? {expires_in_days: expiresInDays} : {}), }) .execute(); return { keyId: data.key_id, key: data.key, name: data.name, acls: data.acls, token: `Admin ${data.key}`, }; } export async function createAdminApiKeyWithDefaultACLs( harness: ApiTestHarness, account: TestAccount, name: string, ): Promise { return await createAdminApiKey(harness, account, name, ['audit_log:view', 'user:lookup', 'guild:lookup'], null); } export async function listAdminApiKeys( harness: ApiTestHarness, token: string, ): Promise>> { return createBuilder>>(harness, `${token}`).get('/admin/api-keys').execute(); } export async function revokeAdminApiKey(harness: ApiTestHarness, token: string, keyId: string): Promise { await createBuilder(harness, `${token}`).delete(`/admin/api-keys/${keyId}`).body(null).expect(200).execute(); }