forked from baron/baron-sso
백업/복구로직 변경, 깜빡임 버그 해결
This commit is contained in:
@@ -5,7 +5,11 @@ test.describe("보안 및 접근 제어: 시스템 관리자 vs 일반 사용자
|
||||
page.on("console", (msg) => console.log(`[PAGE] ${msg.text()}`));
|
||||
});
|
||||
|
||||
const setupAuth = async (page, role: string) => {
|
||||
const setupAuth = async (
|
||||
page,
|
||||
role: string,
|
||||
profileOverrides: Record<string, unknown> = {},
|
||||
) => {
|
||||
// 1. Inject initial state and mock tokens
|
||||
await page.addInitScript(
|
||||
({ role }) => {
|
||||
@@ -76,6 +80,7 @@ test.describe("보안 및 접근 제어: 시스템 관리자 vs 일반 사용자
|
||||
email: "test@example.com",
|
||||
role: role,
|
||||
manageableTenants: [],
|
||||
...profileOverrides,
|
||||
},
|
||||
headers: { "Access-Control-Allow-Origin": "*" },
|
||||
});
|
||||
@@ -95,6 +100,28 @@ test.describe("보안 및 접근 제어: 시스템 관리자 vs 일반 사용자
|
||||
},
|
||||
headers: { "Access-Control-Allow-Origin": "*" },
|
||||
});
|
||||
} else if (url.match(/\/admin\/users\/u1$/)) {
|
||||
await route.fulfill({
|
||||
json: {
|
||||
id: "u1",
|
||||
name: "사용자 1",
|
||||
email: "u1@example.com",
|
||||
role: "user",
|
||||
status: "active",
|
||||
tenantId: "t1",
|
||||
tenantSlug: "t1",
|
||||
tenant: {
|
||||
id: "t1",
|
||||
name: "테넌트 1",
|
||||
slug: "t1",
|
||||
status: "active",
|
||||
type: "COMPANY",
|
||||
},
|
||||
createdAt: new Date().toISOString(),
|
||||
updatedAt: new Date().toISOString(),
|
||||
},
|
||||
headers: { "Access-Control-Allow-Origin": "*" },
|
||||
});
|
||||
} else if (url.includes("/rp-history")) {
|
||||
await route.fulfill({
|
||||
json: [],
|
||||
@@ -218,4 +245,52 @@ test.describe("보안 및 접근 제어: 시스템 관리자 vs 일반 사용자
|
||||
).toBeVisible();
|
||||
});
|
||||
});
|
||||
|
||||
test.describe("테넌트 관리자 권한", () => {
|
||||
test.beforeEach(async ({ page }) => {
|
||||
await setupAuth(page, "tenant_admin", {
|
||||
tenantId: "t1",
|
||||
tenantSlug: "t1",
|
||||
manageableTenants: [
|
||||
{
|
||||
id: "t1",
|
||||
name: "테넌트 1",
|
||||
slug: "t1",
|
||||
status: "active",
|
||||
type: "COMPANY",
|
||||
},
|
||||
],
|
||||
});
|
||||
await page.goto("/");
|
||||
await expect(page.locator("aside")).toBeVisible({ timeout: 10000 });
|
||||
});
|
||||
|
||||
test("사용자 관리 목록에 접근 가능해야 함", async ({ page }) => {
|
||||
await page.goto("/users");
|
||||
|
||||
await expect(
|
||||
page.getByTestId("page-title").filter({ hasText: /사용자 관리/i }),
|
||||
).toBeVisible();
|
||||
await expect(page.getByText("사용자 1")).toBeVisible();
|
||||
});
|
||||
|
||||
test("사용자 생성 화면에 접근 가능해야 함", async ({ page }) => {
|
||||
await page.goto("/users/new");
|
||||
|
||||
await expect(
|
||||
page.getByRole("heading", { name: "사용자 추가" }),
|
||||
).toBeVisible();
|
||||
});
|
||||
|
||||
test("관리 대상 테넌트 사용자 상세에 접근 가능해야 함", async ({
|
||||
page,
|
||||
}) => {
|
||||
await page.goto("/users/u1");
|
||||
|
||||
await expect(page.getByText("사용자 1")).toBeVisible();
|
||||
await expect(
|
||||
page.getByText(/이 작업을 수행할 권한이 없습니다/i),
|
||||
).not.toBeVisible();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user