58 lines
2.3 KiB
TypeScript
58 lines
2.3 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
import { mockBackend } from "./support/mockBackend";
|
|
|
|
test.beforeEach(async ({ page }) => {
|
|
await mockBackend(page);
|
|
});
|
|
|
|
test("已登录管理员可以打开审计日志页面", async ({ page }) => {
|
|
await page.goto("/audit-logs");
|
|
|
|
await expect(
|
|
page.getByRole("heading", { name: "审计日志", exact: true }),
|
|
).toBeVisible();
|
|
await expect(page.getByText("系统管理员权限已验证")).toBeVisible();
|
|
await expect(page.getByRole("heading", { name: "查询结果" })).toBeVisible();
|
|
});
|
|
|
|
test("已认证但未授权的账号会看到明确说明", async ({ page }) => {
|
|
await page.route("**/api/v1/access-context", (route) =>
|
|
route.fulfill({
|
|
status: 403,
|
|
contentType: "application/json",
|
|
body: JSON.stringify({ detail: "User authorization pending" }),
|
|
}),
|
|
);
|
|
|
|
await page.goto("/");
|
|
|
|
await expect(page.getByText("账号尚未获得访问权限")).toBeVisible();
|
|
await expect(
|
|
page.getByText("身份认证已成功,但当前账号尚未由系统管理员启用"),
|
|
).toBeVisible();
|
|
await expect(page.getByText("TJWater 智慧水务平台")).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "退出登录" })).toBeVisible();
|
|
|
|
await page.setViewportSize({ width: 390, height: 844 });
|
|
await expect(page.getByText("账号尚未获得访问权限")).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "退出登录" })).toBeVisible();
|
|
});
|
|
|
|
test("系统管理员可以手动同步 Keycloak 用户目录", async ({ page }) => {
|
|
await page.goto("/system-admin");
|
|
await page.getByRole("tab", { name: "系统用户" }).click();
|
|
|
|
await page.getByRole("button", { name: "同步 Keycloak 用户" }).click();
|
|
await expect(page.getByRole("button", { name: "正在同步" })).toBeDisabled();
|
|
|
|
await expect(
|
|
page.getByText("已扫描 3 个 Keycloak 身份,新增 1 个,更新 1 个,跳过 1 个。"),
|
|
).toBeVisible();
|
|
await expect(page.getByText("跳过项包括服务账号、缺少邮箱或身份冲突")).toBeVisible();
|
|
|
|
await page.setViewportSize({ width: 390, height: 844 });
|
|
await expect(page.getByRole("button", { name: "同步 Keycloak 用户" })).toBeVisible();
|
|
await expect(page.getByRole("button", { name: "刷新", exact: true })).toBeVisible();
|
|
});
|