/** * 认证流程集成测试 * 测试注册→登录→Token刷新完整流程 */ import { describe, it, expect, beforeAll } from 'vitest'; import { apiPost, apiGet, setAuthToken, initHttpClient } from '../../integration/http-client'; const BASE_URL = 'http://localhost:3000'; describe('认证流程集成测试', () => { let testPhone: string; let authToken: string; beforeAll(() => { initHttpClient(); testPhone = `138${Date.now()}`.slice(0, 11); }); describe('发送验证码', () => { it('发送验证码成功', async () => { const res = await apiPost('/api/auth/send-code', { phone: testPhone }); expect(res.code).toBe(0); }); it('无效手机号格式被拒绝', async () => { const res = await apiPost('/api/auth/send-code', { phone: '123' }); expect(res.code).not.toBe(0); }); }); describe('登录/注册', () => { it('新用户注册并登录', async () => { await apiPost('/api/auth/send-code', { phone: testPhone }); const res = await apiPost('/api/auth/login', { phone: testPhone, code: '123456' }); expect(res.code).toBe(0); expect(res.data?.token).toBeDefined(); authToken = res.data?.token; setAuthToken(authToken); }); it('获取用户信息', async () => { const res = await apiGet('/api/auth/user-info'); expect(res.code).toBe(0); expect(res.data?.phone).toBe(testPhone); }); it('Token 无效时返回认证错误', async () => { setAuthToken('invalid_token_12345'); const res = await apiGet('/api/auth/user-info'); expect(res.code).not.toBe(0); }); }); describe('Token 刷新', () => { it('有效 Token 获取用户信息成功', async () => { if (!authToken) { await apiPost('/api/auth/send-code', { phone: testPhone }); const loginRes = await apiPost('/api/auth/login', { phone: testPhone, code: '123456' }); authToken = loginRes.data?.token || ''; setAuthToken(authToken); } const res = await apiGet('/api/auth/user-info'); expect(res.code).toBe(0); expect(res.data).toBeDefined(); }); }); describe('会员状态', () => { it('新用户默认免费会员', async () => { if (!authToken) return; const res = await apiGet('/api/auth/user-info'); expect(res.data?.memberLevel).toBe(0); }); }); });