1
0
forked from baron/baron-sso

백업/복구로직 변경, 깜빡임 버그 해결

This commit is contained in:
2026-06-05 12:26:51 +09:00
parent 4bae1dd00d
commit 29038254dd
43 changed files with 3695 additions and 75 deletions

View File

@@ -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();
});
});
});