diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java index 2101df7ba2814325726f5624fa83786a5238b65b..46e79f03c3fbd644a3f3c33224ba4003c33294f9 100644 --- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java +++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java @@ -28,6 +28,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder 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.springframework.beans.factory.annotation.Autowired; @@ -35,6 +36,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.ResultActions; import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheit; import de.ozgcloud.admin.organisationseinheit.OrganisationsEinheitTestFactory; @@ -52,11 +54,6 @@ class SettingEnvironmentITCase { @Autowired private MongoOperations mongoOperations; - private Setting settingWithPostfach = SettingTestFactory.createBuilder() - .name("Postfach") - .settingBody(PostfachSettingBodyTestFactory.create()) - .build(); - @Test @SneakyThrows void shouldHaveHttpEndpoint() { @@ -65,35 +62,111 @@ class SettingEnvironmentITCase { result.andExpect(status().isOk()); } + @DisplayName("Get alfa settings") @Nested - class TestFindOne { - - @BeforeEach - void fillDb() { - mongoOperations.dropCollection(Setting.class); - mongoOperations.dropCollection(OrganisationsEinheit.class); - mongoOperations.save(settingWithPostfach); - mongoOperations.save(OrganisationsEinheitTestFactory.create()); + class TestGetAlfaSettings { + + @Nested + class OnInitialStartup { + + @BeforeEach + void fillDb() { + fillDbWithInitialSettings(); + } + + @Test + @SneakyThrows + void shouldHandleEmptySetting() { + var result = getAlfaSetting(); + + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml()); + } } - @Test - @SneakyThrows - void shouldReturnValuesForVorgangManager() { - var result = mockMvc.perform(get("/configserver/OzgCloud_VorgangManager-profile.yaml")); + @Nested + class OnSettingsAvailable { + + @BeforeEach + void fillDb() { + fillDbWithPostfachSettings(); + } + + @Test + @SneakyThrows + void shouldReturnValuesForAlfa() { + var result = getAlfaSetting(); - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createVorgangManagerYaml()); + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createAlfaYaml()); + } } - @Test - @SneakyThrows - void shouldReturnValuesForAlfa() { - var result = mockMvc.perform(get("/configserver/Alfa-any.yaml")); + private ResultActions getAlfaSetting() throws Exception { + return mockMvc.perform(get("/configserver/Alfa-any.yaml")).andExpect(status().isOk()); + } + } + + @Nested + class TestGetVorgangManagerSettings { + + @Nested + class OnInitialStartup { + + @BeforeEach + void fillDb() { + fillDbWithInitialSettings(); + } - assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createAlfaYaml()); + @Test + @SneakyThrows + void shouldHandleEmptySetting() { + var result = getVorgangManagerSetting(); + + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml()); + } + } + + @Nested + class OnSettingsAvailable { + + @BeforeEach + void fillDb() { + fillDbWithPostfachSettings(); + } + + @Test + @SneakyThrows + void shouldReturnValuesForVorgangManager() { + var result = getVorgangManagerSetting(); + + assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())) + .isEqualTo(YamlTestFactory.createVorgangManagerYaml()); + } } - private String formatLineBreaks(String text) { - return text.replaceAll("\\\\\\s+\\\\", "").replace("\\n", "\n"); + private ResultActions getVorgangManagerSetting() throws Exception { + return mockMvc.perform(get("/configserver/OzgCloud_VorgangManager-profile.yaml")).andExpect(status().isOk()); } } + + private String formatLineBreaks(String text) { + return text.replaceAll("\\\\\\s+\\\\", "").replace("\\n", "\n"); + } + + private void fillDbWithInitialSettings() { + var initialSetting = Setting.builder().name("Postfach").build(); + mongoOperations.dropCollection(Setting.class); + mongoOperations.dropCollection(OrganisationsEinheit.class); + mongoOperations.save(initialSetting); + } + + private void fillDbWithPostfachSettings() { + var postfachSettings = SettingTestFactory.createBuilder() + .name("Postfach") + .settingBody(PostfachSettingBodyTestFactory.create()) + .build(); + mongoOperations.dropCollection(Setting.class); + mongoOperations.dropCollection(OrganisationsEinheit.class); + mongoOperations.save(postfachSettings); + mongoOperations.save(OrganisationsEinheitTestFactory.create()); + } } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java index 3bad02a8b2b2e80771008857779a6adc1631d448..e6b1c0195b264005203eda0694d11bd77b5b1cf7 100644 --- a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java +++ b/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java @@ -51,4 +51,8 @@ public class YamlTestFactory { OrganisationsEinheitTestFactory.ORGANISATIONS_EINHEIT_ID, OrganisationsEinheitSettingsTestFactory.SIGNATUR); } + + public static String createInitialYaml() { + return TestUtils.loadTextFile("yamlTemplates/settings/initial.yaml.tmpl"); + } } diff --git a/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl b/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl new file mode 100644 index 0000000000000000000000000000000000000000..1a6ddf888e1a28b35e2782c93e2b21116d844e86 --- /dev/null +++ b/src/test/resources/yamlTemplates/settings/initial.yaml.tmpl @@ -0,0 +1,4 @@ +ozgcloud: + postfach: + signatur: null + organisationsEinheitSettings: {}