Skip to content
Snippets Groups Projects
EnvironmentControllerTest.java 3.07 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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.Nested;
    import org.junit.jupiter.api.Test;
    import org.junit.jupiter.api.extension.ExtendWith;
    
    import org.junit.jupiter.params.ParameterizedTest;
    import org.junit.jupiter.params.provider.ValueSource;
    
    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 de.ozgcloud.admin.RootController;
    import lombok.SneakyThrows;
    
    @ExtendWith(MockitoExtension.class)
    
    class EnvironmentControllerTest {
    
    	private EnvironmentController controller;
    
    	private ProductionProperties environmentProperties;
    
    	@Mock
    	private OAuth2Properties oAuth2Properties;
    
    		mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
    	}
    
    	@Nested
    	class TestGetEnvironment {
    		@SneakyThrows
    		@Test
    		void shouldReturnOk() {
    
    			when(environmentProperties.isProduction()).thenReturn(true);
    
    
    			var response = doRequest();
    
    			response.andExpect(status().isOk());
    		}
    
    		@Nested
    		class TestBody {
    
    			@Test
    			@SneakyThrows
    			void shouldCallIsProduction() {
    				when(environmentProperties.isProduction()).thenReturn(true);
    
    				doRequest();
    
    				verify(environmentProperties).isProduction();
    			}
    
    
    			@ParameterizedTest
    			@ValueSource(booleans = { true, false })
    
    			void shouldContainProduction(boolean production) {
    				when(environmentProperties.isProduction()).thenReturn(production);
    
    
    				response.andExpect(jsonPath("$.production").value(production));
    
    			}
    		}
    
    		@Test
    		@SneakyThrows
    		void shouldContainURLToRoot() {
    			var response = doRequest();
    
    
    			response.andExpect(jsonPath("$.remoteHost").value("http://localhost" + RootController.PATH));
    
    		@SneakyThrows
    		@Test
    		void shouldContainAuthServerUrl() {
    			var oAuthServerUrl = "dummyOAuthUrl";
    			when(oAuth2Properties.getAuthServerUrl()).thenReturn(oAuthServerUrl);
    
    			var response = doRequest();
    
    			response.andExpect(jsonPath("$.authServer").value(oAuthServerUrl));
    		}
    
    		@SneakyThrows
    		@Test
    		void shouldContainRealm() {
    			var realm = "dummyRealm";
    			when(oAuth2Properties.getRealm()).thenReturn(realm);
    
    			var response = doRequest();
    
    			response.andExpect(jsonPath("$.realm").value(realm));
    		}
    
    		@SneakyThrows
    		@Test
    		void shouldContainClientId() {
    			var clientId = "dummdyClientId";
    			when(oAuth2Properties.getResource()).thenReturn(clientId);
    
    			var response = doRequest();
    
    			response.andExpect(jsonPath("$.clientId").value(clientId));
    		}
    
    
    		@SneakyThrows
    		private ResultActions doRequest() {
    
    			return mockMvc.perform(get(EnvironmentController.PATH));