test: fix keycloak realm import
Some checks failed
Flake checks / Check (pull_request) Failing after 2m45s

This commit is contained in:
b12f 2024-08-27 15:16:57 +02:00
parent dec2d76d2a
commit 9bba502b46
Signed by: b12f
GPG key ID: 729956E1124F8F26
3 changed files with 286 additions and 301 deletions

View file

@ -57,10 +57,6 @@ in
database-password-file = "/tmp/dbf"; database-password-file = "/tmp/dbf";
}; };
services.keycloak.database.createLocally = true; services.keycloak.database.createLocally = true;
services.keycloak.extraStartupFlags = [
"--import-realm"
"--file=${realm-export}"
];
networking.interfaces.eth0.ipv4.addresses = [ networking.interfaces.eth0.ipv4.addresses = [
{ {
@ -81,12 +77,43 @@ in
nachtigall.wait_for_unit("system.slice") nachtigall.wait_for_unit("system.slice")
nachtigall.succeed("ping 127.0.0.1 -c 2") nachtigall.succeed("ping 127.0.0.1 -c 2")
nachtigall.wait_for_unit("nginx.service") nachtigall.wait_for_unit("nginx.service")
nachtigall.wait_for_unit("keycloak.service")
nachtigall.systemctl("stop keycloak.service")
nachtigall.wait_until_succeeds("if (($(ps aux | grep 'Dkc.home.dir=/run/keycloak' | grep -v grep | wc -l) == 0)); then true; else false; fi")
nachtigall.succeed("${pkgs.keycloak}/bin/kc.sh --verbose import --optimized --file=${realm-export}")
nachtigall.systemctl("start keycloak.service")
nachtigall.sleep(30)
nachtigall.wait_until_succeeds("curl http://127.0.0.1:8080/") nachtigall.wait_until_succeeds("curl http://127.0.0.1:8080/")
nachtigall.wait_until_succeeds("curl https://auth.test.pub.solar/") nachtigall.wait_until_succeeds("curl https://auth.test.pub.solar/")
client.wait_for_unit("system.slice") client.wait_for_unit("system.slice")
client.wait_for_file("/tmp/puppeteer.sock") client.wait_for_file("/tmp/puppeteer.sock")
puppeteer_run('page.goto("https://auth.test.pub.solar/admin/master/console")')
puppeteer_run('page.waitForNetworkIdle()')
client.screenshot("admin-initial")
puppeteer_run('page.locator("[name=username]").fill("admin")')
puppeteer_run('page.locator("::-p-text(Sign In)").click()')
puppeteer_run('page.waitForNetworkIdle()')
client.screenshot("admin-password")
puppeteer_run('page.locator("[name=password]").fill("password")')
puppeteer_run('page.locator("::-p-text(Sign In)").click()')
puppeteer_run('page.waitForNetworkIdle()')
client.screenshot("admin-login")
puppeteer_run('page.locator("::-p-text(Realm settings)").click()')
puppeteer_run('page.waitForNetworkIdle()')
client.screenshot("admin-theme")
puppeteer_run('page.locator("::-p-text(Themes)").click()')
puppeteer_run('page.waitForNetworkIdle()')
puppeteer_run('page.locator("#kc-login-theme").click()')
client.screenshot("admin-theme-changed")
puppeteer_run('page.locator("li button::-p-text(pub.solar)").click()')
puppeteer_run('page.locator("::-p-text(Save)").click()')
puppeteer_run('page.waitForNetworkIdle()')
client.screenshot("admin-theme-saved")
puppeteer_run('page.goto("https://auth.test.pub.solar")') puppeteer_run('page.goto("https://auth.test.pub.solar")')
puppeteer_run('page.waitForNetworkIdle()') puppeteer_run('page.waitForNetworkIdle()')
client.screenshot("initial") client.screenshot("initial")

File diff suppressed because it is too large Load diff

View file

@ -14,10 +14,11 @@ const ID_KEYS = [
const renameDomain = (s) => s.replace(/pub.solar/g, 'test.pub.solar'); const renameDomain = (s) => s.replace(/pub.solar/g, 'test.pub.solar');
const changeClientSecrets = (data) => ({ const cleanClients = (data) => ({
...data, ...data,
clients: data.clients.map(c => ({ clients: data.clients.map(c => ({
...c, ...c,
authorizationSettings: undefined,
...(c.secret ? { ...(c.secret ? {
secret: 'secret', secret: 'secret',
attributes: { attributes: {
@ -44,7 +45,7 @@ const changeIds = (node) => {
...acc, ...acc,
[key]: shouldChangeId(node, key) [key]: shouldChangeId(node, key)
? (() => { ? (() => {
const oldId = node[key]; const oldId = node[key];
if (newIds[oldId]) { if (newIds[oldId]) {
return newIds[oldId]; return newIds[oldId];
} }
@ -63,7 +64,7 @@ const changeIds = (node) => {
const fileContents = await readFile(filePath, { encoding: 'utf8' }); const fileContents = await readFile(filePath, { encoding: 'utf8' });
const data = JSON.parse(renameDomain(fileContents)); const data = JSON.parse(renameDomain(fileContents));
const newData = changeIds(changeClientSecrets(data)); const newData = changeIds(cleanClients(data));
console.log(JSON.stringify(newData, null, 2)); console.log(JSON.stringify(newData, null, 2));
})(); })();