1a52fe80f3
- Implemented multi-user authentication with role-based access control. - Added environment variables for initial admin user setup. - Updated README and example environment file with new authentication options. - Introduced user and system configuration models in the database schema. - Enhanced authentication middleware to support user registration and role management. - Updated frontend to handle new authentication flows, including admin user creation and role updates.
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { test, expect } from "./fixtures";
|
|
|
|
test.describe("Authentication", () => {
|
|
test.use({ skipAuth: true });
|
|
|
|
test("should require login and allow logout", async ({ page }) => {
|
|
const username = process.env.AUTH_USERNAME || "admin";
|
|
const password = process.env.AUTH_PASSWORD || "admin123";
|
|
|
|
await page.context().clearCookies();
|
|
await page.goto("/");
|
|
|
|
const signInPrompt = page.getByText("Sign in to access your drawings");
|
|
await expect(signInPrompt).toBeVisible();
|
|
|
|
await page.getByLabel("Username or Email").fill(username);
|
|
await page.getByLabel("Password").fill(password);
|
|
await page.getByRole("button", { name: "Sign in" }).click();
|
|
|
|
// Wait for the dashboard to fully load (login updates state, no URL change)
|
|
await expect(page.getByPlaceholder("Search drawings...")).toBeVisible({ timeout: 30000 });
|
|
|
|
await page.goto("/settings");
|
|
const logoutButton = page.getByRole("button", { name: /Log out/i });
|
|
await expect(logoutButton).toBeVisible();
|
|
await logoutButton.click();
|
|
|
|
await expect(signInPrompt).toBeVisible();
|
|
|
|
await page.context().clearCookies();
|
|
});
|
|
});
|