82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
import axios, { AxiosError } from 'axios';
|
|
import { verifyEmail } from './emailVerificationService';
|
|
import { apiClient } from '@/services/api/client';
|
|
|
|
// Mock apiClient
|
|
vi.mock('@/services/api/client', () => ({
|
|
apiClient: {
|
|
get: vi.fn(),
|
|
},
|
|
}));
|
|
|
|
describe('emailVerificationService', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
});
|
|
|
|
describe('verifyEmail', () => {
|
|
it('should call API GET /auth/verify-email?token=... with correct token', async () => {
|
|
const token = 'test-token-123';
|
|
const mockResponse = {
|
|
data: {
|
|
message: 'Email verified successfully',
|
|
user_id: 1,
|
|
},
|
|
};
|
|
|
|
vi.mocked(apiClient.get).mockResolvedValue(mockResponse);
|
|
|
|
const result = await verifyEmail(token);
|
|
|
|
expect(apiClient.get).toHaveBeenCalledWith(`/auth/verify-email?token=${token}`);
|
|
expect(result).toEqual(mockResponse.data);
|
|
});
|
|
|
|
it('should throw ApiError with error message from response', async () => {
|
|
const token = 'invalid-token';
|
|
const mockError = {
|
|
response: {
|
|
status: 400,
|
|
data: {
|
|
error: 'Invalid token',
|
|
},
|
|
},
|
|
} as AxiosError;
|
|
|
|
vi.mocked(apiClient.get).mockRejectedValue(mockError);
|
|
|
|
await expect(verifyEmail(token)).rejects.toMatchObject({
|
|
message: 'Invalid token',
|
|
code: '400',
|
|
});
|
|
});
|
|
|
|
it('should throw ApiError with network error message on network failure', async () => {
|
|
const token = 'test-token';
|
|
const mockError = {
|
|
request: {},
|
|
} as AxiosError;
|
|
|
|
vi.mocked(apiClient.get).mockRejectedValue(mockError);
|
|
|
|
await expect(verifyEmail(token)).rejects.toMatchObject({
|
|
message: 'Network error: Unable to connect to server',
|
|
code: 'NETWORK_ERROR',
|
|
});
|
|
});
|
|
|
|
it('should throw ApiError with unknown error message on unexpected error', async () => {
|
|
const token = 'test-token';
|
|
const mockError = new Error('Unexpected error');
|
|
|
|
vi.mocked(apiClient.get).mockRejectedValue(mockError);
|
|
|
|
await expect(verifyEmail(token)).rejects.toMatchObject({
|
|
message: 'Unexpected error',
|
|
code: 'UNKNOWN_ERROR',
|
|
});
|
|
});
|
|
});
|
|
});
|
|
|