UNPKG

testcontainers-keycloak

Version:
70 lines (54 loc) 2.21 kB
# Testcontainers-Keycloak A testcontainers for keycloak https://www.npmjs.com/package/testcontainers-keycloak ## Installation ``` npm i -D testcontainers-keycloak ``` ## Usage. Keycloak 24 and above ```typescript const fake = { realmName: 'demo', username: 'demo', firstName: 'demo', lastName: 'demo', email: 'demo@gmail.com', password: 'demodemo1', enabled: true, clientId: 'clientID', clientSecret: 'clientSecret', redirectUris: ['http://localhost:8888', 'http://localhost:8888/callback'], webOrigins: ['http://localhost:8888/home'], directAccessGrantsEnabled: true } const keycloak = await new Keycloak24Container('quay.io/keycloak/keycloak:24.0.1') .withCommand(['start-dev']) .withAdminUsername('admin') .withAdminPassword('admin') .withExposedPorts(8080) .start() // start a admin session await keycloak.configCredentials('master', 'admin', 'admin') // according to your scenarios // create the realm, user and client await keycloak.createRealm(fake.realmName) await keycloak.createUser(fake.realmName, fake.username, fake.firstName, fake.lastName, fake.email, true) await keycloak.setUserPassword(fake.realmName, fake.username, fake.password) await keycloak.createClient(fake.realmName, fake.clientId, fake.clientSecret, fake.redirectUris, fake.webOrigins) // const accessToken = await keycloak.getAccessToken(fake.realmName, fake.username, fake.password, fake.clientId, fake.clientSecret) ``` ## Usage. Keycloak 23 and below ```typescript // start a keycloak container const keycloak = await new KeycloakContainer().withAdminUsername('admin').withAdminPassword('admin').withExposedPorts(8080).start() // start a admin session await keycloak.configCredentials('master', 'admin', 'admin') // according to your scenarios // create the realm, user and client await keycloak.createRealm('demo') await keycloak.createUser('demo', 'user01', 'yubin', 'hsu', true) await keycloak.createClient('demo', 'client01', 'client01Secret', ['http://localhost:8888', 'http://localhost:8888/callback'], ['http://localhost:8888/home']) // your test case ... const accessToken = await keycloak.getAccessToken('demo', 'user01', 'user01password', 'client01', 'client01Secret') ```