You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
912 B
TypeScript
23 lines
912 B
TypeScript
// apps/hq/test/auth.test.ts
|
|
import { describe, it, expect } from 'vitest'
|
|
import { openDb } from '../src/db'
|
|
import { createStaff, login, verifySession } from '../src/auth'
|
|
|
|
describe('hq auth', () => {
|
|
it('logs in with correct password, rejects wrong one', () => {
|
|
const db = openDb(':memory:')
|
|
createStaff(db, { email: 'admin@tecnostac.com', displayName: 'Owner', role: 'owner', password: 'let-me-in-9' })
|
|
expect(login(db, 'admin@tecnostac.com', 'wrong')).toBeNull()
|
|
const ok = login(db, 'admin@tecnostac.com', 'let-me-in-9')
|
|
expect(ok).not.toBeNull()
|
|
const staff = verifySession(db, ok!.token)
|
|
expect(staff).toMatchObject({ role: 'owner' })
|
|
})
|
|
it('rejects passwords under 8 chars at creation', () => {
|
|
const db = openDb(':memory:')
|
|
expect(() =>
|
|
createStaff(db, { email: 'a@b.c', displayName: 'X', role: 'staff', password: 'short' }),
|
|
).toThrow(/8/)
|
|
})
|
|
})
|