8fc88ffc14
Build & Push / Pipeline Tests (push) Failing after 59s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Failing after 51s
Test / API Unit Tests (push) Has been skipped
Test / Homepage Unit Tests (push) Has been skipped
Test / Carplace Unit Tests (push) Has been skipped
Test / Admin Unit Tests (push) Has been skipped
Test / Dashboard Unit Tests (push) Has been skipped
Test / API Integration Tests (push) Has been skipped
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { presentAdminSession, presentAdminUser, presentPaginated } from './admin.presenter'
|
|
|
|
describe('admin.presenter', () => {
|
|
it('removes admin secrets from user responses', () => {
|
|
const result = presentAdminUser({
|
|
id: 'admin_1',
|
|
email: 'admin@example.com',
|
|
role: 'SUPER_ADMIN',
|
|
passwordHash: 'hash',
|
|
totpSecret: 'secret',
|
|
passwordResetToken: 'reset-token',
|
|
passwordResetExpiresAt: new Date('2026-01-01T00:00:00.000Z'),
|
|
emailVerificationToken: 'verify-token',
|
|
})
|
|
|
|
expect(result).toEqual({ id: 'admin_1', email: 'admin@example.com', role: 'SUPER_ADMIN' })
|
|
})
|
|
|
|
it('wraps sessions without leaking credentials', () => {
|
|
expect(
|
|
presentAdminSession(
|
|
{
|
|
id: 'admin_1',
|
|
passwordHash: 'hash',
|
|
totpSecret: 'secret',
|
|
passwordResetToken: 'reset-token',
|
|
},
|
|
'jwt-token',
|
|
),
|
|
).toEqual({
|
|
token: 'jwt-token',
|
|
admin: { id: 'admin_1' },
|
|
})
|
|
})
|
|
|
|
it('computes pagination metadata and preserves extra aggregate fields', () => {
|
|
expect(presentPaginated([{ id: 'row_1' }], 41, 2, 20, { active: 11 })).toEqual({
|
|
data: [{ id: 'row_1' }],
|
|
total: 41,
|
|
page: 2,
|
|
pageSize: 20,
|
|
totalPages: 3,
|
|
active: 11,
|
|
})
|
|
})
|
|
})
|