From 76b011d3cb7ece20bd22b9e7ae72b0d06012969b Mon Sep 17 00:00:00 2001
From: Felix Reichenbach <felix.reichenbach@mgm-tp.com>
Date: Wed, 12 Feb 2025 15:14:49 +0100
Subject: [PATCH] OZG-7605 check for any system user in historie model
 assembler

---
 .../alfa/historie/HistorieModelAssembler.java     | 14 +++++++-------
 .../alfa/historie/HistorieModelAssemblerTest.java | 15 ++++++++++-----
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java
index b3d974cdfd..a88d362dfe 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/historie/HistorieModelAssembler.java
@@ -29,7 +29,6 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.hateoas.CollectionModel;
 import org.springframework.hateoas.EntityModel;
 import org.springframework.hateoas.Link;
@@ -39,17 +38,18 @@ import org.springframework.stereotype.Component;
 import de.ozgcloud.alfa.common.ModelBuilder;
 import de.ozgcloud.alfa.common.command.Command;
 import de.ozgcloud.alfa.common.user.UserManagerUrlProvider;
+import lombok.RequiredArgsConstructor;
 
 @Component
+@RequiredArgsConstructor
 class HistorieModelAssembler implements RepresentationModelAssembler<Command, EntityModel<Command>> {
-	static final String SYSTEM_NOTIFICATION_MANAGER_PREFIX = "system-notification_manager";
+	static final String SYSTEM_USER_PREFIX = "system-";
 
 	static final String REL_ASSIGNED_TO = "assignedTo";
 
 	static final String ASSIGNED_TO_BODY_FIELD = "assignedTo";
 
-	@Autowired
-	private UserManagerUrlProvider userManagerUrlProvider;
+	private final UserManagerUrlProvider userManagerUrlProvider;
 
 	@Override
 	public EntityModel<Command> toModel(Command entity) {
@@ -62,15 +62,15 @@ class HistorieModelAssembler implements RepresentationModelAssembler<Command, En
 	}
 
 	Command unsetSystemUser(Command entity) {
-		if (isSystemNotificationUser(entity)) {
+		if (isSystemUser(entity)) {
 			return entity.toBuilder().createdBy(null).build();
 		}
 
 		return entity;
 	}
 
-	private boolean isSystemNotificationUser(Command entity) {
-		return Objects.nonNull(entity.getCreatedBy()) && entity.getCreatedBy().toString().startsWith(SYSTEM_NOTIFICATION_MANAGER_PREFIX);
+	private boolean isSystemUser(Command entity) {
+		return Objects.nonNull(entity.getCreatedBy()) && entity.getCreatedBy().toString().startsWith(SYSTEM_USER_PREFIX);
 	}
 
 	private void addAssignedTo(Command entity, ModelBuilder<Command> modelBuilder) {
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
index e420daa620..76c9affa1e 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/HistorieModelAssemblerTest.java
@@ -37,6 +37,8 @@ import org.mockito.Mock;
 import org.springframework.hateoas.IanaLinkRelations;
 import org.springframework.hateoas.Link;
 
+import com.thedeanda.lorem.LoremIpsum;
+
 import de.ozgcloud.alfa.common.UserProfileUrlProvider;
 import de.ozgcloud.alfa.common.command.CommandTestFactory;
 import de.ozgcloud.alfa.common.user.UserId;
@@ -52,7 +54,7 @@ class HistorieModelAssemblerTest {
 	@Mock
 	private UserManagerUrlProvider userManagerUrlProvider;
 
-	private final String COMMAND_SINGLE_PATH = "/api/histories/" + CommandTestFactory.ID;
+	private static final String COMMAND_SINGLE_PATH = "/api/histories/" + CommandTestFactory.ID;
 
 	private UserProfileUrlProvider urlProvider = new UserProfileUrlProvider();
 
@@ -133,10 +135,13 @@ class HistorieModelAssemblerTest {
 		}
 
 		@Test
-		void shouldNotExistingAtSystemNotificationMAnager() {
-			var model = modelAssembler
-					.toModel(CommandTestFactory.createBuilder().createdBy(UserId.from(HistorieModelAssembler.SYSTEM_NOTIFICATION_MANAGER_PREFIX))
-							.build());
+		void shouldNotExistForSystemUser() {
+			var systemUser = UserId.from("system-" + LoremIpsum.getInstance().getWords(1));
+			var commandBySystemUser = CommandTestFactory.createBuilder()
+					.createdBy(systemUser)
+					.build();
+
+			var model = modelAssembler.toModel(commandBySystemUser);
 
 			assertThat(model.getLink(CREATED_BY)).isNotPresent();
 		}
-- 
GitLab