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 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.boot.info.BuildProperties; 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 { @Spy @InjectMocks private RootController rootController; @Mock private BuildProperties buildProperties; private MockMvc mockMvc; @BeforeEach void mock() { mockMvc = MockMvcBuilders.standaloneSetup(rootController).build(); } @DisplayName("Root") @Nested class TestInfo { @Test @SneakyThrows void shouldHaveJavaVersion() { System.setProperty("java.version", RootTestFactory.JAVA_VERSION); ResultActions result = doRequest(); result.andExpect(jsonPath("$.javaVersion").value(RootTestFactory.JAVA_VERSION)); } @Test @SneakyThrows void shouldHaveVersion() { when(buildProperties.getVersion()).thenReturn(RootTestFactory.BUILD_VERSION); ResultActions result = doRequest(); result.andExpect(jsonPath("$.buildVersion").value(RootTestFactory.BUILD_VERSION)); } @Test @SneakyThrows void shouldHaveBuildTime() { when(buildProperties.getTime()).thenReturn(RootTestFactory.BUILD_TIME); ResultActions result = doRequest(); result.andExpect(jsonPath("$.buildTime").value(RootTestFactory.BUILD_TIME.getEpochSecond())); } @Test @SneakyThrows void shouldHaveBuildNumber() { when(buildProperties.get("number")).thenReturn(RootTestFactory.BUILD_NUMBER); ResultActions result = doRequest(); result.andExpect(jsonPath("$.buildNumber").value(RootTestFactory.BUILD_NUMBER)); } @SneakyThrows private ResultActions doRequest() { return mockMvc.perform(get(RootController.PATH)).andExpect(status().isOk()); } } }