From f23a0c589f2519947cdeb286a7817bfa20f0b674 Mon Sep 17 00:00:00 2001 From: wejs Date: Fri, 26 Jan 2018 14:23:41 +0100 Subject: Sonar fixes in RestServiceNode Fixes inlude changes in other files where needed Test coverage provided Change-Id: Id079bb9c5e5596efb11809b3185bdde8edb11fd2 Issue-ID: APPC-525 Signed-off-by: wejs --- .../controller/executorImpl/RestExecutorTest.java | 183 +++++++++++++++++++++ .../appc/flow/executor/node/RestExecutorTest.java | 103 ------------ .../flow/executor/node/TestRestServiceNode.java | 17 +- 3 files changed, 187 insertions(+), 116 deletions(-) create mode 100644 appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/executorImpl/RestExecutorTest.java delete mode 100644 appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/RestExecutorTest.java (limited to 'appc-config/appc-flow-controller/provider/src/test') diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/executorImpl/RestExecutorTest.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/executorImpl/RestExecutorTest.java new file mode 100644 index 000000000..9ed2ec317 --- /dev/null +++ b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/controller/executorImpl/RestExecutorTest.java @@ -0,0 +1,183 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP : APPC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Copyright (C) 2017 Amdocs + * ============================================================================= + * 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. + * + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + * ============LICENSE_END========================================================= + */ + +package org.onap.appc.flow.controller.executorImpl; + +import static javax.ws.rs.core.Response.Status.FORBIDDEN; +import static javax.ws.rs.core.Response.Status.OK; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.when; + +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; +import java.net.URI; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; +import javax.ws.rs.HttpMethod; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.Spy; +import org.onap.appc.flow.controller.data.Transaction; + +public class RestExecutorTest { + + private static final String ANY = "notNullString"; + private static final String REST_RESPONSE = "restResponse"; + + private Transaction transaction; + private Map outputMessage = new HashMap<>(); + + @Spy + private RestExecutor restExecutor = new RestExecutor(); + @Mock + private Client client; + @Mock + private WebResource webResource; + @Mock + private WebResource.Builder webResourceBuilder; + @Mock + private ClientResponse clientResponse; + + + @Before + public void setUp() { + transaction = new Transaction(); + transaction.setuId(ANY); + transaction.setPswd(ANY); + transaction.setExecutionEndPoint(ANY); + transaction.setPayload(ANY); + + MockitoAnnotations.initMocks(this); + doReturn(client).when(restExecutor).createClient(any()); + when(client.resource(any(URI.class))).thenReturn(webResource); + + when(webResource.accept(anyString())).thenReturn(webResourceBuilder); + when(webResource.type(anyString())).thenReturn(webResourceBuilder); + + when(webResourceBuilder.get(ClientResponse.class)).thenReturn(clientResponse); + when(webResourceBuilder.post(ClientResponse.class, ANY)).thenReturn(clientResponse); + when(webResourceBuilder.put(ClientResponse.class, ANY)).thenReturn(clientResponse); + when(webResource.delete(ClientResponse.class)).thenReturn(clientResponse); + + when(clientResponse.getStatus()).thenReturn(OK.getStatusCode()); + when(clientResponse.getEntity(String.class)).thenReturn(OK.getReasonPhrase()); + } + + @Test + public void checkClientResponse_whenHTTPMethodIsGET() throws Exception { + + transaction.setExecutionRPC(HttpMethod.GET); + + outputMessage = restExecutor.execute(transaction, null); + + assertResponseOK(); + } + + @Test + public void checkClientResponse_whenHTTPMethodIsPOST() throws Exception { + + transaction.setExecutionRPC(HttpMethod.POST); + + outputMessage = restExecutor.execute(transaction, null); + + assertResponseOK(); + } + + @Test + public void checkClientResponse_whenHTTPMethodIsPUT() throws Exception { + + transaction.setExecutionRPC(HttpMethod.PUT); + + outputMessage = restExecutor.execute(transaction, null); + + assertResponseOK(); + } + + @Test + public void checkClientResponse_whenHTTPMethodIsDELETE() throws Exception { + + transaction.setExecutionRPC(HttpMethod.DELETE); + + outputMessage = restExecutor.execute(transaction, null); + + assertResponseOK(); + } + + @Test(expected=Exception.class) + public void checkClienResponse_whenStatusNOK() throws Exception { + try { + when(clientResponse.getStatus()).thenReturn(FORBIDDEN.getStatusCode()); + when(clientResponse.getEntity(String.class)).thenReturn(FORBIDDEN.getReasonPhrase()); + transaction.setExecutionRPC(HttpMethod.GET); + + outputMessage = restExecutor.execute(transaction, null); + + } catch(Exception e) { + assertResponseNOK(e); + throw e; + } + } + + @Test(expected=Exception.class) + public void checkIfExceptionIsThrown_whenHTTPMethodIsNotSupported() throws Exception { + try { + transaction.setExecutionRPC(HttpMethod.HEAD); + + outputMessage = restExecutor.execute(transaction, null); + + } finally { + assertNotSupportedHTTPMethod(); + } + } + + private void assertResponseOK() { + assertFalse("Output Message is empty", outputMessage.isEmpty()); + assertTrue("Output Message does not contain " + REST_RESPONSE, outputMessage.containsKey(REST_RESPONSE)); + assertTrue("restResponse is not " + OK.getReasonPhrase(), + (OK.getReasonPhrase()).equals(outputMessage.get(REST_RESPONSE))); + assertTrue("HTTP_Response in NOK", transaction.getResponses().stream() + .anyMatch(response -> Integer.toString(OK.getStatusCode()).equals(response.getResponseCode()))); + } + + private void assertResponseNOK(Exception e) { + assertTrue("Output Message is not empty as it should", outputMessage.isEmpty()); + assertTrue("Expected HTTP error code: " + FORBIDDEN.getStatusCode() + " is not present", + e.getCause().getMessage().contains(Integer.toString(FORBIDDEN.getStatusCode()))); + } + + private void assertNotSupportedHTTPMethod() { + assertTrue("Output Message is not empty as it should", outputMessage.isEmpty()); + assertTrue("HTTP Method: " + transaction.getExecutionRPC() + " is supported but was not handled", + Stream.of(HttpMethod.GET, HttpMethod.POST, HttpMethod.PUT, HttpMethod.DELETE) + .noneMatch(httpMethod -> httpMethod.equals(transaction.getExecutionRPC()))); + } +} diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/RestExecutorTest.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/RestExecutorTest.java deleted file mode 100644 index 11ddbe024..000000000 --- a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/RestExecutorTest.java +++ /dev/null @@ -1,103 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP : APPC - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Copyright (C) 2017 Amdocs - * ============================================================================= - * 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. - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - * ============LICENSE_END========================================================= - */ - -package org.onap.appc.flow.executor.node; - -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.net.URI; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; - -import javax.net.ssl.SSLContext; -import javax.ws.rs.core.MediaType; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.onap.appc.flow.controller.executorImpl.RestExecutor; -import org.powermock.api.mockito.PowerMockito; - -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; - -public class RestExecutorTest { - - - private static final String URL = null; - - @Mock - private DefaultClientConfig clientConfig; - - @Mock - private com.sun.jersey.api.client.WebResource webResource; - - @InjectMocks - private Client client; - @Mock - private ClientResponse res; - @Mock - URI resourceUri; -@Mock -RestExecutor restEx; - @BeforeClass - public static void setUpBeforeClass() throws Exception { - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - } - - @Before - public void setUp() throws Exception { - clientConfig = Mockito.mock(DefaultClientConfig.class); - Client mockClient = Client.create(); - client = Client.create(clientConfig); - doReturn(mockClient).when(client).create(); - webResource= mockClient.resource(URL); - doReturn(webResource).when(mockClient).resource(URL); - when(webResource.get((Class) any())).thenReturn("OK") ; - } - - @After - public void tearDown() throws Exception { - } - - - - - -} diff --git a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java index 802601e5c..eb5bfd2fe 100644 --- a/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java +++ b/appc-config/appc-flow-controller/provider/src/test/java/org/onap/appc/flow/executor/node/TestRestServiceNode.java @@ -22,26 +22,17 @@ */ package org.onap.appc.flow.executor.node; -import java.io.InputStream; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Properties; - -import org.junit.Before; import org.junit.Test; import org.onap.appc.flow.controller.data.Transaction; import org.onap.appc.flow.controller.executorImpl.RestExecutor; -import org.onap.appc.flow.controller.interfaceData.ActionIdentifier; -import org.onap.appc.flow.controller.interfaceData.InventoryInfo; -import org.onap.appc.flow.controller.interfaceData.RequestInfo; -import org.onap.appc.flow.controller.interfaceData.Vm; -import org.onap.appc.flow.controller.interfaceData.VnfInfo; -import org.onap.appc.flow.controller.interfaceData.Vnfcslist; import org.onap.appc.flow.controller.node.FlowControlNode; import org.onap.appc.flow.controller.node.RestServiceNode; import org.onap.appc.flow.controller.utils.FlowControllerConstants; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import java.util.HashMap; +import java.util.Map; + public class TestRestServiceNode { @Test(expected=Exception.class) @@ -82,7 +73,7 @@ public class TestRestServiceNode { Transaction transaction = new Transaction(); FlowControlNode node = new FlowControlNode(); - HashMapflowSeq= restExe.execute(transaction, ctx); + Map flowSeq= restExe.execute(transaction, ctx); String flowSequnce=flowSeq.get("restResponse"); } -- cgit 1.2.3-korg