Skip to content
Snippets Groups Projects
Commit b90dcd35 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-7062 Tests auf Keycloak Testcontainer umgestellt

parent fe7a6341
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0"?> <?xml version="1.0"?>
<!-- <!--
~ Copyright (c) 2022-2024. Das Land Schleswig-Holstein vertreten durch den
Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den ~ Ministerpräsidenten des Landes Schleswig-Holstein
Ministerpräsidenten des Landes Schleswig-Holstein ~ Staatskanzlei
Staatskanzlei ~ Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
Abteilung Digitalisierung und zentrales IT-Management der Landesregierung ~
~ Lizenziert unter der EUPL, Version 1.2 oder - sobald
Lizenziert unter der EUPL, Version 1.2 oder - sobald ~ diese von der Europäischen Kommission genehmigt wurden -
diese von der Europäischen Kommission genehmigt wurden - ~ Folgeversionen der EUPL ("Lizenz");
Folgeversionen der EUPL ("Lizenz"); ~ Sie dürfen dieses Werk ausschließlich gemäß
Sie dürfen dieses Werk ausschließlich gemäß ~ dieser Lizenz nutzen.
dieser Lizenz nutzen. ~ Eine Kopie der Lizenz finden Sie hier:
Eine Kopie der Lizenz finden Sie hier: ~
~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 ~
~ Sofern nicht durch anwendbare Rechtsvorschriften
Sofern nicht durch anwendbare Rechtsvorschriften ~ gefordert oder in schriftlicher Form vereinbart, wird
gefordert oder in schriftlicher Form vereinbart, wird ~ die unter der Lizenz verbreitete Software "so wie sie
die unter der Lizenz verbreitete Software "so wie sie ~ ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN - ~ ausdrücklich oder stillschweigend - verbreitet.
ausdrücklich oder stillschweigend - verbreitet. ~ Die sprachspezifischen Genehmigungen und Beschränkungen
Die sprachspezifischen Genehmigungen und Beschränkungen ~ unter der Lizenz sind dem Lizenztext zu entnehmen.
unter der Lizenz sind dem Lizenztext zu entnehmen.
--> -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
...@@ -242,7 +241,7 @@ ...@@ -242,7 +241,7 @@
<dependency> <dependency>
<groupId>com.github.dasniko</groupId> <groupId>com.github.dasniko</groupId>
<artifactId>testcontainers-keycloak</artifactId> <artifactId>testcontainers-keycloak</artifactId>
<version>3.5.1</version> <version>3.1.0</version>
</dependency> </dependency>
</dependencies> </dependencies>
...@@ -325,7 +324,8 @@ ...@@ -325,7 +324,8 @@
</goals> </goals>
<configuration> <configuration>
<systemPropertyVariables> <systemPropertyVariables>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path> <native.image.path>${project.build.directory}/${project.build.finalName}-runner
</native.image.path>
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager> <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
<maven.home>${maven.home}</maven.home> <maven.home>${maven.home}</maven.home>
</systemPropertyVariables> </systemPropertyVariables>
......
/* /*
* Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den * Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein * Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei * Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
...@@ -30,32 +30,22 @@ import io.quarkus.test.junit.QuarkusTestProfile; ...@@ -30,32 +30,22 @@ import io.quarkus.test.junit.QuarkusTestProfile;
public class KeycloakTestProfile implements QuarkusTestProfile { public class KeycloakTestProfile implements QuarkusTestProfile {
private final String userKey = "ozgcloud.keycloak.api.user";
private final String userValue = "userManagerApiUser";
private final String passwordKey = "ozgcloud.keycloak.api.password";
private final String passwordValue = "hlc_j1I1Ji0trC0";
private final String realmKey = "ozgcloud.keycloak.api.realm";
private final String realmValue = "by-kiel-dev";
private final String urlKey = "keycloak.url";
private final String urlValue = "localhost:9999";
private final KeycloakContainer keycloak; private final KeycloakContainer keycloak;
public KeycloakTestProfile() { public KeycloakTestProfile() {
keycloak = new KeycloakContainer("quay.io/keycloak/keycloak:24.0.5") keycloak = new KeycloakContainer("quay.io/keycloak/keycloak:24.0.5")
.withRealmImportFile("keycloak/realm-export.json") .withEnv(Map.of("KEYCLOAK_ADMIN", "admin", "KEYCLOAK_ADMIN_PASSWORD", "admin"))
.withVerboseOutput(); .withRealmImportFile("keycloak/realm-export.json");
keycloak.start(); keycloak.start();
} }
@Override @Override
public Map<String, String> getConfigOverrides() { public Map<String, String> getConfigOverrides() {
return Map.of(userKey, "administrationApiUser", return Map.of(
passwordKey, "administrationApiUser", "ozgcloud.keycloak.api.password", "administrationApiUser",
realmKey, realmValue, "ozgcloud.keycloak.api.user", "administrationApiUser",
urlKey, keycloak.getAuthServerUrl()); "ozgcloud.keycloak.api.realm", "by-kiel-dev",
"keycloak.url", keycloak.getAuthServerUrl());
} }
} }
\ No newline at end of file
...@@ -32,15 +32,14 @@ import java.util.List; ...@@ -32,15 +32,14 @@ import java.util.List;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import org.bson.types.ObjectId; import org.bson.types.ObjectId;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.keycloak.admin.client.Keycloak; import org.junit.jupiter.api.TestMethodOrder;
import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.admin.client.resource.RealmResource;
import dasniko.testcontainers.keycloak.KeycloakContainer;
import de.ozgcloud.user.User; import de.ozgcloud.user.User;
import de.ozgcloud.user.UserTestFactory; import de.ozgcloud.user.UserTestFactory;
import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.QuarkusTest;
...@@ -66,13 +65,15 @@ class KeycloakUserRemoteServiceITCase { ...@@ -66,13 +65,15 @@ class KeycloakUserRemoteServiceITCase {
} }
@Nested @Nested
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class TestUpdateOzgCloudUserId { class TestUpdateOzgCloudUserId {
private static final String KEYCLOAK_USER_ID = "90748555-7894-4854-8292-1f6106826962"; private static final String KEYCLOAK_USER_ID = "90748555-7894-4854-8292-1f6106826962";
@DisplayName("Update ozgCloudUserId attribute in keycloak") @DisplayName("Set ozgCloudUserId attribute in keycloak on new user")
@Test @Test
void shouldUpdateOzgCloudUserId() { @Order(1)
void shouldSetOzgCloudUserId() {
User user = prepareUser(); User user = prepareUser();
service.updateOzgCloudUserId(user); service.updateOzgCloudUserId(user);
...@@ -81,12 +82,25 @@ class KeycloakUserRemoteServiceITCase { ...@@ -81,12 +82,25 @@ class KeycloakUserRemoteServiceITCase {
assertThat(user.getId().toString()).isEqualTo(ozgCloudUserId); assertThat(user.getId().toString()).isEqualTo(ozgCloudUserId);
} }
@DisplayName("Update ozgCloudUserId attribute in keycloak on new user")
@Test
@Order(2)
void shouldUpdateOzgCloudUserId() {
User user = prepareUser();
var oldCloudUserId = getOzgCloudUserIdFromKeycloak();
service.updateOzgCloudUserId(user);
var newCloudUserId = getOzgCloudUserIdFromKeycloak();
assertThat(oldCloudUserId).isNotEqualTo(newCloudUserId);
}
private User prepareUser() { private User prepareUser() {
return UserTestFactory.createBuilder() return UserTestFactory.createBuilder()
.id(new ObjectId()) .id(new ObjectId())
.externalId(KEYCLOAK_USER_ID) .externalId(KEYCLOAK_USER_ID)
.keycloakUserId(KEYCLOAK_USER_ID) .keycloakUserId(KEYCLOAK_USER_ID)
.email("testerozg+dorothea@gmail.com") .email("dorothea@test.local")
.firstName("Dorothea") .firstName("Dorothea")
.lastName("Doe") .lastName("Doe")
.fullName("Dorothea Doe") .fullName("Dorothea Doe")
......
...@@ -2616,8 +2616,25 @@ ...@@ -2616,8 +2616,25 @@
} }
], ],
"clientRoles": { "clientRoles": {
"realm-management" : [ "view-users", "manage-users" ] "realm-management": [
"view-users",
"manage-users"
]
}
},
{
"id": "90748555-7894-4854-8292-1f6106826962",
"username": "dorothea",
"firstName": "Dorothea",
"lastName": "Doe",
"email": "dorothea@test.local",
"enabled": true,
"credentials": [
{
"type": "password",
"value": "localTestUser"
} }
]
} }
] ]
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment