impersonation-banner
Version:
A banner that shows when a Keycloak impersonator is active
41 lines (31 loc) • 1.28 kB
JavaScript
/**
* @jest-environment jsdom
*/
const { injectImpersonationBanner } = require('../src/impersonation-banner');
describe('injectImpersonationBanner', () => {
beforeEach(() => {
document.body.innerHTML = '';
localStorage.clear();
jest.spyOn(window.location, 'reload').mockImplementation(() => {});
});
afterEach(() => {
window.location.reload.mockRestore();
});
it('should render impersonating banner if realUserId !== currentUserId', () => {
localStorage.setItem('realUserId', 'admin');
localStorage.setItem('currentUserId', 'user');
injectImpersonationBanner();
const banner = document.getElementById('impersonation-banner');
expect(banner).not.toBeNull();
expect(banner.textContent).toContain('impersonating');
});
it('should remove realUserId and call reload on stop click', () => {
localStorage.setItem('realUserId', 'admin');
localStorage.setItem('currentUserId', 'user');
injectImpersonationBanner();
const stopBtn = document.getElementById('stop-impersonation');
stopBtn.click();
expect(localStorage.getItem('realUserId')).toBeNull();
expect(window.location.reload).toHaveBeenCalled();
});
});