mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-12-12 15:57:44 +00:00
chore(ui): remove refresh token on logout (#11936)
* chore(ui): remove refresh token on logout * update test
This commit is contained in:
parent
6219158160
commit
d14ab0dd0b
@ -12,7 +12,7 @@
|
||||
*/
|
||||
|
||||
import { CookieStorage } from 'cookie-storage';
|
||||
import { isEmpty, isUndefined } from 'lodash';
|
||||
import { isEmpty } from 'lodash';
|
||||
import { observer } from 'mobx-react';
|
||||
import React, {
|
||||
createContext,
|
||||
@ -177,14 +177,10 @@ const PermissionProvider: FC<PermissionProviderProps> = ({ children }) => {
|
||||
/**
|
||||
* Only fetch permissions if current user is present
|
||||
*/
|
||||
if (
|
||||
isProtectedRoute(location.pathname) &&
|
||||
!isUndefined(currentUser) &&
|
||||
!isEmpty(currentUser)
|
||||
) {
|
||||
if (isProtectedRoute(location.pathname) && !isEmpty(currentUser)) {
|
||||
fetchLoggedInUserPermissions();
|
||||
}
|
||||
if (isUndefined(currentUser) || isEmpty(currentUser)) {
|
||||
if (isEmpty(currentUser)) {
|
||||
resetPermissions();
|
||||
}
|
||||
}, [currentUser]);
|
||||
|
||||
@ -18,9 +18,21 @@ import {
|
||||
} from '@testing-library/react';
|
||||
import userEvent from '@testing-library/user-event';
|
||||
import AppState from 'AppState';
|
||||
import { refreshTokenKey } from 'constants/constants';
|
||||
import React from 'react';
|
||||
import AuthProvider, { useAuthContext } from './AuthProvider';
|
||||
|
||||
const localStorageMock = {
|
||||
getItem: jest.fn(),
|
||||
setItem: jest.fn(),
|
||||
removeItem: jest.fn(),
|
||||
clear: jest.fn(),
|
||||
};
|
||||
|
||||
Object.defineProperty(window, 'localStorage', {
|
||||
value: localStorageMock,
|
||||
});
|
||||
|
||||
jest.mock('react-router-dom', () => ({
|
||||
useHistory: jest.fn().mockReturnValue({ push: jest.fn(), listen: jest.fn() }),
|
||||
useLocation: jest.fn().mockReturnValue({ pathname: 'pathname' }),
|
||||
@ -70,4 +82,34 @@ describe('Test auth provider', () => {
|
||||
expect(mockUpdateUserDetails).toHaveBeenCalled();
|
||||
expect(mockUpdateUserDetails).toHaveBeenCalledWith({});
|
||||
});
|
||||
|
||||
it('Logout handler should remove the refresh token', async () => {
|
||||
const ConsumerComponent = () => {
|
||||
const { onLogoutHandler } = useAuthContext();
|
||||
|
||||
return (
|
||||
<button data-testid="logout-button" onClick={onLogoutHandler}>
|
||||
Logout
|
||||
</button>
|
||||
);
|
||||
};
|
||||
|
||||
render(
|
||||
<AuthProvider childComponentType={ConsumerComponent}>
|
||||
<ConsumerComponent />
|
||||
</AuthProvider>
|
||||
);
|
||||
|
||||
await waitForElementToBeRemoved(() => screen.getByTestId('loader'));
|
||||
|
||||
const logoutButton = screen.getByTestId('logout-button');
|
||||
|
||||
expect(logoutButton).toBeInTheDocument();
|
||||
|
||||
await act(async () => {
|
||||
userEvent.click(logoutButton);
|
||||
});
|
||||
|
||||
expect(localStorageMock.removeItem).toHaveBeenCalledWith(refreshTokenKey);
|
||||
});
|
||||
});
|
||||
|
||||
@ -138,6 +138,10 @@ export const AuthProvider = ({
|
||||
|
||||
// remove analytics session on logout
|
||||
removeSession();
|
||||
|
||||
// remove the refresh token on logout
|
||||
localState.removeRefreshToken();
|
||||
|
||||
setLoading(false);
|
||||
}, [timeoutId, appState]);
|
||||
|
||||
|
||||
@ -30,6 +30,8 @@ const localState = {
|
||||
},
|
||||
|
||||
removeOidcToken: () => localStorage.removeItem(oidcTokenKey),
|
||||
|
||||
removeRefreshToken: () => localStorage.removeItem(refreshTokenKey),
|
||||
};
|
||||
|
||||
export default localState;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user