Add centralized API client with axios interceptors, remove vue-axios

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 12:44:33 +08:00
parent 6af7253d08
commit 147b16ca34
29 changed files with 301 additions and 270 deletions

View File

@@ -7,11 +7,16 @@ vi.mock('@/module/apiError.js', () => ({
}));
import axios from 'axios';
const { mockClientGet } = vi.hoisted(() => ({ mockClientGet: vi.fn() }));
vi.mock('@/api/client.js', () => ({
default: { get: mockClientGet },
}));
import useLoginStore from '@/stores/login.ts';
// Mock axios methods
// Mock axios methods (used for signIn/refreshToken which call plain axios)
vi.spyOn(axios, 'post').mockImplementation(vi.fn());
vi.spyOn(axios, 'get').mockImplementation(vi.fn());
describe('loginStore', () => {
let store;
@@ -118,13 +123,13 @@ describe('loginStore', () => {
describe('getUserData', () => {
it('stores user data on success', async () => {
axios.get.mockResolvedValue({
mockClientGet.mockResolvedValue({
data: { username: 'testuser', name: 'Test User' },
});
await store.getUserData();
expect(axios.get).toHaveBeenCalledWith('/api/my-account');
expect(mockClientGet).toHaveBeenCalledWith('/api/my-account');
expect(store.userData).toEqual({
username: 'testuser',
name: 'Test User',
@@ -134,7 +139,7 @@ describe('loginStore', () => {
describe('checkLogin', () => {
it('does not redirect on success', async () => {
axios.get.mockResolvedValue({ data: {} });
mockClientGet.mockResolvedValue({ data: {} });
await store.checkLogin();
@@ -142,7 +147,7 @@ describe('loginStore', () => {
});
it('redirects to login on error', async () => {
axios.get.mockRejectedValue(new Error('401'));
mockClientGet.mockRejectedValue(new Error('401'));
await store.checkLogin();
@@ -186,10 +191,6 @@ describe('loginStore', () => {
}),
);
// Should update axios default Authorization header
expect(axios.defaults.headers.common['Authorization'])
.toBe('Bearer new-access-token');
// Verify cookies were set with Secure flag
const cookieSetter = vi.spyOn(document, 'cookie', 'set');
vi.clearAllMocks();