/*- * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Copyright (C) 2018 Nokia. * ================================================================================ * * 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. * ============LICENSE_END========================================================= */ package org.onap.so.bpmn.common.scripts import org.camunda.bpm.engine.delegate.DelegateExecution import static org.assertj.core.api.Assertions.assertThat import static org.mockito.ArgumentMatchers.any import static org.mockito.ArgumentMatchers.anyObject import static org.mockito.Mockito.mock import static org.mockito.Mockito.when import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake import org.junit.Before import org.junit.Test import org.mockito.Mockito import org.mockito.MockitoAnnotations import org.mockito.Spy import org.onap.aai.domain.yang.GenericVnf import org.onap.aai.domain.yang.VfModule import org.onap.aai.domain.yang.VfModules import org.onap.so.bpmn.core.UrnPropertiesReader import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri import org.springframework.core.env.Environment class CreateAAIVfModuleTest extends MsoGroovyTest{ private static final String VNF_ID = "vnfIdTest" private static final String VNF_TYPE = "vnfTypeTest" private static final String VNF_NAME = "testVnf" private static final String SERVICE_ID = "123" private static final String PERSONAL_MODEL_ID = "modelTest" private static final String PERSONAL_MODEL_VERSION = "12" private static final String MODEL_CUST_ID = "modelCustIdTest" private static final String VNF_PERSONAL_MODEL_ID = "perModIdTest" private static final String VNF_PERSONAL_MODEL_VER = "14" private static final String VF_MODULE_NAME = "modTestName" private static final String VF_MODULE_MODEL_NAME = "modModelNameTest" private static final String DEFAULT_AAI_VERSION = "14" private static final String DEFAULT_AAI_NAMESPACE = "defaultTestNamespace" @Spy CreateAAIVfModule createAAIVfModule ; private DelegateExecutionFake executionFake; @Before public void init() throws IOException { super.init("CreateAAIVfModule") MockitoAnnotations.initMocks(this); executionFake = new DelegateExecutionFake() when(createAAIVfModule.getAAIClient()).thenReturn(client) } @Test void testQueryAAIForGenericVnf(){ when(mockExecution.getVariable("CAAIVfMod_vnfId")).thenReturn("vnfId1") when(mockExecution.getVariable("CAAIVfMod_vnfName")).thenReturn("vnfName") Optional expectedResponse = mockAAIGenericVnf("vnfId1") createAAIVfModule.queryAAIForGenericVnf(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_queryGenericVnfResponseCode", 200) Mockito.verify(mockExecution).setVariable("CAAIVfMod_queryGenericVnfResponse", expectedResponse.get()) } @Test void testQueryAAIForGenericVnfNotFound(){ when(mockExecution.getVariable("CAAIVfMod_vnfId")).thenReturn("vnfIdNotFound") when(mockExecution.getVariable("CAAIVfMod_vnfName")).thenReturn("vnfName") mockAAIGenericVnfNotFound("vnfIdNotFound") createAAIVfModule.queryAAIForGenericVnf(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_queryGenericVnfResponseCode", 404) Mockito.verify(mockExecution).setVariable("CAAIVfMod_queryGenericVnfResponse", "Generic Vnf not Found!") } @Test void testCreateGenericVnf(){ when(mockExecution.getVariable("CAAIVfMod_vnfName")).thenReturn("vnfName") Mockito.doNothing().when(client).create(any(AAIResourceUri.class) as AAIResourceUri,anyObject()) createAAIVfModule.createGenericVnf(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_createGenericVnfResponseCode", 201) Mockito.verify(mockExecution).setVariable("CAAIVfMod_createGenericVnfResponse","Vnf Created") } @Test void testCreateVfModule(){ Optional genericVnf = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json"); when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf.get()) when(mockExecution.getVariable("CAAIVfMod_personaId")).thenReturn("model1") when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("vfModuleName") Mockito.doNothing().when(client).create(any(AAIResourceUri.class) as AAIResourceUri,anyObject()) createAAIVfModule.createVfModule(mockExecution,false) Mockito.verify(mockExecution).setVariable("CAAIVfMod_createVfModuleResponseCode", 201) Mockito.verify(mockExecution).setVariable("CAAIVfMod_createVfModuleResponse","Vf Module Created") } @Test void testParseForAddOnModule(){ Optional genericVnf = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json"); when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf.get()) when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("newVfModule") createAAIVfModule.parseForAddOnModule(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_moduleExists", false) } @Test void testParseForAddOnModuleTrue(){ Optional genericVnf = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json"); when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf.get()) when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("testVfModuleNameGWPrim") createAAIVfModule.parseForAddOnModule(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_moduleExists", true) } @Test void testParseForBaseModule(){ Optional genericVnfOps = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json") GenericVnf genericVnf = genericVnfOps.get() genericVnf.getVfModules().getVfModule().remove(0) when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf) when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("newVfModule") createAAIVfModule.parseForBaseModule(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_moduleExists", false) } @Test void testParseForBaseModuleConflict(){ Optional genericVnf = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json"); when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf.get()) when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("testVfModuleNameGWPrim") when(mockExecution.getVariable("CAAIVfMod_baseModuleConflict")).thenReturn(true) createAAIVfModule.parseForBaseModule(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_baseModuleConflict", true) } @Test void testParseForBaseModuleExists(){ Optional genericVnf = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json"); when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf.get()) when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("newVfModule") when(mockExecution.getVariable("CAAIVfMod_baseModuleConflict")).thenReturn(false) createAAIVfModule.parseForBaseModule(mockExecution) Mockito.verify(mockExecution).setVariable("CAAIVfMod_moduleExists", false) Mockito.verify(mockExecution).setVariable("CAAIVfMod_baseModuleConflict", true) } @Test void testCreateVfModuleBase(){ Optional genericVnf = getAAIObjectFromJson(GenericVnf.class,"__files/aai/GenericVnfVfModule.json"); when(mockExecution.getVariable("CAAIVfMod_queryGenericVnfResponse")).thenReturn(genericVnf.get()) when(mockExecution.getVariable("CAAIVfMod_moduleName")).thenReturn("vfModuleName") Mockito.doNothing().when(client).create(any(AAIResourceUri.class) as AAIResourceUri,anyObject()) createAAIVfModule.createVfModule(mockExecution,true) Mockito.verify(mockExecution).setVariable("CAAIVfMod_createVfModuleResponseCode", 201) Mockito.verify(mockExecution).setVariable("CAAIVfMod_createVfModuleResponse","Vf Module Created") } @Test void preProcessRequest_successful() { //given prepareUrnPropertiesReader() executionFake.setVariable("vnfId", VNF_ID) executionFake.setVariable("vnfType", VNF_TYPE) executionFake.setVariable("vnfName", VNF_NAME) executionFake.setVariable("serviceId", SERVICE_ID) executionFake.setVariable("personaModelId", PERSONAL_MODEL_ID) executionFake.setVariable("personaModelVersion", PERSONAL_MODEL_VERSION) executionFake.setVariable("modelCustomizationId", MODEL_CUST_ID) executionFake.setVariable("vnfPersonaModelId", VNF_PERSONAL_MODEL_ID) executionFake.setVariable("vnfPersonaModelVersion", VNF_PERSONAL_MODEL_VER) executionFake.setVariable("isBaseVfModule", "true") executionFake.setVariable("vfModuleName", VF_MODULE_NAME) executionFake.setVariable("vfModuleModelName", VF_MODULE_MODEL_NAME) //when createAAIVfModule.preProcessRequest(executionFake) //then assertThat(executionFake.getVariable("CAAIVfMod_vnfId")).isEqualTo(VNF_ID) assertThat(executionFake.getVariable("CAAIVfMod_vnfName")).isEqualTo(VNF_NAME) assertThat(executionFake.getVariable("CAAIVfMod_vnfType")).isEqualTo(VNF_TYPE) assertThat(executionFake.getVariable("CAAIVfMod_serviceId")).isEqualTo(SERVICE_ID) assertThat(executionFake.getVariable("CAAIVfMod_personaId")).isEqualTo(PERSONAL_MODEL_ID) assertThat(executionFake.getVariable("CAAIVfMod_personaVer")).isEqualTo(PERSONAL_MODEL_VERSION) assertThat(executionFake.getVariable("CAAIVfMod_modelCustomizationId")).isEqualTo(MODEL_CUST_ID) assertThat(executionFake.getVariable("CAAIVfMod_vnfPersonaId")).isEqualTo(VNF_PERSONAL_MODEL_ID) assertThat(executionFake.getVariable("CAAIVfMod_vnfPersonaVer")).isEqualTo(VNF_PERSONAL_MODEL_VER) assertThat(executionFake.getVariable("CAAIVfMod_isBaseVfModule")).isEqualTo(true) assertThat(executionFake.getVariable("CAAIVfMod_moduleName")).isEqualTo(VF_MODULE_NAME) assertThat(executionFake.getVariable("CAAIVfMod_moduleModelName")).isEqualTo(VF_MODULE_MODEL_NAME) assertThat(executionFake.getVariable("CAAIVfMod_aaiNamespace")) .isEqualTo(DEFAULT_AAI_NAMESPACE + "v" + DEFAULT_AAI_VERSION) } @Test void processAAIGenericVnfQuery_setVnfResponse() { executionFake.setVariable("CAAIVfMod_queryGenericVnfResponseCode", 200) executionFake.setVariable("CAAIVfMod_vnfId", "") executionFake.setVariable("CAAIVfMod_vnfName", VNF_NAME) createAAIVfModule.processAAIGenericVnfQuery(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_queryGenericVnfResponse")) .isEqualTo("Invalid request for new Generic VNF which already exists, Vnf Name=" + VNF_NAME) } @Test void processAAIGenericVnfQuery_setVfModuleResponse() { executionFake.setVariable("CAAIVfMod_queryGenericVnfResponseCode", 500) executionFake.setVariable("CAAIVfMod_vnfId", VNF_ID) createAAIVfModule.processAAIGenericVnfQuery(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_createVfModuleResponse")) .isEqualTo("Invalid request for Add-on Module requested for non-existant Generic VNF, VNF Id=" + VNF_ID) } @Test void parseForAddOnModule_moduleNameFound() { GenericVnf vnf = new GenericVnf(); VfModule module = new VfModule(); VfModules modules = new VfModules(); vnf.setVnfName(VNF_NAME) vnf.setVfModules(modules) modules.getVfModule().add(module) module.setVfModuleName(VF_MODULE_NAME) executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", vnf) executionFake.setVariable("CAAIVfMod_moduleName", VF_MODULE_NAME) createAAIVfModule.parseForAddOnModule(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_vnfNameFromAAI")).isEqualTo(VNF_NAME) assertThat(executionFake.getVariable("CAAIVfMod_moduleExists")).isEqualTo(true) assertThat(executionFake.getVariable("CAAIVfMod_parseModuleResponse")) .isEqualTo("VF Module " + VF_MODULE_NAME + " already exists for Generic VNF " + VNF_NAME) } @Test void parseForAddOnModule_moduleNameNotFound() { GenericVnf vnf = new GenericVnf(); vnf.setVnfName(VNF_NAME) executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", vnf) executionFake.setVariable("CAAIVfMod_moduleName", VF_MODULE_NAME) executionFake.setVariable("CAAIVfMod_moduleExists", false) createAAIVfModule.parseForAddOnModule(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_vnfNameFromAAI")).isEqualTo(VNF_NAME) assertThat(executionFake.getVariable("CAAIVfMod_moduleExists")).isEqualTo(false) assertThat(executionFake.getVariable("CAAIVfMod_parseModuleResponse")) .isEqualTo("VF Module " + VF_MODULE_NAME + " does not exist for Generic VNF " + VNF_NAME) } @Test void parseForBaseModule_moduleNameFound() { GenericVnf vnf = new GenericVnf(); VfModule module = new VfModule(); VfModules modules = new VfModules(); vnf.setVnfName(VNF_NAME) vnf.setVfModules(modules) modules.getVfModule().add(module) module.setVfModuleName(VF_MODULE_NAME) executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", vnf) executionFake.setVariable("CAAIVfMod_moduleName", VF_MODULE_NAME) createAAIVfModule.parseForBaseModule(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_vnfNameFromAAI")).isEqualTo(VNF_NAME) assertThat(executionFake.getVariable("CAAIVfMod_moduleExists")).isEqualTo(false) assertThat(executionFake.getVariable("CAAIVfMod_baseModuleConflict")).isEqualTo(true) assertThat(executionFake.getVariable("CAAIVfMod_parseModuleResponse")) .isEqualTo("VF Module " + VF_MODULE_NAME + " already exists for Generic VNF " + VNF_NAME) } @Test void parseForBaseModule_isBaseVfModule() { GenericVnf vnf = new GenericVnf(); VfModule module = new VfModule(); VfModules modules = new VfModules(); vnf.setVfModules(modules) vnf.setVnfName(VNF_NAME) modules.getVfModule().add(module) module.setVfModuleName(VF_MODULE_NAME) module.setIsBaseVfModule(true) executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", vnf) executionFake.setVariable("CAAIVfMod_baseModuleConflict", false) createAAIVfModule.parseForBaseModule(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_vnfNameFromAAI")).isEqualTo(VNF_NAME) assertThat(executionFake.getVariable("CAAIVfMod_moduleExists")).isEqualTo(false) assertThat(executionFake.getVariable("CAAIVfMod_baseModuleConflict")).isEqualTo(true) assertThat(executionFake.getVariable("CAAIVfMod_parseModuleResponse")) .isEqualTo("Base VF Module already exists for Generic VNF " + VNF_NAME) } @Test void parseForBaseModule_baseModuleConflictIsFalse() { GenericVnf vnf = new GenericVnf(); vnf.setVnfName(VNF_NAME) executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", vnf) executionFake.setVariable("CAAIVfMod_baseModuleConflict", false) executionFake.setVariable("CAAIVfMod_moduleName", VF_MODULE_NAME) createAAIVfModule.parseForBaseModule(executionFake) assertThat(executionFake.getVariable("CAAIVfMod_vnfNameFromAAI")).isEqualTo(VNF_NAME) assertThat(executionFake.getVariable("CAAIVfMod_moduleExists")).isEqualTo(false) assertThat(executionFake.getVariable("CAAIVfMod_parseModuleResponse")) .isEqualTo("VF Module " + VF_MODULE_NAME + " does not exist for Generic VNF " + VNF_NAME) } @Test void handleFailure_errorCode5000() { executionFake.setVariable("CAAIVfMod_createGenericVnfResponseCode", "123") executionFake.setVariable("CAAIVfMod_createGenericVnfResponse", "responseTest") ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(5000) assertThat(exceptionUtilForTesting.getErrorMessage()).isEqualTo("responseTest") } @Test void handleFailure_errorCode1002() { executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", "responseTest") executionFake.setVariable("CAAIVfMod_newGenericVnf", true) ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(1002) assertThat(exceptionUtilForTesting.getErrorMessage()).isEqualTo("responseTest") } @Test void handleFailure_errorCode1002_queryGenericVnfResponse() { executionFake.setVariable("CAAIVfMod_queryGenericVnfResponse", "responseTest") executionFake.setVariable("CAAIVfMod_queryGenericVnfResponseCode", 404) executionFake.setVariable("CAAIVfMod_newGenericVnf", false) ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(1002) assertThat(exceptionUtilForTesting.getErrorMessage()).isEqualTo("responseTest") } @Test void handleFailure_errorCode5000_createVfModuleResponseCode() { executionFake.setVariable("CAAIVfMod_createVfModuleResponseCode", "123") executionFake.setVariable("CAAIVfMod_createVfModuleResponse", "responseTest") ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(5000) assertThat(exceptionUtilForTesting.getErrorMessage()).isEqualTo("responseTest") } @Test void handleFailure_errorCode1002_moduleExists() { executionFake.setVariable("CAAIVfMod_moduleExists", true) executionFake.setVariable("CAAIVfMod_parseModuleResponse", "responseTest") ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(1002) assertThat(exceptionUtilForTesting.getErrorMessage()).isEqualTo("responseTest") } @Test void handleFailure_errorCode1002_baseModuleConflict() { executionFake.setVariable("CAAIVfMod_baseModuleConflict", true) executionFake.setVariable("CAAIVfMod_parseModuleResponse", "responseTest") ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(1002) assertThat(exceptionUtilForTesting.getErrorMessage()).isEqualTo("responseTest") } @Test void handleFailure_errorCode2000() { ExceptionUtilForTesting exceptionUtilForTesting = new ExceptionUtilForTesting() createAAIVfModule.setExceptionUtil(exceptionUtilForTesting) createAAIVfModule.handleCreateVfModuleFailure(executionFake) assertThat(exceptionUtilForTesting.getErrorCode()).isEqualTo(2000) assertThat(exceptionUtilForTesting.getErrorMessage()). isEqualTo("Unknown error occurred during CreateAAIVfModule flow") } private void prepareUrnPropertiesReader() { Environment mockEnvironment = mock(Environment.class) when(mockEnvironment.getProperty("mso.workflow.global.default.aai.version")).thenReturn(DEFAULT_AAI_VERSION) when(mockEnvironment.getProperty("mso.workflow.global.default.aai.namespace")).thenReturn(DEFAULT_AAI_NAMESPACE) UrnPropertiesReader urnPropertiesReader = new UrnPropertiesReader() urnPropertiesReader.setEnvironment(mockEnvironment) } class ExceptionUtilForTesting extends ExceptionUtil { private int errorCode private String errorMessage int getErrorCode() { return errorCode } String getErrorMessage() { return errorMessage } @Override void buildAndThrowWorkflowException(DelegateExecution execution, int errorCode, String errorMessage) { this.errorCode = errorCode this.errorMessage = errorMessage } } }