25.0.6 • Published 10 months ago

keycloak-js-mock v25.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
10 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 25.0.6

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

25.0.6

10 months ago

25.0.2

10 months ago

24.0.5

1 year ago

23.0.7

1 year ago

22.0.5

1 year ago

21.1.3

1 year ago

21.1.2

1 year ago

19.0.3

1 year ago

17.0.0

1 year ago

20.0.5

1 year ago

18.0.1

1 year ago

15.1.1

1 year ago

16.1.1

1 year ago

16.0.0

1 year ago

1.1.0

2 years ago

1.1.0-alpha.3

2 years ago

1.1.0-alpha.1

2 years ago

1.1.0-alpha.2

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.1.0

2 years ago