45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
createSessionRow,
|
|
findUserByApiToken,
|
|
findUserById,
|
|
getDb,
|
|
insertUser,
|
|
setUserApiToken,
|
|
setUserDisabled
|
|
} from './db'
|
|
|
|
describe('user disabled status', () => {
|
|
it('blocks API tokens and revokes sessions until re-enabled', () => {
|
|
const now = new Date().toISOString()
|
|
const userId = insertUser({
|
|
username: 'disabled-user',
|
|
passwordHash: 'hash',
|
|
role: 'user',
|
|
createdAt: now
|
|
})
|
|
const token = 'disabled-user-token'
|
|
const sessionId = 'disabled-user-session'
|
|
setUserApiToken(userId, token)
|
|
createSessionRow({
|
|
id: sessionId,
|
|
userId,
|
|
tokenHash: 'hash',
|
|
expiresAt: new Date(Date.now() + 60_000).toISOString(),
|
|
createdAt: now
|
|
})
|
|
|
|
setUserDisabled(userId, true)
|
|
|
|
expect(findUserById(userId)?.disabled_at).not.toBeNull()
|
|
expect(findUserByApiToken(token)).toBeNull()
|
|
expect(getDb().prepare('SELECT 1 FROM sessions WHERE id = ?').get(sessionId))
|
|
.toBeUndefined()
|
|
|
|
setUserDisabled(userId, false)
|
|
|
|
expect(findUserById(userId)?.disabled_at).toBeNull()
|
|
expect(findUserByApiToken(token)?.id).toBe(userId)
|
|
})
|
|
})
|