diff --git a/pom.xml b/pom.xml index 2ce063708133a2523692511d92e04966adb5ad3d..272d35e62a42e242bb4909c48dc22da129b815b2 100644 --- a/pom.xml +++ b/pom.xml @@ -14,13 +14,6 @@ <version>1.0.0-SNAPSHOT</version> <name>Administration</name> <description>Administration Backend Project</description> - <properties> - <java.version>21</java.version> - <!--<maven.compiler.source>21</maven.compiler.source> - <maven.compiler.target>21</maven.compiler.target>--> - <build.number>x</build.number> - <build.url>no-url</build.url> - </properties> <dependencies> <!-- Spring --> <dependency> diff --git a/src/main/java/de/ozgcloud/admin/BasicAppInfoController.java b/src/main/java/de/ozgcloud/admin/BasicAppInfoController.java deleted file mode 100644 index 52e7115d4f3e51389b79d7b368373007dc527e3e..0000000000000000000000000000000000000000 --- a/src/main/java/de/ozgcloud/admin/BasicAppInfoController.java +++ /dev/null @@ -1,32 +0,0 @@ -package de.ozgcloud.admin; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import lombok.AllArgsConstructor; - -@RestController -@AllArgsConstructor -@RequestMapping(BasicAppInfoController.PATH) -public class BasicAppInfoController { - static final String PATH = "/api"; // NOSONAR - - private BasicAppInfoService basicAppInfoService; - - @GetMapping - public BasicAppInfo getInfo() { - return buildInfo(); - } - - private BasicAppInfo buildInfo() { - return BasicAppInfo.builder() - .javaVersion(basicAppInfoService.getJavaVersion()) - .buildTime(basicAppInfoService.getBuildTime()) - .buildVersion(basicAppInfoService.getVersion()) - .buildNumber(basicAppInfoService.getBuildNumber()) - .buildUrl(basicAppInfoService.getBuildUrl()) - .build(); - } - -} diff --git a/src/main/java/de/ozgcloud/admin/BasicAppInfo.java b/src/main/java/de/ozgcloud/admin/Root.java similarity index 81% rename from src/main/java/de/ozgcloud/admin/BasicAppInfo.java rename to src/main/java/de/ozgcloud/admin/Root.java index 5f5e4bf0c7906974d8af774f1f4250a60dbd4e04..1b2e658d4bc581baf1bcc5df56d81b95a74b3aa1 100644 --- a/src/main/java/de/ozgcloud/admin/BasicAppInfo.java +++ b/src/main/java/de/ozgcloud/admin/Root.java @@ -7,10 +7,9 @@ import lombok.Getter; @Builder @Getter -public class BasicAppInfo { +class Root { private String javaVersion; private String buildVersion; private Instant buildTime; private String buildNumber; - private String buildUrl; } diff --git a/src/main/java/de/ozgcloud/admin/RootController.java b/src/main/java/de/ozgcloud/admin/RootController.java new file mode 100644 index 0000000000000000000000000000000000000000..b0fca622fe7b88f1f936a37375078ea5247b86c8 --- /dev/null +++ b/src/main/java/de/ozgcloud/admin/RootController.java @@ -0,0 +1,31 @@ +package de.ozgcloud.admin; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.RequiredArgsConstructor; + +@RestController +@RequiredArgsConstructor +@RequestMapping(RootController.PATH) +public class RootController { + static final String PATH = "/api"; // NOSONAR + + private final RootService rootService; + + @GetMapping + public Root getRoot() { + return buildRoot(); + } + + private Root buildRoot() { + return Root.builder() + .javaVersion(rootService.getJavaVersion()) + .buildTime(rootService.getBuildTime()) + .buildVersion(rootService.getVersion()) + .buildNumber(rootService.getBuildNumber()) + .build(); + } + +} diff --git a/src/main/java/de/ozgcloud/admin/BasicAppInfoService.java b/src/main/java/de/ozgcloud/admin/RootService.java similarity index 83% rename from src/main/java/de/ozgcloud/admin/BasicAppInfoService.java rename to src/main/java/de/ozgcloud/admin/RootService.java index acfed49c1d32e06a31a19456cf74e968162dd120..c72ccf2f7c58d4563314d4ae4363a818fae2f3c9 100644 --- a/src/main/java/de/ozgcloud/admin/BasicAppInfoService.java +++ b/src/main/java/de/ozgcloud/admin/RootService.java @@ -6,12 +6,12 @@ import java.util.Optional; import org.springframework.boot.info.BuildProperties; import org.springframework.stereotype.Service; -import lombok.AllArgsConstructor; +import lombok.RequiredArgsConstructor; @Service -@AllArgsConstructor -public class BasicAppInfoService { - private Optional<BuildProperties> buildProperties; +@RequiredArgsConstructor +class RootService { + private final Optional<BuildProperties> buildProperties; public String getVersion() { return buildProperties.map(BuildProperties::getVersion).orElse("--"); diff --git a/src/test/java/de/ozgcloud/admin/BasicAppInfoControllerTest.java b/src/test/java/de/ozgcloud/admin/BasicAppInfoControllerTest.java deleted file mode 100644 index 867bc399bed2427b71a95e35a6116de969148036..0000000000000000000000000000000000000000 --- a/src/test/java/de/ozgcloud/admin/BasicAppInfoControllerTest.java +++ /dev/null @@ -1,95 +0,0 @@ -package de.ozgcloud.admin; - -import static org.mockito.Mockito.*; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneOffset; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Spy; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.web.servlet.MockMvc; -import org.springframework.test.web.servlet.ResultActions; -import org.springframework.test.web.servlet.setup.MockMvcBuilders; - -@SpringBootTest -class BasicAppInfoControllerTest { - final Instant sampleTime = LocalDateTime.parse("2021-04-01T10:30").toInstant(ZoneOffset.UTC); - final String javaVersion = "1"; - final String buildVersion = "2"; - final String buildNumber = "3"; - final String buildUrl = "url://test"; - - @Spy - @InjectMocks - private BasicAppInfoController basicAppInfoController; - - @Mock - private BasicAppInfoService basicAppInfoService; - - private MockMvc mockMvc; - - @BeforeEach - void mock() { - mockMvc = MockMvcBuilders.standaloneSetup(basicAppInfoController).build(); - } - - @DisplayName("Basic info") - @Nested - class TestInfo { - - @Test - void shouldHaveJavaVersion() throws Exception { - when(basicAppInfoService.getJavaVersion()).thenReturn(javaVersion); - - doRequest() - .andExpect(jsonPath("$.javaVersion").value(javaVersion)); - } - - @Test - void shouldHaveVersion() throws Exception { - when(basicAppInfoService.getVersion()).thenReturn(buildVersion); - - doRequest() - .andExpect(jsonPath("$.buildVersion").value(buildVersion)); - } - - @Test - void shouldHaveBuildTime() throws Exception { - when(basicAppInfoService.getBuildTime()).thenReturn(sampleTime); - - doRequest() - .andExpect(jsonPath("$.buildTime").value(sampleTime.getEpochSecond())); - } - - @Test - void shouldHaveBuildNumber() throws Exception { - when(basicAppInfoService.getBuildNumber()).thenReturn(buildNumber); - - doRequest() - .andExpect(jsonPath("$.buildNumber").value(buildNumber)); - } - - @Test - void shouldHaveBuildUrl() throws Exception { - when(basicAppInfoService.getBuildUrl()).thenReturn(buildUrl); - - doRequest() - .andExpect(jsonPath("$.buildUrl").value(buildUrl)); - } - - private ResultActions doRequest() throws Exception { - return mockMvc.perform(get(BasicAppInfoController.PATH)).andExpect(status().isOk()); - } - - } - -} diff --git a/src/test/java/de/ozgcloud/admin/RootControllerTest.java b/src/test/java/de/ozgcloud/admin/RootControllerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2dc7e661641bcb2bce559cf5b60436190c48118e --- /dev/null +++ b/src/test/java/de/ozgcloud/admin/RootControllerTest.java @@ -0,0 +1,99 @@ +package de.ozgcloud.admin; + +import static org.mockito.Mockito.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +import lombok.SneakyThrows; + +@ExtendWith(MockitoExtension.class) +class RootControllerTest { + final Instant sampleTime = LocalDateTime.parse("2021-04-01T10:30").toInstant(ZoneOffset.UTC); + final String javaVersion = "1"; + final String buildVersion = "2"; + final String buildNumber = "3"; + final String buildUrl = "url://test"; + + @Spy + @InjectMocks + private RootController rootController; + + @Mock + private RootService rootService; + + private MockMvc mockMvc; + + @BeforeEach + void mock() { + mockMvc = MockMvcBuilders.standaloneSetup(rootController).build(); + } + + @DisplayName("Root") + @Nested + class TestInfo { + + @Test + @SneakyThrows + void shouldHaveJavaVersion() { + when(rootService.getJavaVersion()).thenReturn(javaVersion); + + ResultActions result = doRequest(); + + result.andExpect(jsonPath("$.javaVersion").value(javaVersion)); + } + + @Test + @SneakyThrows + void shouldHaveVersion() { + when(rootService.getVersion()).thenReturn(buildVersion); + + ResultActions result = doRequest(); + + result.andExpect(jsonPath("$.buildVersion").value(buildVersion)); + } + + @Test + @SneakyThrows + void shouldHaveBuildTime() { + when(rootService.getBuildTime()).thenReturn(sampleTime); + + ResultActions result = doRequest(); + + result.andExpect(jsonPath("$.buildTime").value(sampleTime.getEpochSecond())); + } + + @Test + @SneakyThrows + void shouldHaveBuildNumber() { + when(rootService.getBuildNumber()).thenReturn(buildNumber); + + ResultActions result = doRequest(); + + result.andExpect(jsonPath("$.buildNumber").value(buildNumber)); + } + + @SneakyThrows + private ResultActions doRequest() { + return mockMvc.perform(get(RootController.PATH)).andExpect(status().isOk()); + } + + } + +}