Add NETWORK_CORRELATOR on network updates async 71/79071/1
authorBenjamin, Max (mb388a) <mb388a@us.att.com>
Sun, 24 Feb 2019 15:50:44 +0000 (10:50 -0500)
committerBenjamin, Max (mb388a) <mb388a@us.att.com>
Sun, 24 Feb 2019 15:50:59 +0000 (10:50 -0500)
added verification for mocked BpmnError
add unmarshal test missing in commit
add junit for NetworkAdapter Callback success/failure
Add NETWORK_CORRELATOR on network updates async etc

Change-Id: Ib10709ddb61011aec247e9c020b7ee7c42949118
Issue-ID: SO-1568
Signed-off-by: Benjamin, Max (mb388a) <mb388a@us.att.com>
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClient.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/NetworkAdapterClientImpl.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NetworkAdapterResources.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/adapter/network/tasks/NetworkAdapterRestV1Test.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/adapter/network/NetworkAdapterClientIT.java

index fec7e84..4861257 100644 (file)
@@ -75,6 +75,10 @@ public class NetworkAdapterRestV1 {
                                        DeleteNetworkRequest deleteNetworkRequest = (DeleteNetworkRequest) networkAdapterRequest;
                                        execution.setVariable(NETWORK_CORRELATOR, deleteNetworkRequest.getMessageId());
                                        response = networkAdapterResources.deleteNetworkAsync(deleteNetworkRequest);
+                               } else if (networkAdapterRequest instanceof UpdateNetworkRequest) {
+                                       UpdateNetworkRequest updateNetworkRequest = (UpdateNetworkRequest) networkAdapterRequest;
+                                       execution.setVariable(NETWORK_CORRELATOR, updateNetworkRequest.getMessageId());
+                                       response = networkAdapterResources.updateNetworkAsync(updateNetworkRequest);
                                }
                                if(response.isPresent()) {
                                        String statusCode = Integer.toString(response.get().getStatus());
index cdb2440..350a6ae 100644 (file)
@@ -52,4 +52,6 @@ public interface NetworkAdapterClient {
        Response deleteNetworkAsync(String aaiNetworkId, DeleteNetworkRequest req) throws NetworkAdapterClientException;
 
        Response rollbackNetworkAsync(String aaiNetworkId, RollbackNetworkRequest req) throws NetworkAdapterClientException;
+       
+       Response updateNetworkAsync(String aaiNetworkId, UpdateNetworkRequest req) throws NetworkAdapterClientException;
 }
index 7092fe0..e8a5723 100644 (file)
@@ -142,6 +142,15 @@ public class NetworkAdapterClientImpl implements NetworkAdapterClient {
                        throw new NetworkAdapterClientException(e.getMessage());
                }
        }
+       
+       @Override
+       public Response updateNetworkAsync(String aaiNetworkId, UpdateNetworkRequest req) throws NetworkAdapterClientException{
+               try {
+                       return new AdapterRestClient(this.props, this.getUri("/" + aaiNetworkId).build()).put(req);
+               } catch (InternalServerErrorException e) {
+                       throw new NetworkAdapterClientException(e.getMessage());
+               }
+       }
 
        protected UriBuilder getUri(String path) {
                return UriBuilder.fromPath(path);
index feb6ed4..6867cb8 100644 (file)
@@ -91,6 +91,11 @@ public class NetworkAdapterResources {
 
                return Optional.of(networkAdapterClient.deleteNetworkAsync(deleteNetworkRequest.getNetworkId(), deleteNetworkRequest));
        }
+       
+       public Optional<Response> updateNetworkAsync(UpdateNetworkRequest updateNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
+
+               return Optional.of(networkAdapterClient.updateNetworkAsync(updateNetworkRequest.getNetworkId(), updateNetworkRequest));
+       }
 
        public Optional<RollbackNetworkResponse> rollbackCreateNetwork(String networkId, RollbackNetworkRequest rollbackNetworkRequest) throws UnsupportedEncodingException, NetworkAdapterClientException {
 
index 516c948..c11dc82 100644 (file)
 
 package org.onap.so.bpmn.infrastructure.adapter.network.tasks;
 
-import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
-import static org.junit.Assert.assertThat;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.xml.bind.JAXBException;
 
+import org.camunda.bpm.engine.delegate.BpmnError;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
+import org.junit.Before;
 import org.junit.Test;
+
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
+import org.onap.so.adapters.nwrest.UpdateNetworkError;
+import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
 import org.onap.so.adapters.nwrest.UpdateNetworkResponse;
+import org.onap.so.bpmn.BaseTaskTest;
+import org.onap.so.client.exception.BadResponseException;
+import org.onap.so.client.exception.ExceptionBuilder;
+import org.onap.so.client.exception.MapperException;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 
-public class NetworkAdapterRestV1Test {
+public class NetworkAdapterRestV1Test extends BaseTaskTest {
+       
+       @InjectMocks
+       NetworkAdapterRestV1 networkAdapterRestV1Tasks = new NetworkAdapterRestV1();
+       @Mock
+       ExceptionBuilder exceptionBuilder = new ExceptionBuilder();
 
+       @Before
+       public void setup(){            
+       delegateExecution = new DelegateExecutionFake();        
+       }
+       
        @Test
        public void testUnmarshalXml() throws IOException, JAXBException {
                String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><createNetworkResponse><messageId>ec37c121-e3ec-4697-8adf-2d7dca7044fc</messageId><networkCreated>true</networkCreated><networkFqdn>someNetworkFqdn</networkFqdn><networkId>991ec7bf-c9c4-4ac1-bb9c-4b61645bddb3</networkId><networkStackId>someStackId</networkStackId><neutronNetworkId>9c47521a-2916-4018-b2bc-71ab767497e3</neutronNetworkId><rollback><cloudId>someCloudId</cloudId><modelCustomizationUuid>b7171cdd-8b05-459b-80ef-2093150e8983</modelCustomizationUuid><msoRequest><requestId>90b32315-176e-4dab-bcf1-80eb97a1c4f4</requestId><serviceInstanceId>71e7db22-7907-4d78-8fcc-8d89d28e90be</serviceInstanceId></msoRequest><networkCreated>true</networkCreated><networkStackId>someStackId</networkStackId><networkType>SomeNetworkType</networkType><neutronNetworkId>9c47521a-2916-4018-b2bc-71ab767497e3</neutronNetworkId><tenantId>b60da4f71c1d4b35b8113d4eca6deaa1</tenantId></rollback><subnetMap><entry><key>6b381fa9-48ce-4e16-9978-d75309565bb6</key><value>bc1d5537-860b-4894-8eba-6faff41e648c</value></entry></subnetMap></createNetworkResponse>";
@@ -42,7 +73,7 @@ public class NetworkAdapterRestV1Test {
                String returnedXml = response.toXmlString();
                System.out.println(returnedXml);
        }
-
+       
        @Test
        public void testUnmarshalXmlUpdate() throws IOException, JAXBException {
                UpdateNetworkResponse expectedResponse = new UpdateNetworkResponse();
@@ -55,4 +86,38 @@ public class NetworkAdapterRestV1Test {
                UpdateNetworkResponse response = (UpdateNetworkResponse) new NetworkAdapterRestV1().unmarshalXml(xml, UpdateNetworkResponse.class);
                assertThat(expectedResponse, sameBeanAs(response));
        }
+       
+       @Test
+       public void processCallbackTest() throws MapperException, BadResponseException, IOException{
+               UpdateNetworkRequest updateNetworkRequest = new UpdateNetworkRequest();
+               UpdateNetworkResponse updateNetworkResponse = new UpdateNetworkResponse();
+               updateNetworkResponse.setMessageId("messageId");
+               updateNetworkResponse.setNetworkId("networkId");
+               delegateExecution.setVariable("networkAdapterRequest", updateNetworkRequest);
+               delegateExecution.setVariable("NetworkAResponse_MESSAGE", updateNetworkResponse.toXmlString());
+               
+               networkAdapterRestV1Tasks.processCallback(delegateExecution);
+               
+               assertThat(updateNetworkResponse,sameBeanAs(delegateExecution.getVariable("updateNetworkResponse")));
+       }
+       
+       @Test
+       public void processCallbackErrorTest() throws MapperException, BadResponseException, IOException{
+               UpdateNetworkRequest updateNetworkRequest = new UpdateNetworkRequest();
+               UpdateNetworkError updateNetworkResponse = new UpdateNetworkError();
+               updateNetworkResponse.setMessageId("messageId");
+               updateNetworkResponse.setMessage("test error message");
+               delegateExecution.setVariable("networkAdapterRequest", updateNetworkRequest);
+               delegateExecution.setVariable("NetworkAResponse_MESSAGE", updateNetworkResponse.toXmlString());
+               
+               doThrow(new BpmnError("MSOWorkflowException")).when(exceptionBuilder).buildAndThrowWorkflowException(any(DelegateExecution.class), anyInt(), any(String.class));
+               try {
+                       networkAdapterRestV1Tasks.processCallback(delegateExecution);
+               } 
+               catch (BpmnError be){
+                       assertEquals("MSOWorkflowException",be.getErrorCode());
+               }
+               assertNull(delegateExecution.getVariable("updateNetworkResponse"));
+               verify(exceptionBuilder, times(1)).buildAndThrowWorkflowException(any(DelegateExecution.class), eq(7000), eq("test error message"));
+       }
 }
index a2880ce..1bcc464 100644 (file)
@@ -28,7 +28,8 @@ import static com.github.tomakehurst.wiremock.client.WireMock.put;
 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
 import static org.junit.Assert.assertEquals;
-
+import static org.junit.Assert.assertNotNull;
+import javax.ws.rs.core.Response;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.onap.so.BaseIntegrationTest;
@@ -210,6 +211,22 @@ public class NetworkAdapterClientIT extends BaseIntegrationTest{
                UpdateNetworkResponse response = client.updateNetwork(AAI_NETWORK_ID, request);
                assertEquals("Testing UpdateVfModule response", "test1", response.getNetworkId());
        }
+
+       @Test
+       public void updateNetworkTestAsync() throws NetworkAdapterClientException, JsonProcessingException {
+               UpdateNetworkRequest request = new UpdateNetworkRequest();
+               request.setCloudSiteId(TESTING_ID);
+               request.setNetworkId("test1");
+
+               UpdateNetworkResponse mockResponse = new UpdateNetworkResponse();
+               mockResponse.setNetworkId("test1");
+               stubFor(put(urlPathEqualTo(REST_ENDPOINT + "/" + AAI_NETWORK_ID))
+                               .willReturn(aResponse().withHeader("Content-Type", "application/json")
+                                               .withBody(mapper.writeValueAsString(mockResponse)).withStatus(200)));
+
+               Response response = client.updateNetworkAsync(AAI_NETWORK_ID, request);
+               assertNotNull(response.getEntity());
+       }
        
        @Test(expected = NetworkAdapterClientException.class)
        public void updateNetworkTestThrowException() throws NetworkAdapterClientException, JsonProcessingException {