Skip to content
Snippets Groups Projects
Commit 973a0eb1 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4717 Added FrontendEnvironmnetController and modified appliaction yamls for production flag

parent fb679454
No related branches found
No related tags found
No related merge requests found
...@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor; ...@@ -33,7 +33,7 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping(RootController.PATH) @RequestMapping(RootController.PATH)
public class RootController { public class RootController {
static final String PATH = "/api"; // NOSONAR public static final String PATH = "/api"; // NOSONAR
private final BuildProperties buildProperties; private final BuildProperties buildProperties;
......
package de.ozgcloud.admin.environment;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class FrontendEnvironment {
private boolean production;
private String remoteHost;
}
package de.ozgcloud.admin.environment;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import de.ozgcloud.admin.RootController;
@RestController
@RequestMapping(FrontendEnvironmentController.BASE_PATH)
public class FrontendEnvironmentController {
static final String BASE_PATH = "/api/environment"; // NOSONAR
@Value("${ozgcloud.stage.production:false}")
private boolean production;
@GetMapping
public FrontendEnvironment getEnvironment() {
return FrontendEnvironment.builder()
.production(production)
.remoteHost(RootController.PATH)
.build();
}
}
spring:
config:
activate:
on-profile:
- test
ozgcloud:
stage:
production: true
---
spring:
config:
activate:
on-profile:
- stage
ozgcloud:
stage:
production: true
---
spring:
config:
activate:
on-profile:
- prod
ozgcloud:
stage:
production: true
---
spring:
config:
activate:
on-profile:
- dev
ozgcloud:
stage:
production: false
\ No newline at end of file
...@@ -6,3 +6,33 @@ spring: ...@@ -6,3 +6,33 @@ spring:
config: config:
server: server:
prefix: /configserver prefix: /configserver
---
spring:
config:
activate:
on-profile:
- stage
ozgcloud:
stage:
production: true
---
spring:
config:
activate:
on-profile:
- prod
ozgcloud:
stage:
production: true
---
spring:
config:
activate:
on-profile:
- dev
ozgcloud:
stage:
production: false
\ No newline at end of file
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
*/ */
package de.ozgcloud.admin; package de.ozgcloud.admin;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
......
package de.ozgcloud.admin.environment;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import de.ozgcloud.common.test.ITCase;
import lombok.SneakyThrows;
@ITCase
@AutoConfigureMockMvc
@WithMockUser
@ActiveProfiles("prod")
public class FrontendEnvironmentControllerITCase {
@Autowired
MockMvc mockMvc;
@Autowired
FrontendEnvironmentController controller;
@Nested
class TestProductionForProdProfile {
@Test
@SneakyThrows
void shouldBeTrue() {
var response = doRequest();
response.andExpect(jsonPath("$.production").value(true));
}
}
@SneakyThrows
public ResultActions doRequest() {
return mockMvc.perform(get(FrontendEnvironmentController.BASE_PATH));
}
}
package de.ozgcloud.admin.environment;
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.mockito.Spy;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.beans.factory.annotation.Value;
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)
public class FrontendEnvironmentControllerTest {
@Spy
private FrontendEnvironmentController controller;
@Value("${ozgcloud.stage.production}")
private boolean production;
private MockMvc mockMvc;
@BeforeEach
void initTest() {
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Nested
class TestGetEnvironment {
@SneakyThrows
@Test
void shouldReturnOk() {
var response = doRequest();
response.andExpect(status().isOk());
}
@Nested
class TestBody {
@Test
@SneakyThrows
void shouldContainProduction() {
var response = doRequest();
response.andExpect(jsonPath("$.production").value(false));
}
}
@Test
@SneakyThrows
void shouldContainURLToRoot() {
var response = doRequest();
response.andExpect(jsonPath("$.remoteHost").value(RootController.PATH));
}
}
@SneakyThrows
public ResultActions doRequest() {
return mockMvc.perform(get(FrontendEnvironmentController.BASE_PATH));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment