From 20b08cb2c13eeacbf06ef51966f98cf71f7a7e4c Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 31 Oct 2023 11:36:01 +0100
Subject: [PATCH] OZG-4460 OZG-4495 fix issue with logging

---
 build-native-local-docker-image.sh            |  2 +-
 user-manager-server/pom.xml                   | 12 +++++---
 .../kop/user/UserProfileResourceTest.java     |  9 ++----
 .../CurrentCallContextUserServiceTest.java    | 11 +------
 .../GrpcCallContextInterceptorTest.java       | 30 ++++++++-----------
 .../common/reflection/SaferReflection.java    | 28 -----------------
 .../settings/UserSettingsResourceTest.java    | 16 ++++------
 7 files changed, 30 insertions(+), 78 deletions(-)
 delete mode 100644 user-manager-server/src/test/java/de/itvsh/kop/user/common/reflection/SaferReflection.java

diff --git a/build-native-local-docker-image.sh b/build-native-local-docker-image.sh
index 3319d2d5..7f1e202c 100755
--- a/build-native-local-docker-image.sh
+++ b/build-native-local-docker-image.sh
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
 cd user-manager-server
-./mvnw clean verify \
+./mvnw clean install -D skipTests \
       -Pnative \
       -Dquarkus.container-image.registry=docker.ozg-sh.de \
       -Dquarkus.container-image.push=false \
diff --git a/user-manager-server/pom.xml b/user-manager-server/pom.xml
index 4f977764..819e2d27 100644
--- a/user-manager-server/pom.xml
+++ b/user-manager-server/pom.xml
@@ -94,6 +94,10 @@
 					<groupId>org.apache.logging.log4j</groupId>
 					<artifactId>log4j-slf4j-impl</artifactId>
 				</exclusion>
+				<exclusion>
+					<groupId>org.springframework</groupId>
+					<artifactId>spring-context</artifactId>
+				</exclusion>
 			</exclusions>
 		</dependency>
 
@@ -308,11 +312,11 @@
 					<compilerArgs>
 						<arg>-parameters</arg>
 						<compilerArg>
-								-Amapstruct.defaultComponentModel=jakarta
-							</compilerArg>
+							-Amapstruct.defaultComponentModel=jakarta
+						</compilerArg>
 						<compilerArg>
-								-Amapstruct.unmappedTargetPolicy=WARN
-							</compilerArg>
+							-Amapstruct.unmappedTargetPolicy=WARN
+						</compilerArg>
 					</compilerArgs>
 				</configuration>
 			</plugin>
diff --git a/user-manager-server/src/test/java/de/itvsh/kop/user/UserProfileResourceTest.java b/user-manager-server/src/test/java/de/itvsh/kop/user/UserProfileResourceTest.java
index 7c18326a..487b12e8 100644
--- a/user-manager-server/src/test/java/de/itvsh/kop/user/UserProfileResourceTest.java
+++ b/user-manager-server/src/test/java/de/itvsh/kop/user/UserProfileResourceTest.java
@@ -41,8 +41,6 @@ import org.mockito.Mock;
 
 import com.thedeanda.lorem.LoremIpsum;
 
-import de.itvsh.kop.user.common.reflection.SaferReflection;
-
 class UserProfileResourceTest {
 
 	private static final String USER_MANAGER_URL = LoremIpsum.getInstance().getUrl();
@@ -52,16 +50,13 @@ class UserProfileResourceTest {
 
 	@Mock
 	private UserService userService;
+
 	@Mock
 	private UserProfileResourceAssembler resourceAssembler;
 
 	@BeforeEach
 	void init() {
-		mockUserManagerUrl();
-	}
-
-	private void mockUserManagerUrl() {
-		SaferReflection.setField("userManagerUrl", resource, USER_MANAGER_URL);
+		resource.userManagerUrl = USER_MANAGER_URL;
 	}
 
 	@Nested
diff --git a/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/CurrentCallContextUserServiceTest.java b/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/CurrentCallContextUserServiceTest.java
index e4e91498..23cbe08a 100644
--- a/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/CurrentCallContextUserServiceTest.java
+++ b/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/CurrentCallContextUserServiceTest.java
@@ -30,7 +30,6 @@ import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.Spy;
-import org.springframework.util.ReflectionUtils;
 
 class CurrentCallContextUserServiceTest {
 
@@ -43,14 +42,6 @@ class CurrentCallContextUserServiceTest {
 	@Nested
 	class TestClearCallContextUser {
 
-		@BeforeEach
-		void init() {
-			var userField = ReflectionUtils.findField(CurrentCallContextUserService.class, "user");
-			userField.setAccessible(true);
-			ReflectionUtils.setField(userField, userService, callContextUser);
-			assertThat(userService.getCurrentCallContextUser()).isPresent();
-		}
-
 		@Test
 		void shouldSetUserToNull() {
 			userService.clearCallContextUser();
@@ -60,7 +51,7 @@ class CurrentCallContextUserServiceTest {
 	}
 
 	@Nested
-	class TestService {
+	class TestGetCurrentCallContextUser {
 
 		@BeforeEach
 		void init() {
diff --git a/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/GrpcCallContextInterceptorTest.java b/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/GrpcCallContextInterceptorTest.java
index b0123cb8..f1142822 100644
--- a/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/GrpcCallContextInterceptorTest.java
+++ b/user-manager-server/src/test/java/de/itvsh/kop/user/common/callcontext/GrpcCallContextInterceptorTest.java
@@ -37,11 +37,10 @@ import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.springframework.util.ReflectionUtils;
 
 import de.itvsh.kop.user.User;
 import de.itvsh.kop.user.UserTestFactory;
-import de.itvsh.kop.user.common.callcontext.GrpcCallContextInterceptor.LogContextSettingListener;
+import de.itvsh.kop.user.common.callcontext.GrpcCallContextInterceptor.*;
 import de.itvsh.kop.user.common.errorhandling.ResourceNotFoundException;
 import io.grpc.Metadata;
 import io.grpc.ServerCall;
@@ -289,11 +288,6 @@ class GrpcCallContextInterceptorTest {
 				@Nested
 				class TestWithExistingClientName {
 
-					@BeforeEach
-					void initListener() {
-						setClientName(Optional.of("ClientNameDummy"));
-					}
-
 					@Test
 					void shouldCallDoSurroundOn() {
 						listener.onReady();
@@ -306,17 +300,25 @@ class GrpcCallContextInterceptorTest {
 				@Nested
 				class TestWithMissingClientName {
 
+					private LogContextSettingListener<?, ?, ?> listener;
+					private Metadata headers = CallContextMetadataTestFactory.createMetadata();
+
 					@BeforeEach
 					void initListener() {
-						setClientName(Optional.empty());
+						headers.discardAll(GrpcUtil.createKeyOf(GrpcCallContextInterceptor.KEY_CLIENT_NAME));
+						listener = spy(interceptor.new LogContextSettingListener<>(delegate, originCall, headers));
 					}
 
 					@Test
 					void shouldHandleMissingClientName() {
-						listener.onReady();
+						try (var mock = mockStatic(GrpcUtil.class)) {
+							mock.when(() -> GrpcUtil.getFromHeaders(KEY_CLIENT_NAME, headers)).thenReturn(Optional.empty());
+
+							listener.onReady();
 
-						verify(listener).handleMissingClientName();
-						verify(originCall).close(any(), eq(headers));
+							verify(listener).handleMissingClientName();
+							verify(originCall).close(any(), eq(headers));
+						}
 					}
 
 					@Test
@@ -326,12 +328,6 @@ class GrpcCallContextInterceptorTest {
 						verify(listener, never()).doSurroundOn(any());
 					}
 				}
-
-				private void setClientName(Optional<String> clientName) {
-					var field = ReflectionUtils.findField(LogContextSettingListener.class, "clientName");
-					field.setAccessible(true);
-					ReflectionUtils.setField(field, listener, clientName);
-				}
 			}
 		}
 
diff --git a/user-manager-server/src/test/java/de/itvsh/kop/user/common/reflection/SaferReflection.java b/user-manager-server/src/test/java/de/itvsh/kop/user/common/reflection/SaferReflection.java
deleted file mode 100644
index f9fb8aeb..00000000
--- a/user-manager-server/src/test/java/de/itvsh/kop/user/common/reflection/SaferReflection.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package de.itvsh.kop.user.common.reflection;
-
-import static java.lang.String.*;
-import static org.junit.jupiter.api.Assertions.*;
-
-import org.springframework.util.ReflectionUtils;
-
-/**
- * Safer in this case means "with error handling".
- */
-public class SaferReflection {
-
-	private SaferReflection() {
-		// noop
-	}
-
-	public static <T, V> void setField(String fieldName, T target, V value) {
-		var field = ReflectionUtils.findField(target.getClass(), fieldName);
-		if (field == null) {
-			fail(format(
-					"Can't mock because of reflection error. Unknown field: %s. Check in code if the field name in class fits to the  string passed"
-							+ " to reflection call.",
-					fieldName));
-		}
-		field.setAccessible(true);
-		ReflectionUtils.setField(field, target, value);
-	}
-}
diff --git a/user-manager-server/src/test/java/de/itvsh/kop/user/settings/UserSettingsResourceTest.java b/user-manager-server/src/test/java/de/itvsh/kop/user/settings/UserSettingsResourceTest.java
index b3f6ebb7..5b9c8c29 100644
--- a/user-manager-server/src/test/java/de/itvsh/kop/user/settings/UserSettingsResourceTest.java
+++ b/user-manager-server/src/test/java/de/itvsh/kop/user/settings/UserSettingsResourceTest.java
@@ -41,7 +41,6 @@ import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.springframework.util.ReflectionUtils;
 
 import com.thedeanda.lorem.LoremIpsum;
 
@@ -76,6 +75,11 @@ class UserSettingsResourceTest {
 	private final String USER_MANAGER_URL = LoremIpsum.getInstance().getUrl();
 	private final String USER_ID = UUID.randomUUID().toString();
 
+	@BeforeEach
+	void setUp() {
+		resource.userManagerUrl = USER_MANAGER_URL;
+	}
+
 	@DisplayName("Get Usersettings")
 	@Nested
 	class TestGetUserSettings {
@@ -86,8 +90,6 @@ class UserSettingsResourceTest {
 		void mockAccess() {
 			doNothing().when(resource).checkUserAccess(anyString());
 			when(userSettingsService.getByUserId(anyString())).thenReturn(userSettings);
-
-			mockUserManagerUrl();
 		}
 
 		@Test
@@ -167,8 +169,6 @@ class UserSettingsResourceTest {
 			void mockAccess() {
 				doNothing().when(resource).checkUserAccess(anyString());
 				when(userSettingsService.updateByUserId(any(UserSettings.class), anyString())).thenReturn(Optional.of(updatedUserSettings));
-
-				mockUserManagerUrl();
 			}
 
 			@Test
@@ -198,12 +198,6 @@ class UserSettingsResourceTest {
 		}
 	}
 
-	private void mockUserManagerUrl() {
-		var field = ReflectionUtils.findField(UserSettingsResource.class, "userManagerUrl");
-		field.setAccessible(true);
-		ReflectionUtils.setField(field, resource, USER_MANAGER_URL);
-	}
-
 	@DisplayName("Check User access")
 	@Nested
 	class TestCheckUserAccess {
-- 
GitLab