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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user