From 88a155337d489a29fa5a3a824fc0552ae0e89c3b Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Sat, 19 Oct 2024 13:00:39 +0200 Subject: [PATCH] OZG-6867 OZG-6903 implement sync scheduler --- .../admin/SchedulingConfiguration.java | 10 +++++++ .../organisationseinheit/SyncScheduler.java | 18 ++++++++++++ src/main/resources/application.yaml | 4 +++ .../SyncSchedulerTest.java | 29 +++++++++++++++++++ 4 files changed, 61 insertions(+) create mode 100644 src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java create mode 100644 src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java create mode 100644 src/test/java/de/ozgcloud/admin/organisationseinheit/SyncSchedulerTest.java diff --git a/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java b/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java new file mode 100644 index 00000000..3c9fdbd2 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java @@ -0,0 +1,10 @@ +package de.ozgcloud.admin; + +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +@Configuration +@EnableScheduling +public class SchedulingConfiguration { + +} diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java new file mode 100644 index 00000000..26739cdd --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java @@ -0,0 +1,18 @@ +package de.ozgcloud.admin.organisationseinheit; + +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import lombok.RequiredArgsConstructor; + +@Component +@RequiredArgsConstructor +class SyncScheduler { + + private final SyncService syncService; + + @Scheduled(cron = "${ozgcloud.administration.sync.organisationseinheiten.cron}") + public void syncOrganisationsEinheitenFromKeycloak() { + syncService.syncOrganisationsEinheitenFromKeycloak(); + } +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 563cb144..c100cc4d 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -82,6 +82,10 @@ ozgcloud: realm: ${ozgcloud.oauth2.realm} client: ${ozgcloud.oauth2.resource} organisations-einheit-id-key: organisationseinheitId + administration: + sync: + organisationseinheiten: + cron: "0 15 0 * * *" grpc: client: diff --git a/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncSchedulerTest.java b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncSchedulerTest.java new file mode 100644 index 00000000..f6eec2b9 --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/organisationseinheit/SyncSchedulerTest.java @@ -0,0 +1,29 @@ +package de.ozgcloud.admin.organisationseinheit; + +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +class SyncSchedulerTest { + + @InjectMocks + private SyncScheduler scheduler; + + @Mock + private SyncService syncService; + + @Nested + class TestSyncOrganisationsEinheitenFromKeycloak { + + @Test + void shouldCallService() { + scheduler.syncOrganisationsEinheitenFromKeycloak(); + + verify(syncService).syncOrganisationsEinheitenFromKeycloak(); + } + } + +} \ No newline at end of file -- GitLab