Files
pocket-id/tests/specs/user-group.spec.ts

153 lines
4.7 KiB
TypeScript
Raw Normal View History

import test, { expect } from "@playwright/test";
import { userGroups, users } from "../data";
import { cleanupBackend } from "../utils/cleanup.util";
test.beforeEach(cleanupBackend);
test("Create user group", async ({ page }) => {
await page.goto("/settings/admin/user-groups");
const group = userGroups.humanResources;
await page.getByRole("button", { name: "Add Group" }).click();
await page.getByLabel("Friendly Name").fill(group.friendlyName);
await page.getByRole("button", { name: "Save" }).click();
await expect(page.locator('[data-type="success"]')).toHaveText(
"User group created successfully"
);
await page.waitForURL("/settings/admin/user-groups/*");
await expect(page.getByLabel("Friendly Name")).toHaveValue(
group.friendlyName
);
await expect(page.getByLabel("Name", { exact: true })).toHaveValue(
group.name
);
});
test("Edit user group", async ({ page }) => {
await page.goto("/settings/admin/user-groups");
const group = userGroups.developers;
await page
.getByRole("row", { name: group.name })
.getByRole("button")
.click();
await page.getByRole("menuitem", { name: "Edit" }).click();
await page.getByLabel("Friendly Name").fill("Developers updated");
await expect(page.getByLabel("Name", { exact: true })).toHaveValue(
group.name
);
await page.getByLabel("Name", { exact: true }).fill("developers_updated");
await page.getByRole("button", { name: "Save" }).nth(0).click();
await expect(page.locator('[data-type="success"]')).toHaveText(
"User group updated successfully"
);
await expect(page.getByLabel("Friendly Name")).toHaveValue(
"Developers updated"
);
await expect(page.getByLabel("Name", { exact: true })).toHaveValue(
"developers_updated"
);
});
test("Update user group users", async ({ page }) => {
const group = userGroups.designers;
await page.goto(`/settings/admin/user-groups/${group.id}`);
await page
.getByRole("row", { name: users.tim.email })
.getByRole("checkbox")
.click();
await page
.getByRole("row", { name: users.craig.email })
.getByRole("checkbox")
.click();
await page.getByRole("button", { name: "Save" }).nth(1).click();
await expect(page.locator('[data-type="success"]')).toHaveText(
"Users updated successfully"
);
await page.reload();
await expect(
page.getByRole("row", { name: users.tim.email }).getByRole("checkbox")
).toHaveAttribute("data-state", "unchecked");
await expect(
page.getByRole("row", { name: users.craig.email }).getByRole("checkbox")
).toHaveAttribute("data-state", "checked");
});
test("Delete user group", async ({ page }) => {
const group = userGroups.developers;
await page.goto("/settings/admin/user-groups");
await page.getByRole("row", { name: group.name }).getByRole("button").click();
await page.getByRole("menuitem", { name: "Delete" }).click();
await page.getByRole("button", { name: "Delete" }).click();
await expect(page.locator('[data-type="success"]')).toHaveText(
"User group deleted successfully"
);
await expect(page.getByRole("row", { name: group.name })).not.toBeVisible();
});
test("Update user group custom claims", async ({ page }) => {
await page.goto(`/settings/admin/user-groups/${userGroups.designers.id}`);
await page.getByRole("button", { name: "Expand card" }).click();
// Add two custom claims
await page.getByRole("button", { name: "Add custom claim" }).click();
await page.getByPlaceholder("Key").fill("customClaim1");
await page.getByPlaceholder("Value").fill("customClaim1_value");
await page.getByRole("button", { name: "Add another" }).click();
await page.getByPlaceholder("Key").nth(1).fill("customClaim2");
await page.getByPlaceholder("Value").nth(1).fill("customClaim2_value");
await page.getByRole("button", { name: "Save" }).nth(2).click();
await expect(page.locator('[data-type="success"]')).toHaveText(
"Custom claims updated successfully"
);
await page.reload();
// Check if custom claims are saved
await expect(page.getByPlaceholder("Key").first()).toHaveValue(
"customClaim1"
);
await expect(page.getByPlaceholder("Value").first()).toHaveValue(
"customClaim1_value"
);
await expect(page.getByPlaceholder("Key").nth(1)).toHaveValue("customClaim2");
await expect(page.getByPlaceholder("Value").nth(1)).toHaveValue(
"customClaim2_value"
);
// Remove one custom claim
await page.getByLabel("Remove custom claim").first().click();
await page.getByRole("button", { name: "Save" }).nth(2).click();
await page.reload();
// Check if custom claim is removed
await expect(page.getByPlaceholder("Key").first()).toHaveValue(
"customClaim2"
);
await expect(page.getByPlaceholder("Value").first()).toHaveValue(
"customClaim2_value"
);
});