45 lines
1.7 KiB
TypeScript
45 lines
1.7 KiB
TypeScript
import { describe, it, expect, beforeEach } from 'vitest'
|
|
import { server, http, HttpResponse } from './test-setup'
|
|
import { currentUser, logout } from '@/api/auth'
|
|
import { api } from '@/api/client'
|
|
|
|
describe('auth refresh (currentUser)', () => {
|
|
beforeEach(async () => {
|
|
await logout()
|
|
})
|
|
it('currentUser refresh sets auth token (no user in response)', async () => {
|
|
server.use(
|
|
http.post('*/api/v1/auth/refresh', () =>
|
|
HttpResponse.json({ accessToken: 'ref-123', tokenType: 'bearer', user: { id: 9, email: 'ref@example.com', displayName: 'Refreshed' } })
|
|
)
|
|
)
|
|
const user = await currentUser()
|
|
expect(user).not.toBeNull()
|
|
|
|
// Subsequent API call should include Authorization header
|
|
server.use(
|
|
http.get('*/api/v1/users/me/households', ({ request }) => {
|
|
const auth = request.headers.get('authorization')
|
|
expect(auth?.toLowerCase()).toBe('bearer ref-123')
|
|
return HttpResponse.json([])
|
|
})
|
|
)
|
|
const res = await api.GET('/api/v1/users/me/households', { params: {} })
|
|
expect(res.response.ok).toBe(true)
|
|
})
|
|
|
|
it('returns null if refresh fails', async () => {
|
|
server.use(http.post('*/api/v1/auth/refresh', () => HttpResponse.json({ message: 'not logged in' }, { status: 401 })))
|
|
const user = await currentUser()
|
|
expect(user).toBeNull()
|
|
server.use(
|
|
http.get('*/api/v1/users/me/households', ({ request }) => {
|
|
const auth = request.headers.get('authorization')
|
|
expect(auth).toBeFalsy()
|
|
return HttpResponse.json([])
|
|
})
|
|
)
|
|
const res = await api.GET('/api/v1/users/me/households', { params: {} })
|
|
expect(res.response.ok).toBe(true)
|
|
})
|
|
})
|