119 lines
3.8 KiB
TypeScript
119 lines
3.8 KiB
TypeScript
import { test, expect } from '@playwright/test';
|
|
import { isAnonymousAuthSessionsEnabled, isGithubAuthEnabled } from '../../src/lib/server/auth/config';
|
|
|
|
const ORIGINAL_BASE_URL = process.env.BASE_URL;
|
|
const ORIGINAL_AUTH_SECRET = process.env.AUTH_SECRET;
|
|
const ORIGINAL_USE_ANON = process.env.USE_ANONYMOUS_AUTH_SESSIONS;
|
|
const ORIGINAL_GITHUB_CLIENT_ID = process.env.GITHUB_CLIENT_ID;
|
|
const ORIGINAL_GITHUB_CLIENT_SECRET = process.env.GITHUB_CLIENT_SECRET;
|
|
|
|
function restoreEnv() {
|
|
if (ORIGINAL_BASE_URL === undefined) delete process.env.BASE_URL;
|
|
else process.env.BASE_URL = ORIGINAL_BASE_URL;
|
|
|
|
if (ORIGINAL_AUTH_SECRET === undefined) delete process.env.AUTH_SECRET;
|
|
else process.env.AUTH_SECRET = ORIGINAL_AUTH_SECRET;
|
|
|
|
if (ORIGINAL_USE_ANON === undefined) delete process.env.USE_ANONYMOUS_AUTH_SESSIONS;
|
|
else process.env.USE_ANONYMOUS_AUTH_SESSIONS = ORIGINAL_USE_ANON;
|
|
|
|
if (ORIGINAL_GITHUB_CLIENT_ID === undefined) delete process.env.GITHUB_CLIENT_ID;
|
|
else process.env.GITHUB_CLIENT_ID = ORIGINAL_GITHUB_CLIENT_ID;
|
|
|
|
if (ORIGINAL_GITHUB_CLIENT_SECRET === undefined) delete process.env.GITHUB_CLIENT_SECRET;
|
|
else process.env.GITHUB_CLIENT_SECRET = ORIGINAL_GITHUB_CLIENT_SECRET;
|
|
}
|
|
|
|
function setAuthEnabledEnv() {
|
|
process.env.BASE_URL = 'http://localhost:3003';
|
|
process.env.AUTH_SECRET = 'test-secret';
|
|
}
|
|
|
|
test.describe('auth config anonymous-session flag', () => {
|
|
test.afterEach(() => {
|
|
restoreEnv();
|
|
});
|
|
|
|
test('returns false when auth is disabled', () => {
|
|
delete process.env.BASE_URL;
|
|
delete process.env.AUTH_SECRET;
|
|
process.env.USE_ANONYMOUS_AUTH_SESSIONS = 'true';
|
|
|
|
expect(isAnonymousAuthSessionsEnabled()).toBe(false);
|
|
});
|
|
|
|
test('defaults to false when env var is unset', () => {
|
|
setAuthEnabledEnv();
|
|
delete process.env.USE_ANONYMOUS_AUTH_SESSIONS;
|
|
|
|
expect(isAnonymousAuthSessionsEnabled()).toBe(false);
|
|
});
|
|
|
|
test('returns true only when env var is true', () => {
|
|
setAuthEnabledEnv();
|
|
process.env.USE_ANONYMOUS_AUTH_SESSIONS = 'true';
|
|
|
|
expect(isAnonymousAuthSessionsEnabled()).toBe(true);
|
|
});
|
|
|
|
test('returns false when env var is false', () => {
|
|
setAuthEnabledEnv();
|
|
process.env.USE_ANONYMOUS_AUTH_SESSIONS = 'false';
|
|
|
|
expect(isAnonymousAuthSessionsEnabled()).toBe(false);
|
|
});
|
|
|
|
test('falls back to false for invalid values', () => {
|
|
setAuthEnabledEnv();
|
|
process.env.USE_ANONYMOUS_AUTH_SESSIONS = '1';
|
|
|
|
expect(isAnonymousAuthSessionsEnabled()).toBe(false);
|
|
});
|
|
});
|
|
|
|
test.describe('auth config github-auth flag', () => {
|
|
test.afterEach(() => {
|
|
restoreEnv();
|
|
});
|
|
|
|
test('returns false when auth is disabled', () => {
|
|
delete process.env.BASE_URL;
|
|
delete process.env.AUTH_SECRET;
|
|
process.env.GITHUB_CLIENT_ID = 'some-id';
|
|
process.env.GITHUB_CLIENT_SECRET = 'some-secret';
|
|
|
|
expect(isGithubAuthEnabled()).toBe(false);
|
|
});
|
|
|
|
test('returns false when GITHUB_CLIENT_ID is missing', () => {
|
|
setAuthEnabledEnv();
|
|
delete process.env.GITHUB_CLIENT_ID;
|
|
process.env.GITHUB_CLIENT_SECRET = 'some-secret';
|
|
|
|
expect(isGithubAuthEnabled()).toBe(false);
|
|
});
|
|
|
|
test('returns false when GITHUB_CLIENT_SECRET is missing', () => {
|
|
setAuthEnabledEnv();
|
|
process.env.GITHUB_CLIENT_ID = 'some-id';
|
|
delete process.env.GITHUB_CLIENT_SECRET;
|
|
|
|
expect(isGithubAuthEnabled()).toBe(false);
|
|
});
|
|
|
|
test('returns false when both GitHub env vars are missing', () => {
|
|
setAuthEnabledEnv();
|
|
delete process.env.GITHUB_CLIENT_ID;
|
|
delete process.env.GITHUB_CLIENT_SECRET;
|
|
|
|
expect(isGithubAuthEnabled()).toBe(false);
|
|
});
|
|
|
|
test('returns true when auth is enabled and both GitHub env vars are set', () => {
|
|
setAuthEnabledEnv();
|
|
process.env.GITHUB_CLIENT_ID = 'some-id';
|
|
process.env.GITHUB_CLIENT_SECRET = 'some-secret';
|
|
|
|
expect(isGithubAuthEnabled()).toBe(true);
|
|
});
|
|
});
|