keycloak-scim/js/apps/account-ui/test/admin-client.ts

103 lines
2.8 KiB
TypeScript
Raw Normal View History

import KeycloakAdminClient from "@keycloak/keycloak-admin-client";
import RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation";
import type { UserProfileConfig } from "@keycloak/keycloak-admin-client/lib/defs/userProfileMetadata";
import UserRepresentation from "@keycloak/keycloak-admin-client/lib/defs/userRepresentation";
const adminClient = new KeycloakAdminClient({
baseUrl: process.env.KEYCLOAK_SERVER || "http://127.0.0.1:8180",
realmName: "master",
});
await adminClient.auth({
username: "admin",
password: "admin",
grantType: "password",
clientId: "admin-cli",
});
export async function useTheme() {
const masterRealm = await adminClient.realms.findOne({ realm: "master" });
await adminClient.realms.update(
{ realm: "master" },
{ ...masterRealm, accountTheme: "keycloak.v3" },
);
}
export async function importRealm(realm: RealmRepresentation) {
await adminClient.realms.create(realm);
}
export async function deleteRealm(realm: string) {
await adminClient.realms.del({ realm });
}
export async function importUserProfile(
userProfile: UserProfileConfig,
realm: string,
) {
await adminClient.users.updateProfile({ ...userProfile, realm });
}
export async function enableLocalization(realm: string) {
const realmRepresentation = await adminClient.realms.findOne({ realm });
await adminClient.realms.update(
{ realm },
{
...realmRepresentation,
internationalizationEnabled: true,
supportedLocales: ["en", "nl", "de"],
},
);
}
export async function createUser(user: UserRepresentation, realm: string) {
try {
await adminClient.users.create({ ...user, realm });
} catch (error) {
console.error(error);
}
}
export async function getUserByUsername(username: string, realm: string) {
const users = await adminClient.users.find({ username, realm, exact: true });
return users.length > 0 ? users[0] : undefined;
}
export async function deleteUser(username: string, realm: string) {
try {
const users = await adminClient.users.find({ username, realm });
const { id } = users[0];
await adminClient.users.del({ id: id!, realm });
} catch (error) {
console.error(error);
}
}
export async function updateUser(user: UserRepresentation, realm: string) {
try {
await adminClient.users.update({ id: user.id!, realm }, user);
} catch (error) {
console.error(error);
}
}
export async function getCredentials(id: string, realm: string) {
try {
return await adminClient.users.getCredentials({ id, realm });
} catch (error) {
console.error(error);
}
}
export async function deleteCredential(
id: string,
credentialId: string,
realm: string,
) {
try {
await adminClient.users.deleteCredential({ id, credentialId, realm });
} catch (error) {
console.error(error);
}
}