mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-06 13:12:58 +03:00
81 lines
3.3 KiB
TypeScript
81 lines
3.3 KiB
TypeScript
import test, { expect } from '@playwright/test';
|
|
import { oidcClients } from '../data';
|
|
import { cleanupBackend } from '../utils/cleanup.util';
|
|
|
|
test.beforeEach(cleanupBackend);
|
|
|
|
test('Create OIDC client', async ({ page }) => {
|
|
await page.goto('/settings/admin/oidc-clients');
|
|
const oidcClient = oidcClients.pingvinShare;
|
|
|
|
await page.getByRole('button', { name: 'Add OIDC Client' }).click();
|
|
await page.getByLabel('Name').fill(oidcClient.name);
|
|
|
|
await page.getByRole('button', { name: 'Add' }).nth(1).click();
|
|
await page.getByTestId('callback-url-1').fill(oidcClient.callbackUrl);
|
|
await page.getByRole('button', { name: 'Add another' }).click();
|
|
await page.getByTestId('callback-url-2').fill(oidcClient.secondCallbackUrl!);
|
|
|
|
await page.getByLabel('logo').setInputFiles('assets/pingvin-share-logo.png');
|
|
await page.getByRole('button', { name: 'Save' }).click();
|
|
|
|
const clientId = await page.getByTestId('client-id').textContent();
|
|
|
|
await expect(page.locator('[data-type="success"]')).toHaveText(
|
|
'OIDC client created successfully'
|
|
);
|
|
expect(clientId?.length).toBe(36);
|
|
expect((await page.getByTestId('client-secret').textContent())?.length).toBe(32);
|
|
await expect(page.getByLabel('Name')).toHaveValue(oidcClient.name);
|
|
await expect(page.getByTestId('callback-url-1')).toHaveValue(oidcClient.callbackUrl);
|
|
await expect(page.getByTestId('callback-url-2')).toHaveValue(oidcClient.secondCallbackUrl!);
|
|
await expect(page.getByRole('img', { name: `${oidcClient.name} logo` })).toBeVisible();
|
|
await page.request
|
|
.get(`/api/oidc/clients/${clientId}/logo`)
|
|
.then((res) => expect.soft(res.status()).toBe(200));
|
|
});
|
|
|
|
test('Edit OIDC client', async ({ page }) => {
|
|
const oidcClient = oidcClients.nextcloud;
|
|
await page.goto(`/settings/admin/oidc-clients/${oidcClient.id}`);
|
|
|
|
await page.getByLabel('Name').fill('Nextcloud updated');
|
|
await page.getByTestId('callback-url-1').first().fill('http://nextcloud-updated/auth/callback');
|
|
await page.getByLabel('logo').setInputFiles('assets/nextcloud-logo.png');
|
|
await page.getByRole('button', { name: 'Save' }).click();
|
|
|
|
await expect(page.locator('[data-type="success"]')).toHaveText(
|
|
'OIDC client updated successfully'
|
|
);
|
|
await expect(page.getByRole('img', { name: 'Nextcloud updated logo' })).toBeVisible();
|
|
await page.request
|
|
.get(`/api/oidc/clients/${oidcClient.id}/logo`)
|
|
.then((res) => expect.soft(res.status()).toBe(200));
|
|
});
|
|
|
|
test('Create new OIDC client secret', async ({ page }) => {
|
|
const oidcClient = oidcClients.nextcloud;
|
|
await page.goto(`/settings/admin/oidc-clients/${oidcClient.id}`);
|
|
|
|
await page.getByLabel('Create new client secret').click();
|
|
await page.getByRole('button', { name: 'Generate' }).click();
|
|
|
|
await expect(page.locator('[data-type="success"]')).toHaveText(
|
|
'New client secret created successfully'
|
|
);
|
|
expect((await page.getByTestId('client-secret').textContent())?.length).toBe(32);
|
|
});
|
|
|
|
test('Delete OIDC client', async ({ page }) => {
|
|
const oidcClient = oidcClients.nextcloud;
|
|
await page.goto('/settings/admin/oidc-clients');
|
|
|
|
await page.getByRole('row', { name: oidcClient.name }).getByLabel('Delete').click();
|
|
await page.getByText('Delete', { exact: true }).click();
|
|
|
|
await expect(page.locator('[data-type="success"]')).toHaveText(
|
|
'OIDC client deleted successfully'
|
|
);
|
|
await expect(page.getByRole('row', { name: oidcClient.name })).not.toBeVisible();
|
|
});
|