From f23a0c589f2519947cdeb286a7817bfa20f0b674 Mon Sep 17 00:00:00 2001 From: wejs Date: Fri, 26 Jan 2018 14:23:41 +0100 Subject: [PATCH] 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 --- .../flow/controller/executorImpl/RestExecutor.java | 185 ++++++++++----------- .../interfaces/FlowExecutorInterface.java | 7 +- .../appc/flow/controller/node/FlowControlNode.java | 13 +- .../appc/flow/controller/node/RestServiceNode.java | 24 ++- .../controller/executorImpl/RestExecutorTest.java | 183 ++++++++++++++++++++ .../appc/flow/executor/node/RestExecutorTest.java | 103 ------------ .../flow/executor/node/TestRestServiceNode.java | 17 +- 7 files changed, 287 insertions(+), 245 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 diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/executorImpl/RestExecutor.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/executorImpl/RestExecutor.java index 4770aba28..011ac973a 100644 --- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/executorImpl/RestExecutor.java +++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/executorImpl/RestExecutor.java @@ -21,142 +21,125 @@ */ package org.onap.appc.flow.controller.executorImpl; -import java.io.FileInputStream; -import java.io.InputStream; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.ClientResponse.Status; +import com.sun.jersey.api.client.WebResource; +import com.sun.jersey.api.client.config.DefaultClientConfig; +import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; +import com.sun.jersey.client.urlconnection.HTTPSProperties; import java.net.URI; -import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; -import java.util.Properties; - +import java.util.Map; +import java.util.Optional; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.ws.rs.HttpMethod; import javax.ws.rs.core.MediaType; - import org.apache.commons.lang3.StringUtils; import org.onap.appc.flow.controller.data.Response; import org.onap.appc.flow.controller.data.Transaction; import org.onap.appc.flow.controller.interfaces.FlowExecutorInterface; -import org.onap.appc.flow.controller.utils.FlowControllerConstants; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; public class RestExecutor implements FlowExecutorInterface { private static final EELFLogger log = EELFManager.getInstance().getLogger(RestExecutor.class); - private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR"; - Properties props = new Properties(); - public RestExecutor() throws Exception { - String propDir = System.getenv(SDNC_CONFIG_DIR_VAR); - if (propDir == null) - throw new Exception(" Cannot find Property file -" + SDNC_CONFIG_DIR_VAR); - String propFile = propDir + FlowControllerConstants.APPC_FLOW_CONTROLLER; - InputStream propStream = new FileInputStream(propFile); - try{ - props.load(propStream); - } - catch (Exception e){ - throw new Exception("Could not load properties file " + propFile, e); - } - finally{ - try{ - propStream.close(); - } - catch (Exception e){ - log.warn("Could not close FileInputStream", e); - } - } - } + @Override - public HashMap execute(Transaction transaction, SvcLogicContext ctx) throws Exception{ + public Map execute(Transaction transaction, SvcLogicContext ctx) throws Exception{ log.info("Configuring Rest Operation....." + transaction.toString()); - Response response = new Response(); - HashMap outputMessage = new HashMap(); + Map outputMessage = new HashMap<>(); Client client = null; - WebResource webResource = null; - ClientResponse clientResponse = null; - String responseDataType=MediaType.APPLICATION_JSON; - String requestDataType=MediaType.APPLICATION_JSON; - - try{ - DefaultClientConfig defaultClientConfig = new DefaultClientConfig(); + try { System.setProperty("jsse.enableSNIExtension", "false"); - SSLContext sslContext = null; - SecureRestClientTrustManager secureRestClientTrustManager = new SecureRestClientTrustManager(); - sslContext = SSLContext.getInstance("SSL"); - sslContext.init(null, new javax.net.ssl.TrustManager[] { secureRestClientTrustManager }, null); + SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, new javax.net.ssl.TrustManager[] {new SecureRestClientTrustManager()}, null); + DefaultClientConfig defaultClientConfig = new DefaultClientConfig(); defaultClientConfig.getProperties().put( - com.sun.jersey.client.urlconnection.HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, - new com.sun.jersey.client.urlconnection.HTTPSProperties(getHostnameVerifier(), sslContext)); - client = Client.create(defaultClientConfig); + HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, + new HTTPSProperties(getHostnameVerifier(), sslContext)); + client = createClient(defaultClientConfig); client.addFilter(new HTTPBasicAuthFilter(transaction.getuId(), transaction.getPswd())); - webResource = client.resource(new URI(transaction.getExecutionEndPoint())); + WebResource webResource = client.resource(new URI(transaction.getExecutionEndPoint())); webResource.setProperty("Content-Type", "application/json;charset=UTF-8"); - log.info("Starting Rest Operation....."); - if(HttpMethod.GET.equalsIgnoreCase(transaction.getExecutionRPC())){ - clientResponse = webResource.accept(responseDataType).get(ClientResponse.class); - }else if(HttpMethod.POST.equalsIgnoreCase(transaction.getExecutionRPC())){ - clientResponse = webResource.type(requestDataType).post(ClientResponse.class, transaction.getPayload()); - }else if(HttpMethod.PUT.equalsIgnoreCase(transaction.getExecutionRPC())){ - clientResponse = webResource.type(requestDataType).put(ClientResponse.class,transaction.getPayload()); - }else if(HttpMethod.DELETE.equalsIgnoreCase(transaction.getExecutionRPC())){ - clientResponse = webResource.delete(ClientResponse.class); - } - - if(clientResponse.getStatus() == 200){ - response.setResponseCode(String.valueOf(clientResponse.getStatus())); - ArrayList responses = new ArrayList(); - responses.add(response); - transaction.setResponses(responses); - outputMessage.put("restResponse", clientResponse.getEntity(String.class)); - } - else{ + ClientResponse clientResponse = getClientResponse(transaction, webResource) + .orElseThrow(() -> new Exception( + "Cannot determine the state of : " + + transaction.getActionLevel() + + " HTTP response is null")); - String errorMsg = clientResponse.getEntity(String.class); - if (StringUtils.isNotBlank(errorMsg)) { - log.debug("Error Message from Client Response" + errorMsg); - } - - throw new Exception("Can not determine the state of : " + transaction.getActionLevel() + " HTTP error code : " - + clientResponse.getStatus()); - - } + processClientResponse(clientResponse, transaction, outputMessage); log.info("Completed Rest Operation....."); - }catch (Exception e) { - e.printStackTrace(); - log.debug("failed in RESTCONT Action ("+transaction.getExecutionRPC()+") for the resource " + transaction.getExecutionEndPoint() + ", falut message :"+e.getMessage()); - throw new Exception("Error While Sending Rest Request" + e.getMessage()); - } - finally { - // clean up. - webResource = null; - if(client != null){ + } catch (Exception e) { + log.debug("failed in RESTCONT Action (" + + transaction.getExecutionRPC() + + ") for the resource " + + transaction.getExecutionEndPoint() + + ", fault message :" + + e.getMessage()); + throw new Exception("Error While Sending Rest Request", e); + + } finally { + if(client != null) { client.destroy(); - client = null; } } - return outputMessage; } -private HostnameVerifier getHostnameVerifier() { - return new HostnameVerifier() { - @Override - public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { - return true; + private HostnameVerifier getHostnameVerifier() { + return (hostname, sslSession) -> true; + } + + Client createClient(DefaultClientConfig defaultClientConfig) { + return Client.create(defaultClientConfig); + } + + private Optional getClientResponse(Transaction transaction, WebResource webResource) { + String responseDataType=MediaType.APPLICATION_JSON; + String requestDataType=MediaType.APPLICATION_JSON; + ClientResponse clientResponse = null; + + log.info("Starting Rest Operation....."); + if(HttpMethod.GET.equalsIgnoreCase(transaction.getExecutionRPC())) { + clientResponse = webResource.accept(responseDataType).get(ClientResponse.class); + }else if(HttpMethod.POST.equalsIgnoreCase(transaction.getExecutionRPC())) { + clientResponse = webResource.type(requestDataType).post(ClientResponse.class, transaction.getPayload()); + }else if(HttpMethod.PUT.equalsIgnoreCase(transaction.getExecutionRPC())) { + clientResponse = webResource.type(requestDataType).put(ClientResponse.class, transaction.getPayload()); + }else if(HttpMethod.DELETE.equalsIgnoreCase(transaction.getExecutionRPC())) { + clientResponse = webResource.delete(ClientResponse.class); } - }; -} + return Optional.ofNullable(clientResponse); + } + private void processClientResponse (ClientResponse clientResponse, + Transaction transaction, + Map outputMessage ) throws Exception { + + if(clientResponse.getStatus() == Status.OK.getStatusCode()) { + Response response = new Response(); + response.setResponseCode(String.valueOf(Status.OK.getStatusCode())); + transaction.setResponses(Collections.singletonList(response)); + outputMessage.put("restResponse", clientResponse.getEntity(String.class)); + } else { + String errorMsg = clientResponse.getEntity(String.class); + if (StringUtils.isNotBlank(errorMsg)) { + log.debug("Error Message from Client Response" + errorMsg); + } + throw new Exception("Cannot determine the state of : " + + transaction.getActionLevel() + + " HTTP error code : " + + clientResponse.getStatus()); + } + } } diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/interfaces/FlowExecutorInterface.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/interfaces/FlowExecutorInterface.java index dccd78222..2949f8d18 100644 --- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/interfaces/FlowExecutorInterface.java +++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/interfaces/FlowExecutorInterface.java @@ -22,15 +22,14 @@ package org.onap.appc.flow.controller.interfaces; -import java.util.HashMap; - import org.onap.appc.flow.controller.data.Transaction; -import org.onap.appc.flow.controller.utils.FlowControllerConstants; import org.onap.ccsdk.sli.core.sli.SvcLogicContext; +import java.util.Map; +@FunctionalInterface public interface FlowExecutorInterface { - public HashMap execute(Transaction transaction, SvcLogicContext ctx) throws Exception; + Map execute(Transaction transaction, SvcLogicContext ctx) throws Exception; } diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java index 34cdf87ec..8b088e118 100644 --- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java +++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/FlowControlNode.java @@ -48,16 +48,7 @@ import org.onap.appc.flow.controller.dbervices.FlowControlDBService; import org.onap.appc.flow.controller.executorImpl.GraphExecutor; import org.onap.appc.flow.controller.executorImpl.NodeExecutor; import org.onap.appc.flow.controller.executorImpl.RestExecutor; -import org.onap.appc.flow.controller.interfaceData.ActionIdentifier; -import org.onap.appc.flow.controller.interfaceData.Capabilities; -import org.onap.appc.flow.controller.interfaceData.DependencyInfo; -import org.onap.appc.flow.controller.interfaceData.Input; -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.Vnfcs; -import org.onap.appc.flow.controller.interfaceData.Vnfcslist; +import org.onap.appc.flow.controller.interfaceData.*; import org.onap.appc.flow.controller.interfaces.FlowExecutorInterface; import org.onap.appc.flow.controller.utils.EncryptionTool; import org.onap.appc.flow.controller.utils.FlowControllerConstants; @@ -140,7 +131,7 @@ public class FlowControlNode implements SvcLogicJavaPlugin{ log.info("CollectInputParamsData-Input: " + input ); RestExecutor restExe = new RestExecutor(); - HashMapflowSeq= restExe.execute(transaction, localContext); + MapflowSeq= restExe.execute(transaction, localContext); JSONObject sequence = new JSONObject(flowSeq.get("restResponse")); if(sequence.has("output")) diff --git a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java index 23d332ba0..b3c2fe23e 100644 --- a/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java +++ b/appc-config/appc-flow-controller/provider/src/main/java/org/onap/appc/flow/controller/node/RestServiceNode.java @@ -22,13 +22,11 @@ package org.onap.appc.flow.controller.node; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.onap.appc.flow.controller.data.Transaction; import org.onap.appc.flow.controller.executorImpl.RestExecutor; @@ -37,11 +35,11 @@ import org.onap.ccsdk.sli.core.sli.SvcLogicContext; import org.onap.ccsdk.sli.core.sli.SvcLogicException; import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; +import java.util.Properties; public class RestServiceNode implements SvcLogicJavaPlugin{ @@ -126,7 +124,7 @@ public class RestServiceNode implements SvcLogicJavaPlugin{ if(transaction.getPswd() == null) transaction.setPswd(prop.getProperty(ctx.getAttribute(FlowControllerConstants.INPUT_REQUEST_ACTION).concat(".default-rest-pass"))); - HashMap output = restRequestExecutor.execute(transaction, ctx); + Map output = restRequestExecutor.execute(transaction, ctx); if(isValidJSON(output.get("restResponse")) != null) { ctx.setAttribute(responsePrefix + "." + FlowControllerConstants.OUTPUT_STATUS_MESSAGE , output.get("restResponse")); 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"); } -- 2.16.6