From 34bf63d7be7e95d234b9ab72e51907920845f68a Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 26 Jan 2024 18:28:04 +0100
Subject: [PATCH] Add parameter for performing user sync on start up.

---
 .../de/ozgcloud/user/sync/SyncScheduler.java  | 15 +++++++++-
 .../src/main/resources/application.yaml       |  3 +-
 .../ozgcloud/user/sync/SyncSchedulerTest.java | 28 +++++++++++++++++++
 3 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java b/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java
index 0fe18bc2..251bf289 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java
@@ -25,10 +25,14 @@ package de.ozgcloud.user.sync;
 
 import static io.quarkus.scheduler.Scheduled.ConcurrentExecution.*;
 
-import de.ozgcloud.user.common.lock.LockService;
 import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
 import jakarta.inject.Inject;
 
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+
+import de.ozgcloud.user.common.lock.LockService;
+import io.quarkus.runtime.StartupEvent;
 import io.quarkus.scheduler.Scheduled;
 import lombok.extern.log4j.Log4j2;
 
@@ -41,6 +45,15 @@ public class SyncScheduler {
 	@Inject
 	LockService syncLockService;
 
+	@ConfigProperty(name = "ozgcloud.usersync.onstart")
+	boolean syncUsers;
+
+	void onStart(@Observes StartupEvent event) {
+		if (syncUsers) {
+			start();
+		}
+	}
+
 	@Scheduled(every = "{ozgcloud.usersync.period}", concurrentExecution = SKIP)
 	public void start() {
 		if (syncLockService.isNotLocked()) {
diff --git a/user-manager-server/src/main/resources/application.yaml b/user-manager-server/src/main/resources/application.yaml
index 2b4d4d46..66db5ca6 100644
--- a/user-manager-server/src/main/resources/application.yaml
+++ b/user-manager-server/src/main/resources/application.yaml
@@ -46,4 +46,5 @@ ozgcloud:
       realm: by-kiel-dev
       client: alfa
   usersync:
-    period: "6h"
\ No newline at end of file
+    period: "6h"
+    onstart: false
\ No newline at end of file
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java
index 9d20a7e2..20accec4 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java
@@ -38,6 +38,7 @@ import org.mockito.Spy;
 
 import de.ozgcloud.user.common.lock.Lock;
 import de.ozgcloud.user.common.lock.LockService;
+import io.quarkus.runtime.StartupEvent;
 
 class SyncSchedulerTest {
 
@@ -124,4 +125,31 @@ class SyncSchedulerTest {
 			verify(syncLockService).unlock();
 		}
 	}
+
+	@Nested
+	class OnStartTest {
+
+		@Test
+		void shouldSyncUsers() {
+			doNothing().when(scheduler).start();
+			scheduler.syncUsers = true;
+
+			callScheduler();
+
+			verify(scheduler).start();
+		}
+
+		@Test
+		void shouldNOTSyncUsers() {
+			scheduler.syncUsers = false;
+
+			callScheduler();
+
+			verify(scheduler, never()).start();
+		}
+
+		private void callScheduler() {
+			scheduler.onStart(new StartupEvent());
+		}
+	}
 }
\ No newline at end of file
-- 
GitLab