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 0000000000000000000000000000000000000000..3c9fdbd2e70d4ad7d3cf6c6fe2554d4db8065561 --- /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 0000000000000000000000000000000000000000..26739cdddb6d4e5b5426756321edb0362e2031ed --- /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 563cb14441c17dd32009cc66ac8d7a1116ce0059..c100cc4d3c85dbbb7f5243eb769e9cdbd49081cd 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 0000000000000000000000000000000000000000..f6eec2b923f0e798c4861c942506c69ceafd6d08 --- /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