munch-ease-frontend/tests/households.members.api.test.ts

35 lines
1.3 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { server, http, HttpResponse } from './test-setup'
import { loginWithPassword } from '@/api/auth'
import { setHouseholdSlugProvider } from '@/api/client'
import { listMembers } from '@/api/households'
describe('households api (list members)', () => {
it('GETs members with Authorization header and slug in path', async () => {
// Simulate login token
server.use(
http.post('*/api/v1/auth/login', () =>
HttpResponse.json({ accessToken: 'tokLM', tokenType: 'bearer', user: { id: 3, email: 'u@e', displayName: 'User' } })
)
)
await loginWithPassword('u@e', 'pw')
// Provide a household slug for header injection
setHouseholdSlugProvider(() => 'the-smiths')
server.use(
http.get('*/api/v1/households/the-smiths/members', ({ request }) => {
const auth = request.headers.get('authorization')
expect(auth?.toLowerCase()).toBe('bearer toklm')
return HttpResponse.json([
{ id: 10, email: 'a@example.com', displayName: 'Alice' },
{ id: 11, email: 'b@example.com', displayName: 'Bob' },
])
})
)
const members = await listMembers()
expect(members.length).toBe(2)
expect(members[0]?.displayName).toBe('Alice')
})
})