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

OZG-7062 test verschoben

parent ff997dbc
No related branches found
No related tags found
No related merge requests found
/*
* 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
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
......@@ -23,21 +23,36 @@
*/
package de.ozgcloud.user.keycloak;
import static de.ozgcloud.user.keycloak.KeycloakUserRemoteService.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.List;
import jakarta.inject.Inject;
import org.bson.types.ObjectId;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.keycloak.admin.client.resource.RealmResource;
import io.quarkus.test.InjectMock;
import de.ozgcloud.user.User;
import de.ozgcloud.user.UserTestFactory;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
import io.quarkus.test.junit.mockito.InjectSpy;
@QuarkusTest
@TestProfile(KeycloakTestProfile.class)
class KeycloakUserRemoteServiceITCase {
@InjectSpy
KeycloakUserRemoteService service;
@InjectMock
@InjectSpy
KeycloakApiService apiService;
@Inject
RealmResource realmResource;
@Test
void shouldCallGetAllUsers() {
......@@ -45,4 +60,43 @@ class KeycloakUserRemoteServiceITCase {
verify(apiService).findAllUser();
}
@Nested
class TestUpdateOzgCloudUserId {
private static final String KEYCLOAK_USER_ID = "90748555-7894-4854-8292-1f6106826962";
@DisplayName("Update ozgCloudUserId attribute in keycloak")
@Test
void shouldUpdateOzgCloudUserId() {
User user = prepareUser();
service.updateOzgCloudUserId(user);
var ozgCloudUserId = getOzgCloudUserIdFromKeycloak();
assertThat(user.getId().toString()).isEqualTo(ozgCloudUserId);
}
private User prepareUser() {
return UserTestFactory.createBuilder()
.id(new ObjectId())
.externalId(KEYCLOAK_USER_ID)
.keycloakUserId(KEYCLOAK_USER_ID)
.email("testerozg+dorothea@gmail.com")
.firstName("Dorothea")
.lastName("Doe")
.fullName("Dorothea Doe")
.fullNameReversed("Doe Dorothea")
.username("dorothea")
.organisationsEinheitIds(List.of("248240886", "9030229", "10363455"))
.build();
}
private String getOzgCloudUserIdFromKeycloak() {
var userResource = realmResource.users().get(KEYCLOAK_USER_ID);
return userResource.toRepresentation().getAttributes().get(ATTRIBUTE_NAME_OZG_CLOUD_USER_ID).getFirst();
}
}
}
\ No newline at end of file
/*
* Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.user.sync;
import java.util.Map;
import io.quarkus.test.junit.QuarkusTestProfile;
public class KeycloakMongoDbTestProfile implements QuarkusTestProfile {
@Override
public Map<String, String> getConfigOverrides() {
return Map.of("ozgcloud.keycloak.api.user", "userManagerApiUser",
"ozgcloud.keycloak.api.password", "hlc_j1I1Ji0trC0",
"ozgcloud.keycloak.api.realm", "by-kiel-dev",
"keycloak.url", "https://sso.dev.by.ozg-cloud.de",
"quarkus.mongodb.devservices.enabled", "true",
"quarkus.oidc.auth-server-url", "https://sso.dev.by.ozg-cloud.de"
);
}
}
\ No newline at end of file
/*
* Copyright (c) 2024. Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.user.sync;
import static de.ozgcloud.user.keycloak.KeycloakUserRemoteService.*;
import static org.assertj.core.api.Assertions.*;
import java.time.Instant;
import java.util.List;
import jakarta.inject.Inject;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.keycloak.admin.client.resource.RealmResource;
import com.mongodb.client.MongoClient;
import de.ozgcloud.user.TestDatabaseUtils;
import de.ozgcloud.user.User;
import de.ozgcloud.user.UserService;
import de.ozgcloud.user.UserTestFactory;
import io.quarkus.test.junit.QuarkusTest;
import io.quarkus.test.junit.TestProfile;
@QuarkusTest
@TestProfile(KeycloakMongoDbTestProfile.class)
public class SyncOzgCloudIdITCase {
public static final String KEYCLOAK_USER_ID = "90748555-7894-4854-8292-1f6106826962";
@Inject
SyncService service;
@Inject
MongoClient mongoClient;
@Inject
UserService userService;
@Inject
RealmResource realmResource;
private String userIdDb;
@BeforeEach
void init() {
TestDatabaseUtils.getDatabase(mongoClient).drop();
prepareData();
}
private void prepareData() {
User user1 = UserTestFactory.createBuilder()
.externalId(KEYCLOAK_USER_ID)
.keycloakUserId(KEYCLOAK_USER_ID)
.email("testerozg+dorothea@gmail.com")
.firstName("Dorothea")
.lastName("Doe")
.fullName("Dorothea Doe")
.fullNameReversed("Doe Dorothea")
.username("dorothea")
.organisationsEinheitIds(List.of("248240886", "9030229", "10363455"))
.build();
userIdDb = userService.save(user1).getId().toString();
}
@DisplayName("Update ozgCloudUserId attribute in keycloak")
@Test
void shouldUpdateOzgCloudUserId() {
syncUsers();
var ozgCloudUserId = getOzgCloudUserIdFromKeycloak();
assertThat(userIdDb).isEqualTo(ozgCloudUserId);
}
private void syncUsers() {
var timestamp = Instant.now().toEpochMilli();
service.sync(timestamp);
}
private String getOzgCloudUserIdFromKeycloak() {
var userResource = realmResource.users().get(KEYCLOAK_USER_ID);
return userResource.toRepresentation().getAttributes().get(ATTRIBUTE_NAME_OZG_CLOUD_USER_ID).getFirst();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment