mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-02-04 15:04:43 +00:00
tests: add e2e LDAP tests (#466)
Co-authored-by: Elias Schneider <login@eliasschneider.com>
This commit is contained in:
@@ -53,47 +53,6 @@ test('Update email configuration', async ({ page }) => {
|
||||
await expect(page.getByLabel('API Key Expiration')).toBeChecked();
|
||||
});
|
||||
|
||||
test('Update LDAP configuration', async ({ page }) => {
|
||||
await page.goto('/settings/admin/application-configuration');
|
||||
|
||||
await page.getByRole('button', { name: 'Expand card' }).nth(2).click();
|
||||
|
||||
await page.getByLabel('LDAP URL').fill('ldap://localhost:389');
|
||||
await page.getByLabel('LDAP Bind DN').fill('cn=admin,dc=example,dc=com');
|
||||
await page.getByLabel('LDAP Bind Password').fill('password');
|
||||
await page.getByLabel('LDAP Base DN').fill('dc=example,dc=com');
|
||||
await page.getByLabel('User Search Filter').fill('(objectClass=person)');
|
||||
await page.getByLabel('Groups Search Filter').fill('(objectClass=groupOfUniqueNames)');
|
||||
await page.getByLabel('User Unique Identifier Attribute').fill('uuid');
|
||||
await page.getByLabel('Username Attribute').fill('uid');
|
||||
await page.getByLabel('User Mail Attribute').fill('mail');
|
||||
await page.getByLabel('User First Name Attribute').fill('givenName');
|
||||
await page.getByLabel('User Last Name Attribute').fill('sn');
|
||||
await page.getByLabel('Group Unique Identifier Attribute').fill('uuid');
|
||||
await page.getByLabel('Group Name Attribute').fill('cn');
|
||||
await page.getByLabel('Admin Group Name').fill('admin');
|
||||
|
||||
await page.getByRole('button', { name: 'Enable' }).click();
|
||||
|
||||
await expect(page.getByRole('status')).toHaveText('LDAP configuration updated successfully');
|
||||
|
||||
await page.reload();
|
||||
|
||||
await expect(page.getByRole('button', { name: 'Disable' })).toBeVisible();
|
||||
await expect(page.getByLabel('LDAP URL')).toHaveValue('ldap://localhost:389');
|
||||
await expect(page.getByLabel('LDAP Bind DN')).toHaveValue('cn=admin,dc=example,dc=com');
|
||||
await expect(page.getByLabel('LDAP Bind Password')).toHaveValue('password');
|
||||
await expect(page.getByLabel('LDAP Base DN')).toHaveValue('dc=example,dc=com');
|
||||
await page.getByLabel('User Search Filter').fill('(objectClass=person)');
|
||||
await page.getByLabel('Groups Search Filter').fill('(objectClass=groupOfUniqueNames)');
|
||||
await expect(page.getByLabel('User Unique Identifier Attribute')).toHaveValue('uuid');
|
||||
await expect(page.getByLabel('Username Attribute')).toHaveValue('uid');
|
||||
await expect(page.getByLabel('User Mail Attribute')).toHaveValue('mail');
|
||||
await expect(page.getByLabel('User First Name Attribute')).toHaveValue('givenName');
|
||||
await expect(page.getByLabel('User Last Name Attribute')).toHaveValue('sn');
|
||||
await expect(page.getByLabel('Admin Group Name')).toHaveValue('admin');
|
||||
});
|
||||
|
||||
test('Update application images', async ({ page }) => {
|
||||
await page.goto('/settings/admin/application-configuration');
|
||||
|
||||
|
||||
83
frontend/tests/ldap.spec.ts
Normal file
83
frontend/tests/ldap.spec.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
import test, { expect } from '@playwright/test';
|
||||
import { cleanupBackend } from './utils/cleanup.util';
|
||||
|
||||
test.beforeEach(cleanupBackend);
|
||||
|
||||
test.describe('LDAP Integration', () => {
|
||||
test('LDAP configuration is working properly', async ({ page }) => {
|
||||
await page.goto('/settings/admin/application-configuration');
|
||||
|
||||
await page.getByRole('heading', { name: 'LDAP' }).click();
|
||||
|
||||
await expect(page.getByRole('button', { name: 'Disable' })).toBeVisible();
|
||||
await expect(page.getByLabel('LDAP URL')).toHaveValue(/ldap:\/\/.*/);
|
||||
await expect(page.getByLabel('LDAP Base DN')).not.toBeEmpty();
|
||||
|
||||
await expect(page.getByLabel('User Unique Identifier Attribute')).not.toBeEmpty();
|
||||
await expect(page.getByLabel('Username Attribute')).not.toBeEmpty();
|
||||
await expect(page.getByLabel('User Mail Attribute')).not.toBeEmpty();
|
||||
await expect(page.getByLabel('Group Name Attribute')).not.toBeEmpty();
|
||||
|
||||
const syncButton = page.getByRole('button', { name: 'Sync now' });
|
||||
await syncButton.click();
|
||||
await expect(page.getByText('LDAP sync finished')).toBeVisible();
|
||||
});
|
||||
|
||||
test('LDAP users are synced into PocketID', async ({ page }) => {
|
||||
// Navigate to user management
|
||||
await page.goto('/settings/admin/users');
|
||||
|
||||
// Verify the LDAP users exist
|
||||
await expect(page.getByText('testuser1@pocket-id.org')).toBeVisible();
|
||||
await expect(page.getByText('testuser2@pocket-id.org')).toBeVisible();
|
||||
|
||||
// Check LDAP user details
|
||||
await page.getByRole('row', { name: 'testuser1' }).getByRole('button').click();
|
||||
await page.getByRole('menuitem', { name: 'Edit' }).click();
|
||||
|
||||
// Verify user source is LDAP
|
||||
await expect(page.getByText('LDAP').first()).toBeVisible();
|
||||
|
||||
// Verify essential fields are filled
|
||||
await expect(page.getByLabel('Username')).not.toBeEmpty();
|
||||
await expect(page.getByLabel('Email')).not.toBeEmpty();
|
||||
});
|
||||
|
||||
test('LDAP groups are synced into PocketID', async ({ page }) => {
|
||||
// Navigate to user groups
|
||||
await page.goto('/settings/admin/user-groups');
|
||||
|
||||
// Verify LDAP groups exist
|
||||
await expect(page.getByRole('cell', { name: 'test_group' }).first()).toBeVisible();
|
||||
await expect(page.getByRole('cell', { name: 'admin_group' }).first()).toBeVisible();
|
||||
|
||||
// Check group details
|
||||
await page.getByRole('row', { name: 'test_group' }).getByRole('button').click();
|
||||
await page.getByRole('menuitem', { name: 'Edit' }).click();
|
||||
|
||||
// Verify group source is LDAP
|
||||
await expect(page.getByText('LDAP').first()).toBeVisible();
|
||||
});
|
||||
|
||||
test('LDAP users cannot be modified in PocketID', async ({ page }) => {
|
||||
// Navigate to LDAP user details
|
||||
await page.goto('/settings/admin/users');
|
||||
await page.getByRole('row', { name: 'testuser1' }).getByRole('button').click();
|
||||
await page.getByRole('menuitem', { name: 'Edit' }).click();
|
||||
|
||||
// Verify key fields are disabled
|
||||
const usernameInput = page.getByLabel('Username');
|
||||
await expect(usernameInput).toBeDisabled();
|
||||
});
|
||||
|
||||
test('LDAP groups cannot be modified in PocketID', async ({ page }) => {
|
||||
// Navigate to LDAP group details
|
||||
await page.goto('/settings/admin/user-groups');
|
||||
await page.getByRole('row', { name: 'test_group' }).getByRole('button').click();
|
||||
await page.getByRole('menuitem', { name: 'Edit' }).click();
|
||||
|
||||
// Verify key fields are disabled
|
||||
const nameInput = page.getByLabel('Name', { exact: true });
|
||||
await expect(nameInput).toBeDisabled();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user