aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/test/java/org/onap/vid/controller/open
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/test/java/org/onap/vid/controller/open')
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/controller/open/HealthCheckControllerTest.java122
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/controller/open/MaintenanceControllerTest.java339
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java80
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/controller/open/VersionControllerTest.java52
4 files changed, 593 insertions, 0 deletions
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/open/HealthCheckControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/open/HealthCheckControllerTest.java
new file mode 100644
index 000000000..76ee5617b
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/open/HealthCheckControllerTest.java
@@ -0,0 +1,122 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.vid.controller.open;
+
+import org.apache.log4j.BasicConfigurator;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.vid.controller.open.HealthCheckController;
+import org.onap.vid.dao.FnAppDoaImpl;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import java.sql.SQLException;
+
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.BDDMockito.given;
+import static org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR;
+import static org.springframework.http.HttpStatus.OK;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@RunWith(MockitoJUnitRunner.class)
+public class HealthCheckControllerTest {
+
+ private static final String ERROR_MESSAGE = "error message";
+ private HealthCheckController testSubject;
+ private MockMvc mockMvc;
+
+ @Mock
+ private FnAppDoaImpl fnAppDoa;
+
+ @Before
+ public void setUp() {
+ testSubject = new HealthCheckController(fnAppDoa);
+ BasicConfigurator.configure();
+ mockMvc = MockMvcBuilders.standaloneSetup(testSubject).build();
+ }
+
+ @Test
+ public void getHealthCheckStatusForIDNS_shouldReturnSuccess_whenNoExceptionIsThrown() throws Exception {
+ databaseConnectionEstablished();
+ mockMvc.perform(get("/healthCheck")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.statusCode").value(OK.value()))
+ .andExpect(jsonPath("$.detailedMsg").value("health check succeeded"));
+ }
+
+ @Test
+ public void getHealthCheckStatusForIDNS_shouldReturnErrorCode_whenExceptionIsThrown() throws Exception {
+ databaseNotAccessible();
+ mockMvc.perform(get("/healthCheck")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.statusCode").value(INTERNAL_SERVER_ERROR.value()))
+ .andExpect(jsonPath("$.detailedMsg").value("health check failed: " + ERROR_MESSAGE));
+ }
+
+ @Test
+ public void getHealthCheck_shouldReturnSuccess_whenNoExceptionIsThrown() throws Exception {
+ databaseConnectionEstablished();
+ mockMvc.perform(get("/rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", "userAgent", "requestId")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.statusCode").value(OK.value()))
+ .andExpect(jsonPath("$.detailedMsg").value("health check succeeded"))
+ .andExpect(jsonPath("$.date").isString());
+ }
+
+ @Test
+ public void getHealthCheck_shouldReturnErrorCode_whenExceptionIsThrown() throws Exception {
+ databaseNotAccessible();
+ mockMvc.perform(get("/rest/healthCheck/{User-Agent}/{X-ECOMP-RequestID}", "userAgent", "requestId")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.statusCode").value(INTERNAL_SERVER_ERROR.value()))
+ .andExpect(jsonPath("$.detailedMsg").value("health check failed: " + ERROR_MESSAGE));
+ }
+
+ @Test
+ public void getCommitInfo_shouldReturnCommitData_whenCorrectPropertiesFileExists() throws Exception {
+ mockMvc.perform(get("/commitInfo")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.commitId").value("123"))
+ .andExpect(jsonPath("$.commitMessageShort").value("Test short commit message"))
+ .andExpect(jsonPath("$.commitTime").value("1999-09-12T13:48:55+0200"));
+ }
+
+ private void databaseConnectionEstablished() throws SQLException {
+ given(fnAppDoa.getProfileCount(anyString(), anyString(), anyString()))
+ .willReturn(0);
+ }
+
+ private void databaseNotAccessible() throws SQLException {
+ given(fnAppDoa.getProfileCount(anyString(), anyString(), anyString()))
+ .willThrow(new SQLException(ERROR_MESSAGE));
+ }
+}
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/open/MaintenanceControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/open/MaintenanceControllerTest.java
new file mode 100644
index 000000000..3e78828f0
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/open/MaintenanceControllerTest.java
@@ -0,0 +1,339 @@
+package org.onap.vid.controller.open;
+
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2018 - 2019 Nokia. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import org.apache.log4j.BasicConfigurator;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentMatcher;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.vid.category.AddCategoryOptionResponse;
+import org.onap.vid.category.AddCategoryOptionsRequest;
+import org.onap.vid.category.CategoryParameterOptionRep;
+import org.onap.vid.category.CategoryParametersResponse;
+import org.onap.vid.controller.open.MaintenanceController;
+import org.onap.vid.model.CategoryParameter;
+import org.onap.vid.model.CategoryParameterOption;
+import org.onap.vid.services.CategoryParameterService;
+import org.onap.vid.services.CategoryParameterServiceImpl;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.ResultActions;
+import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
+import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+import javax.ws.rs.ForbiddenException;
+import java.util.Collections;
+import java.util.function.BiFunction;
+
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.BDDMockito.*;
+import static org.mockito.Mockito.times;
+import static org.onap.vid.model.CategoryParameter.Family.PARAMETER_STANDARDIZATION;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+@RunWith(MockitoJUnitRunner.class)
+public class MaintenanceControllerTest {
+
+ final private String MAINTENANCE_CATEGORY_PATH = "/maintenance/category_parameter";
+ final private String CATEGORY_PARAMETER_PATH = MAINTENANCE_CATEGORY_PATH + "/{name}";
+ final private String DELETE_CATEGORY_PATH = "/maintenance/delete_category_parameter/{name}";
+
+ @Mock
+ private CategoryParameterService service;
+ private MaintenanceController maintenanceController;
+ private MockMvc mockMvc;
+ private ObjectMapper objectMapper;
+
+ @Before
+ public void setUp() {
+ maintenanceController = new MaintenanceController(service);
+ BasicConfigurator.configure();
+ mockMvc = MockMvcBuilders.standaloneSetup(maintenanceController).build();
+ objectMapper = new ObjectMapper();
+ }
+
+ @Test
+ public void addCategoryOptions_shouldReturnMultiStatus_whenErrorsExist() throws Exception {
+ String categoryName = "catName1";
+ AddCategoryOptionsRequest req = new AddCategoryOptionsRequest();
+ req.options = ImmutableList.of("first option", "second option");
+ AddCategoryOptionResponse addCategoryOptionResponse = new AddCategoryOptionResponse(
+ ImmutableList.of("error one", "error two"));
+
+ given(service.createCategoryParameterOptions(eq(categoryName), argThat(requestMatcher(req))))
+ .willReturn(addCategoryOptionResponse);
+
+ prepareRequestExpectations(MockMvcRequestBuilders::post, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(req))
+ .andExpect(status().isMultiStatus())
+ .andExpect(
+ content().json(objectMapper
+ .writeValueAsString(addCategoryOptionResponse)));
+ }
+
+ @Test
+ public void addCategoryOptions_shouldReturnOk_whenNoErrorsExist() throws Exception {
+ String categoryName = "catName2";
+ AddCategoryOptionsRequest req = new AddCategoryOptionsRequest();
+ req.options = ImmutableList.of("first option", "second option", "third option");
+ AddCategoryOptionResponse addCategoryOptionResponse = new AddCategoryOptionResponse(Collections.emptyList());
+
+ given(service.createCategoryParameterOptions(eq(categoryName), argThat(requestMatcher(req))))
+ .willReturn(addCategoryOptionResponse);
+ prepareRequestExpectations(MockMvcRequestBuilders::post, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(req))
+ .andExpect(status().isOk())
+ .andExpect(content().json(
+ objectMapper.writeValueAsString(addCategoryOptionResponse)));
+ }
+
+ @Test
+ public void addCategoryOptions_shouldReturnNotFound_whenUnfoundedCategoryExceptionIsThrown() throws Exception {
+ String unfoundedMsg = "unfounded category exception message";
+ String categoryName = "catName3";
+ AddCategoryOptionsRequest req = new AddCategoryOptionsRequest();
+ req.options = ImmutableList.of("first option");
+
+ given(service.createCategoryParameterOptions(eq(categoryName), argThat(requestMatcher(req))))
+ .willThrow(new CategoryParameterServiceImpl.UnfoundedCategoryException(unfoundedMsg));
+
+ prepareRequestExpectations(MockMvcRequestBuilders::post, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(req))
+ .andExpect(status().isNotFound())
+ .andExpect(content().json(
+ objectMapper.writeValueAsString(new AddCategoryOptionResponse(ImmutableList.of(unfoundedMsg)))));
+ }
+
+ @Test
+ public void addCategoryOptions_shouldReturnInternalServerError_whenExceptionIsThrown() throws Exception {
+ String categoryName = "catName13";
+ AddCategoryOptionsRequest req = new AddCategoryOptionsRequest();
+ req.options = ImmutableList.of("option second", "first option");
+
+ given(service.createCategoryParameterOptions(eq(categoryName), argThat(requestMatcher(req))))
+ .willThrow(new RuntimeException());
+
+ prepareRequestExpectations(MockMvcRequestBuilders::post, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(req))
+ .andExpect(status().isInternalServerError());
+ }
+
+ @Test
+ public void updateNameForOption_shouldReturnMultiStatus_whenErrorsExist() throws Exception {
+ String categoryName = "catName4";
+ CategoryParameterOptionRep categoryParameterOptionRep = new CategoryParameterOptionRep("id1", "name1");
+ AddCategoryOptionResponse addCategoryOptionResponse = new AddCategoryOptionResponse(
+ ImmutableList.of("error one", "error two"));
+
+ given(service
+ .updateCategoryParameterOption(eq(categoryName), argThat(requestMatcher(categoryParameterOptionRep))))
+ .willReturn(addCategoryOptionResponse);
+
+ prepareRequestExpectations(MockMvcRequestBuilders::put, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOptionRep))
+ .andExpect(status().isMultiStatus())
+ .andExpect(
+ content().json(objectMapper
+ .writeValueAsString(addCategoryOptionResponse)));
+ }
+
+ @Test
+ public void updateNameForOption_shouldReturnOk_whenNoErrorsExist() throws Exception {
+ String categoryName = "catName5";
+ CategoryParameterOptionRep categoryParameterOptionRep = new CategoryParameterOptionRep("id2", "name2");
+ AddCategoryOptionResponse addCategoryOptionResponse = new AddCategoryOptionResponse(Collections.emptyList());
+
+ given(service
+ .updateCategoryParameterOption(eq(categoryName), argThat(requestMatcher(categoryParameterOptionRep))))
+ .willReturn(addCategoryOptionResponse);
+ prepareRequestExpectations(MockMvcRequestBuilders::put, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOptionRep))
+ .andExpect(status().isOk())
+ .andExpect(content().json(
+ objectMapper.writeValueAsString(addCategoryOptionResponse)));
+ }
+
+ @Test
+ public void updateNameForOption_shouldReturnForbidden_whenForbiddenExceptionIsThrown() throws Exception {
+ String categoryName = "catName6";
+ CategoryParameterOptionRep categoryParameterOptionRep = new CategoryParameterOptionRep("id3", "name3");
+
+ given(service
+ .updateCategoryParameterOption(eq(categoryName), argThat(requestMatcher(categoryParameterOptionRep))))
+ .willThrow(new ForbiddenException());
+ prepareRequestExpectations(MockMvcRequestBuilders::put, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOptionRep))
+ .andExpect(status().isForbidden())
+ .andExpect(content().json(
+ objectMapper
+ .writeValueAsString(new AddCategoryOptionResponse(ImmutableList.of("HTTP 403 Forbidden")))));
+ }
+
+ @Test
+ public void updateNameForOption_shouldReturnNotFound_whenUnfoundedIsThrown() throws Exception {
+ String unfoundedOptionMsg = "unfounded category option exception message";
+ String categoryName = "catName7";
+ CategoryParameterOptionRep categoryParameterOptionRep = new CategoryParameterOptionRep("id4", "name4");
+
+ given(service
+ .updateCategoryParameterOption(eq(categoryName), argThat(requestMatcher(categoryParameterOptionRep))))
+ .willThrow(new CategoryParameterServiceImpl.UnfoundedCategoryOptionException(unfoundedOptionMsg));
+
+ prepareRequestExpectations(MockMvcRequestBuilders::put, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOptionRep))
+ .andExpect(status().isNotFound())
+ .andExpect(content().json(
+ objectMapper.writeValueAsString(new AddCategoryOptionResponse(ImmutableList.of(unfoundedOptionMsg)))));
+ }
+
+ @Test
+ public void updateNameForOption_shouldReturnConflict_whenAlreadyExistOptionNameIsThrown() throws Exception {
+ String conflictMsg = "already exists option name exception message";
+ String categoryName = "catName8";
+ CategoryParameterOptionRep categoryParameterOptionRep = new CategoryParameterOptionRep("id5", "name5");
+
+ given(service
+ .updateCategoryParameterOption(eq(categoryName), argThat(requestMatcher(categoryParameterOptionRep))))
+ .willThrow(new CategoryParameterServiceImpl.AlreadyExistOptionNameException(conflictMsg));
+
+ prepareRequestExpectations(MockMvcRequestBuilders::put, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOptionRep))
+ .andExpect(status().isConflict())
+ .andExpect(content().json(
+ objectMapper.writeValueAsString(new AddCategoryOptionResponse(ImmutableList.of(conflictMsg)))));
+ }
+
+ @Test
+ public void updateNameForOption_shouldReturnInternalServerError_whenExceptionIsThrown() throws Exception {
+ String categoryName = "catName18";
+ CategoryParameterOptionRep categoryParameterOptionRep = new CategoryParameterOptionRep("id6", "name6");
+
+ given(service
+ .updateCategoryParameterOption(eq(categoryName), argThat(requestMatcher(categoryParameterOptionRep))))
+ .willThrow(new RuntimeException());
+
+ prepareRequestExpectations(MockMvcRequestBuilders::put, CATEGORY_PARAMETER_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOptionRep))
+ .andExpect(status().isInternalServerError());
+ }
+
+ @Test
+ public void getCategoryParameter_shouldReturnExistingMap() throws Exception {
+ CategoryParametersResponse categoryParametersResponse =
+ new CategoryParametersResponse(
+ ImmutableMap.of(
+ "key1", ImmutableList.of(
+ new CategoryParameterOptionRep("testId", "testName"))));
+
+ given(service.getCategoryParameters(PARAMETER_STANDARDIZATION))
+ .willReturn(categoryParametersResponse);
+
+ mockMvc.perform(get(MAINTENANCE_CATEGORY_PATH)
+ .param("familyName", "PARAMETER_STANDARDIZATION")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(content().json(objectMapper.writeValueAsString(categoryParametersResponse)));
+ }
+
+ @Test
+ public void getCategoryParameter_shouldReturnInternalServerError_whenExceptionIsThrown() throws Exception {
+ given(service.getCategoryParameters(PARAMETER_STANDARDIZATION))
+ .willThrow(new RuntimeException());
+
+ mockMvc.perform(get(MAINTENANCE_CATEGORY_PATH)
+ .param("familyName", "PARAMETER_STANDARDIZATION")
+ .accept(MediaType.APPLICATION_JSON))
+ .andExpect(status().isInternalServerError());
+ }
+
+ @Test
+ public void deleteCategoryOption_shouldReturnOk_whenNoExceptionIsThrown() throws Exception {
+ String categoryName = "catName9";
+ CategoryParameterOption categoryParameterOption = new CategoryParameterOption("id1", "name1",
+ new CategoryParameter());
+
+ prepareRequestExpectations(MockMvcRequestBuilders::delete, DELETE_CATEGORY_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOption))
+ .andExpect(status().isOk());
+
+ then(service).should(times(1))
+ .deleteCategoryOption(eq(categoryName), argThat(requestMatcher(categoryParameterOption)));
+ }
+
+ @Test
+ public void deleteCategoryOption_shouldReturnNotFound_whenUnfoundedExceptionIsThrown() throws Exception {
+ String unfoundedMsg = "unfounded category exception message";
+ String categoryName = "catName10";
+ CategoryParameterOption categoryParameterOption = new CategoryParameterOption("id2", "name2",
+ new CategoryParameter());
+
+ willThrow(new CategoryParameterServiceImpl.UnfoundedCategoryException(unfoundedMsg))
+ .given(service).deleteCategoryOption(eq(categoryName), argThat(requestMatcher(categoryParameterOption)));
+
+ prepareRequestExpectations(MockMvcRequestBuilders::delete, DELETE_CATEGORY_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOption))
+ .andExpect(status().isNotFound())
+ .andExpect(content().json(
+ objectMapper.writeValueAsString(new AddCategoryOptionResponse(ImmutableList.of(unfoundedMsg)))));
+ }
+
+ @Test
+ public void deleteCategoryOption_shouldReturnInternalServerError_whenExceptionIsThrown() throws Exception {
+ String categoryName = "catName19";
+ CategoryParameterOption categoryParameterOption = new CategoryParameterOption("id3", "name3",
+ new CategoryParameter());
+
+ willThrow(new RuntimeException()).given(service)
+ .deleteCategoryOption(eq(categoryName), argThat(requestMatcher(categoryParameterOption)));
+
+ prepareRequestExpectations(MockMvcRequestBuilders::delete, DELETE_CATEGORY_PATH, categoryName,
+ objectMapper.writeValueAsString(categoryParameterOption))
+ .andExpect(status().isInternalServerError());
+ }
+
+ private <T> ArgumentMatcher<T> requestMatcher(T t) {
+ return new ArgumentMatcher<T>() {
+ @Override
+ public boolean matches(Object o) {
+ return t.equals(o);
+ }
+ };
+ }
+
+ private ResultActions prepareRequestExpectations(
+ BiFunction<String, String, MockHttpServletRequestBuilder> httpMethod,
+ String path, String name, String jsonContent) throws Exception {
+ return mockMvc.perform(httpMethod.apply(path, name)
+ .contentType(MediaType.APPLICATION_JSON)
+ .content(jsonContent));
+ }
+}
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java
new file mode 100644
index 000000000..c1509d956
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/open/RoleGeneratorControllerTest.java
@@ -0,0 +1,80 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright 2019 Nokia
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.vid.controller.open;
+
+import static org.mockito.BDDMockito.given;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import org.apache.log4j.BasicConfigurator;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.vid.controller.open.RoleGeneratorController;
+import org.onap.vid.services.RoleGeneratorService;
+import org.springframework.http.MediaType;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+
+@RunWith(MockitoJUnitRunner.class)
+public class RoleGeneratorControllerTest {
+
+ private static final String PATH = "/generateRoleScript/{firstRun}";
+
+ private static final String FIRST_JSON = "{key1: val1}";
+ private static final String SECOND_JSON = "{key2: val2}";
+
+ private RoleGeneratorController roleGeneratorController;
+ private MockMvc mockMvc;
+
+ @Mock
+ private RoleGeneratorService service;
+
+ @Before
+ public void setUp() {
+ roleGeneratorController = new RoleGeneratorController(service);
+ BasicConfigurator.configure();
+ mockMvc = MockMvcBuilders.standaloneSetup(roleGeneratorController).build();
+
+ given(service.generateRoleScript(true)).willReturn(FIRST_JSON);
+ given(service.generateRoleScript(false)).willReturn(SECOND_JSON);
+ }
+
+ @Test
+ public void generateRoleScript_shouldReturnJson_whenFirstRun() throws Exception {
+ mockMvc.perform(get(PATH, "true")
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(content().json(FIRST_JSON));
+ }
+
+ @Test
+ public void generateRoleScript_shouldReturnJson_whenNoFirstRun() throws Exception {
+ mockMvc.perform(get(PATH, "false")
+ .contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(content().json(SECOND_JSON));
+ }
+}
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/open/VersionControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/open/VersionControllerTest.java
new file mode 100644
index 000000000..835ea4a66
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/open/VersionControllerTest.java
@@ -0,0 +1,52 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.vid.controller.open;
+
+import org.onap.vid.controller.open.VersionController;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
+
+public class VersionControllerTest {
+
+ @DataProvider
+ public static Object[][] majorVersionContainer() {
+ return new Object[][]{
+ {"features.properties", "1.0.2000", "features.properties.2000"},
+ {"", "1.0.2000", ".2000"},
+ {"kuku", "1.0.2000", "kuku.2000"},
+ {"/kuku", "1.0.2000", "kuku.2000"},
+ {"1810p.features.properties", "1.0.2000", "1810p.2000"},
+ {"/opt/app/dev.features.properties", "1.0.2000", "dev.2000"},
+ {"foo", "2000", "foo.2000"},
+ };
+ }
+
+ final VersionController versionController = new VersionController(null);
+
+ @Test(dataProvider = "majorVersionContainer")
+ public void testGetDisplayVersion(String majorVersionContainer, String buildNumberContainer, String expected) {
+ assertThat(versionController.getDisplayVersion(majorVersionContainer, buildNumberContainer), is(expected));
+ }
+}