diff --git a/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx b/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx index cd20fb8..1be911b 100644 --- a/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx +++ b/src/frontend/apps/desk/src/api/__tests__/fetchApi.test.tsx @@ -34,22 +34,14 @@ describe('fetchAPI', () => { }); it('logout if 401 response', async () => { - useAuthStore.setState({ - authenticated: true, - userData: { id: '123', email: 'test@test.com' }, - }); + const logoutMock = jest.fn(); + jest + .spyOn(useAuthStore.getState(), 'logout') + .mockImplementation(logoutMock); fetchMock.mock('http://some.api.url/api/v1.0/some/url', 401); - fetchMock.mock('http://some.api.url/api/v1.0/logout/', 302); - await fetchAPI('some/url'); - await Promise.all([fetchMock.flush()]); - - expect(fetchMock.lastUrl()).toEqual('http://some.api.url/api/v1.0/logout/'); - - const { userData, authenticated } = useAuthStore.getState(); - expect(userData).toBeUndefined(); - expect(authenticated).toBeFalsy(); + expect(logoutMock).toHaveBeenCalled(); }); }); diff --git a/src/frontend/apps/desk/src/core/auth/api/index.ts b/src/frontend/apps/desk/src/core/auth/api/index.ts index 45350f2..e7086fe 100644 --- a/src/frontend/apps/desk/src/core/auth/api/index.ts +++ b/src/frontend/apps/desk/src/core/auth/api/index.ts @@ -1,3 +1,2 @@ export * from './types'; export * from './getMe'; -export * from './logout'; diff --git a/src/frontend/apps/desk/src/core/auth/api/logout.ts b/src/frontend/apps/desk/src/core/auth/api/logout.ts deleted file mode 100644 index 31bbea7..0000000 --- a/src/frontend/apps/desk/src/core/auth/api/logout.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { fetchAPI } from '@/api'; - -export const logout = async () => { - await fetchAPI(`logout/`, { - method: 'POST', - redirect: 'manual', - }); -}; diff --git a/src/frontend/apps/desk/src/core/auth/useAuthStore.tsx b/src/frontend/apps/desk/src/core/auth/useAuthStore.tsx index 6b430e1..27174db 100644 --- a/src/frontend/apps/desk/src/core/auth/useAuthStore.tsx +++ b/src/frontend/apps/desk/src/core/auth/useAuthStore.tsx @@ -1,6 +1,6 @@ import { create } from 'zustand'; -import { User, getMe, logout } from './api'; +import { User, getMe } from './api'; export const login = () => { window.location.replace( @@ -34,8 +34,8 @@ export const useAuthStore = create((set) => ({ }); }, logout: () => { - void logout().then(() => { - set(initialState); - }); + window.location.replace( + new URL('logout/', process.env.NEXT_PUBLIC_API_URL).href, + ); }, })); diff --git a/src/frontend/apps/e2e/__tests__/app-desk/header.spec.ts b/src/frontend/apps/e2e/__tests__/app-desk/header.spec.ts index c6b5dfd..ccb851a 100644 --- a/src/frontend/apps/e2e/__tests__/app-desk/header.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-desk/header.spec.ts @@ -50,8 +50,6 @@ test.describe('Header', () => { }) .click(); - // FIXME - assert the session has been killed in Keycloak - await expect(page.getByRole('button', { name: 'Sign in' })).toBeVisible(); });