better-chatbot / tests /admin /admin-permissions.spec.ts
Bot
Initial commit for HF Spaces
05c5ed5
Raw
History Blame Contribute Delete
3.88 kB
import { test, expect } from "@playwright/test";
import { TEST_USERS } from "../constants/test-users";
import { ensureSidebarOpen } from "../helpers/sidebar-helper";
test.describe("Permissions", () => {
test("regular user can access basic functionality", async ({ browser }) => {
// Create context with regular user auth
const context = await browser.newContext({
storageState: TEST_USERS.regular.authFile,
});
const page = await context.newPage();
// Regular users might access through profile/settings
// Test basic navigation works
await page.goto("/");
// Check if user has access to basic functionality
await page.waitForLoadState("networkidle");
const url = page.url();
expect(url).not.toContain("/sign-in");
await context.close();
});
test("editor user can access application but not admin panel", async ({
browser,
}) => {
const context = await browser.newContext({
storageState: TEST_USERS.editor.authFile,
});
const page = await context.newPage();
// Editor should have access to main app
await page.goto("/");
await page.waitForLoadState("networkidle");
const homeUrl = page.url();
expect(homeUrl).not.toContain("/sign-in");
// But should not have access to admin panel
await page.goto("/admin/users");
await page.waitForLoadState("networkidle");
await expect(page.getByText("401")).toBeVisible();
});
test("regular user cannot access admin panel", async ({ browser }) => {
const context = await browser.newContext({
storageState: TEST_USERS.regular.authFile,
});
const page = await context.newPage();
// But should not have access to admin panel
await page.goto("/admin/users");
await page.waitForLoadState("networkidle");
await expect(page.getByText("401")).toBeVisible();
await context.close();
});
test("ensure admin sidebar link is visible to admin", async ({ browser }) => {
const context = await browser.newContext({
storageState: TEST_USERS.admin.authFile,
});
const page = await context.newPage();
await page.goto("/");
await page.waitForLoadState("networkidle");
await ensureSidebarOpen(page);
await expect(page.getByTestId("admin-sidebar-link")).toBeVisible();
await context.close();
});
test("ensure admin sidebar link is not visible to editor", async ({
browser,
}) => {
const context = await browser.newContext({
storageState: TEST_USERS.editor.authFile,
});
const page = await context.newPage();
await page.goto("/");
await page.waitForLoadState("networkidle");
await ensureSidebarOpen(page);
await expect(page.getByTestId("admin-sidebar-link")).not.toBeVisible();
await context.close();
});
test("ensure admin sidebar link is not visible to regular user", async ({
browser,
}) => {
const context = await browser.newContext({
storageState: TEST_USERS.regular.authFile,
});
const page = await context.newPage();
await page.goto("/");
await page.waitForLoadState("networkidle");
await ensureSidebarOpen(page);
await expect(page.getByTestId("admin-sidebar-link")).not.toBeVisible();
await context.close();
});
test("ensure admin sidebar link goes to users page and shows user menu", async ({
browser,
}) => {
const context = await browser.newContext({
storageState: TEST_USERS.admin.authFile,
});
const page = await context.newPage();
await page.goto("/");
await page.waitForLoadState("networkidle");
await ensureSidebarOpen(page);
await page.getByTestId("admin-sidebar-link").click();
await page.waitForLoadState("networkidle");
await expect(page.getByTestId("admin-sidebar-link-users")).toBeVisible();
expect(page.url()).toContain("/admin/users");
await context.close();
});
});