mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-12 01:10:49 +03:00
98 lines
3.6 KiB
TypeScript
98 lines
3.6 KiB
TypeScript
import test, { expect } from '@playwright/test';
|
|
import { cleanupBackend } from '../utils/cleanup.util';
|
|
|
|
test.beforeEach(async () => await cleanupBackend());
|
|
|
|
test.describe('LDAP Integration', () => {
|
|
test.skip(
|
|
process.env.SKIP_LDAP_TESTS === 'true',
|
|
'Skipping LDAP tests due to SKIP_LDAP_TESTS environment variable'
|
|
);
|
|
|
|
test('LDAP configuration is working properly', async ({ page }) => {
|
|
await page.goto('/settings/admin/application-configuration');
|
|
|
|
await page.getByRole('button', { name: 'Expand card' }).nth(3).click();
|
|
|
|
await expect(page.getByRole('button', { name: 'Disable', exact: true })).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 RDN Attribute (in DN)')).not.toBeEmpty();
|
|
|
|
const syncButton = page.getByRole('button', { name: 'Sync now' });
|
|
await syncButton.click();
|
|
await expect(page.locator('[data-type="success"]')).toHaveText('LDAP sync finished');
|
|
});
|
|
|
|
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();
|
|
|
|
await page
|
|
.getByRole('row', { name: 'test_group' })
|
|
.getByRole('button', { name: 'Toggle menu' })
|
|
.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.waitForLoadState('networkidle');
|
|
|
|
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.waitForLoadState('networkidle');
|
|
|
|
await page
|
|
.getByRole('row', { name: 'test_group' })
|
|
.getByRole('button', { name: 'Toggle menu' })
|
|
.click();
|
|
await page.getByRole('menuitem', { name: 'Edit' }).click();
|
|
|
|
// Verify key fields are disabled
|
|
const nameInput = page.getByLabel('Name', { exact: true });
|
|
await expect(nameInput).toBeDisabled();
|
|
});
|
|
});
|