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) }) })