Files
KVideo/tests/password-gate-state.test.ts
T

64 lines
1.6 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { resolvePasswordGateState } from '@/lib/auth/password-gate-state';
import type { AuthSession } from '@/lib/store/auth-store';
const session: AuthSession = {
accountId: 'account-1',
profileId: 'profile-1',
username: 'alice',
name: 'Alice',
role: 'viewer',
customPermissions: [],
mode: 'managed',
};
test('PasswordGate unlocks when a server session exists even without a local mirror', () => {
assert.deepEqual(resolvePasswordGateState({
hasAuth: true,
serverSession: session,
mirroredSession: null,
persistSession: true,
}), {
action: 'unlock-session',
session,
persistSession: true,
});
});
test('PasswordGate clears stale local mirrors without requiring a page reload', () => {
assert.deepEqual(resolvePasswordGateState({
hasAuth: true,
serverSession: null,
mirroredSession: session,
persistSession: true,
}), {
action: 'lock',
clearMirroredSession: true,
});
});
test('PasswordGate unlocks public deployments without auth state', () => {
assert.deepEqual(resolvePasswordGateState({
hasAuth: false,
serverSession: null,
mirroredSession: null,
persistSession: true,
}), {
action: 'unlock-public',
});
});
test('PasswordGate remains locked when auth is configured and no valid session exists', () => {
assert.deepEqual(resolvePasswordGateState({
hasAuth: true,
serverSession: null,
mirroredSession: null,
persistSession: true,
}), {
action: 'lock',
clearMirroredSession: false,
});
});