diff options
author | wejs <maciej.wejs@nokia.com> | 2018-01-26 14:23:41 +0100 |
---|---|---|
committer | Patrick Brady <pb071s@att.com> | 2018-02-09 23:50:24 +0000 |
commit | f23a0c589f2519947cdeb286a7817bfa20f0b674 (patch) | |
tree | 68ed182cae26d1cd139e3bab43b81c6758f82c4b /appc-config/appc-flow-controller/provider/src/test | |
parent | de30efcf2cf03577adbd46be2eb2e074a177dfd2 (diff) |
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 <maciej.wejs@nokia.com>
Diffstat (limited to 'appc-config/appc-flow-controller/provider/src/test')
3 files changed, 187 insertions, 116 deletions
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<String, String> 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<String>) 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(); - HashMap<String,String>flowSeq= restExe.execute(transaction, ctx); + Map<String,String> flowSeq= restExe.execute(transaction, ctx); String flowSequnce=flowSeq.get("restResponse"); } |