| import { describe, it, expect, vi, beforeEach } from 'vitest' |
|
|
| beforeEach(() => { |
| vi.resetModules() |
| }) |
|
|
| describe('POST /api/users/transfer-code', () => { |
| it('transfers code to authenticated user when PIN valid or not required', async () => { |
| vi.doMock('lib/logger', () => ({ logEvent: vi.fn() })) |
| vi.doMock('lib/appSession', () => ({ getAppSession: async () => ({ userId: 'user-1' }) })) |
| vi.doMock('lib/supabase/server', () => ({ isSupabaseConfigured: () => true })) |
|
|
| |
| const codeRow = { id: 'code-1', code: 'ABCDE', used: 1, user_id: null, pin_hash: null, room_id: 'room-1' } |
| const getCodeByCodeMock = vi.fn().mockResolvedValue(codeRow) |
| const getCodeForUserInRoomMock = vi.fn().mockResolvedValue(null) |
| const updateCodeMock = vi.fn().mockResolvedValue({ ...codeRow, user_id: 'user-1' }) |
| vi.doMock('lib/persistence', () => ({ |
| getCodeByCode: getCodeByCodeMock, |
| getCodeForUserInRoom: getCodeForUserInRoomMock, |
| updateCode: updateCodeMock |
| })) |
|
|
| const route = await import('./route') |
| const req = { json: async () => ({ code: 'ABCDE' }) } as any |
|
|
| const res: any = await route.POST(req) |
|
|
| expect(res.status).toBe(200) |
| expect(getCodeByCodeMock).toHaveBeenCalled() |
| expect(updateCodeMock).toHaveBeenCalledWith('code-1', { user_id: 'user-1', session_hash: null }) |
| }) |
| }) |
|
|