+
{client.name}
{#if client.launchURL}
{new URL(client.launchURL).hostname}
{/if}
+ {#if client.description}
+
+ {client.description}
+
+ {/if}
{#if $userStore?.isAdmin || client.lastUsedAt}
diff --git a/tests/data.ts b/tests/data.ts
index 5eb0e5a0..1371f438 100644
--- a/tests/data.ts
+++ b/tests/data.ts
@@ -64,6 +64,7 @@ export const oidcClients = {
},
pingvinShare: {
name: 'Pingvin Share',
+ description: 'Self-hosted file sharing platform',
callbackUrl: 'http://pingvin-share.localhost/auth/callback',
secondCallbackUrl: 'http://pingvin-share.localhost/auth/callback2',
launchURL: 'https://pingvin-share.local'
diff --git a/tests/resources/export/database.json b/tests/resources/export/database.json
index 4e7e4d00..aeb7ba51 100644
--- a/tests/resources/export/database.json
+++ b/tests/resources/export/database.json
@@ -1,6 +1,6 @@
{
"provider": "sqlite",
- "version": 20260707170000,
+ "version": 20260708120000,
"tableOrder": ["users", "user_groups", "oidc_clients", "signup_tokens", "apis", "api_permissions", "oidc_clients_allowed_api_permissions"],
"tables": {
"apis": [
@@ -92,6 +92,7 @@
"launch_url": "https://nextcloud.local",
"logout_callback_urls": "WyJodHRwOi8vbmV4dGNsb3VkLmxvY2FsaG9zdC9hdXRoL2xvZ291dC9jYWxsYmFjayJd",
"name": "Nextcloud",
+ "description": "This is an example description for Nextcloud",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
@@ -112,6 +113,7 @@
"launch_url": null,
"logout_callback_urls": "bnVsbA==",
"name": "Immich",
+ "description": "",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
@@ -132,6 +134,7 @@
"launch_url": null,
"logout_callback_urls": "WyJodHRwOi8vdGFpbHNjYWxlLmxvY2FsaG9zdC9hdXRoL2xvZ291dC9jYWxsYmFjayJd",
"name": "Tailscale",
+ "description": "",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
@@ -152,6 +155,7 @@
"launch_url": null,
"logout_callback_urls": "bnVsbA==",
"name": "Federated",
+ "description": "",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
@@ -171,6 +175,7 @@
"launch_url": null,
"logout_callback_urls": "bnVsbA==",
"name": "SCIM Client",
+ "description": "",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
@@ -191,6 +196,7 @@
"launch_url": null,
"logout_callback_urls": "bnVsbA==",
"name": "PAR Test Client",
+ "description": "",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
@@ -211,6 +217,7 @@
"launch_url": null,
"logout_callback_urls": "bnVsbA==",
"name": "Skip Consent Client",
+ "description": "",
"pkce_enabled": false,
"pkce_supported": false,
"requires_pushed_authorization_requests": false,
diff --git a/tests/specs/oidc-client-settings.spec.ts b/tests/specs/oidc-client-settings.spec.ts
index ca977807..ad41a640 100644
--- a/tests/specs/oidc-client-settings.spec.ts
+++ b/tests/specs/oidc-client-settings.spec.ts
@@ -11,6 +11,7 @@ test.describe('Create OIDC client', () => {
await page.getByRole('button', { name: 'Add OIDC Client' }).click();
await page.getByLabel('Name').fill(oidcClient.name);
+ await page.getByLabel('Description').fill(oidcClient.description);
await page.getByLabel('Client Launch URL').fill(oidcClient.launchURL);
await page.getByRole('button', { name: 'Add' }).first().click();
@@ -47,6 +48,7 @@ test.describe('Create OIDC client', () => {
expect(clientSecret).toMatch(/^\w{32}$/);
await expect(page.getByLabel('Name')).toHaveValue(oidcClient.name);
+ await expect(page.getByLabel('Description')).toHaveValue(oidcClient.description);
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` }).first()).toBeVisible();
@@ -69,6 +71,7 @@ test('Edit OIDC client', async ({ page }) => {
await page.goto(`/settings/admin/oidc-clients/${oidcClient.id}`);
await page.getByLabel('Name').fill('Nextcloud updated');
+ await page.getByLabel('Description').fill('Updated description');
await page.getByTestId('callback-url-1').first().fill('http://nextcloud-updated/auth/callback');
await page.locator('[role="tab"][data-value="light-logo"]').first().click();
await page.setInputFiles('#oidc-client-logo-light', 'resources/images/cloud-logo.png');