2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.onap.so.bpmn.infrastructure.scripts
 
  23 import com.github.tomakehurst.wiremock.junit.WireMockRule
 
  24 import org.camunda.bpm.engine.ProcessEngineServices
 
  25 import org.camunda.bpm.engine.RepositoryService
 
  26 import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
 
  27 import org.camunda.bpm.engine.repository.ProcessDefinition
 
  28 import org.junit.Assert
 
  29 import org.junit.Before
 
  30 import org.junit.Ignore
 
  33 import org.junit.runner.RunWith
 
  34 import org.mockito.ArgumentCaptor
 
  35 import org.mockito.Captor
 
  36 import org.mockito.Mockito
 
  37 import org.mockito.MockitoAnnotations
 
  38 import org.mockito.Spy
 
  39 import org.mockito.runners.MockitoJUnitRunner
 
  40 import org.onap.aai.domain.yang.GenericVnf
 
  41 import org.onap.aai.domain.yang.NetworkPolicies
 
  42 import org.onap.aai.domain.yang.NetworkPolicy
 
  43 import org.onap.so.bpmn.common.scripts.MsoGroovyTest
 
  44 import org.onap.so.bpmn.core.WorkflowException
 
  45 import org.onap.aaiclient.client.aai.AAIObjectPlurals
 
  46 import org.onap.aaiclient.client.aai.AAIObjectType
 
  47 import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri
 
  48 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
 
  49 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory
 
  50 import org.onap.aaiclient.client.graphinventory.entities.uri.Depth
 
  52 import static com.github.tomakehurst.wiremock.client.WireMock.*
 
  53 import static org.mockito.Mockito.*
 
  55 @RunWith(MockitoJUnitRunner.class)
 
  56 class DoDeleteVfModuleFromVnfTest extends MsoGroovyTest {
 
  59     static ArgumentCaptor<ExecutionEntity> captor = ArgumentCaptor.forClass(ExecutionEntity.class)
 
  62     DoDeleteVfModuleFromVnf deleteVfModuleFromVnf
 
  65     public void init() throws IOException {
 
  66         super.init("DoDeleteVfModuleFromVnf")
 
  67         MockitoAnnotations.initMocks(this)
 
  68         when(deleteVfModuleFromVnf.getAAIClient()).thenReturn(client)
 
  72     public void testPreProcessRequest() {
 
  73         ExecutionEntity mockExecution = setupMock()
 
  74         when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
 
  75         when(mockExecution.getVariable("msoRequestId")).thenReturn("12345")
 
  76         when(mockExecution.getVariable("source")).thenReturn("VID")
 
  77         when(mockExecution.getVariable("serviceInstanceId")).thenReturn("12345")
 
  78         when(mockExecution.getVariable("vnfId")).thenReturn("12345")
 
  79         when(mockExecution.getVariable("tenantId")).thenReturn("19123c2924c648eb8e42a3c1f14b7682")
 
  80         when(mockExecution.getVariable("vfModuleId")).thenReturn("12345")
 
  81         when(mockExecution.getVariable("lcpCloudRegionId")).thenReturn("12345")
 
  82         when(mockExecution.getVariable("sdncVersion")).thenReturn("8")
 
  83         when(mockExecution.getVariable("mso.workflow.sdncadapter.callback")).thenReturn("http://localhost:8090/SDNCAdapterCallback")
 
  85         DoDeleteVfModuleFromVnf obj = new DoDeleteVfModuleFromVnf()
 
  86         obj.preProcessRequest(mockExecution)
 
  88         Mockito.verify(mockExecution).setVariable("prefix", "DDVFMV_")
 
  89         Mockito.verify(mockExecution).setVariable("DDVFMV_contrailNetworkPolicyFqdnList", null)
 
  90         Mockito.verify(mockExecution).setVariable("mso-request-id", "12345")
 
  91         Mockito.verify(mockExecution).setVariable("requestId", "12345")
 
  92         Mockito.verify(mockExecution).setVariable("cloudSiteId", "12345")
 
  93         Mockito.verify(mockExecution).setVariable("source", "VID")
 
  94         Mockito.verify(mockExecution).setVariable("isVidRequest", "true")
 
  95         Mockito.verify(mockExecution).setVariable("srvInstId", "")
 
  96         Mockito.verify(mockExecution).setVariable("DDVFMV_serviceInstanceIdToSdnc", "12345")
 
  97         Mockito.verify(mockExecution).setVariable("DDVFMV_sdncVersion", "8")
 
  98         Mockito.verify(mockExecution).setVariable("sdncCallbackUrl", "http://localhost:8090/SDNCAdapterCallback")
 
 104     void testDeleteNetworkPoliciesFromAAI() {
 
 106         List fqdnList = new ArrayList()
 
 108         when(mockExecution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")).thenReturn(fqdnList)
 
 109         AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY)
 
 110         uri.queryParam("network-policy-fqdn", "test")
 
 111         NetworkPolicies networkPolicies = new NetworkPolicies();
 
 112         NetworkPolicy networkPolicy = new NetworkPolicy();
 
 113         networkPolicy.setNetworkPolicyId("NP1")
 
 114         networkPolicies.getNetworkPolicy().add(networkPolicy)
 
 115         when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.of(networkPolicies))
 
 117         AAIResourceUri delUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicy.getNetworkPolicyId())
 
 118         doNothing().when(client).delete(delUri)
 
 119         deleteVfModuleFromVnf.deleteNetworkPoliciesFromAAI(mockExecution)
 
 121         Mockito.verify(mockExecution).setVariable("prefix", 'DDVFMV_')
 
 122         Mockito.verify(mockExecution).setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 200)
 
 126     void testDeleteNetworkPoliciesFromAAINotFound() {
 
 128         List fqdnList = new ArrayList()
 
 130         when(mockExecution.getVariable("DDVFMV_contrailNetworkPolicyFqdnList")).thenReturn(fqdnList)
 
 131         AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY)
 
 132         uri.queryParam("network-policy-fqdn", "test")
 
 133         when(client.get(NetworkPolicies.class, uri)).thenReturn(Optional.empty())
 
 134         deleteVfModuleFromVnf.deleteNetworkPoliciesFromAAI(mockExecution)
 
 136         Mockito.verify(mockExecution).setVariable("prefix", 'DDVFMV_')
 
 137         Mockito.verify(mockExecution).setVariable("DCVFM_aaiQueryNetworkPolicyByFqdnReturnCode", 404)
 
 142     void testQueryAAIForVfModule() {
 
 143         ExecutionEntity mockExecution = setupMock()
 
 144         when(mockExecution.getVariable("vnfId")).thenReturn("12345")
 
 145         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "12345").depth(Depth.ONE)
 
 146         GenericVnf genericVnf = new GenericVnf()
 
 147         genericVnf.setVnfId("test1")
 
 148         when(client.get(GenericVnf.class, uri)).thenReturn(Optional.of(genericVnf))
 
 149         deleteVfModuleFromVnf.queryAAIForVfModule(mockExecution)
 
 151         Mockito.verify(mockExecution, atLeastOnce()).setVariable("DDVMFV_getVnfResponseCode", 200)
 
 152         Mockito.verify(mockExecution, atLeastOnce()).setVariable("DDVMFV_getVnfResponse", genericVnf)
 
 156     void testQueryAAIForVfModuleNotFound() {
 
 157         ExecutionEntity mockExecution = setupMock()
 
 158         when(mockExecution.getVariable("vnfId")).thenReturn("12345")
 
 159         AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "12345").depth(Depth.ONE)
 
 160         when(client.get(GenericVnf.class, uri)).thenReturn(Optional.empty())
 
 161         deleteVfModuleFromVnf.queryAAIForVfModule(mockExecution)
 
 162         Mockito.verify(mockExecution, atLeastOnce()).setVariable("DDVMFV_getVnfResponseCode", 404)
 
 167     private ExecutionEntity setupMock() {
 
 169         ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
 
 170         when(mockProcessDefinition.getKey()).thenReturn("DoDeleteVfModuleFromVnf")
 
 171         RepositoryService mockRepositoryService = mock(RepositoryService.class)
 
 172         when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
 
 173         when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("DoDeleteVfModuleFromVnf")
 
 174         when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
 
 175         ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
 
 176         when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
 
 178         ExecutionEntity mockExecution = mock(ExecutionEntity.class)
 
 179         // Initialize prerequisite variables
 
 181         when(mockExecution.getId()).thenReturn("100")
 
 182         when(mockExecution.getProcessDefinitionId()).thenReturn("DoDeleteVfModuleFromVnf")
 
 183         when(mockExecution.getProcessInstanceId()).thenReturn("DoDeleteVfModuleFromVnf")
 
 184         when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
 
 185         when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
 
 191     private static void mockData() {
 
 192         stubFor(get(urlMatching(".*/aai/v[0-9]+/network/generic-vnfs/generic-vnf/12345[?]depth=1"))
 
 193                 .willReturn(aResponse()
 
 194                 .withStatus(200).withHeader("Content-Type", "text/xml")
 
 195                 .withBodyFile("VfModularity/GenerateVfModuleName_AAIResponse_Success.xml")))
 
 197         stubFor(get(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy\\?network-policy-fqdn=.*"))
 
 198                 .willReturn(aResponse()
 
 200                 .withHeader("Content-Type", "text/xml")
 
 201                 .withBodyFile("VfModularity/QueryNetworkPolicy_AAIResponse_Success.xml")))
 
 203         stubFor(delete(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy/.*"))
 
 204                 .willReturn(aResponse()