23.0.7 • Published 2 months ago

keycloak-js-mock v23.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Keycloak Js Mock

NPM JavaScript Style Guide License

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.

keycloak-js source for 23.0.7

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: 'j.snow@google.com', ... }
});

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 - ann.bystrova96@mail.ru

Project Link: https://github.com/Ann2827/keycloak-js-mock

23.0.7

2 months ago

22.0.5

3 months ago

21.1.3

3 months ago

21.1.2

3 months ago

19.0.3

3 months ago

17.0.0

3 months ago

20.0.5

3 months ago

18.0.1

3 months ago

15.1.1

3 months ago

16.1.1

3 months ago

16.0.0

3 months ago

1.1.0

10 months ago

1.1.0-alpha.3

10 months ago

1.1.0-alpha.1

1 year ago

1.1.0-alpha.2

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.1.0

1 year ago