|
|
@@ -48,7 +48,11 @@ describe('Users API Integration Tests', () => {
|
|
|
|
|
|
// 重置认证中间件mock
|
|
|
const { authMiddleware } = await import('../../middleware/auth.middleware');
|
|
|
- vi.mocked(authMiddleware).mockImplementation((_c: any, next: any) => next());
|
|
|
+ vi.mocked(authMiddleware).mockImplementation(async (c: any, next: any) => {
|
|
|
+ // 模拟认证成功,设置用户信息
|
|
|
+ c.set('user', { id: 1, username: 'testuser' });
|
|
|
+ await next();
|
|
|
+ });
|
|
|
|
|
|
// 重置CRUD服务mock
|
|
|
mockCrudService.getList.mockResolvedValue([[], 0]);
|
|
|
@@ -165,13 +169,31 @@ describe('Users API Integration Tests', () => {
|
|
|
|
|
|
describe('GET /users/:id', () => {
|
|
|
it('应该返回特定用户信息', async () => {
|
|
|
- const mockUser = { id: 1, username: 'testuser', email: 'test@example.com' };
|
|
|
+ const mockUser = {
|
|
|
+ id: 1,
|
|
|
+ username: 'testuser',
|
|
|
+ password: 'password123',
|
|
|
+ phone: null,
|
|
|
+ email: 'test@example.com',
|
|
|
+ nickname: null,
|
|
|
+ name: null,
|
|
|
+ avatar: null,
|
|
|
+ isDisabled: 0,
|
|
|
+ isDeleted: 0,
|
|
|
+ roles: [],
|
|
|
+ createdAt: new Date('2024-01-01T00:00:00.000Z'),
|
|
|
+ updatedAt: new Date('2024-01-01T00:00:00.000Z')
|
|
|
+ };
|
|
|
mockCrudService.getById.mockResolvedValue(mockUser);
|
|
|
|
|
|
const response = await apiClient.get('/1');
|
|
|
|
|
|
expect(response.status).toBe(200);
|
|
|
- expect(response.data).toEqual(mockUser);
|
|
|
+ expect(response.data).toEqual({
|
|
|
+ ...mockUser,
|
|
|
+ createdAt: mockUser.createdAt.toISOString(),
|
|
|
+ updatedAt: mockUser.updatedAt.toISOString()
|
|
|
+ });
|
|
|
expect(mockCrudService.getById).toHaveBeenCalledWith(1, ['roles']);
|
|
|
});
|
|
|
|
|
|
@@ -219,21 +241,26 @@ describe('Users API Integration Tests', () => {
|
|
|
expect(response.status).toBe(500);
|
|
|
expect(response.data).toMatchObject({
|
|
|
code: 500,
|
|
|
- message: '获取用户列表失败'
|
|
|
+ message: '获取列表失败'
|
|
|
});
|
|
|
});
|
|
|
});
|
|
|
|
|
|
describe('认证和授权', () => {
|
|
|
it('应该在缺少认证令牌时返回401', async () => {
|
|
|
+ // 临时覆盖认证中间件mock,模拟认证失败
|
|
|
+ const { authMiddleware } = await import('../../middleware/auth.middleware');
|
|
|
+ vi.mocked(authMiddleware).mockImplementation(async (c: any) => {
|
|
|
+ return c.json({ message: 'Authorization header missing' }, 401);
|
|
|
+ });
|
|
|
+
|
|
|
apiClient.clearAuthToken();
|
|
|
|
|
|
const response = await apiClient.get('/');
|
|
|
|
|
|
expect(response.status).toBe(401);
|
|
|
expect(response.data).toMatchObject({
|
|
|
- code: 401,
|
|
|
- message: expect.any(String)
|
|
|
+ message: 'Authorization header missing'
|
|
|
});
|
|
|
});
|
|
|
|