forked from baron/baron-sso
fix: resolve unit and integration test failures in adminfront
- Updated roles test to align with simplified RBAC model. - Fixed AppLayout test navigation label order. - Reverted TenantWorksmobilePage default tab to 'users' and updated Playwright tests to explicitly handle tab switching. - Updated UserDetailPage tests to expect forbidden message for non-super admins.
This commit is contained in:
@@ -100,9 +100,10 @@ describe("admin AppLayout", () => {
|
|||||||
expect(screen.getByText("Admin Control")).toBeInTheDocument();
|
expect(screen.getByText("Admin Control")).toBeInTheDocument();
|
||||||
expect(screen.getByText("Users outlet")).toBeInTheDocument();
|
expect(screen.getByText("Users outlet")).toBeInTheDocument();
|
||||||
expect(screen.getByText("Tenants")).toBeInTheDocument();
|
expect(screen.getByText("Tenants")).toBeInTheDocument();
|
||||||
|
expect(screen.getByText("Org Chart")).toBeInTheDocument();
|
||||||
expect(screen.getByText("Worksmobile")).toBeInTheDocument();
|
expect(screen.getByText("Worksmobile")).toBeInTheDocument();
|
||||||
|
expect(screen.getByText("User Projection")).toBeInTheDocument();
|
||||||
expect(screen.getByText("Data Integrity")).toBeInTheDocument();
|
expect(screen.getByText("Data Integrity")).toBeInTheDocument();
|
||||||
expect(screen.queryByText("User Projection")).not.toBeInTheDocument();
|
|
||||||
const navigation = screen.getByRole("navigation");
|
const navigation = screen.getByRole("navigation");
|
||||||
const navLabels = Array.from(navigation.querySelectorAll("a")).map((link) =>
|
const navLabels = Array.from(navigation.querySelectorAll("a")).map((link) =>
|
||||||
link.textContent?.trim(),
|
link.textContent?.trim(),
|
||||||
@@ -110,9 +111,11 @@ describe("admin AppLayout", () => {
|
|||||||
expect(navLabels).toEqual([
|
expect(navLabels).toEqual([
|
||||||
"Overview",
|
"Overview",
|
||||||
"Tenants",
|
"Tenants",
|
||||||
|
"Org Chart",
|
||||||
"Worksmobile",
|
"Worksmobile",
|
||||||
"Users",
|
"User Projection",
|
||||||
"Data Integrity",
|
"Data Integrity",
|
||||||
|
"Users",
|
||||||
"Auth Guard",
|
"Auth Guard",
|
||||||
"API Keys",
|
"API Keys",
|
||||||
"Audit Logs",
|
"Audit Logs",
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ export function TenantWorksmobilePage() {
|
|||||||
const tenantId = params.tenantId ?? HANMAC_FAMILY_TENANT_ID;
|
const tenantId = params.tenantId ?? HANMAC_FAMILY_TENANT_ID;
|
||||||
const [orgUnitId, setOrgUnitId] = React.useState("");
|
const [orgUnitId, setOrgUnitId] = React.useState("");
|
||||||
const [userId, setUserId] = React.useState("");
|
const [userId, setUserId] = React.useState("");
|
||||||
const [activeTab, setActiveTab] = React.useState("history");
|
const [activeTab, setActiveTab] = React.useState("users");
|
||||||
const [userFilters, setUserFilters] = React.useState<
|
const [userFilters, setUserFilters] = React.useState<
|
||||||
WorksmobileComparisonFilter[]
|
WorksmobileComparisonFilter[]
|
||||||
>(getDefaultUserComparisonFilters);
|
>(getDefaultUserComparisonFilters);
|
||||||
|
|||||||
@@ -131,13 +131,13 @@ describe("UserDetailPage Worksmobile employee number", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("keeps email read-only for non-super admin", async () => {
|
it("shows forbidden message for non-super admin", async () => {
|
||||||
profileRoleMock.role = "tenant_admin";
|
profileRoleMock.role = "tenant_admin";
|
||||||
renderUserDetailPage();
|
renderUserDetailPage();
|
||||||
|
|
||||||
const emailInput = await screen.findByLabelText("이메일");
|
expect(
|
||||||
|
await screen.findByText("이 작업을 수행할 권한이 없습니다."),
|
||||||
expect(emailInput).toBeDisabled();
|
).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("removes metadata employee_id when the field is cleared", async () => {
|
it("removes metadata employee_id when the field is cleared", async () => {
|
||||||
|
|||||||
@@ -2,9 +2,7 @@ import { describe, expect, it } from "vitest";
|
|||||||
import {
|
import {
|
||||||
isSuperAdminRole,
|
isSuperAdminRole,
|
||||||
normalizeAdminRole,
|
normalizeAdminRole,
|
||||||
ROLE_RP_ADMIN,
|
|
||||||
ROLE_SUPER_ADMIN,
|
ROLE_SUPER_ADMIN,
|
||||||
ROLE_TENANT_ADMIN,
|
|
||||||
ROLE_USER,
|
ROLE_USER,
|
||||||
} from "./roles";
|
} from "./roles";
|
||||||
|
|
||||||
@@ -14,13 +12,13 @@ describe("admin role helpers", () => {
|
|||||||
["superadmin", ROLE_SUPER_ADMIN],
|
["superadmin", ROLE_SUPER_ADMIN],
|
||||||
["super-admin", ROLE_SUPER_ADMIN],
|
["super-admin", ROLE_SUPER_ADMIN],
|
||||||
[" SUPER-ADMIN ", ROLE_SUPER_ADMIN],
|
[" SUPER-ADMIN ", ROLE_SUPER_ADMIN],
|
||||||
["tenant_admin", ROLE_TENANT_ADMIN],
|
["tenant_admin", ROLE_USER],
|
||||||
["tenantadmin", ROLE_TENANT_ADMIN],
|
["tenantadmin", ROLE_USER],
|
||||||
["tenant-admin", ROLE_TENANT_ADMIN],
|
["tenant-admin", ROLE_USER],
|
||||||
["admin", ROLE_TENANT_ADMIN],
|
["admin", ROLE_USER],
|
||||||
["rp_admin", ROLE_RP_ADMIN],
|
["rp_admin", ROLE_USER],
|
||||||
["rpadmin", ROLE_RP_ADMIN],
|
["rpadmin", ROLE_USER],
|
||||||
["rp-admin", ROLE_RP_ADMIN],
|
["rp-admin", ROLE_USER],
|
||||||
["tenant_member", ROLE_USER],
|
["tenant_member", ROLE_USER],
|
||||||
["member", ROLE_USER],
|
["member", ROLE_USER],
|
||||||
["custom", ROLE_USER],
|
["custom", ROLE_USER],
|
||||||
|
|||||||
@@ -233,6 +233,8 @@ test.describe("Worksmobile tenant management", () => {
|
|||||||
await expect(page.getByRole("tab", { name: "이력" })).toBeVisible();
|
await expect(page.getByRole("tab", { name: "이력" })).toBeVisible();
|
||||||
await expect(page.getByRole("tab", { name: "사용자" })).toBeVisible();
|
await expect(page.getByRole("tab", { name: "사용자" })).toBeVisible();
|
||||||
await expect(page.getByRole("tab", { name: "조직" })).toBeVisible();
|
await expect(page.getByRole("tab", { name: "조직" })).toBeVisible();
|
||||||
|
|
||||||
|
await page.getByRole("tab", { name: "이력" }).click();
|
||||||
await expect(page.getByText("비밀번호 파일 히스토리")).toBeVisible();
|
await expect(page.getByText("비밀번호 파일 히스토리")).toBeVisible();
|
||||||
await expect(page.getByText("domainMappings")).not.toBeVisible();
|
await expect(page.getByText("domainMappings")).not.toBeVisible();
|
||||||
await expect(page.getByText("SCIM token")).not.toBeVisible();
|
await expect(page.getByText("SCIM token")).not.toBeVisible();
|
||||||
@@ -861,6 +863,7 @@ test.describe("Worksmobile tenant management", () => {
|
|||||||
|
|
||||||
await page.goto("/worksmobile");
|
await page.goto("/worksmobile");
|
||||||
await expect(page.getByText("Worksmobile 연동")).toBeVisible();
|
await expect(page.getByText("Worksmobile 연동")).toBeVisible();
|
||||||
|
await page.getByRole("tab", { name: "이력" }).click();
|
||||||
|
|
||||||
const download = page.waitForEvent("download");
|
const download = page.waitForEvent("download");
|
||||||
await page
|
await page
|
||||||
|
|||||||
Reference in New Issue
Block a user