keycloak-js-mock
v25.0.6
Published
JavaScript adapter that does not request data in Keycloak.
Downloads
1,334
Maintainers
Readme
Keycloak Js Mock
JavaScript adapter that does not request data in Keycloak.
It can be used to launch a frontend application without a Keycloak in docker or for testing.
Getting Started
npm install -D keycloak-js-mock
🚀 Usage
KeycloakMock returns an identical instance. The library generates a token without the help of Keycloak based on the received profile (by default, all the necessary data is already written).
To start the application without connecting to KK:
import Keycloak from 'keycloak-js';
import { KeycloakMock, customize } from 'keycloak-js-mock';
const keycloakInit = (mocked: boolean): Keycloak => {
if (mocked) {
customize.profile({
username: 'myUserName',
});
return new KeycloakMock();
}
return new Keycloak({
url: REACT_APP_KEYCLOAK_URL,
realm: KEYCLOAK_REALM_NAME,
clientId: KEYCLOAK_CLIENT_ID,
});
};
const keycloak = keycloakInit(true);
await keycloak.init({ pkceMethod: 'S256', onLoad: 'login-required' }).then(() => {
keycloak.authenticated // true
keycloak.token // eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldU...
keycloak.tokenParsed // { username: 'myUserName', email: '[email protected]', ... }
});
For jest testing:
/**
* To run using @testing-library/jest-dom
* @jest-environment node
*/
import Keycloak, { KeycloakConfig } from 'keycloak-js';
import { customize, KeycloakMock as mockKeycloak } from 'keycloak-js-mock';
jest.mock('keycloak-js', () => {
return jest.fn().mockImplementation((config?: KeycloakConfig | string) => {
return new mockKeycloak(config);
});
});
describe('KeycloakMock:', () => {
const username = 'myTestUserName';
let keycloak: Keycloak;
beforeAll(() => {
customize.profile({
username,
});
keycloak = new Keycloak();
});
afterAll(() => {
// In order to complete the test, do not forget to logout
keycloak.logout();
});
test('init', async () => {
await keycloak.init({}).then((authenticated) => {
expect(authenticated).toBe(true);
expect(keycloak.tokenParsed!.username).toBe(username);
});
});
});
📝 License
Copyright © 2024 Bystrova Ann. This project is MIT licensed.
Contact
Bystrova Ann - [email protected]
Project Link: https://github.com/Ann2827/keycloak-js-mock