diff options
Diffstat (limited to 'ccsdk-app-common/src/test/java/org/onap')
13 files changed, 4214 insertions, 282 deletions
diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java index 0a5fe93..d6e1fb0 100644 --- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CloudifyControllerTest.java @@ -2,110 +2,526 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 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. + * 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========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.controller; -import static org.junit.Assert.*; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; +import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.onap.ccsdk.dashboard.core.MockUser; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.onap.ccsdk.dashboard.model.CloudifyBlueprint; +import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList; +import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant; +import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList; +import org.onap.ccsdk.dashboard.model.CloudifyDeployment; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse; +import org.onap.ccsdk.dashboard.model.CloudifyEvent; +import org.onap.ccsdk.dashboard.model.CloudifyEventList; +import org.onap.ccsdk.dashboard.model.CloudifyExecution; +import org.onap.ccsdk.dashboard.model.CloudifyExecutionList; +import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstance; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceId; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList; +import org.onap.ccsdk.dashboard.model.CloudifyTenant; import org.onap.ccsdk.dashboard.model.CloudifyTenantList; import org.onap.ccsdk.dashboard.rest.CloudifyClient; -import org.onap.ccsdk.dashboard.core.MockitoTestSuite; import org.onap.portalsdk.core.domain.User; import org.onap.portalsdk.core.web.support.UserUtils; -import org.springframework.test.web.servlet.RequestBuilder; -import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.web.client.HttpClientErrorException; + import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; -import org.powermock.api.mockito.PowerMockito; -import org.powermock.core.classloader.annotations.PrepareForTest; -import org.powermock.modules.junit4.PowerMockRunner; -import org.springframework.http.MediaType; +public class CloudifyControllerTest extends MockitoTestSuite { + @Mock + private CloudifyClient restClient; -public class CloudifyControllerTest extends MockitoTestSuite { + @InjectMocks + private CloudifyController subject = new CloudifyController(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + @Mock + UserUtils userUtils = new UserUtils(); + + @Mock + User epuser; + + MockUser mockUser = new MockUser(); + + HttpClientErrorException httpException; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + httpException = new HttpClientErrorException(HttpStatus.BAD_REQUEST, "statusText"); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetTenants() throws Exception { + String tenantsList = + "{\"items\": [{\"id\": 1, \"name\": \"default_tenant\", \"dName\": \"default_tenant\" }, " + + "{\"id\": 2, \"name\": \"dyh1b1902\", \"dName\": \"dyh1b1902\"}], " + + "\"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}"; + CloudifyTenantList sampleData = null; + try { + sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class); + } catch (Exception e) { + } + + User user = mockUser.mockUser(); + user.setLoginId("tester"); + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + + Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); + Mockito.when(restClient.getTenants()).thenReturn(sampleData).thenThrow(Exception.class); + /* + * RequestBuilder request = MockMvcRequestBuilders. get("/tenants"). + * accept(MediaType.APPLICATION_JSON); + */ + String tenantStr = subject.getTenants(mockedRequest); + assertTrue(tenantStr.contains("dyh1b")); + + tenantStr = subject.getTenants(mockedRequest); + assertTrue(tenantStr.contains("error")); + } + + @SuppressWarnings({"unchecked", "unchecked"}) + @Test + public final void testGetBlueprintById() throws Exception { + + CloudifyBlueprint cldBp = + new CloudifyBlueprint("file1", "description1", "343242", "3423423", "id1", null); + + List<CloudifyBlueprint> items = new ArrayList<CloudifyBlueprint>(); + items.add(cldBp); + + CloudifyBlueprintList.Metadata.Pagination pageObj = + new CloudifyBlueprintList.Metadata.Pagination(1, 0, 1); + + CloudifyBlueprintList.Metadata metadata = new CloudifyBlueprintList.Metadata(pageObj); + + CloudifyBlueprintList cldBpList = new CloudifyBlueprintList(items, metadata); + + when(restClient.getBlueprint(Mockito.any(), Mockito.any())).thenReturn(cldBpList) + .thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.getBlueprintById("id1", "tenant1", mockedRequest); + assertTrue(actualResult.contains("id1")); + + actualResult = subject.getBlueprintById("id1", "tenant1", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getBlueprintById("id1", "tenant1", mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testGetDeploymentById() throws Exception { + + CloudifyDeployment cldDepl = new CloudifyDeployment("description", "blueprint_id", + "created_at", "updated_at", "id1", null, null, null, null, null, null, null, "tenant1"); + + List<CloudifyDeployment> items = new ArrayList<CloudifyDeployment>(); + items.add(cldDepl); + + CloudifyDeploymentList.Metadata.Pagination pageObj = + new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1); + + CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj); + + CloudifyDeploymentList cldDeplList = new CloudifyDeploymentList(items, metadata); + + when(restClient.getDeployment(Mockito.any(), Mockito.any())).thenReturn(cldDeplList) + .thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.getDeploymentById("id1", "tenant1", mockedRequest); + assertTrue(actualResult.contains("id1")); + + actualResult = subject.getDeploymentById("id1", "tenant1", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getDeploymentById("id1", "tenant1", mockedRequest); + assertTrue(actualResult.contains("error")); + + when(restClient.getDeployment(Mockito.any())).thenReturn(cldDeplList) + .thenThrow(Exception.class).thenThrow(httpException); + + actualResult = subject.getDeploymentById("id1", "", mockedRequest); + assertTrue(actualResult.contains("id1")); + + actualResult = subject.getDeploymentById("id1", null, mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getDeploymentById("id1", null, mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testGetTenantStatusForService() throws Exception { + + String[] deplIds = {"id1", "id2"}; + + CloudifyDeployedTenant cldDeplTenant = new CloudifyDeployedTenant("id1", "bp1", "tenant1"); + + List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>(); + + cldDeplTenantList.add(cldDeplTenant); + + CloudifyDeployedTenantList cldDeployedTenantList = + new CloudifyDeployedTenantList(cldDeplTenantList, null); + + CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1"); + + List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>(); + cldfyTenantList.add(cldTenant); + + CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null); + + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + Map<String, Object> plan = new HashMap<String, Object>(); + HashMap<String, String> plugins_to_install = new HashMap<String, String>(); + plugins_to_install.put("name", "helm-plugin"); + ArrayList<HashMap<String, String>> deployment_plugins_to_install = + new ArrayList<HashMap<String, String>>(); + + deployment_plugins_to_install.add(plugins_to_install); + plan.put("deployment_plugins_to_install", deployment_plugins_to_install); + + Map<String, String> workflows = new HashMap<String, String>(); + workflows.put("status", "workflowshelm"); + plan.put("workflows", workflows); + + CloudifyBlueprint cldBp = + new CloudifyBlueprint("file1", "description1", "343242", "3423423", "id1", plan); + + List<CloudifyBlueprint> items = new ArrayList<CloudifyBlueprint>(); + items.add(cldBp); + + CloudifyBlueprintList.Metadata.Pagination pageObj = + new CloudifyBlueprintList.Metadata.Pagination(1, 0, 1); + + CloudifyBlueprintList.Metadata metadata = new CloudifyBlueprintList.Metadata(pageObj); + + CloudifyBlueprintList cldBpList = new CloudifyBlueprintList(items, metadata); + + when(restClient.getTenants()).thenReturn(cloudifyTenantList); + + when(restClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList); + + when(restClient.getExecutionsSummary(Mockito.any(), Mockito.any())) + .thenReturn(cloudifyExecutionList); + + when(restClient.getBlueprint(Mockito.any(), Mockito.any())).thenReturn(cldBpList) + .thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.getTenantStatusForService(mockedRequest, deplIds); + assertTrue(actualResult.contains("successful")); + + actualResult = subject.getTenantStatusForService(mockedRequest, deplIds); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getTenantStatusForService(mockedRequest, deplIds); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testGetExecutionsByPage() throws Exception { + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + CloudifyDeployment cldDeployment = new CloudifyDeployment("description", "blueprint_id", + "created_at", "updated_at", "id", null, null, null, null, null, null, null, "tenant"); + + List<CloudifyDeployment> cfyDeployItems = new ArrayList<CloudifyDeployment>(); + cfyDeployItems.add(cldDeployment); + + CloudifyDeploymentList.Metadata.Pagination pageObj = + new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1); + CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj); + + CloudifyDeploymentList cldDeployList = new CloudifyDeploymentList(cfyDeployItems, metadata); + + when(restClient.getDeployments()).thenReturn(cldDeployList); + when(restClient.getExecutions(Mockito.any(), Mockito.any())) + .thenReturn(cloudifyExecutionList).thenThrow(Exception.class) + .thenReturn(cloudifyExecutionList); + + String actualResult = + subject.getExecutionsByPage(mockedRequest, "id1", "successful", "tenant1"); + assertTrue(actualResult.contains("successful")); + + actualResult = subject.getExecutionsByPage(mockedRequest, "id1", "successful", "tenant1"); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getExecutionsByPage(mockedRequest, null, "successful", "tenant1"); + assertTrue(actualResult.contains("successful")); + } + + @SuppressWarnings("unchecked") + @Test + public void testGetExecutionByIdAndDeploymentId() throws Exception { + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + when(restClient.getExecutions(Mockito.any(), Mockito.any())) + .thenReturn(cloudifyExecutionList).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.getExecutionByIdAndDeploymentId("execution_id", + "deployment_id", "tenant", mockedRequest); + assertTrue(actualResult.contains("successful")); + + actualResult = subject.getExecutionByIdAndDeploymentId("execution_id", "deployment_id", + "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getExecutionByIdAndDeploymentId("execution_id", "deployment_id", + "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testGetExecutionEventsById() throws Exception { + + CloudifyEvent cfyEvent1 = new CloudifyEvent("blueprint_id", "deployment_id", null, "log", + "execution_id", "debug", "logger", "message", "node_instance_id", "node_name", + "operation", "reported_timestamp", "timestamp", "cloudify_log", "workflow_id"); + CloudifyEvent cfyEvent2 = new CloudifyEvent("blueprint_id", "deployment_id", null, "log", + "execution_id", "debug", "logger", "message", "node_instance_id", "node_name", + "operation", "reported_timestamp", "timestamp", "type2", "workflow_id"); + + List<CloudifyEvent> cfyEventItems = new ArrayList<CloudifyEvent>(); + cfyEventItems.add(cfyEvent1); + cfyEventItems.add(cfyEvent2); + + CloudifyEventList cfyEventsList = new CloudifyEventList(cfyEventItems, null); + + when(restClient.getEventlogs(Mockito.any(), Mockito.any())).thenReturn(cfyEventsList) + .thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = + subject.getExecutionEventsById("execution1", "false", "tenant", mockedRequest); + assertTrue(actualResult.contains("execution_id")); + + actualResult = + subject.getExecutionEventsById("execution1", "false", "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = + subject.getExecutionEventsById("execution1", "false", "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testStartExecution() throws Exception { + CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install", + false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false); + + Map<String, Object> params = new HashMap<String, Object>(); + params.put("key1", "value1"); + + CloudifyExecutionRequest cfyExecReq = new CloudifyExecutionRequest("deployment_id", + "upgrade", false, false, "tenant1", params); + + CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1"); + + List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>(); + + cfyNodeInstItems.add(cfyNodeInst); + + CloudifyNodeInstanceIdList cfyNodeInstList = + new CloudifyNodeInstanceIdList(cfyNodeInstItems, null); + + when(restClient.getNodeInstanceId(Mockito.any(), Mockito.any())) + .thenReturn(cfyNodeInstList); + + when(restClient.startExecution(Matchers.<CloudifyExecutionRequest>any())) + .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.startExecution(mockedRequest, cfyExecReq); + assertTrue(actualResult.contains("execution_id1")); + + actualResult = subject.startExecution(mockedRequest, cfyExecReq); + assertTrue(actualResult.contains("error")); + + actualResult = subject.startExecution(mockedRequest, cfyExecReq); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testUpdateDeployment() throws Exception { + + CloudifyDeploymentUpdateRequest cfyDeployUpdateReq = + new CloudifyDeploymentUpdateRequest("deployment_id", "update", false, false, + "node_instance_id1", "4", "1000", "image", 2, "my_container"); + + CloudifyDeploymentUpdateResponse cfyDeployUpdateResp = new CloudifyDeploymentUpdateResponse( + "terminated", "created_at", "update", false, "blueprint_id", "deployment_id", "", "id1", + null, "tenant1", "junit", false, "resource_availability"); + + when(restClient.updateDeployment(Matchers.<CloudifyDeploymentUpdateRequest>any())) + .thenReturn(cfyDeployUpdateResp).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.updateDeployment(mockedRequest, cfyDeployUpdateReq); + assertTrue(actualResult.contains("terminated")); + + actualResult = subject.updateDeployment(mockedRequest, cfyDeployUpdateReq); + assertTrue(actualResult.contains("error")); + + actualResult = subject.updateDeployment(mockedRequest, cfyDeployUpdateReq); + assertTrue(actualResult.contains("error")); + + } + + @SuppressWarnings("unchecked") + @Test + public void testGetNodeInstanceId() throws Exception { + + CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1"); + + List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>(); + + cfyNodeInstItems.add(cfyNodeInst); + + CloudifyNodeInstanceIdList cfyNodeInstList = + new CloudifyNodeInstanceIdList(cfyNodeInstItems, null); + + when(restClient.getNodeInstanceId(Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(cfyNodeInstList).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = + subject.getNodeInstanceId("deploymentId", "tenant", "nodeId", mockedRequest); + assertTrue(actualResult.contains("node_instance_id1")); + + actualResult = subject.getNodeInstanceId("deploymentId", "tenant", "nodeId", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getNodeInstanceId("deploymentId", "tenant", "nodeId", mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testGetDeploymentRevisions() throws Exception { + + CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null); + + List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>(); + cfyNodeInstanceItems.add(cfyNodeInstance); + + CloudifyNodeInstanceList cfyNodeInstList = + new CloudifyNodeInstanceList(cfyNodeInstanceItems, null); + + when(restClient.getNodeInstanceVersion(Mockito.any(), Mockito.any())) + .thenReturn(cfyNodeInstList).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = + subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("id1")); + + actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public void testCancelExecution() throws Exception { + List<String> tenants = new ArrayList<String>(); + tenants.add("tenant1"); + + HttpHeaders httpHeader = new HttpHeaders(); + httpHeader.put("tenant", tenants); + + CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "cancel", + false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false); + + when(restClient.cancelExecution(Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = + subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse); + assertTrue(actualResult.contains("execution_id1")); - @Mock - private CloudifyClient restClient; - - @InjectMocks - private CloudifyController subject = new CloudifyController(); - - protected final ObjectMapper objectMapper = new ObjectMapper(); - - @Mock - UserUtils userUtils = new UserUtils(); - - @Mock - User epuser; - - MockUser mockUser = new MockUser(); - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - objectMapper.registerModule(new Jdk8Module()); - } - - @Test - public final void testGetControllerEndpoints_stubbed() { - - } - - @Test - public final void testGetTenants_stubbed() throws Exception { - - String tenantsList = - "{\"items\": [{\"id\": 1, \"name\": \"default_tenant\", \"dName\": \"default_tenant\" }, " - + "{\"id\": 2, \"name\": \"dyh1b1902\", \"dName\": \"dyh1b1902\"}], " - + "\"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}"; - CloudifyTenantList sampleData = null; - try { - sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class); - } catch (Exception e) { - } - - User user = mockUser.mockUser(); - user.setLoginId("tester"); - MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); - - Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); - Mockito.when(restClient.getTenants()).thenReturn(sampleData); - - RequestBuilder request = MockMvcRequestBuilders. - get("/tenants"). - accept(MediaType.APPLICATION_JSON); - - String tenantStr = - subject.getTenants(mockedRequest); - - assertNotNull(tenantStr); - assertTrue(tenantStr.contains("dyh1b")); - - - } + actualResult = + subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse); + assertTrue(actualResult.contains("error")); + actualResult = + subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse); + assertTrue(actualResult.contains("error")); + } } diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java new file mode 100644 index 0000000..7097275 --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/CommonApiControllerTest.java @@ -0,0 +1,791 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.when; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Stream; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.core.MockUser; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.onap.ccsdk.dashboard.domain.EcdComponent; +import org.onap.ccsdk.dashboard.exceptions.BadRequestException; +import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException; +import org.onap.ccsdk.dashboard.exceptions.DownstreamException; +import org.onap.ccsdk.dashboard.exceptions.ServerErrorException; +import org.onap.ccsdk.dashboard.exceptions.ServiceAlreadyExistsException; +import org.onap.ccsdk.dashboard.exceptions.inventory.BlueprintParseException; +import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException; +import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant; +import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList; +import org.onap.ccsdk.dashboard.model.CloudifyDeployment; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList; +import org.onap.ccsdk.dashboard.model.CloudifyExecution; +import org.onap.ccsdk.dashboard.model.CloudifyExecutionList; +import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstance; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceId; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList; +import org.onap.ccsdk.dashboard.model.CloudifyTenant; +import org.onap.ccsdk.dashboard.model.CloudifyTenantList; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentInput; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponseLinks; +import org.onap.ccsdk.dashboard.model.inventory.Service; +import org.onap.ccsdk.dashboard.model.inventory.ServiceList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceQueryParams; +import org.onap.ccsdk.dashboard.model.inventory.ServiceRef; +import org.onap.ccsdk.dashboard.model.inventory.ServiceRefList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceType; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeUploadRequest; +import org.onap.ccsdk.dashboard.rest.CloudifyClient; +import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient; +import org.onap.ccsdk.dashboard.rest.InventoryClient; +import org.onap.ccsdk.dashboard.service.ControllerEndpointService; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.HttpStatusCodeException; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; + +public class CommonApiControllerTest extends MockitoTestSuite { + + @Mock + private CloudifyClient cfyClient; + + @Mock + private InventoryClient inventoryClient; + + @Mock + DeploymentHandlerClient deploymentHandlerClient; + + @Mock + ControllerEndpointService controllerEndpointService; + + @InjectMocks + CommonApiController subject = new CommonApiController(); + + private HttpStatusCodeException httpException = + new HttpServerErrorException(HttpStatus.BAD_GATEWAY); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + HttpServletRequest mockedRequest; + HttpServletResponse mockedResponse; + + MockUser mockUser = new MockUser(); + ServiceList deplList = null; + Service deplItem = null; + + ServiceType bpItem = null; + ServiceType bpItem2 = null; + ServiceTypeList bpList = null; + ServiceTypeList bpList2 = null; + + ServiceTypeRequest bpUploadItem = null; + + BadRequestException badReqError; + ServiceAlreadyExistsException srvcExistError; + ServerErrorException serverError; + DownstreamException downStrmError; + JsonProcessingException jsonError; + DeploymentNotFoundException notFoundError; + private ServiceTypeNotFoundException serviceTypeException = + new ServiceTypeNotFoundException("Invalid blueprint"); + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + getExpectedDeployments(); + getExpectedBueprints(); + createBpUploadItem(); + mockedRequest = getMockedRequest(); + mockedResponse = getMockedResponse(); + badReqError = new BadRequestException("bad request"); + srvcExistError = new ServiceAlreadyExistsException("service already exists"); + serverError = new ServerErrorException("Error occured in server"); + downStrmError = new DownstreamException("error occured in downstream"); + notFoundError = new DeploymentNotFoundException("item not found"); + } + + public void getExpectedDeployments() + throws JsonParseException, JsonMappingException, IOException { + + deplItem = new Service("dcae_dtiapi_1902", null, "1552335532348", "1552335532348", null, + "dummyVnfId", null, "dummyVnfType", "dummyLocation", "dcae_dtiapi_1902", null); + Collection<Service> items = new ArrayList<Service>(); + items.add(deplItem); + + String pageLinks = + "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}"; + ServiceList.PaginationLinks paginationLinks = + objectMapper.readValue(pageLinks, ServiceList.PaginationLinks.class); + int totalCount = 1; + deplList = new ServiceList(items, totalCount, paginationLinks); + + } + + public void getExpectedBueprints() + throws JsonParseException, JsonMappingException, IOException { + bpItem = new ServiceType.Builder("xyz1731", "xyz1731-helm-1906", 1906, + "tosca_definitions_version: cloudify_dsl_1_3", "", "app1", "comp1").build(); + + Collection<ServiceType> items = new ArrayList<ServiceType>(); + items.add(bpItem); + + String pageLinks2 = + "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}"; + ServiceTypeList.PaginationLinks paginationLinks = + objectMapper.readValue(pageLinks2, ServiceTypeList.PaginationLinks.class); + int totalCount = 1; + bpList = new ServiceTypeList(items, totalCount, paginationLinks); + + bpItem2 = new ServiceType("xyz1731", "xyz1731-helm-1907", 1906, + "tosca_definitions_version: cloudify_dsl_1_3\\r\\nimports:\\r\\n - http://www.getcloudify.org/spec/cloudify/4.2/types.yaml\\r\\n", + "app1", "comp1", null, null, null, null, null, null, "typeId", null, "created", null, + true); + + Collection<ServiceType> items2 = new ArrayList<ServiceType>(); + items2.add(bpItem2); + + bpList2 = new ServiceTypeList(items2, totalCount, paginationLinks); + } + + public void createBpUploadItem() { + bpUploadItem = ServiceTypeRequest.from(bpItem); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public final void testInsertComponent() throws Exception { + EcdComponent component1 = new EcdComponent(); + + component1.setCname("comp1"); + component1.setCompId(100L); + component1.setDname("COMP1"); + + doNothing().when(controllerEndpointService).insertComponent(component1); + + String actualResult = subject.insertComponent(mockedRequest, component1); + assertTrue(actualResult.contains("Inserted")); + } + + @Test + public final void testGetComponents() throws Exception { + EcdComponent component1 = new EcdComponent(); + EcdComponent component2 = new EcdComponent(); + + component1.setCname("comp1"); + component1.setCompId(100L); + component1.setDname("COMP1"); + + component2.setCname("comp2"); + component2.setCompId(200L); + component2.setDname("COMP2"); + + List<EcdComponent> compsList = new ArrayList<EcdComponent>(); + compsList.add(component1); + compsList.add(component2); + + when(controllerEndpointService.getComponents()).thenReturn(compsList); + + String actualResult = subject.getComponents(mockedRequest); + assertTrue(actualResult.contains("comp1")); + } + + @Test + public final void testGetTenants() throws Exception { + String tenantsList = + "{\"items\": [{\"id\": 1, \"name\": \"default_tenant\", \"dName\": \"default_tenant\" }, " + + "{\"id\": 2, \"name\": \"dyh1b1902\", \"dName\": \"dyh1b1902\"}], " + + "\"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}"; + CloudifyTenantList sampleData = null; + try { + sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class); + } catch (Exception e) { + } + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + + Mockito.when(cfyClient.getTenants()).thenReturn(sampleData); + + String tenantStr = subject.getTenants(mockedRequest); + assertTrue(tenantStr.contains("dyh1b")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetTenantStatusForService() throws Exception { + String[] deplIds = {"id1", "id2"}; + + CloudifyDeployedTenant cldDeplTenant = new CloudifyDeployedTenant("id1", "bp1", "tenant1"); + + List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>(); + + cldDeplTenantList.add(cldDeplTenant); + + CloudifyDeployedTenantList cldDeployedTenantList = + new CloudifyDeployedTenantList(cldDeplTenantList, null); + + CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1"); + + List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>(); + cldfyTenantList.add(cldTenant); + + CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null); + + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + when(cfyClient.getTenants()).thenReturn(cloudifyTenantList); + + when(cfyClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList); + + when(cfyClient.getExecutionsSummary(Mockito.any(), Mockito.any())) + .thenReturn(cloudifyExecutionList).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.getTenantStatusForService(mockedRequest, deplIds); + assertTrue(actualResult.contains("successful")); + + actualResult = subject.getTenantStatusForService(mockedRequest, deplIds); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getTenantStatusForService(mockedRequest, deplIds); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testCreateBlueprint() throws Exception { + ServiceTypeUploadRequest bpUploadReq = ServiceTypeUploadRequest.from(bpItem); + + when(inventoryClient.addServiceType(Matchers.<ServiceTypeRequest>any())) + .thenThrow(BlueprintParseException.class).thenThrow(httpException) + .thenThrow(Exception.class).thenReturn(bpItem); + + String actual1 = subject.createBlueprint(mockedRequest, bpUploadReq); + assertTrue(actual1.contains("error")); + + String actual2 = subject.createBlueprint(mockedRequest, bpUploadReq); + assertTrue(actual2.contains("error")); + + String actual3 = subject.createBlueprint(mockedRequest, bpUploadReq); + assertTrue(actual3.contains("error")); + + String actual = subject.createBlueprint(mockedRequest, bpUploadReq); + assertTrue(actual.contains("app1")); + + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetBlueprintsByPage() { + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("_include", "typeName,typeId,typeVersion"); + mockedRequest1.addParameter("name", "xyz"); + + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream1).thenThrow(Exception.class).thenThrow(httpException); + + String result = subject.getBlueprintsByPage(mockedRequest1); + assertTrue(result.contains("xyz")); + + result = subject.getBlueprintsByPage(mockedRequest1); + assertTrue(result.contains("error")); + + result = subject.getBlueprintsByPage(mockedRequest1); + assertTrue(result.contains("error")); + + } + + @SuppressWarnings("unchecked") + @Test + public final void testQueryBlueprintFilter() { + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("_include", "typeName,typeId,typeVersion"); + mockedRequest1.addParameter("name", "xyz"); + + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream1).thenThrow(Exception.class).thenThrow(httpException); + + String result = subject.queryBlueprintFilter(mockedRequest1); + assertTrue(result.contains("xyz")); + + result = subject.queryBlueprintFilter(mockedRequest1); + assertTrue(result.contains("error")); + + result = subject.queryBlueprintFilter(mockedRequest1); + assertTrue(result.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetDeploymentsByPage() { + CloudifyDeployedTenant cldDeplTenant = + new CloudifyDeployedTenant("dcae_dtiapi_1902", "dcae_dtiapi_1902", "tenant1"); + + List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>(); + + cldDeplTenantList.add(cldDeplTenant); + + CloudifyDeployedTenantList cldDeployedTenantList = + new CloudifyDeployedTenantList(cldDeplTenantList, null); + + CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1"); + + List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>(); + cldfyTenantList.add(cldTenant); + + CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null); + + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("_include", "id"); + mockedRequest1.addParameter("searchBy", "dti"); + + Collection<Service> items = deplList.items; + + when(cfyClient.getTenants()).thenReturn(cloudifyTenantList); + + when(cfyClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList) + .thenThrow(Exception.class).thenThrow(httpException).thenReturn(cldDeployedTenantList) + .thenReturn(cldDeployedTenantList); + + Stream<Service> sampleStream1 = items.stream(); + Stream<Service> sampleStream2 = items.stream(); + Stream<Service> sampleStream3 = items.stream(); + + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1) + .thenReturn(sampleStream2).thenReturn(sampleStream3).thenThrow(Exception.class) + .thenThrow(httpException); + + String result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1); + assertTrue(result.contains("dti")); + + result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1); + assertTrue(result.contains("dti")); + + result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1); + assertTrue(result.contains("dti")); + + result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1); + assertTrue(result.contains("error")); + + result = subject.getDeploymentsByPage("dcae_dtiapi_1902", mockedRequest1); + assertTrue(result.contains("error")); + + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetAllDeploymentsByPage() { + CloudifyDeployedTenant cldDeplTenant = + new CloudifyDeployedTenant("dcae_dtiapi_1902", "dcae_dtiapi_1902", "tenant1"); + + List<CloudifyDeployedTenant> cldDeplTenantList = new ArrayList<CloudifyDeployedTenant>(); + + cldDeplTenantList.add(cldDeplTenant); + + CloudifyDeployedTenantList cldDeployedTenantList = + new CloudifyDeployedTenantList(cldDeplTenantList, null); + + CloudifyTenant cldTenant = new CloudifyTenant("tenant1", "tenant1", "tenant_id1"); + + List<CloudifyTenant> cldfyTenantList = new ArrayList<CloudifyTenant>(); + cldfyTenantList.add(cldTenant); + + CloudifyTenantList cloudifyTenantList = new CloudifyTenantList(cldfyTenantList, null); + + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("_include", "id"); + mockedRequest1.addParameter("searchBy", "dti"); + + Collection<Service> items = deplList.items; + + when(cfyClient.getTenants()).thenReturn(cloudifyTenantList); + + when(cfyClient.getTenantInfoFromDeploy(Mockito.any())).thenReturn(cldDeployedTenantList) + .thenThrow(Exception.class).thenThrow(httpException).thenReturn(cldDeployedTenantList) + .thenReturn(cldDeployedTenantList); + + Stream<Service> sampleStream1 = items.stream(); + Stream<Service> sampleStream2 = items.stream(); + Stream<Service> sampleStream3 = items.stream(); + + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1) + .thenReturn(sampleStream2).thenReturn(sampleStream3).thenThrow(Exception.class) + .thenThrow(httpException); + + String result = subject.getAllDeploymentsByPage(mockedRequest1); + assertTrue(result.contains("dti")); + + result = subject.getAllDeploymentsByPage(mockedRequest1); + assertTrue(result.contains("dti")); + + result = subject.getAllDeploymentsByPage(mockedRequest1); + assertTrue(result.contains("dti")); + + result = subject.getAllDeploymentsByPage(mockedRequest1); + assertTrue(result.contains("error")); + + result = subject.getAllDeploymentsByPage(mockedRequest1); + assertTrue(result.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetDeploymentRevisions() throws Exception { + CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null); + + List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>(); + cfyNodeInstanceItems.add(cfyNodeInstance); + + CloudifyNodeInstanceList cfyNodeInstList = + new CloudifyNodeInstanceList(cfyNodeInstanceItems, null); + + when(cfyClient.getNodeInstanceVersion(Mockito.any(), Mockito.any())) + .thenReturn(cfyNodeInstList).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = + subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("id1")); + + actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + + actualResult = subject.getDeploymentRevisions("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("error")); + } + + @Test + public final void testGetDeploymentInputs() throws Exception { + + Map<String, Object> inputHash = new HashMap<String, Object>(); + inputHash.put("key1", "value1"); + + CloudifyDeployment cldDeployment = + new CloudifyDeployment("description", "blueprint_id", "created_at", "updated_at", "id", + inputHash, null, null, null, null, null, null, "tenant"); + + List<CloudifyDeployment> cfyDeployItems = new ArrayList<CloudifyDeployment>(); + cfyDeployItems.add(cldDeployment); + + CloudifyDeploymentList.Metadata.Pagination pageObj = + new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1); + CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj); + + CloudifyDeploymentList cldDeployList = new CloudifyDeploymentList(cfyDeployItems, metadata); + + when(cfyClient.getDeploymentInputs(Matchers.any(), Matchers.any())) + .thenReturn(cldDeployList); + + String actualResult = subject.getDeploymentInputs("deploymentId", "tenant", mockedRequest); + assertTrue(actualResult.contains("blueprint_id")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testModifyDeployment() throws Exception { + CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install", + false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false); + + Map<String, Object> params = new HashMap<String, Object>(); + params.put("tenant", "tenant1"); + params.put("workflow", "upgrade"); + + CloudifyExecutionRequest cfyExecReq = new CloudifyExecutionRequest("deployment_id", + "upgrade", false, false, "tenant1", params); + + CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1"); + + List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>(); + + cfyNodeInstItems.add(cfyNodeInst); + + CloudifyNodeInstanceIdList cfyNodeInstList = + new CloudifyNodeInstanceIdList(cfyNodeInstItems, null); + + when(cfyClient.getNodeInstanceId(Mockito.any(), Mockito.any())).thenReturn(cfyNodeInstList); + + when(cfyClient.startExecution(Matchers.<CloudifyExecutionRequest>any())) + .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException); + + String inputParamStr = "{\"tenant\": \"tenant1\", \"workflow\":\"upgrade\"}"; + + InputStream is = new ByteArrayInputStream(inputParamStr.getBytes()); + + String actualResult = subject.modifyDeployment("depId", mockedRequest, is); + assertTrue(actualResult.contains("execution_id1")); + + actualResult = subject.modifyDeployment("depId", mockedRequest, is); + assertTrue(actualResult.contains("error")); + + actualResult = subject.modifyDeployment("depId", mockedRequest, is); + assertTrue(actualResult.contains("error")); + + } + + @Test + public final void testGetServicesForType() throws Exception { + ServiceRef expectedSrvc = new ServiceRef("dcae_dtiapi_1902", "432423", "433434"); + Collection<ServiceRef> expectedSrvcIds = new ArrayList<ServiceRef>(); + expectedSrvcIds.add(expectedSrvc); + ServiceRefList expectedSrvcRefList = new ServiceRefList(expectedSrvcIds, 1); + + when(inventoryClient.getServicesForType(Matchers.<ServiceQueryParams>any())) + .thenReturn(expectedSrvcRefList); + String actual = subject.getServicesForType(mockedRequest, "typeId1"); + assertTrue(actual.contains("typeId1")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testCreateDeployment() throws Exception { + DeploymentInput deployInput1 = new DeploymentInput("component1", "tag1", + "xyz1731-helm-1906", 1906, "blueprintId", null, "tenant1"); + + DeploymentInput deployInput2 = new DeploymentInput("component1", "tag1", + "xyz1731-helm-1906", 1906, null, null, "tenant1"); + + DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status"); + DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink); + + Collection<ServiceType> items = bpList2.items; + Stream<ServiceType> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream1); + + String actualResp0 = subject.createDeployment(mockedRequest, deployInput2); + assertTrue(actualResp0.contains("error")); + + StringBuffer expectedStrBuff = new StringBuffer(); + expectedStrBuff.append("http://oom.s2.com"); + when(mockedRequest.getRequestURL()).thenReturn(expectedStrBuff); + + when(deploymentHandlerClient.putDeployment(Matchers.anyString(), Matchers.anyString(), + Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError) + .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError) + .thenThrow(Exception.class); + + String actualResp = subject.createDeployment(mockedRequest, deployInput1); + assertTrue(actualResp.contains("component1")); + + actualResp = subject.createDeployment(mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.createDeployment(mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.createDeployment(mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.createDeployment(mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.createDeployment(mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + } + + @SuppressWarnings("unchecked") + @Test + public final void testUpdateDeployment() throws Exception { + + DeploymentInput deployInput1 = new DeploymentInput("component1", "tag1", + "xyz1731-helm-1906", 1906, "blueprintId", null, "tenant1"); + + DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status"); + DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink); + + Collection<ServiceType> items = bpList2.items; + Stream<ServiceType> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream1); + + when(deploymentHandlerClient.updateDeployment(Matchers.anyString(), Matchers.anyString(), + Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError) + .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError) + .thenThrow(Exception.class); + + String actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1); + assertTrue(actualResp.contains("req1")); + + actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + + actualResp = subject.updateDeployment("id1", mockedRequest, deployInput1); + assertTrue(actualResp.contains("error")); + } + + @Test + public final void testGetExecutionByDeploymentId() throws Exception { + + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + when(cfyClient.getExecutionsSummary(Mockito.any(), Mockito.any())) + .thenReturn(cloudifyExecutionList); + + String actualResult = + subject.getExecutionByDeploymentId("dep_id", "tenant1", mockedRequest); + assertTrue(actualResult.contains("execution_id1")); + } + + @Test + public final void testDeleteBlueprint() throws Exception { + String expected = "{\"202\": \"OK\"}"; + doNothing().doThrow(serviceTypeException).doThrow(Exception.class).when(inventoryClient) + .deleteServiceType(Matchers.anyString()); + + String actual = subject.deleteBlueprint("srvcId", mockedRequest, mockedResponse); + assertEquals(expected, actual); + + actual = subject.deleteBlueprint("srvcId", mockedRequest, mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteBlueprint("srvcId", mockedRequest, mockedResponse); + assertTrue(actual.contains("error")); + } + + @Test + public final void testDeleteDeployment() throws Exception { + doNothing().doThrow(badReqError).doThrow(serverError).doThrow(downStrmError) + .doThrow(notFoundError).doThrow(Exception.class).when(deploymentHandlerClient) + .deleteDeployment(Matchers.anyString(), Matchers.anyString()); + + StringBuffer expectedStrBuff = new StringBuffer(); + expectedStrBuff.append("http://oom.s2.com"); + when(mockedRequest.getRequestURL()).thenReturn(expectedStrBuff); + + String actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertFalse(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testCancelExecution() throws Exception { + List<String> tenants = new ArrayList<String>(); + tenants.add("tenant1"); + + HttpHeaders httpHeader = new HttpHeaders(); + httpHeader.put("tenant", tenants); + + CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "cancel", + false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false); + + when(cfyClient.cancelExecution(Mockito.any(), Mockito.any(), Mockito.any())) + .thenReturn(cfyExecObj).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = + subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse); + assertTrue(actualResult.contains("execution_id1")); + + actualResult = + subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse); + assertTrue(actualResult.contains("error")); + + actualResult = + subject.cancelExecution(httpHeader, "id1", null, mockedRequest, mockedResponse); + assertTrue(actualResult.contains("error")); + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java new file mode 100644 index 0000000..3d71a2e --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ConsulControllerTest.java @@ -0,0 +1,315 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.core.MockUser; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.onap.ccsdk.dashboard.model.ConsulDatacenter; +import org.onap.ccsdk.dashboard.model.ConsulHealthServiceRegistration; +import org.onap.ccsdk.dashboard.model.ConsulNodeInfo; +import org.onap.ccsdk.dashboard.model.ConsulServiceHealth; +import org.onap.ccsdk.dashboard.model.ConsulServiceInfo; +import org.onap.ccsdk.dashboard.model.RestResponseSuccess; +import org.onap.ccsdk.dashboard.rest.ConsulClient; +import org.onap.portalsdk.core.domain.User; +import org.onap.portalsdk.core.web.support.UserUtils; +import org.springframework.http.HttpStatus; +import org.springframework.web.client.HttpClientErrorException; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; + +public class ConsulControllerTest extends MockitoTestSuite { + + @Mock + ConsulClient consulClient; + + @InjectMocks + ConsulController subject = new ConsulController(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + MockUser mockUser = new MockUser(); + HttpClientErrorException httpException; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + mockedRequest = getMockedRequest(); + mockedResponse = getMockedResponse(); + httpException = new HttpClientErrorException(HttpStatus.BAD_REQUEST, "statusText"); + } + + @After + public void tearDown() throws Exception { + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetServiceHealthDetails() throws Exception { + ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00", + "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing", + "This is a pgaas1_Service_ID health check", + "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n", + "pgaas1_Service_ID", "pgaasServer1", 190199, 199395); + + List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>(); + expectedCnslSrvcHlth.add(consulSrvcHlth); + + when(consulClient.getServiceHealth(Matchers.anyString(), Matchers.anyString())) + .thenReturn(expectedCnslSrvcHlth).thenThrow(Exception.class); + + String actualResult = subject.getServiceHealthDetails(mockedRequest, "dc1", "srvc1"); + assertTrue(actualResult.contains("pgaasServer1")); + + actualResult = subject.getServiceHealthDetails(mockedRequest, "dc1", "srvc1"); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetServicesHealth() throws Exception { + + List<String> srvcIps = new ArrayList<String>(); + srvcIps.add("135.91.224.136"); + srvcIps.add("135.91.224.138"); + ConsulServiceInfo consulSrvcInfo = new ConsulServiceInfo("pgaasServer1", srvcIps); + + List<ConsulServiceInfo> expectedCnslSrvcs = new ArrayList<ConsulServiceInfo>(); + expectedCnslSrvcs.add(consulSrvcInfo); + + ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00", + "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing", + "This is a pgaas1_Service_ID health check", + "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n", + "pgaas1_Service_ID", "pgaasServer1", 190199, 199395); + + List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>(); + expectedCnslSrvcHlth.add(consulSrvcHlth); + + when(consulClient.getServices(Matchers.anyString())).thenReturn(expectedCnslSrvcs); + when(consulClient.getServiceHealth(Matchers.anyString(), Matchers.anyString())) + .thenReturn(expectedCnslSrvcHlth).thenThrow(Exception.class); + + String actualResult = subject.getServicesHealth(mockedRequest, "dc1"); + assertTrue(actualResult.contains("pgaasServer1")); + + actualResult = subject.getServicesHealth(mockedRequest, "dc1"); + assertTrue(actualResult.contains("error")); + } + + @Test + public final void testGetNodesInfo() { + User user = mockUser.mockUser(); + user.setLoginId("tester"); + user.setId(1000L); + Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); + + ConsulNodeInfo cnslNode = new ConsulNodeInfo("a2788806-6e2e-423e-8ee7-6cad6f3d3de6", + "cjlvmcnsl00", "10.170.8.13", null, null, 6, 17980); + + List<ConsulNodeInfo> cnslNodeList = new ArrayList<ConsulNodeInfo>(); + cnslNodeList.add(cnslNode); + + when(consulClient.getNodes(Matchers.anyString())).thenReturn(cnslNodeList); + + String actualResult = subject.getNodesInfo(mockedRequest, "dc1"); + assertTrue(actualResult.contains("cjlvmcnsl00")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetNodeServicesHealth() throws Exception { + ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00", + "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing", + "This is a pgaas1_Service_ID health check", + "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n", + "pgaas1_Service_ID", "pgaasServer1", 190199, 199395); + + List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>(); + expectedCnslSrvcHlth.add(consulSrvcHlth); + + when(consulClient.getNodeServicesHealth(Matchers.anyString(), Matchers.anyString())) + .thenReturn(expectedCnslSrvcHlth).thenThrow(Exception.class); + + String actualResult = subject.getNodeServicesHealth(mockedRequest, "dc1", "node1"); + assertTrue(actualResult.contains("pgaasServer1")); + + actualResult = subject.getNodeServicesHealth(mockedRequest, "dc1", "node1"); + assertTrue(actualResult.contains("error")); + } + + @Test + public final void testGetDatacentersHealth() { + User user = mockUser.mockUser(); + user.setLoginId("tester"); + user.setId(1000L); + Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); + + ConsulDatacenter cnslDc = new ConsulDatacenter("dc1"); + + List<ConsulDatacenter> cnslDcList = new ArrayList<ConsulDatacenter>(); + cnslDcList.add(cnslDc); + + when(consulClient.getDatacenters()).thenReturn(cnslDcList); + + String actualResult = subject.getDatacentersHealth(mockedRequest); + assertTrue(actualResult.contains("dc1")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testRegisterService() throws Exception { + ConsulHealthServiceRegistration.EndpointCheck endPoint = + new ConsulHealthServiceRegistration.EndpointCheck("endpoint1", "interval1", + "description1", "name1"); + List<ConsulHealthServiceRegistration.EndpointCheck> endPointList = + new ArrayList<ConsulHealthServiceRegistration.EndpointCheck>(); + endPointList.add(endPoint); + + List<String> tagList = new ArrayList<String>(); + tagList.add("tag1"); + tagList.add("tag2"); + + ConsulHealthServiceRegistration.ConsulServiceRegistration servcReg = + new ConsulHealthServiceRegistration.ConsulServiceRegistration("id1", "name1", + "address1", "port1", tagList, endPointList); + List<ConsulHealthServiceRegistration.ConsulServiceRegistration> servcRegList = + new ArrayList<ConsulHealthServiceRegistration.ConsulServiceRegistration>(); + servcRegList.add(servcReg); + + ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(servcRegList); + + RestResponseSuccess expectedResp = new RestResponseSuccess("Registration yielded code 0"); + String expectedResult = objectMapper.writeValueAsString(expectedResp); + + String expectedStr = "Registration yielded code 0"; + when(consulClient.registerService(Matchers.<ConsulHealthServiceRegistration>any())) + .thenReturn(expectedStr).thenThrow(Exception.class).thenThrow(httpException); + + String actualResult = subject.registerService(mockedRequest, chsrObj); + assertTrue(actualResult.equals(expectedResult)); + + actualResult = subject.registerService(mockedRequest, chsrObj); + assertTrue(actualResult.contains("error")); + + actualResult = subject.registerService(mockedRequest, chsrObj); + assertTrue(actualResult.contains("error")); + } + + @Test + public final void testRegisterService_SrvcError() throws Exception { + ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(null); + + String actualResult = subject.registerService(mockedRequest, chsrObj); + assertTrue(actualResult.contains("error")); + } + + @Test + @Ignore + public final void testRegisterService_invalidSrvcError() throws Exception { + ConsulHealthServiceRegistration.EndpointCheck endPoint = + new ConsulHealthServiceRegistration.EndpointCheck("endpoint1", "interval1", + "description1", "name1"); + List<ConsulHealthServiceRegistration.EndpointCheck> endPointList = + new ArrayList<ConsulHealthServiceRegistration.EndpointCheck>(); + endPointList.add(endPoint); + + List<String> tagList = new ArrayList<String>(); + tagList.add("tag1"); + tagList.add("tag2"); + + ConsulHealthServiceRegistration.ConsulServiceRegistration servcReg = + new ConsulHealthServiceRegistration.ConsulServiceRegistration("id1", "name2", + "address2", "port1", tagList, endPointList); + List<ConsulHealthServiceRegistration.ConsulServiceRegistration> servcRegList = + new ArrayList<ConsulHealthServiceRegistration.ConsulServiceRegistration>(); + servcRegList.add(servcReg); + + ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(servcRegList); + + String actualResult = subject.registerService(mockedRequest, chsrObj); + assertTrue(actualResult.contains("error")); + } + + @Test + public final void testRegisterService_invalidEndptError() throws Exception { + ConsulHealthServiceRegistration.EndpointCheck endPoint = + new ConsulHealthServiceRegistration.EndpointCheck("", "", "description1", "name1"); + List<ConsulHealthServiceRegistration.EndpointCheck> endPointList = + new ArrayList<ConsulHealthServiceRegistration.EndpointCheck>(); + endPointList.add(endPoint); + + List<String> tagList = new ArrayList<String>(); + tagList.add("tag1"); + tagList.add("tag2"); + + ConsulHealthServiceRegistration.ConsulServiceRegistration servcReg = + new ConsulHealthServiceRegistration.ConsulServiceRegistration("id1", "", "", "port1", + tagList, endPointList); + List<ConsulHealthServiceRegistration.ConsulServiceRegistration> servcRegList = + new ArrayList<ConsulHealthServiceRegistration.ConsulServiceRegistration>(); + servcRegList.add(servcReg); + + ConsulHealthServiceRegistration chsrObj = new ConsulHealthServiceRegistration(servcRegList); + + String actualResult = subject.registerService(mockedRequest, chsrObj); + assertTrue(actualResult.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testDeregisterService() throws Exception { + RestResponseSuccess expectedResp = new RestResponseSuccess("Deregistration yielded code 0"); + String expectedResult = objectMapper.writeValueAsString(expectedResp); + + when(consulClient.deregisterService(Mockito.any())).thenReturn(0).thenThrow(Exception.class) + .thenThrow(httpException); + + String actualResult = subject.deregisterService(mockedRequest, "srvc1"); + assertTrue(actualResult.equals(expectedResult)); + + actualResult = subject.deregisterService(mockedRequest, "srvc1"); + assertTrue(actualResult.contains("error")); + + actualResult = subject.deregisterService(mockedRequest, "srvc1"); + assertTrue(actualResult.contains("error")); + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java new file mode 100644 index 0000000..6517b68 --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/DeploymentHandlerControllerTest.java @@ -0,0 +1,184 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.when; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.onap.ccsdk.dashboard.exceptions.BadRequestException; +import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException; +import org.onap.ccsdk.dashboard.exceptions.DownstreamException; +import org.onap.ccsdk.dashboard.exceptions.ServerErrorException; +import org.onap.ccsdk.dashboard.exceptions.ServiceAlreadyExistsException; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequestObject; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponseLinks; +import org.onap.ccsdk.dashboard.rest.DeploymentHandlerClient; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; + +public class DeploymentHandlerControllerTest extends MockitoTestSuite { + + @Mock + DeploymentHandlerClient restClient; + + @InjectMocks + DeploymentHandlerController subject = new DeploymentHandlerController(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + BadRequestException badReqError; + ServiceAlreadyExistsException srvcExistError; + ServerErrorException serverError; + DownstreamException downStrmError; + JsonProcessingException jsonError; + DeploymentNotFoundException notFoundError; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + mockedRequest = getMockedRequest(); + mockedResponse = getMockedResponse(); + badReqError = new BadRequestException("bad request"); + srvcExistError = new ServiceAlreadyExistsException("service already exists"); + serverError = new ServerErrorException("Error occured in server"); + downStrmError = new DownstreamException("error occured in downstream"); + notFoundError = new DeploymentNotFoundException("item not found"); + } + + @After + public void tearDown() throws Exception { + } + + @SuppressWarnings("unchecked") + @Test + public final void testPutDeployment_create() throws Exception { + DeploymentRequestObject expectReq = + new DeploymentRequestObject("dep1", "dep1", null, "tenant1", "create"); + + DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status"); + DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink); + + when(restClient.putDeployment(Matchers.anyString(), Matchers.anyString(), + Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError) + .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError) + .thenThrow(Exception.class); + + String actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("req1")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testPutDeployment_update() throws Exception { + DeploymentRequestObject expectReq = + new DeploymentRequestObject("dep1", "dep1", null, "tenant1", "update"); + + DeploymentResponseLinks expectLink = new DeploymentResponseLinks("self", "status"); + DeploymentResponse expectResp = new DeploymentResponse("req1", expectLink); + + when(restClient.updateDeployment(Matchers.anyString(), Matchers.anyString(), + Matchers.<DeploymentRequest>any())).thenReturn(expectResp).thenThrow(badReqError) + .thenThrow(srvcExistError).thenThrow(serverError).thenThrow(downStrmError) + .thenThrow(Exception.class); + + String actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("req1")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + + actualResp = subject.putDeployment(mockedRequest, expectReq); + assertTrue(actualResp.contains("error")); + } + + @Test + public final void testDeleteDeployment() throws Exception { + + doNothing().doThrow(badReqError).doThrow(serverError).doThrow(downStrmError) + .doThrow(notFoundError).doThrow(Exception.class).when(restClient) + .deleteDeployment(Matchers.anyString(), Matchers.anyString()); + + StringBuffer expectedStrBuff = new StringBuffer(); + expectedStrBuff.append("http://oom.s2.com"); + when(mockedRequest.getRequestURL()).thenReturn(expectedStrBuff); + + String actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertFalse(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteDeployment("dep1", mockedRequest, "tenant1", mockedResponse); + assertTrue(actual.contains("error")); + + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java new file mode 100644 index 0000000..771c085 --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/ECDSingleSignOnControllerTest.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; + +import static org.junit.Assert.assertTrue; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.springframework.web.servlet.ModelAndView; + +public class ECDSingleSignOnControllerTest extends MockitoTestSuite { + + @InjectMocks + ECDSingleSignOnController subject = new ECDSingleSignOnController(); + + @Before + public void setUp() throws Exception { + + } + + @After + public void tearDown() throws Exception { + } + + @Test + public final void testSingleSignOnLogin() throws Exception { + + mockedRequest.addParameter("forwardURL", "ecd#"); + ModelAndView actualResult = subject.singleSignOnLogin(mockedRequest, mockedResponse); + assertTrue(actualResult.getViewName().contains("login")); + + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java new file mode 100644 index 0000000..4e44c39 --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/HealthCheckControllerTest.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.onap.ccsdk.dashboard.model.HealthStatus; +import org.onap.portalsdk.core.util.SystemProperties; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({SystemProperties.class}) +public class HealthCheckControllerTest extends MockitoTestSuite { + + @InjectMocks + HealthCheckController subject = new HealthCheckController(); + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + mockedRequest = getMockedRequest(); + mockedResponse = getMockedResponse(); + PowerMockito.mockStatic(SystemProperties.class); + when(SystemProperties.getProperty(SystemProperties.APP_DISPLAY_NAME)) + .thenReturn("oom-dash"); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public final void testHealthCheck() { + String messg = "oom-dash health check passed"; + HealthStatus actualResult = subject.healthCheck(mockedRequest, mockedResponse); + assertTrue(actualResult.statusCode == 200); + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java new file mode 100644 index 0000000..01858ed --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/controller/InventoryControllerTest.java @@ -0,0 +1,788 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.controller; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Optional; +import java.util.Set; +import java.util.TreeSet; +import java.util.stream.Stream; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.core.MockUser; +import org.onap.ccsdk.dashboard.core.MockitoTestSuite; +import org.onap.ccsdk.dashboard.exceptions.inventory.BlueprintParseException; +import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceNotFoundException; +import org.onap.ccsdk.dashboard.exceptions.inventory.ServiceTypeNotFoundException; +import org.onap.ccsdk.dashboard.model.inventory.Service; +import org.onap.ccsdk.dashboard.model.inventory.ServiceList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceQueryParams; +import org.onap.ccsdk.dashboard.model.inventory.ServiceRef; +import org.onap.ccsdk.dashboard.model.inventory.ServiceRefList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceType; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest; +import org.onap.ccsdk.dashboard.rest.CloudifyClient; +import org.onap.ccsdk.dashboard.rest.InventoryClient; +import org.onap.ccsdk.dashboard.util.DashboardProperties; +import org.onap.portalsdk.core.domain.User; +import org.onap.portalsdk.core.web.support.AppUtils; +import org.onap.portalsdk.core.web.support.UserUtils; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.http.HttpStatus; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.RestClientException; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({DashboardProperties.class}) +public class InventoryControllerTest extends MockitoTestSuite { + + @Mock + private CloudifyClient restClient; + + @Mock + private InventoryClient inventoryClient; + + @InjectMocks + private InventoryController subject = new InventoryController(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + private HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.BAD_GATEWAY); + + private ServiceNotFoundException serviceException = + new ServiceNotFoundException("Invalid deployment"); + + private ServiceTypeNotFoundException serviceTypeException = + new ServiceTypeNotFoundException("Invalid blueprint"); + + @Mock + UserUtils userUtils = new UserUtils(); + + @Mock + User epuser; + + @Mock + AppUtils appUtils = new AppUtils(); + + HttpServletRequest mockedRequest; + HttpServletResponse mockedResponse; + + MockUser mockUser = new MockUser(); + ServiceList deplList = null; + Service deplItem = null; + + ServiceType bpItem = null; + ServiceTypeList bpList = null; + + ServiceTypeRequest bpUploadItem = null; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + getExpectedDeployments(); + getExpectedBueprints(); + createBpUploadItem(); + mockedRequest = getMockedRequest(); + mockedResponse = getMockedResponse(); + } + + public void getExpectedDeployments() + throws JsonParseException, JsonMappingException, IOException { + + deplItem = new Service("dcae_dtiapi_1902", null, "1552335532348", "1552335532348", null, + "dummyVnfId", null, "dummyVnfType", "dummyLocation", "dcae_dtiapi_1902", null); + Collection<Service> items = new ArrayList<Service>(); + items.add(deplItem); + + String pageLinks = + "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}"; + ServiceList.PaginationLinks paginationLinks = + objectMapper.readValue(pageLinks, ServiceList.PaginationLinks.class); + int totalCount = 1; + deplList = new ServiceList(items, totalCount, paginationLinks); + + } + + public void getExpectedBueprints() + throws JsonParseException, JsonMappingException, IOException { + bpItem = new ServiceType.Builder("xyz1731", "xyz1731-helm-1906", 1906, + "tosca_definitions_version: cloudify_dsl_1_3", "", "app1", "comp1").build(); + Collection<ServiceType> items = new ArrayList<ServiceType>(); + items.add(bpItem); + + String pageLinks2 = + "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}"; + ServiceTypeList.PaginationLinks paginationLinks = + objectMapper.readValue(pageLinks2, ServiceTypeList.PaginationLinks.class); + int totalCount = 1; + bpList = new ServiceTypeList(items, totalCount, paginationLinks); + } + + public void createBpUploadItem() { + bpUploadItem = ServiceTypeRequest.from(bpItem); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public final void testGetServiceTypesByPage() { + User user = mockUser.mockUser(); + user.setLoginId("tester"); + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("searchBy", "xyz"); + mockedRequest.addParameter("sortBy", "owner"); + + Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Collection<ServiceType> items = bpList.items; + + Stream<ServiceType> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + HttpSession session = mockedRequest.getSession(); + HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>(); + comp_deploy_tab.put("comp1", true); + + Set<String> userApps = new TreeSet<String>(); + userApps.add("comp1"); + + when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab); + when(session.getAttribute("role_level")).thenReturn("app"); + when(session.getAttribute("authComponents")).thenReturn(userApps); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + } + + @Test + public final void testGetServiceTypesByPage_appl() { + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "application"); + + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + } + + @Test + public final void testGetServiceTypesByPage_comp() { + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "component"); + + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + } + + @Test + public final void testGetServiceTypesByPage_typeId() { + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "typeId"); + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + } + + @Test + public final void testGetServiceTypesByPage_typeName() { + + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "typeName"); + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + + } + + @Test + public final void testGetServiceTypesByPage_typeVer() { + + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "typeVersion"); + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + + } + + @Test + public final void testGetServiceTypesByPage_created() { + + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "created"); + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream1 = items.stream(); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream1); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<ServiceType> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream2); + String result2 = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result2.contains("xyz")); + } + + @Test + public final void testGetServiceTypesByPage_Auth() { + + User user = mockUser.mockUser(); + user.setLoginId("tester"); + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("searchBy", "xyz"); + + Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream = items.stream(); + + HttpSession session = mockedRequest.getSession(); + HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>(); + comp_deploy_tab.put("comp1", true); + + Set<String> userApps = new TreeSet<String>(); + userApps.add("comp1"); + + when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab); + when(session.getAttribute("role_level")).thenReturn("ops"); + when(session.getAttribute("authComponents")).thenReturn(userApps); + + Mockito.when(inventoryClient.getServiceTypes(Matchers.<ServiceTypeQueryParams>any())) + .thenReturn(sampleStream); + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testGetServiceTypesByPage_Exception() { + PowerMockito.mockStatic(DashboardProperties.class); + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream = items.stream(); + when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + when(inventoryClient.getServiceTypes()).thenThrow(RestClientException.class) + .thenThrow(httpException).thenReturn(sampleStream); + + String errResp = subject.getServiceTypesByPage(mockedRequest); + assertTrue(errResp.contains("error")); + + errResp = subject.getServiceTypesByPage(mockedRequest); + assertTrue(errResp.contains("error")); + + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + } + + @Test + public final void testGetServiceTypesByPage_Filter() { + User user = mockUser.mockUser(); + user.setLoginId("tester"); + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("searchBy", "xyz"); + PowerMockito.mockStatic(DashboardProperties.class); + Mockito.when(UserUtils.getUserSession(mockedRequest)).thenReturn(user); + + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> sampleStream = items.stream(); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + Mockito.when(inventoryClient.getServiceTypes()).thenReturn(sampleStream); + + String result = subject.getServiceTypesByPage(mockedRequest); + assertTrue(result.contains("xyz")); + } + + @Test + public final void testGetServicesByPage_auth() throws IOException { + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("searchBy", "dti"); + + Collection<Service> items = deplList.items; + + HttpSession session = mockedRequest1.getSession(); + HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>(); + comp_deploy_tab.put("dcae", true); + + Set<String> userApps = new TreeSet<String>(); + userApps.add("dcae"); + + when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab); + when(session.getAttribute("role_level")).thenReturn("app"); + when(session.getAttribute("authComponents")).thenReturn(userApps); + + Stream<Service> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1); + + String result1 = subject.getServicesByPage(mockedRequest1); + assertTrue(result1.contains("dti")); + + } + + @Test + public final void testGetServicesByPage_auth_ops() throws IOException { + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("searchBy", "dti"); + + Collection<Service> items = deplList.items; + + HttpSession session = mockedRequest1.getSession(); + HashMap<String, Boolean> comp_deploy_tab = new HashMap<String, Boolean>(); + comp_deploy_tab.put("dcae", true); + + Set<String> userApps = new TreeSet<String>(); + userApps.add("dcae"); + + when(session.getAttribute("comp_access")).thenReturn(comp_deploy_tab); + when(session.getAttribute("role_level")).thenReturn("ops"); + when(session.getAttribute("authComponents")).thenReturn(userApps); + + Stream<Service> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1); + + String result1 = subject.getServicesByPage(mockedRequest1); + assertTrue(result1.contains("dti")); + + } + + @Test + public final void testGetServicesByPage() throws IOException { + /* + * User user = mockUser.mockUser(); user.setLoginId("tester"); + */ + MockHttpServletRequestWrapper mockedRequest1 = getMockedRequest(); + mockedRequest1.addParameter("searchBy", "dti"); + mockedRequest1.addParameter("sortBy", "deploymentRef"); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Collection<Service> items = deplList.items; + + Stream<Service> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1); + + String result1 = subject.getServicesByPage(mockedRequest1); + assertTrue(result1.contains("dti")); + } + + @Test + public final void testGetServicesByPage_sort_serviceId() throws IOException { + + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "serviceId"); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Collection<Service> items = deplList.items; + + Stream<Service> sampleStream1 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream1); + + String result = subject.getServicesByPage(mockedRequest); + assertTrue(result.contains("dti")); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<Service> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream2); + + String result2 = subject.getServicesByPage(mockedRequest); + assertTrue(result2.contains("dti")); + } + + @Test + public final void testGetServicesByPage_sort_created() throws IOException { + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "created"); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Collection<Service> items = deplList.items; + + Stream<Service> sampleStream = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream); + + String result = subject.getServicesByPage(mockedRequest); + assertTrue(result.contains("dti")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<Service> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream2); + + String result2 = subject.getServicesByPage(mockedRequest); + assertTrue(result2.contains("dti")); + + } + + @Test + public final void testGetServicesByPage_sort_modified() throws IOException { + + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + mockedRequest.addParameter("sortBy", "modified"); + + PowerMockito.mockStatic(DashboardProperties.class); + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("os"); + + Collection<Service> items = deplList.items; + + Stream<Service> sampleStream = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream); + + String result = subject.getServicesByPage(mockedRequest); + assertTrue(result.contains("dti")); + + Mockito + .when(DashboardProperties.getPropertyDef(DashboardProperties.CONTROLLER_TYPE, "auth")) + .thenReturn("auth"); + + Stream<Service> sampleStream2 = items.stream(); + Mockito.when(inventoryClient.getServices()).thenReturn(sampleStream2); + + String result2 = subject.getServicesByPage(mockedRequest); + assertTrue(result2.contains("dti")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testUploadServiceTypeBlueprint() throws Exception { + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + String expected = "{\"201\": \"OK\"}"; + when(inventoryClient.addServiceType(Matchers.<ServiceTypeRequest>any())) + .thenThrow(BlueprintParseException.class).thenThrow(httpException) + .thenThrow(Exception.class).thenReturn(null); + + String actual1 = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem); + assertTrue(actual1.contains("error")); + + String actual2 = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem); + assertTrue(actual2.contains("error")); + + String actual3 = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem); + assertTrue(actual3.contains("error")); + + String actual = subject.uploadServiceTypeBlueprint(mockedRequest, bpUploadItem); + assertEquals(expected, actual); + + } + + @SuppressWarnings("unchecked") + @Test + public final void testUpdateServiceTypeBlueprint() throws Exception { + MockHttpServletRequestWrapper mockedRequest = getMockedRequest(); + String expected = "{\"201\": \"OK\"}"; + Mockito.when(inventoryClient.addServiceType(Matchers.<ServiceType>any())) + .thenThrow(BlueprintParseException.class).thenThrow(httpException) + .thenThrow(Exception.class).thenReturn(null); + + String actual1 = subject.updateServiceTypeBlueprint(mockedRequest, bpItem); + assertTrue(actual1.contains("error")); + + String actual2 = subject.updateServiceTypeBlueprint(mockedRequest, bpItem); + assertTrue(actual2.contains("error")); + + String actual3 = subject.updateServiceTypeBlueprint(mockedRequest, bpItem); + assertTrue(actual3.contains("error")); + + String actual = subject.updateServiceTypeBlueprint(mockedRequest, bpItem); + assertEquals(expected, actual); + } + + @Test + public final void testDeleteService() throws Exception { + String expected = "{\"202\": \"OK\"}"; + doNothing().doThrow(serviceException).doThrow(Exception.class).when(inventoryClient) + .deleteService(Matchers.anyString()); + + String actual = subject.deleteService("srvcId", mockedRequest, mockedResponse); + assertEquals(expected, actual); + + actual = subject.deleteService("srvcId", mockedRequest, mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteService("srvcId", mockedRequest, mockedResponse); + assertTrue(actual.contains("error")); + } + + @Test + public final void testDeleteServiceType() throws Exception { + String expected = "{\"202\": \"OK\"}"; + doNothing().doThrow(serviceTypeException).doThrow(Exception.class).when(inventoryClient) + .deleteServiceType(Matchers.anyString()); + + String actual = subject.deleteServiceType("srvcId", mockedRequest, mockedResponse); + assertEquals(expected, actual); + + actual = subject.deleteServiceType("srvcId", mockedRequest, mockedResponse); + assertTrue(actual.contains("error")); + + actual = subject.deleteServiceType("srvcId", mockedRequest, mockedResponse); + assertTrue(actual.contains("error")); + } + + @SuppressWarnings("unchecked") + @Test + public final void testViewServiceTypeBlueprintContentById() throws Exception { + Optional<ServiceType> expected = Optional.of(bpItem); + when(inventoryClient.getServiceType(Matchers.anyString())).thenReturn(expected) + .thenThrow(httpException).thenThrow(Exception.class); + + String result = subject.viewServiceTypeBlueprintContentById("typeId", mockedRequest); + assertTrue(result.contains("xyz")); + + result = subject.viewServiceTypeBlueprintContentById("typeId", mockedRequest); + assertTrue(result.contains("error")); + + result = subject.viewServiceTypeBlueprintContentById("typeId", mockedRequest); + assertTrue(result.contains("error")); + } + + @Test + public final void testGetServicesForType() throws Exception { + String[] testTypeIds = {"44234234"}; + ServiceRef expectedSrvc = new ServiceRef("dcae_dtiapi_1902", "432423", "433434"); + Collection<ServiceRef> expectedSrvcIds = new ArrayList<ServiceRef>(); + expectedSrvcIds.add(expectedSrvc); + ServiceRefList expectedSrvcRefList = new ServiceRefList(expectedSrvcIds, 1); + + when(inventoryClient.getServicesForType(Matchers.<ServiceQueryParams>any())) + .thenReturn(expectedSrvcRefList); + String actual = subject.getServicesForType(mockedRequest, testTypeIds); + assertTrue(actual.contains(testTypeIds[0])); + } + + /* + * @Test public final void testGetItemListForPageWrapper() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testGetServicesForType() { + * fail("Not yet implemented"); // TODO } + * + * + * + * @Test public final void testViewServiceTypeBlueprintContentById() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testDeleteServiceType() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testDeleteService() { fail("Not yet implemented"); // + * TODO } + * + * @Test public final void testUpdateServiceTypeBlueprint() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testUploadServiceTypeBlueprint() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testGetAppProperties() { fail("Not yet implemented"); + * // TODO } + * + * @Test public final void testGetOrSetControllerEndpointSelectionLong() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testGetOrSetControllerEndpointSelection() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testGetInventoryClientHttpServletRequest() { + * fail("Not yet implemented"); // TODO } + * + * @Test public final void testGetInventoryClientLong() { + * fail("Not yet implemented"); // TODO } + */ +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java index 0a331e0..050e3eb 100644 --- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockUser.java @@ -2,23 +2,24 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 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. + * 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========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ + package org.onap.ccsdk.dashboard.core; import java.util.Date; @@ -27,60 +28,60 @@ import org.onap.portalsdk.core.domain.User; public class MockUser { - public User mockUser() { + public User mockUser() { - User ePUser = new User(); - ePUser.setOrgId(null); - ePUser.setManagerId(null); - ePUser.setFirstName("test"); - ePUser.setLastName("test"); - ePUser.setMiddleInitial(null); - ePUser.setPhone(null); - ePUser.setFax(null); - ePUser.setCellular(null); - ePUser.setEmail(null); - ePUser.setAddressId(null); - ePUser.setAlertMethodCd(null); - ePUser.setHrid(null); - ePUser.setOrgUserId("guestT"); - ePUser.setOrgCode(null); - ePUser.setAddress1(null); - ePUser.setAddress2(null); - ePUser.setCity(null); - ePUser.setState(null); - ePUser.setZipCode(null); - ePUser.setCountry(null); - ePUser.setOrgManagerUserId(null); - ePUser.setLocationClli(null); - ePUser.setBusinessCountryCode(null); - ePUser.setBusinessCountryName(null); - ePUser.setBusinessUnit(null); - ePUser.setBusinessUnitName(null); - ePUser.setDepartment(null); - ePUser.setDepartmentName(null); - ePUser.setCompanyCode(null); - ePUser.setCompany(null); - ePUser.setZipCodeSuffix(null); - ePUser.setJobTitle(null); - ePUser.setCommandChain(null); - ePUser.setSiloStatus(null); - ePUser.setCostCenter(null); - ePUser.setFinancialLocCode(null); + User ePUser = new User(); + ePUser.setOrgId(null); + ePUser.setManagerId(null); + ePUser.setFirstName("test"); + ePUser.setLastName("test"); + ePUser.setMiddleInitial(null); + ePUser.setPhone(null); + ePUser.setFax(null); + ePUser.setCellular(null); + ePUser.setEmail(null); + ePUser.setAddressId(null); + ePUser.setAlertMethodCd(null); + ePUser.setHrid(null); + ePUser.setOrgUserId("guestT"); + ePUser.setOrgCode(null); + ePUser.setAddress1(null); + ePUser.setAddress2(null); + ePUser.setCity(null); + ePUser.setState(null); + ePUser.setZipCode(null); + ePUser.setCountry(null); + ePUser.setOrgManagerUserId(null); + ePUser.setLocationClli(null); + ePUser.setBusinessCountryCode(null); + ePUser.setBusinessCountryName(null); + ePUser.setBusinessUnit(null); + ePUser.setBusinessUnitName(null); + ePUser.setDepartment(null); + ePUser.setDepartmentName(null); + ePUser.setCompanyCode(null); + ePUser.setCompany(null); + ePUser.setZipCodeSuffix(null); + ePUser.setJobTitle(null); + ePUser.setCommandChain(null); + ePUser.setSiloStatus(null); + ePUser.setCostCenter(null); + ePUser.setFinancialLocCode(null); - ePUser.setLoginId(null); - ePUser.setLoginPwd(null); - Date date = new Date(); - ePUser.setLastLoginDate(date); - ePUser.setActive(true); - ePUser.setInternal(false); - ePUser.setSelectedProfileId(null); - ePUser.setTimeZoneId(null); - ePUser.setOnline(true); - ePUser.setChatId(null); - ePUser.setUserApps(null); - ePUser.setPseudoRoles(null); + ePUser.setLoginId(null); + ePUser.setLoginPwd(null); + Date date = new Date(); + ePUser.setLastLoginDate(date); + ePUser.setActive(true); + ePUser.setInternal(false); + ePUser.setSelectedProfileId(null); + ePUser.setTimeZoneId(null); + ePUser.setOnline(true); + ePUser.setChatId(null); + ePUser.setUserApps(null); + ePUser.setPseudoRoles(null); - ePUser.setId((long) -1); - return ePUser; - } + ePUser.setId((long) -1); + return ePUser; + } } diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java index c251a5c..e211b35 100644 --- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/core/MockitoTestSuite.java @@ -3,7 +3,7 @@ * ============LICENSE_START========================================== * ONAP Portal * =================================================================== - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. * =================================================================== * * Unless otherwise specified, all software contained herein is licensed @@ -38,6 +38,10 @@ */ package org.onap.ccsdk.dashboard.core; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; @@ -51,45 +55,77 @@ import org.mockito.runners.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class MockitoTestSuite { - - public MockHttpServletRequestWrapper mockedRequest = new MockHttpServletRequestWrapper( - Mockito.mock(HttpServletRequest.class)); - public HttpServletResponse mockedResponse = Mockito.mock(HttpServletResponse.class); - - public MockHttpServletRequestWrapper getMockedRequest() { - return mockedRequest; - } - - public HttpServletResponse getMockedResponse() { - return mockedResponse; - } - - public class MockHttpServletRequestWrapper extends HttpServletRequestWrapper { - - HttpSession session = Mockito.mock(HttpSession.class); - - public MockHttpServletRequestWrapper(HttpServletRequest request) { - super(request); - - } - - @Override - public HttpSession getSession() { - - return session; - } - - @Override - public HttpSession getSession(boolean create) { - - return session; - } - - } - - @Test - public void test() - { - assert(true); - } -}
\ No newline at end of file + public MockHttpServletRequestWrapper mockedRequest = + new MockHttpServletRequestWrapper(Mockito.mock(HttpServletRequest.class)); + public HttpServletResponse mockedResponse = Mockito.mock(HttpServletResponse.class); + + public MockHttpServletRequestWrapper getMockedRequest() { + return mockedRequest; + } + + public HttpServletResponse getMockedResponse() { + return mockedResponse; + } + + public class MockHttpServletRequestWrapper extends HttpServletRequestWrapper { + + HashMap<String, String> params = new HashMap<>(); + + HttpSession session = Mockito.mock(HttpSession.class); + + public MockHttpServletRequestWrapper(HttpServletRequest request) { + super(request); + + } + + @Override + public HttpSession getSession() { + return session; + } + + @Override + public HttpSession getSession(boolean create) { + + return session; + } + + @Override + public String getParameter(final String name) { + // if we added one with the given name, return that one + if (params.get(name) != null) { + return (String) params.get(name); + } else { + // otherwise return what's in the original request + return super.getParameter(name); + } + } + + public void addParameter(String name, String value) { + params.put(name, value); + } + + @Override + public Map<String, String[]> getParameterMap() { + return super.getParameterMap(); + } + + @Override + public Enumeration<String> getParameterNames() { + // defaulf impl, should be overridden for an approprivate map of request params + // names + return super.getParameterNames(); + } + + @Override + public String[] getParameterValues(final String name) { + // defaulf impl, should be overridden for an approprivate map of request params + // values + return super.getParameterValues(name); + } + } + + @Test + public void test() { + assert (true); + } +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java index 5f4f737..a5c5cf8 100644 --- a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/CloudifyRestClientImplTest.java @@ -2,38 +2,39 @@ * =============LICENSE_START========================================================= * * ================================================================================= - * Copyright (c) 2019 AT&T Intellectual Property. All rights reserved. + * Copyright (c) 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. + * 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========================================================= * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ECOMP is a trademark and service mark of AT&T Intellectual Property. *******************************************************************************/ package org.onap.ccsdk.dashboard.rest; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.when; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; @@ -42,11 +43,31 @@ import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.onap.ccsdk.dashboard.model.CloudifyErrorCause; +import org.onap.ccsdk.dashboard.model.CloudifyBlueprint; +import org.onap.ccsdk.dashboard.model.CloudifyBlueprintList; +import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenant; +import org.onap.ccsdk.dashboard.model.CloudifyDeployedTenantList; +import org.onap.ccsdk.dashboard.model.CloudifyDeployment; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentList; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateRequest; +import org.onap.ccsdk.dashboard.model.CloudifyDeploymentUpdateResponse; import org.onap.ccsdk.dashboard.model.CloudifyEvent; import org.onap.ccsdk.dashboard.model.CloudifyEventList; import org.onap.ccsdk.dashboard.model.CloudifyEventList.Metadata; +import org.onap.ccsdk.dashboard.model.CloudifyExecution; +import org.onap.ccsdk.dashboard.model.CloudifyExecutionList; +import org.onap.ccsdk.dashboard.model.CloudifyExecutionRequest; +import org.onap.ccsdk.dashboard.model.CloudifyNodeId; +import org.onap.ccsdk.dashboard.model.CloudifyNodeIdList; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstance; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceId; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceIdList; +import org.onap.ccsdk.dashboard.model.CloudifyNodeInstanceList; import org.onap.ccsdk.dashboard.model.CloudifyTenantList; +import org.onap.ccsdk.dashboard.util.DashboardProperties; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; @@ -60,81 +81,396 @@ import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; +@RunWith(PowerMockRunner.class) +@PrepareForTest({DashboardProperties.class}) public class CloudifyRestClientImplTest { - @Mock - RestTemplate mockRest; - - @InjectMocks - CloudifyRestClientImpl subject = - new CloudifyRestClientImpl("https://www.orcl.com/v3.1", "", ""); - - protected final ObjectMapper objectMapper = new ObjectMapper(); - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - objectMapper.registerModule(new Jdk8Module()); - } - - @Test - public final void getEventlogsTest() throws JsonParseException, JsonMappingException, IOException { - String executionId = "123a123a"; - String tenant = "thisTenant"; - List<CloudifyEvent> items = new ArrayList<CloudifyEvent>(); - CloudifyEvent aMockEvent = new CloudifyEvent("dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", - null, "workflow_succeeded", "5f8a2e05-e187-4925-90de-ece9160aa517", "warning", "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4", - "install workflow execution succeeded", "publish_l36bhr", "publish", "cloudify.interfaces.lifecycle.create", - "2019-02-28T23:17:49.228Z", "2019-02-28T23:17:49.700Z", "cloudify_event", "install"); - items.add(aMockEvent); - items.add( - new CloudifyEvent("dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", - null, "workflow_node_event", "5f8a2e05-e187-4925-90de-ece9160aa517", "warning", "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4", - "Starting node", "publish_l36bhr", "publish", "cloudify.interfaces.lifecycle.create", - "2019-02-28T23:17:48.391Z", "2019-02-28T23:17:48.516Z", "cloudify_event", "install")); - - String metaInfo = "metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}"; - Metadata metadata = null; - //metadata = objectMapper.readValue(metaInfo, Metadata.class); - - CloudifyEventList expected = new CloudifyEventList(items, metadata); - - ResponseEntity<CloudifyEventList> response = new ResponseEntity<CloudifyEventList>(expected, HttpStatus.OK); - Mockito.when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), - Matchers.<ParameterizedTypeReference<CloudifyEventList>>any())).thenReturn(response); - CloudifyEventList actual = subject.getEventlogs(executionId, tenant); - - assertTrue(actual.items.size() == 2); - - } - @Test - public final void testGetTenants_GetData() { - // define the entity you want the exchange to return - String tenantsList = "{\"items\": [{\"id\": 1, \"dName\": null, \"name\": \"default_tenant\"}, {\"id\": 2, \"dName\": null, \"name\": \"dyh1b1902\"}], \"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}"; - CloudifyTenantList sampleData = null; - try { - sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class); - } catch (Exception e) { - } - - ResponseEntity<CloudifyTenantList> response = new ResponseEntity<CloudifyTenantList>(sampleData, HttpStatus.OK); - Mockito.when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), - Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any())).thenReturn(response); - - CloudifyTenantList res = subject.getTenants(); - assertNotNull(res); - assertThat(res.items.get(1).name, is("dyh1b1902")); - // Assert.assertEquals(myobjectA, res.get(0)); - } - - @Test(expected = RestClientException.class) - public final void testGetTenants_withException() { - // define the entity you want the exchange to return - Mockito.when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), - Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any())).thenThrow(RestClientException.class); - - subject.getTenants(); - - - } + @Mock + RestTemplate mockRest; + + @InjectMocks + CloudifyRestClientImpl subject = new CloudifyRestClientImpl(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + PowerMockito.mockStatic(DashboardProperties.class); + when(DashboardProperties.getControllerProperty("dev", + DashboardProperties.CONTROLLER_SUBKEY_URL)).thenReturn("https://orcl.com"); + this.subject.init(); + } + + @Test + public final void getEventlogsTest() + throws JsonParseException, JsonMappingException, IOException { + String executionId = "123a123a"; + String tenant = "thisTenant"; + List<CloudifyEvent> items = new ArrayList<CloudifyEvent>(); + CloudifyEvent aMockEvent = new CloudifyEvent( + "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", + "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", null, "workflow_succeeded", + "5f8a2e05-e187-4925-90de-ece9160aa517", "warning", + "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4", "install workflow execution succeeded", + "publish_l36bhr", "publish", "cloudify.interfaces.lifecycle.create", + "2019-02-28T23:17:49.228Z", "2019-02-28T23:17:49.700Z", "cloudify_event", "install"); + items.add(aMockEvent); + items.add(new CloudifyEvent("dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", + "dcae_dtieventproc_idns-k8s-svc-blueprint_02_28_02", null, "workflow_node_event", + "5f8a2e05-e187-4925-90de-ece9160aa517", "warning", + "ctx.7a10e191-f12b-4142-aa5d-6e5766ebb1d4", "Starting node", "publish_l36bhr", + "publish", "cloudify.interfaces.lifecycle.create", "2019-02-28T23:17:48.391Z", + "2019-02-28T23:17:48.516Z", "cloudify_event", "install")); + + String metaInfo = + "metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}"; + Metadata metadata = null; + + CloudifyEventList expected = new CloudifyEventList(items, metadata); + + ResponseEntity<CloudifyEventList> response = + new ResponseEntity<CloudifyEventList>(expected, HttpStatus.OK); + Mockito + .when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyEventList>>any())) + .thenReturn(response); + CloudifyEventList actual = subject.getEventlogs(executionId, tenant); + assertTrue(actual.items.size() == 2); + + } + + @Test + public final void testGetTenants_GetData() { + // define the entity you want the exchange to return + String tenantsList = + "{\"items\": [{\"id\": 1, \"dName\": null, \"name\": \"default_tenant\"}, {\"id\": 2, \"dName\": null, \"name\": \"dyh1b1902\"}], \"metadata\": {\"pagination\": {\"total\": 2, \"offset\": 0, \"size\": 0}}}"; + CloudifyTenantList sampleData = null; + try { + sampleData = objectMapper.readValue(tenantsList, CloudifyTenantList.class); + } catch (Exception e) { + } + + ResponseEntity<CloudifyTenantList> response = + new ResponseEntity<CloudifyTenantList>(sampleData, HttpStatus.OK); + Mockito + .when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any())) + .thenReturn(response); + + CloudifyTenantList res = subject.getTenants(); + assertNotNull(res); + assertThat(res.items.get(1).name, is("dyh1b1902")); + } + + @SuppressWarnings("unchecked") + @Test(expected = RestClientException.class) + public final void testGetTenants_withException() { + // define the entity you want the exchange to return + Mockito + .when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyTenantList>>any())) + .thenThrow(RestClientException.class); + subject.getTenants(); + } + + @Test + public final void testGetNodeInstanceId() { + CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1"); + List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>(); + cfyNodeInstItems.add(cfyNodeInst); + CloudifyNodeInstanceIdList cfyNodeInstList = + new CloudifyNodeInstanceIdList(cfyNodeInstItems, null); + + ResponseEntity<CloudifyNodeInstanceIdList> response = + new ResponseEntity<CloudifyNodeInstanceIdList>(cfyNodeInstList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceIdList>>any())) + .thenReturn(response); + + CloudifyNodeInstanceIdList actualResult = + subject.getNodeInstanceId("deploymentId", "nodeId", "tenant"); + assertTrue(actualResult.items.get(0).id.equals("node_instance_id1")); + } + + @Test + public final void testGetNodeInstanceVersion() { + CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null); + + List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>(); + cfyNodeInstanceItems.add(cfyNodeInstance); + + CloudifyNodeInstanceList cfyNodeInstList = + new CloudifyNodeInstanceList(cfyNodeInstanceItems, null); + + ResponseEntity<CloudifyNodeInstanceList> response = + new ResponseEntity<CloudifyNodeInstanceList>(cfyNodeInstList, HttpStatus.OK); + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceList>>any())) + .thenReturn(response); + + CloudifyNodeInstanceList actualResult = + subject.getNodeInstanceVersion("deploymentId", "nodeId", "tenant"); + assertTrue(actualResult.items.get(0).id.equals("id1")); + } + + @Test + public final void testGetNodeInstanceVersion_blueprint() { + CloudifyNodeId cfyNodeId = new CloudifyNodeId("node_id"); + List<CloudifyNodeId> cfyNodeIdItems = new ArrayList<CloudifyNodeId>(); + cfyNodeIdItems.add(cfyNodeId); + CloudifyNodeIdList cfyNodeIdList = new CloudifyNodeIdList(cfyNodeIdItems, null); + + ResponseEntity<CloudifyNodeIdList> response1 = + new ResponseEntity<CloudifyNodeIdList>(cfyNodeIdList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("nodes"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyNodeIdList>>any())).thenReturn(response1); + + CloudifyNodeInstance cfyNodeInstance = new CloudifyNodeInstance("id1", null); + + List<CloudifyNodeInstance> cfyNodeInstanceItems = new ArrayList<CloudifyNodeInstance>(); + cfyNodeInstanceItems.add(cfyNodeInstance); + + CloudifyNodeInstanceList cfyNodeInstList = + new CloudifyNodeInstanceList(cfyNodeInstanceItems, null); + + ResponseEntity<CloudifyNodeInstanceList> response2 = + new ResponseEntity<CloudifyNodeInstanceList>(cfyNodeInstList, HttpStatus.OK); + when(mockRest.exchange(Matchers.contains("node-instances"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceList>>any())) + .thenReturn(response2); + + CloudifyNodeInstanceList actualResult = + subject.getNodeInstanceVersion("blueprintId", "tenant"); + assertTrue(actualResult.items.get(0).id.equals("id1")); + } + + @Test + public final void testGetNodeInstanceId_blueprint() { + CloudifyNodeId cfyNodeId = new CloudifyNodeId("node_id"); + List<CloudifyNodeId> cfyNodeIdItems = new ArrayList<CloudifyNodeId>(); + cfyNodeIdItems.add(cfyNodeId); + CloudifyNodeIdList cfyNodeIdList = new CloudifyNodeIdList(cfyNodeIdItems, null); + + ResponseEntity<CloudifyNodeIdList> response1 = + new ResponseEntity<CloudifyNodeIdList>(cfyNodeIdList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("nodes"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyNodeIdList>>any())).thenReturn(response1); + + CloudifyNodeInstanceId cfyNodeInst = new CloudifyNodeInstanceId("node_instance_id1"); + List<CloudifyNodeInstanceId> cfyNodeInstItems = new ArrayList<CloudifyNodeInstanceId>(); + cfyNodeInstItems.add(cfyNodeInst); + CloudifyNodeInstanceIdList cfyNodeInstList = + new CloudifyNodeInstanceIdList(cfyNodeInstItems, null); + + ResponseEntity<CloudifyNodeInstanceIdList> response = + new ResponseEntity<CloudifyNodeInstanceIdList>(cfyNodeInstList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("node-instances"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyNodeInstanceIdList>>any())) + .thenReturn(response); + + CloudifyNodeInstanceIdList actualResult = subject.getNodeInstanceId("bpId", "tenant"); + assertTrue(actualResult.items.get(0).id.equals("node_instance_id1")); + } + + @Test + public final void testGetTenantInfoFromDeploy() { + + CloudifyDeployedTenant cldDeplTenant = new CloudifyDeployedTenant("id1", "bp1", "tenant1"); + List<CloudifyDeployedTenant> cldDeplTenantItems = new ArrayList<CloudifyDeployedTenant>(); + cldDeplTenantItems.add(cldDeplTenant); + CloudifyDeployedTenantList cldDeployedTenantList = + new CloudifyDeployedTenantList(cldDeplTenantItems, null); + + ResponseEntity<CloudifyDeployedTenantList> response = + new ResponseEntity<CloudifyDeployedTenantList>(cldDeployedTenantList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("deployments"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyDeployedTenantList>>any())) + .thenReturn(response); + + CloudifyDeployedTenantList actualResults = subject.getTenantInfoFromDeploy("tenant1"); + assertTrue(actualResults.items.get(0).blueprint_id.equals("bp1")); + } + + @Test + public void testGetExecutions() { + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + ResponseEntity<CloudifyExecutionList> response = + new ResponseEntity<CloudifyExecutionList>(cloudifyExecutionList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("deployment_id"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyExecutionList>>any())) + .thenReturn(response); + + CloudifyExecutionList actualResult = subject.getExecutions("deploymentId1", "tenant1"); + assertTrue(actualResult.items.get(0).id.contains("id1")); + } + + @Test + public void testGetExecutionsSummary() { + CloudifyExecution cldExecution = + new CloudifyExecution("successful", "created_at", "install", false, "bp1", "id1", + "tenant1", "error", "execution_id1", null, false, false); + + List<CloudifyExecution> cldExecutionList = new ArrayList<CloudifyExecution>(); + + cldExecutionList.add(cldExecution); + + CloudifyExecutionList cloudifyExecutionList = + new CloudifyExecutionList(cldExecutionList, null); + + ResponseEntity<CloudifyExecutionList> response = + new ResponseEntity<CloudifyExecutionList>(cloudifyExecutionList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("include"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<CloudifyExecutionList>>any())) + .thenReturn(response); + + CloudifyExecutionList actualResult = + subject.getExecutionsSummary("deploymentId1", "tenant1"); + assertTrue(actualResult.items.get(0).id.contains("id1")); + } + + @Test + public void testStartExecution() { + CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install", + false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false); + + Map<String, Object> params = new HashMap<String, Object>(); + params.put("key1", "value1"); + + CloudifyExecutionRequest cfyExecReq = new CloudifyExecutionRequest("deployment_id", + "upgrade", false, false, "tenant1", params); + + when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(), + Matchers.<Class<CloudifyExecution>>any())).thenReturn(cfyExecObj); + + CloudifyExecution actualResult = subject.startExecution(cfyExecReq); + assertTrue(actualResult.status.equals("successful")); + } + + @Test + public void testUpdateDeployment() { + CloudifyDeploymentUpdateRequest cfyDeployUpdateReq = + new CloudifyDeploymentUpdateRequest("deployment_id", "update", false, false, + "node_instance_id1", "4", "1000", "image", 2, "my_container"); + + CloudifyDeploymentUpdateResponse cfyDeployUpdateResp = new CloudifyDeploymentUpdateResponse( + "terminated", "created_at", "update", false, "blueprint_id", "deployment_id", "", "id1", + null, "tenant1", "junit", false, "resource_availability"); + + when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(), + Matchers.<Class<CloudifyDeploymentUpdateResponse>>any())) + .thenReturn(cfyDeployUpdateResp); + + CloudifyDeploymentUpdateResponse actualResult = + subject.updateDeployment(cfyDeployUpdateReq); + assertTrue(actualResult.status.equals("terminated")); + } + + @Test + @Ignore + public void testCancelExecution() { + CloudifyExecution cfyExecObj = new CloudifyExecution("successful", "created_at", "install", + false, "bp1", "id1", "tenant1", "error", "execution_id1", null, false, false); + + Map<String, Object> params = new HashMap<String, Object>(); + params.put("key1", "value1"); + + ResponseEntity<CloudifyExecution> response = + new ResponseEntity<CloudifyExecution>(cfyExecObj, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("executions"), Matchers.eq(HttpMethod.POST), + Matchers.<HttpEntity<?>>any(), Matchers.<Class<CloudifyExecution>>any())) + .thenReturn(response); + + Map<String, String> parameters = new HashMap<String, String>(); + parameters.put("key1", "value1"); + + CloudifyExecution actualResult = + subject.cancelExecution("executionId", parameters, "tenant"); + assertTrue(actualResult.id.equals("execution_id1")); + } + + @Test + @Ignore + public void testGetBlueprint() { + CloudifyBlueprint cldBp = + new CloudifyBlueprint("file1", "description1", "343242", "3423423", "id1", null); + + List<CloudifyBlueprint> items = new ArrayList<CloudifyBlueprint>(); + items.add(cldBp); + + CloudifyBlueprintList.Metadata.Pagination pageObj = + new CloudifyBlueprintList.Metadata.Pagination(1, 0, 1); + + CloudifyBlueprintList.Metadata metadata = new CloudifyBlueprintList.Metadata(pageObj); + + CloudifyBlueprintList cldBpList = new CloudifyBlueprintList(items, metadata); + + ResponseEntity<CloudifyBlueprintList> response = + new ResponseEntity<CloudifyBlueprintList>(cldBpList, HttpStatus.OK); + + doReturn(response).when(mockRest).exchange(Matchers.anyString(), + Matchers.eq(HttpMethod.GET), Matchers.<HttpEntity<?>>any(), + Matchers.<Class<CloudifyBlueprintList>>any()); + + CloudifyBlueprintList actualResult = subject.getBlueprint("id1", "tenant1"); + assertTrue(actualResult.items.get(0).id.equals("id1")); + } + + @Test + @Ignore + public void testGetDeployments() { + + CloudifyDeployment cldDeployment = new CloudifyDeployment("description", "blueprint_id", + "created_at", "updated_at", "id", null, null, null, null, null, null, null, "tenant"); + + List<CloudifyDeployment> cfyDeployItems = new ArrayList<CloudifyDeployment>(); + cfyDeployItems.add(cldDeployment); + + CloudifyDeploymentList.Metadata.Pagination pageObj = + new CloudifyDeploymentList.Metadata.Pagination(1, 0, 1); + CloudifyDeploymentList.Metadata metadata = new CloudifyDeploymentList.Metadata(pageObj); + + CloudifyDeploymentList cldDeployList = new CloudifyDeploymentList(cfyDeployItems, metadata); + + ResponseEntity<CloudifyDeploymentList> response = + new ResponseEntity<CloudifyDeploymentList>(cldDeployList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.contains("deploy"), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), Matchers.<Class<CloudifyDeploymentList>>any())) + .thenReturn(response); + + CloudifyDeploymentList actualResult = subject.getDeployments(); + assertTrue(actualResult.items.get(0).id.equals("id")); + } } diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java new file mode 100644 index 0000000..f90afa9 --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/ConsulRestClientImplTest.java @@ -0,0 +1,212 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.rest; + +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.json.JSONObject; +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.model.ConsulDatacenter; +import org.onap.ccsdk.dashboard.model.ConsulNodeInfo; +import org.onap.ccsdk.dashboard.model.ConsulServiceHealth; +import org.onap.ccsdk.dashboard.model.ConsulServiceInfo; +import org.onap.ccsdk.dashboard.util.DashboardProperties; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({DashboardProperties.class}) +public class ConsulRestClientImplTest { + + @Mock + RestTemplate mockRest; + + @InjectMocks + ConsulRestClientImpl subject = new ConsulRestClientImpl(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + HttpClientErrorException httpException; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + httpException = new HttpClientErrorException(HttpStatus.BAD_REQUEST, "statusText"); + PowerMockito.mockStatic(DashboardProperties.class); + when(DashboardProperties.getControllerProperty("dev", + DashboardProperties.CONTROLLER_SUBKEY_CONSUL_URL)).thenReturn("https://invt.com"); + this.subject.init(); + } + + @After + public void tearDown() throws Exception { + } + + @Test + public final void testGetServiceHealth() { + ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00", + "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing", + "This is a pgaas1_Service_ID health check", + "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n", + "pgaas1_Service_ID", "pgaasServer1", 190199, 199395); + + List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>(); + expectedCnslSrvcHlth.add(consulSrvcHlth); + + ResponseEntity<List<ConsulServiceHealth>> response = + new ResponseEntity<List<ConsulServiceHealth>>(expectedCnslSrvcHlth, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<List<ConsulServiceHealth>>>any())) + .thenReturn(response); + + List<ConsulServiceHealth> actualCnslSrvcHlth = subject.getServiceHealth("dc1", "srvc1"); + assertTrue(actualCnslSrvcHlth.get(0).node.equals("cjlvmcnsl00")); + } + + @Test + @Ignore + public final void testGetServices() { + List<String> srvcIps = new ArrayList<String>(); + srvcIps.add("135.91.224.136"); + srvcIps.add("135.91.224.138"); + ConsulServiceInfo consulSrvcInfo = new ConsulServiceInfo("pgaasServer1", srvcIps); + + List<ConsulServiceInfo> expectedCnslSrvcs = new ArrayList<ConsulServiceInfo>(); + expectedCnslSrvcs.add(consulSrvcInfo); + + // ResponseEntity<Map<String, Object>> response = new ResponseEntity<Map<String, + // Object>>(consulSrvcInfo); + + subject.getServices("dc1"); + } + + @Test + public final void testGetNodes() { + ConsulNodeInfo cnslNode = new ConsulNodeInfo("a2788806-6e2e-423e-8ee7-6cad6f3d3de6", + "cjlvmcnsl00", "10.170.8.13", null, null, 6, 17980); + + List<ConsulNodeInfo> cnslNodeList = new ArrayList<ConsulNodeInfo>(); + cnslNodeList.add(cnslNode); + + ResponseEntity<List<ConsulNodeInfo>> response = + new ResponseEntity<List<ConsulNodeInfo>>(cnslNodeList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<List<ConsulNodeInfo>>>any())).thenReturn(response); + + List<ConsulNodeInfo> actualNodeList = subject.getNodes("dc1"); + assertTrue(actualNodeList.get(0).node.equals("cjlvmcnsl00")); + + } + + @Test + public final void testGetNodeServicesHealth() { + ConsulServiceHealth consulSrvcHlth = new ConsulServiceHealth("cjlvmcnsl00", + "service:pgaas1_Service_ID", "Service 'pgaasServer1' check", "passing", + "This is a pgaas1_Service_ID health check", + "HTTP GET http://srvc.com:8000/healthcheck/status: 200 OK Output: { \"output\": \"Thu Apr 20 19:53:01 UTC 2017|INFO|masters=1 pgaas1.com|secondaries=0 |maintenance= |down=1 pgaas2.com| \" }\n", + "pgaas1_Service_ID", "pgaasServer1", 190199, 199395); + + List<ConsulServiceHealth> expectedCnslSrvcHlth = new ArrayList<ConsulServiceHealth>(); + expectedCnslSrvcHlth.add(consulSrvcHlth); + + ResponseEntity<List<ConsulServiceHealth>> response = + new ResponseEntity<List<ConsulServiceHealth>>(expectedCnslSrvcHlth, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<List<ConsulServiceHealth>>>any())) + .thenReturn(response); + + List<ConsulServiceHealth> actualNodeHlthList = + subject.getNodeServicesHealth("dc1", "nodeId1"); + assertTrue(actualNodeHlthList.get(0).node.equals("cjlvmcnsl00")); + } + + @Test + public final void testGetDatacenters() { + ConsulDatacenter cnslDc = new ConsulDatacenter("dc1"); + + List<ConsulDatacenter> cnslDcList = new ArrayList<ConsulDatacenter>(); + cnslDcList.add(cnslDc); + List<String> dcItems = new ArrayList<String>(); + dcItems.add("dc1"); + + ResponseEntity<List<String>> response = + new ResponseEntity<List<String>>(dcItems, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<List<String>>>any())).thenReturn(response); + List<ConsulDatacenter> actualDcList = subject.getDatacenters(); + assertTrue(actualDcList.get(0).name.equals("dc1")); + } + + @Test + @Ignore + public final void testRegisterService() { + fail("Not yet implemented"); // TODO + } + + @Test + public final void testDeregisterService() { + + JSONObject jsonResp = new JSONObject(); + + ResponseEntity<JSONObject> result = new ResponseEntity<JSONObject>(jsonResp, HttpStatus.OK); + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<JSONObject>>any())) + .thenReturn(result); + + int actualCode = subject.deregisterService("service1"); + assertTrue(actualCode == 200); + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java new file mode 100644 index 0000000..7bd085b --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/DeploymentHandlerClientImplTest.java @@ -0,0 +1,366 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.rest; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.stream.Stream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.onap.ccsdk.dashboard.exceptions.BadRequestException; +import org.onap.ccsdk.dashboard.exceptions.DeploymentNotFoundException; +import org.onap.ccsdk.dashboard.exceptions.DownstreamException; +import org.onap.ccsdk.dashboard.exceptions.ServerErrorException; +import org.onap.ccsdk.dashboard.exceptions.ServiceAlreadyExistsException; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentLink; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentRequest; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponse; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentResponseLinks; +import org.onap.ccsdk.dashboard.model.deploymenthandler.DeploymentsListResponse; +import org.onap.ccsdk.dashboard.util.DashboardProperties; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.HttpServerErrorException; +import org.springframework.web.client.RestTemplate; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({DashboardProperties.class}) +public class DeploymentHandlerClientImplTest { + + @Mock + RestTemplate mockRest; + + @InjectMocks + DeploymentHandlerClientImpl subject; + + @Before + public void setUp() throws Exception { + PowerMockito.mockStatic(DashboardProperties.class); + when(DashboardProperties.getControllerProperty("dev", + DashboardProperties.CONTROLLER_SUBKEY_DHANDLER_URL)).thenReturn("https://dplh.com"); + this.subject.init(); + + } + + @After + public void tearDown() throws Exception { + } + + @Test + public final void testGetDeployments() { + Collection<DeploymentLink> expectedDeplRefs = new ArrayList<DeploymentLink>(); + expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl1")); + expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl11")); + + DeploymentsListResponse expectedDeplList = + new DeploymentsListResponse("req1", expectedDeplRefs); + + ResponseEntity<DeploymentsListResponse> response = + new ResponseEntity<DeploymentsListResponse>(expectedDeplList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentsListResponse>>any())) + .thenReturn(response); + + Stream<DeploymentLink> actualResult = subject.getDeployments(); + assertTrue(actualResult.findFirst().get().getHref().contains("dpl1")); + } + + @Test + public final void testGetDeploymentsString() { + Collection<DeploymentLink> expectedDeplRefs = new ArrayList<DeploymentLink>(); + expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl1")); + expectedDeplRefs.add(new DeploymentLink("http://dplh.com/dpl11")); + + DeploymentsListResponse expectedDeplList = + new DeploymentsListResponse("req1", expectedDeplRefs); + + ResponseEntity<DeploymentsListResponse> response = + new ResponseEntity<DeploymentsListResponse>(expectedDeplList, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentsListResponse>>any())) + .thenReturn(response); + + Stream<DeploymentLink> actualResult = subject.getDeployments("serviceTypeId"); + assertTrue(actualResult.findFirst().get().getHref().contains("dpl1")); + } + + @Test + public final void testPutDeployment() throws Exception { + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + DeploymentResponseLinks newDeplItemLink = + new DeploymentResponseLinks("selfUrl", "statusUrl"); + DeploymentResponse expectedDeplItem = new DeploymentResponse("req1", newDeplItemLink); + + ResponseEntity<DeploymentResponse> response = + new ResponseEntity<DeploymentResponse>(expectedDeplItem, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())).thenReturn(response); + + DeploymentResponse actualResponse = subject.putDeployment("dpl12", "tenant12", deplReq); + assertTrue(actualResponse.getRequestId().equals("req1")); + } + + @Test(expected = DownstreamException.class) + public final void testPutDeployment_downstreamError() throws Exception { + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.BAD_GATEWAY, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.putDeployment("dpl12", "tenant12", deplReq); + } + + @Test(expected = BadRequestException.class) + public final void testPutDeployment_badReqError() throws Exception { + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpClientErrorException httpException = + new HttpClientErrorException(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.putDeployment("dpl12", "tenant12", deplReq); + } + + @Test(expected = ServiceAlreadyExistsException.class) + public final void testPutDeployment_srvcExistError() throws Exception { + + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpClientErrorException httpException = + new HttpClientErrorException(HttpStatus.CONFLICT, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.putDeployment("dpl12", "tenant12", deplReq); + } + + @Test(expected = ServerErrorException.class) + public final void testPutDeployment_srvcError() throws Exception { + + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.putDeployment("dpl12", "tenant12", deplReq); + } + + @Test + public final void testUpdateDeployment() throws Exception { + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + DeploymentResponseLinks newDeplItemLink = + new DeploymentResponseLinks("selfUrl", "statusUrl"); + DeploymentResponse expectedDeplItem = new DeploymentResponse("req1", newDeplItemLink); + + ResponseEntity<DeploymentResponse> response = + new ResponseEntity<DeploymentResponse>(expectedDeplItem, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())).thenReturn(response); + + DeploymentResponse actualResponse = subject.updateDeployment("dpl12", "tenant12", deplReq); + assertTrue(actualResponse.getRequestId().equals("req1")); + } + + @Test(expected = DownstreamException.class) + public final void testUpdateDeployment_downstreamError() throws Exception { + + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.BAD_GATEWAY, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.updateDeployment("dpl12", "tenant12", deplReq); + + } + + @Test(expected = BadRequestException.class) + public final void testUpdateDeployment_badReqError() throws Exception { + + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpClientErrorException httpException = + new HttpClientErrorException(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.updateDeployment("dpl12", "tenant12", deplReq); + + } + + @Test(expected = ServiceAlreadyExistsException.class) + public final void testUpdateDeployment_srvcExistError() throws Exception { + + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpClientErrorException httpException = + new HttpClientErrorException(HttpStatus.CONFLICT, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.updateDeployment("dpl12", "tenant12", deplReq); + + } + + @Test(expected = ServerErrorException.class) + public final void testUpdateDeployment_srvcError() throws Exception { + + DeploymentRequest deplReq = new DeploymentRequest("serviceTypeId", null); + + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.updateDeployment("dpl12", "tenant12", deplReq); + + } + + @Test + public final void testDeleteDeployment() throws Exception { + DeploymentResponseLinks newDeplItemLink = + new DeploymentResponseLinks("selfUrl", "statusUrl"); + DeploymentResponse expectedDeplItem = new DeploymentResponse("req1", newDeplItemLink); + + ResponseEntity<DeploymentResponse> response = + new ResponseEntity<DeploymentResponse>(expectedDeplItem, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())).thenReturn(response); + + subject.deleteDeployment("deploymentId", "tenant"); + } + + @Test(expected = ServerErrorException.class) + public final void testDeleteDeployment_serverError() throws Exception { + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.INTERNAL_SERVER_ERROR, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.deleteDeployment("deploymentId", "tenant"); + } + + @Test(expected = DeploymentNotFoundException.class) + public final void testDeleteDeployment_notFoundError() throws Exception { + + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.NOT_FOUND, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.deleteDeployment("deploymentId", "tenant"); + } + + @Test(expected = BadRequestException.class) + public final void testDeleteDeployment_badReqError() throws Exception { + + HttpClientErrorException httpException = + new HttpClientErrorException(HttpStatus.UNSUPPORTED_MEDIA_TYPE, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.deleteDeployment("deploymentId", "tenant"); + } + + @Test(expected = DownstreamException.class) + public final void testDeleteDeployment_downstreamError() throws Exception { + + HttpServerErrorException httpException = + new HttpServerErrorException(HttpStatus.BAD_GATEWAY, "statusText"); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<DeploymentResponse>>any())) + .thenThrow(httpException); + + subject.deleteDeployment("deploymentId", "tenant"); + } + +} diff --git a/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java new file mode 100644 index 0000000..d4c5e14 --- /dev/null +++ b/ccsdk-app-common/src/test/java/org/onap/ccsdk/dashboard/rest/RestInventoryClientImplTest.java @@ -0,0 +1,361 @@ +/******************************************************************************* + * =============LICENSE_START========================================================= + * + * ================================================================================= + * Copyright (c) 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========================================================= + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + *******************************************************************************/ + +package org.onap.ccsdk.dashboard.rest; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Optional; +import java.util.stream.Stream; + +import org.junit.After; +import org.junit.Before; +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Matchers; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.ccsdk.dashboard.model.inventory.ApiResponseMessage; +import org.onap.ccsdk.dashboard.model.inventory.Service; +import org.onap.ccsdk.dashboard.model.inventory.ServiceList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceQueryParams; +import org.onap.ccsdk.dashboard.model.inventory.ServiceRef; +import org.onap.ccsdk.dashboard.model.inventory.ServiceRefList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceType; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeList; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeQueryParams; +import org.onap.ccsdk.dashboard.model.inventory.ServiceTypeRequest; +import org.onap.ccsdk.dashboard.util.DashboardProperties; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module; + +@RunWith(PowerMockRunner.class) +@PrepareForTest({DashboardProperties.class}) +public class RestInventoryClientImplTest { + + @Mock + RestTemplate mockRest; + + @InjectMocks + RestInventoryClientImpl subject = new RestInventoryClientImpl(); + + protected final ObjectMapper objectMapper = new ObjectMapper(); + + ServiceList deplList = null; + ServiceList deplListNext = null; + Service deplItem = null; + + ServiceType bpItem = null; + ServiceTypeList bpList = null; + ServiceTypeList bpListNext = null; + + ServiceTypeRequest bpUploadItem = null; + + @Before + public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); + objectMapper.registerModule(new Jdk8Module()); + getExpectedBueprints(); + getExpectedDeployments(); + PowerMockito.mockStatic(DashboardProperties.class); + when(DashboardProperties.getControllerProperty("dev", + DashboardProperties.CONTROLLER_SUBKEY_INVENTORY_URL)).thenReturn("https://invt.com"); + this.subject.init(); + } + + @After + public void tearDown() throws Exception { + } + + public void getExpectedDeployments() + throws JsonParseException, JsonMappingException, IOException { + deplItem = new Service("dcae_dtiapi_1902", null, "1552335532348", "1552335532348", null, + "dummyVnfId", null, "dummyVnfType", "dummyLocation", "dcae_dtiapi_1902", null); + Collection<Service> items = new ArrayList<Service>(); + items.add(deplItem); + + String pageLinks = + "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}"; + String pageLinks2 = "{\"previousLink\":null,\"nextLink\":null}"; + + ServiceList.PaginationLinks paginationLinks = + objectMapper.readValue(pageLinks, ServiceList.PaginationLinks.class); + ServiceList.PaginationLinks paginationLinks2 = + objectMapper.readValue(pageLinks2, ServiceList.PaginationLinks.class); + + int totalCount = 2; + deplList = new ServiceList(items, totalCount, paginationLinks); + deplListNext = new ServiceList(items, totalCount, paginationLinks2); + } + + public void getExpectedBueprints() + throws JsonParseException, JsonMappingException, IOException { + bpItem = new ServiceType.Builder("xyz1731", "xyz1731-helm-1906", 1906, + "tosca_definitions_version: cloudify_dsl_1_3", "", "app1", "comp1").build(); + Collection<ServiceType> items = new ArrayList<ServiceType>(); + items.add(bpItem); + + String pageLinks = + "{\"previousLink\":null,\"nextLink\":{\"rel\":\"next\",\"href\":\"https://invt.com:30123/dcae-services/?offset=25\"}}"; + String pageLinks2 = "{\"previousLink\":null,\"nextLink\":null}"; + ServiceTypeList.PaginationLinks paginationLinks = + objectMapper.readValue(pageLinks, ServiceTypeList.PaginationLinks.class); + ServiceTypeList.PaginationLinks paginationLinks2 = + objectMapper.readValue(pageLinks2, ServiceTypeList.PaginationLinks.class); + + int totalCount = 2; + bpList = new ServiceTypeList(items, totalCount, paginationLinks); + bpListNext = new ServiceTypeList(items, totalCount, paginationLinks2); + } + + @Test + @Ignore + public final void testInit() { + fail("Not yet implemented"); // TODO + } + + @Test + public final void testGetServiceTypes() { + /* + * String serviceTypeStr = + * "{\"paginationLinks\":{\"previousLink\":null,\"nextLink\":null}},\"totalCount\":32,\"items\":[{\"owner\":\"xyz1731\",\"typeName\":\"xyz1731-helm-1906\",\"typeVersion\":1906,\"blueprintTemplate\":\"tosca_definitions_version: cloudify_dsl_1_3\\nimports:\\n - http://www.getcloudify.org/spec/cloudify/4.2/types.yaml\\n - http://dockercentral.it.att.com:8093/nexus/repository/rawcentral/com.att.dcae.controller/type_files/helm/3.0.1/helm-type.yaml\\ninputs:\\n deployment-description:\\n default: ''\\n chart-name:\\n default: ''\\n tiller-server:\\n default: ''\\n tiller-server-port:\\n default: ''\\n namespace:\\n default: ''\\n chart-repo-url:\\n default: http://32.68.14.161/charts\\n chart-version :\\n default: ''\\n config-url:\\n default: ''\\n config-format:\\n default: ''\\n tls-enable:\\n description: enable helm TSL\\n type: boolean\\n default: false\\n config-dir:\\n description: config dir\\n type: string\\n default: '/opt/manager/resources/'\\n stable-repo-url:\\n description: URL for stable repository\\n type: string\\n default: 'http://32.68.14.161/stable'\\nnode_templates:\\n ecompcomponent:\\n type: onap.nodes.component\\n properties:\\n tiller-server-ip: { get_input: tiller-server }\\n tiller-server-port: { get_input: tiller-server-port }\\n component-name: { get_input: chart-name }\\n chart-repo-url: { concat: [ 'http://', { get_secret: controller_helm_user }, ':', { get_secret: controller_helm_password }, '@', { get_input: chart-repo-url } ] }\\n chart-version: { get_input: chart-version }\\n namespace: { get_input: namespace }\\n config-url: { concat: [ 'http://', { get_secret: controller_helm_user }, ':', { get_secret: controller_helm_password }, '@', { get_input: config-url } ] }\\n config-format: { get_input: config-format}\\n tls-enable: { get_input: tls-enable}\\n ca: { get_secret: ca_value}\\n cert: { get_secret: cert_value}\\n key: { get_secret: key_value}\\n config-dir: { get_input: config-dir}\\n stable-repo-url: { concat: [ 'http://', { get_secret: controller_helm_user }, ':', { get_secret: controller_helm_password }, '@', { get_input: stable-repo-url } ] }\\noutputs:\\n ecompcomponent-helm-output:\\n description: helm value and helm history\\n value:\\n helm-value: { get_attribute: [ecompcomponent, current-helm-value] }\\n helm-history: { get_attribute: [ecompcomponent, helm-history] }\",\"serviceIds\":[],\"vnfTypes\":[],\"serviceLocations\":[],\"asdcServiceId\":\"\",\"asdcResourceId\":\"\",\"asdcServiceURL\":null,\"application\":\"ECOMP\",\"component\":\"controller\",\"typeId\":\"72b8577a-5043-43ab-9aa5-6808b8f53967\",\"selfLink\":{\"rel\":\"self\",\"href\":\"https://ecompc-invt-dev-s5.ecomp.idns.cip.att.com:30123/dcae-service-types/72b8577a-5043-43ab-9aa5-6808b8f53967\"},\"created\":1551214264536,\"deactivated\":null}]" + * ; ServiceTypeList sampleData = null; try { sampleData = + * objectMapper.readValue(serviceTypeStr, ServiceTypeList.class); } catch + * (Exception e) { } + */ + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> expectedResult = items.stream(); + + ResponseEntity<ServiceTypeList> response = + new ResponseEntity<ServiceTypeList>(bpList, HttpStatus.OK); + + ResponseEntity<ServiceTypeList> response2 = + new ResponseEntity<ServiceTypeList>(bpListNext, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<ServiceTypeList>>any())).thenReturn(response) + .thenReturn(response2); + + Stream<ServiceType> actualResult = subject.getServiceTypes(); + assertNotNull(actualResult); + assertTrue(expectedResult.count() == actualResult.count()); + } + + @Test + public final void testGetServiceTypesServiceTypeQueryParams() { + ServiceTypeQueryParams qryParms = new ServiceTypeQueryParams.Builder() + .asdcResourceId("asdcResourceId").asdcServiceId("asdcServiceId").onlyActive(true) + .onlyLatest(false).serviceId("serviceId").serviceLocation("serviceLocation") + .typeName("typeName").vnfType("vnfType").build(); + Collection<ServiceType> items = bpList.items; + Stream<ServiceType> expectedResult = items.stream(); + + ResponseEntity<ServiceTypeList> response = + new ResponseEntity<ServiceTypeList>(bpList, HttpStatus.OK); + + ResponseEntity<ServiceTypeList> response2 = + new ResponseEntity<ServiceTypeList>(bpListNext, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<ServiceTypeList>>any())).thenReturn(response) + .thenReturn(response2); + + Stream<ServiceType> actualResult = subject.getServiceTypes(qryParms); + assertNotNull(actualResult); + assertTrue(expectedResult.count() == actualResult.count()); + } + + @Test + public final void testGetServiceType() { + Optional<ServiceType> expectedResult = Optional.of(bpItem); + + ResponseEntity<ServiceType> response = + new ResponseEntity<ServiceType>(bpItem, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceType>>any())) + .thenReturn(response); + + Optional<ServiceType> actualResult = subject.getServiceType("432432423"); + assertTrue(expectedResult.get().getTypeName().equals(actualResult.get().getTypeName())); + } + + @Test + public final void testAddServiceTypeServiceType() { + + when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(), + Matchers.<Class<ServiceType>>any())).thenReturn(bpItem); + + ServiceType actualResult = subject.addServiceType(bpItem); + assertTrue(actualResult.getTypeName().contains("xyz")); + } + + @Test + public final void testAddServiceTypeServiceTypeRequest() { + ServiceTypeRequest srvcReq = ServiceTypeRequest.from(bpItem); + + when(mockRest.postForObject(Matchers.anyString(), Matchers.<HttpEntity<?>>any(), + Matchers.<Class<ServiceType>>any())).thenReturn(bpItem); + + ServiceType actualResult = subject.addServiceType(srvcReq); + assertTrue(actualResult.getTypeName().contains("xyz")); + } + + @Test + public final void testDeleteServiceType() throws Exception { + ResponseEntity<ApiResponseMessage> response = + new ResponseEntity<ApiResponseMessage>(HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<ApiResponseMessage>>any())).thenReturn(response); + + subject.deleteServiceType("4243234"); + } + + @Test + public final void testGetServices() { + + Collection<Service> items = deplList.items; + Stream<Service> expectedResult = items.stream(); + + ResponseEntity<ServiceList> response = + new ResponseEntity<ServiceList>(deplList, HttpStatus.OK); + + ResponseEntity<ServiceList> response2 = + new ResponseEntity<ServiceList>(deplListNext, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceList>>any())) + .thenReturn(response).thenReturn(response2); + + Stream<Service> actualResult = subject.getServices(); + assertNotNull(actualResult); + assertTrue(expectedResult.count() == actualResult.count()); + + } + + @Test + public final void testGetServicesForType() { + ResponseEntity<ServiceList> response = + new ResponseEntity<ServiceList>(deplList, HttpStatus.OK); + + ResponseEntity<ServiceList> response2 = + new ResponseEntity<ServiceList>(deplListNext, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceList>>any())) + .thenReturn(response).thenReturn(response2); + ServiceQueryParams qryParms = new ServiceQueryParams.Builder().typeId("typeId").build(); + + ServiceRefList actualResult = subject.getServicesForType(qryParms); + assertTrue(actualResult.items.size() == 2); + ServiceRef actualSrvcItem = (ServiceRef) actualResult.items.toArray()[0]; + assertTrue(actualSrvcItem.getServiceId().contains("dtiapi")); + + } + + @Test + public final void testGetServicesServiceQueryParams() { + ServiceQueryParams qryParms = new ServiceQueryParams.Builder().typeId("typeId") + .vnfId("vnfId").vnfLocation("vnfLocation").vnfType("vnfType") + .componentType("componentType").shareable(false).created("43443423").build(); + + Collection<Service> items = deplList.items; + Stream<Service> expectedResult = items.stream(); + + ResponseEntity<ServiceList> response = + new ResponseEntity<ServiceList>(deplList, HttpStatus.OK); + + ResponseEntity<ServiceList> response2 = + new ResponseEntity<ServiceList>(deplListNext, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<ServiceList>>any())) + .thenReturn(response).thenReturn(response2); + + Stream<Service> actualResult = subject.getServices(qryParms); + assertTrue(expectedResult.count() == actualResult.count()); + } + + @Test + public final void testGetService() { + Optional<Service> expectedResult = Optional.of(deplItem); + + ResponseEntity<Service> response = new ResponseEntity<Service>(deplItem, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.GET), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<Service>>any())) + .thenReturn(response); + + Optional<Service> actualResult = subject.getService("432432423"); + assertTrue( + expectedResult.get().getDeploymentRef().equals(actualResult.get().getDeploymentRef())); + } + + @Test + public final void testPutService() { + + ResponseEntity<Service> response = new ResponseEntity<Service>(deplItem, HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.PUT), + Matchers.<HttpEntity<?>>any(), Matchers.<ParameterizedTypeReference<Service>>any())) + .thenReturn(response); + + subject.putService("423423", deplItem); + } + + @Test + public final void testDeleteService() throws Exception { + ResponseEntity<ApiResponseMessage> response = + new ResponseEntity<ApiResponseMessage>(HttpStatus.OK); + + when(mockRest.exchange(Matchers.anyString(), Matchers.eq(HttpMethod.DELETE), + Matchers.<HttpEntity<?>>any(), + Matchers.<ParameterizedTypeReference<ApiResponseMessage>>any())).thenReturn(response); + + subject.deleteService("4243234"); + } + +} |