package org.onap.so.bpmn.infrastructure.scripts
-import com.github.tomakehurst.wiremock.junit.WireMockRule
-import org.camunda.bpm.engine.ProcessEngineServices
-import org.camunda.bpm.engine.RepositoryService
+
+import org.camunda.bpm.engine.delegate.BpmnError
import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
-import org.camunda.bpm.engine.repository.ProcessDefinition
import org.junit.Assert
import org.junit.Before
-import org.junit.Ignore
import org.junit.Rule
import org.junit.Test
+import org.junit.rules.ExpectedException
import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.Captor
-import org.mockito.Mockito
import org.mockito.MockitoAnnotations
import org.mockito.runners.MockitoJUnitRunner
-import org.onap.so.bpmn.common.scripts.utils.XmlComparator
-import org.onap.so.bpmn.core.WorkflowException
+import org.onap.aai.domain.yang.GenericVnf
+import org.onap.aai.domain.yang.VfModule
+import org.onap.aai.domain.yang.VolumeGroup
+import org.onap.so.bpmn.common.scripts.MsoGroovyTest
import org.onap.so.bpmn.mock.FileUtil
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.entities.AAIResultWrapper
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.constants.Defaults
+
+import javax.ws.rs.core.UriBuilder
-import static com.github.tomakehurst.wiremock.client.WireMock.*
import static org.mockito.Mockito.*
@RunWith(MockitoJUnitRunner.class)
-class UpdateVfModuleVolumeInfraV1Test {
+class UpdateVfModuleVolumeInfraV1Test extends MsoGroovyTest{
def prefix = "UPDVfModVol_"
@Captor
static ArgumentCaptor<ExecutionEntity> captor = ArgumentCaptor.forClass(ExecutionEntity.class)
+
+ @Rule
+ public ExpectedException thrown = ExpectedException.none()
- @Rule
- public WireMockRule wireMockRule = new WireMockRule(28090);
-
+
@Before
- public void init()
- {
+ public void init(){
+ super.init("UpdateVfModuleVolumeInfraV1")
MockitoAnnotations.initMocks(this)
}
when(mockExecution.getVariable("mso.msoKey")).thenReturn("07a7159d3bf51a0e53be7a8f89699be7")
when(mockExecution.getVariable("aai.auth")).thenReturn("757A94191D685FD2092AC1490730A4FC")
- mockData()
- UpdateVfModuleVolumeInfraV1 obj = new UpdateVfModuleVolumeInfraV1()
+ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class)
+ when(obj.getAAIClient()).thenReturn(client)
+ AAIResourceUri uri = AAIUriFactory.createResourceFromExistingURI(AAIObjectType.VF_MODULE, UriBuilder.fromPath("/aai/v8/network/generic-vnfs/generic-vnf/12345/vf-modules/vf-module/12345").build())
+ VfModule vfModule = new VfModule();
+ vfModule.setVfModuleId("12345")
+ vfModule.setModelInvariantId("ff5256d2-5a33-55df-13ab-12abad84e7ff")
+ when(client.get(VfModule.class,uri)).thenReturn(Optional.of(vfModule))
obj.queryAAIForVfModule(mockExecution, "true")
- Mockito.verify(mockExecution, atLeastOnce()).setVariable("UPDVfModVol_personaModelId", "ff5256d2-5a33-55df-13ab-12abad84e7ff")
+ verify(mockExecution, atLeastOnce()).setVariable("UPDVfModVol_personaModelId", "ff5256d2-5a33-55df-13ab-12abad84e7ff")
+ }
+
+ @Test
+ void testQueryAAIForVolumeGroup() {
+ String aicCloudRegion = "aicCloudRegionId"
+ String volumeGroupId = "volumeGroupId"
+ when(mockExecution.getVariable("UPDVfModVol_volumeGroupId")).thenReturn(volumeGroupId)
+ when(mockExecution.getVariable("UPDVfModVol_aicCloudRegion")).thenReturn(aicCloudRegion)
+
+ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class)
+ when(obj.getAAIClient()).thenReturn(client)
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), aicCloudRegion, volumeGroupId)
+ VolumeGroup volumeGroup = new VolumeGroup();
+ volumeGroup.setVolumeGroupId(volumeGroupId)
+
+ AAIResultWrapper wrapper = new AAIResultWrapper(FileUtil.readResourceFile("__files/aai/VolumeGroupWithTenant.json"))
+ when(client.get(uri)).thenReturn(wrapper)
+ thrown.expect(BpmnError.class)
+ obj.queryAAIForVolumeGroup(mockExecution, "true")
}
- @Test
+ @Test
+ void testQueryAAIForGenericVnf() {
+ String vnfId = "vnfId"
+ when(mockExecution.getVariable("vnfId")).thenReturn(vnfId)
+
+ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class)
+ when(obj.getAAIClient()).thenReturn(client)
+
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+ GenericVnf genericVnf = new GenericVnf()
+ genericVnf.setVnfId(vnfId)
+ genericVnf.setVnfName("testvnfName")
+ when(client.get(GenericVnf.class,uri)).thenReturn(Optional.of(genericVnf))
+ obj.queryAAIForGenericVnf(mockExecution, "true")
+ verify(mockExecution).setVariable("UPDVfModVol_AAIQueryGenericVfnResponse", genericVnf)
+ }
+
+ @Test
+ void testQueryAAIForGenericVnfNodata() {
+ String vnfId = "vnfId"
+ when(mockExecution.getVariable("vnfId")).thenReturn(vnfId)
+
+ UpdateVfModuleVolumeInfraV1 obj = spy(UpdateVfModuleVolumeInfraV1.class)
+ when(obj.getAAIClient()).thenReturn(client)
+
+ AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
+ when(client.get(GenericVnf.class,uri)).thenReturn(Optional.empty())
+ thrown.expect(BpmnError.class)
+ obj.queryAAIForGenericVnf(mockExecution, "true")
+ verify(mockExecution).setVariable("UPDVfModVol_AAIQueryGenericVfnResponse", genericVnf)
+ }
+
+ @Test
void testPrepVnfAdapterRest() {
- ExecutionEntity mockExecution = setupMock()
when(mockExecution.getVariable("prefix")).thenReturn(prefix)
when(mockExecution.getVariable("isDebugLogEnabled")).thenReturn("true")
when(mockExecution.getVariable(prefix + "aicCloudRegion")).thenReturn("RDM2WAGPLCP")
when(mockExecution.getVariable(prefix + "tenantId")).thenReturn("")
- when(mockExecution.getVariable(prefix + "aaiVolumeGroupResponse")).thenReturn(FileUtil.readResourceFile("__files/UpdateVfModuleVolumeInfraV1/queryVolumeId_AAIResponse_Success.xml"))
+ VolumeGroup volumeGroup = new VolumeGroup();
+ volumeGroup.setHeatStackId("heatStackId")
+ when(mockExecution.getVariable(prefix + "aaiVolumeGroupResponse")).thenReturn(volumeGroup)
when(mockExecution.getVariable(prefix + "vnfType")).thenReturn("vnf1")
when(mockExecution.getVariable(prefix + "vnfVersion")).thenReturn("1")
- when(mockExecution.getVariable(prefix + "AAIQueryGenericVfnResponse")).thenReturn(FileUtil.readResourceFile("__files/GenericFlows/getGenericVnfByNameResponse.xml"))
+ GenericVnf genericVnf = new GenericVnf()
+ genericVnf.setVnfId("vnfId")
+ genericVnf.setVnfName("testvnfName")
+ when(mockExecution.getVariable(prefix + "AAIQueryGenericVfnResponse")).thenReturn(genericVnf)
when(mockExecution.getVariable(prefix + "requestId")).thenReturn("12345")
when(mockExecution.getVariable(prefix + "serviceId")).thenReturn("12345")
when(mockExecution.getVariable("mso-request-id")).thenReturn("12345")
when(mockExecution.getVariable("mso.workflow.message.endpoint")).thenReturn('http://localhost:28080/mso/WorkflowMessage')
when(mockExecution.getVariable("mso.use.qualified.host")).thenReturn("true")
- mockData()
UpdateVfModuleVolumeInfraV1 obj = new UpdateVfModuleVolumeInfraV1()
obj.prepVnfAdapterRest(mockExecution, "true")
- Mockito.verify(mockExecution, times(1)).setVariable(captor.capture(), captor.capture())
- def updateVolumeGroupRequest = captor.getValue()
- String expectedValue = FileUtil.readResourceFile("__files/UpdateVfModuleVolumeInfraV1/updateVolumeGroupRequest.xml")
- XmlComparator.assertXMLEquals(expectedValue, updateVolumeGroupRequest, "messageId", "notificationUrl")
- }
-
-
- private static ExecutionEntity setupMock() {
- ProcessDefinition mockProcessDefinition = mock(ProcessDefinition.class)
- when(mockProcessDefinition.getKey()).thenReturn("UpdateVfModuleVolumeInfraV1")
- RepositoryService mockRepositoryService = mock(RepositoryService.class)
- when(mockRepositoryService.getProcessDefinition()).thenReturn(mockProcessDefinition)
- when(mockRepositoryService.getProcessDefinition().getKey()).thenReturn("UpdateVfModuleVolumeInfraV1")
- when(mockRepositoryService.getProcessDefinition().getId()).thenReturn("100")
- ProcessEngineServices mockProcessEngineServices = mock(ProcessEngineServices.class)
- when(mockProcessEngineServices.getRepositoryService()).thenReturn(mockRepositoryService)
-
- ExecutionEntity mockExecution = mock(ExecutionEntity.class)
- // Initialize prerequisite variables
- when(mockExecution.getId()).thenReturn("100")
- when(mockExecution.getProcessDefinitionId()).thenReturn("UpdateVfModuleVolumeInfraV1")
- when(mockExecution.getProcessInstanceId()).thenReturn("UpdateVfModuleVolumeInfraV1")
- when(mockExecution.getProcessEngineServices()).thenReturn(mockProcessEngineServices)
- when(mockExecution.getProcessEngineServices().getRepositoryService().getProcessDefinition(mockExecution.getProcessDefinitionId())).thenReturn(mockProcessDefinition)
-
- return mockExecution
+ verify(mockExecution, times(1)).setVariable(captor.capture(), captor.capture())
+ String updateVolumeGroupRequest = captor.getValue()
+ Assert.assertTrue(updateVolumeGroupRequest.contains("testvnfName"))
}
-
- private static void mockData() {
- stubFor(get(urlMatching(".*/aai/v[0-9]+/network/generic-vnfs/generic-vnf/12345/vf-modules/vf-module/.*"))
- .willReturn(aResponse()
- .withStatus(200).withHeader("Content-Type", "text/xml")
- .withBodyFile("UpdateVfModuleVolumeInfraV1/vf_module_aai_response.xml")))
- }
}