mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
fix(auth): harden login bootstrap checks
Stabilize the bootstrap metadata test by clearing INITIAL_PASSWORD before each run and add focused coverage for env-backed and stored-password states. Log settings lookup failures before returning the bootstrap-safe fallback payload so operational errors are still visible on the server side.
This commit is contained in:
@@ -12,6 +12,7 @@ export async function GET() {
|
||||
const setupComplete = !!settings.setupComplete;
|
||||
return NextResponse.json({ requireLogin, hasPassword, setupComplete });
|
||||
} catch (error) {
|
||||
console.error("[API] Error fetching require-login settings:", error);
|
||||
return NextResponse.json(
|
||||
{ requireLogin: true, hasPassword: true, setupComplete: true },
|
||||
{ status: 200 }
|
||||
|
||||
@@ -17,14 +17,18 @@ async function resetStorage() {
|
||||
fs.mkdirSync(TEST_DATA_DIR, { recursive: true });
|
||||
}
|
||||
|
||||
test.beforeEach(async () => {
|
||||
delete process.env.INITIAL_PASSWORD;
|
||||
await resetStorage();
|
||||
});
|
||||
|
||||
test.after(() => {
|
||||
delete process.env.INITIAL_PASSWORD;
|
||||
core.resetDbInstance();
|
||||
fs.rmSync(TEST_DATA_DIR, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
test("public login bootstrap route exposes the metadata the login page consumes", async () => {
|
||||
await resetStorage();
|
||||
|
||||
await settingsDb.updateSettings({
|
||||
requireLogin: true,
|
||||
setupComplete: true,
|
||||
@@ -40,3 +44,40 @@ test("public login bootstrap route exposes the metadata the login page consumes"
|
||||
setupComplete: true,
|
||||
});
|
||||
});
|
||||
|
||||
test("public login bootstrap route reports env-provided bootstrap password metadata", async () => {
|
||||
process.env.INITIAL_PASSWORD = "bootstrap-secret";
|
||||
|
||||
await settingsDb.updateSettings({
|
||||
requireLogin: true,
|
||||
setupComplete: true,
|
||||
});
|
||||
|
||||
const response = await route.GET();
|
||||
const body = await response.json();
|
||||
|
||||
assert.equal(response.status, 200);
|
||||
assert.deepEqual(body, {
|
||||
requireLogin: true,
|
||||
hasPassword: true,
|
||||
setupComplete: true,
|
||||
});
|
||||
});
|
||||
|
||||
test("public login bootstrap route reports stored password metadata and disabled auth state", async () => {
|
||||
await settingsDb.updateSettings({
|
||||
requireLogin: false,
|
||||
password: "hashed-password",
|
||||
setupComplete: true,
|
||||
});
|
||||
|
||||
const response = await route.GET();
|
||||
const body = await response.json();
|
||||
|
||||
assert.equal(response.status, 200);
|
||||
assert.deepEqual(body, {
|
||||
requireLogin: false,
|
||||
hasPassword: true,
|
||||
setupComplete: true,
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user