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=========================================================
 
  20 package org.onap.so.client.orchestration;
 
  22 import static org.junit.Assert.assertEquals;
 
  23 import static org.mockito.ArgumentMatchers.any;
 
  24 import static org.mockito.ArgumentMatchers.eq;
 
  25 import static org.mockito.ArgumentMatchers.isA;
 
  26 import static org.mockito.Mockito.doNothing;
 
  27 import static org.mockito.Mockito.doReturn;
 
  28 import static org.mockito.Mockito.times;
 
  29 import static org.mockito.Mockito.verify;
 
  30 import java.util.Optional;
 
  31 import org.junit.Before;
 
  32 import org.junit.Test;
 
  33 import org.junit.runner.RunWith;
 
  34 import org.mockito.ArgumentMatchers;
 
  35 import org.mockito.InjectMocks;
 
  36 import org.mockito.Mock;
 
  37 import org.mockito.junit.MockitoJUnitRunner;
 
  38 import org.onap.so.bpmn.common.InjectionHelper;
 
  39 import org.onap.so.bpmn.common.data.TestDataSetup;
 
  40 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 
  41 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 
  42 import org.onap.so.bpmn.servicedecomposition.bbobjects.Pnf;
 
  43 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 
  44 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceProxy;
 
  45 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 
  46 import org.onap.so.bpmn.servicedecomposition.bbobjects.VpnBinding;
 
  47 import org.onap.aaiclient.client.aai.AAIObjectType;
 
  48 import org.onap.aaiclient.client.aai.AAIResourcesClient;
 
  49 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel;
 
  50 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 
  51 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 
  52 import org.onap.so.client.aai.mapper.AAIObjectMapper;
 
  53 import org.onap.so.db.catalog.beans.OrchestrationStatus;
 
  56 @RunWith(MockitoJUnitRunner.Silent.class)
 
  57 public class AAIConfigurationResourcesTest extends TestDataSetup {
 
  61     private Configuration configuration;
 
  62     private ServiceProxy serviceProxy;
 
  63     private ServiceInstance serviceInstance;
 
  64     private GenericVnf genericVnf;
 
  65     private VpnBinding vpnBinding;
 
  66     private VfModule vfModule;
 
  69     protected AAIResourcesClient MOCK_aaiResourcesClient;
 
  72     protected AAIObjectMapper MOCK_aaiObjectMapper;
 
  75     protected InjectionHelper MOCK_injectionHelper;
 
  78     private AAIConfigurationResources aaiConfigurationResources = new AAIConfigurationResources();
 
  81     public void before() {
 
  82         configuration = buildConfiguration();
 
  83         serviceProxy = buildServiceProxy();
 
  84         serviceInstance = buildServiceInstance();
 
  85         genericVnf = buildGenericVnf();
 
  86         vfModule = buildVfModule();
 
  87         vpnBinding = buildVpnBinding();
 
  88         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
  92     public void createConfigurationTest() {
 
  93         doReturn(new org.onap.aai.domain.yang.Configuration()).when(MOCK_aaiObjectMapper)
 
  94                 .mapConfiguration(configuration);
 
  95         doReturn(MOCK_aaiResourcesClient).when(MOCK_aaiResourcesClient).createIfNotExists(isA(AAIResourceUri.class),
 
  97         aaiConfigurationResources.createConfiguration(configuration);
 
  99         assertEquals(OrchestrationStatus.INVENTORIED, configuration.getOrchestrationStatus());
 
 100         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
 
 104     public void updateConfigurationTest() {
 
 105         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
 
 106                 isA(org.onap.aai.domain.yang.Configuration.class));
 
 107         configuration.setConfigurationType("VNR");
 
 108         configuration.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
 
 109         aaiConfigurationResources.updateConfiguration(configuration);
 
 110         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
 
 114     public void connectConfigurationToServiceInstanceTest() {
 
 115         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 116         aaiConfigurationResources.connectConfigurationToServiceInstance(configuration.getConfigurationId(),
 
 117                 serviceInstance.getServiceInstanceId());
 
 118         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 122     public void connectConfigurationToServiceInstanceWithEdgeTest() {
 
 123         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class),
 
 124                 any(AAIEdgeLabel.class));
 
 125         aaiConfigurationResources.connectConfigurationToServiceInstance(configuration.getConfigurationId(),
 
 126                 serviceInstance.getServiceInstanceId(), AAIEdgeLabel.USES);
 
 127         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class),
 
 128                 any(AAIEdgeLabel.class));
 
 132     public void disconnectConfigurationToServiceInstanceTest() {
 
 133         doNothing().when(MOCK_aaiResourcesClient).disconnect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 134         aaiConfigurationResources.disconnectConfigurationToServiceInstance("TEST_CONFIGURATION_ID",
 
 135                 "TEST_SERVICE_INSTANCE_ID");
 
 136         verify(MOCK_aaiResourcesClient, times(1)).disconnect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 140     public void connectConfigurationToGenericVnfTest() {
 
 141         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 142         aaiConfigurationResources.connectConfigurationToGenericVnf(configuration.getConfigurationId(),
 
 143                 genericVnf.getVnfId());
 
 144         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 148     public void connectConfigurationToVfModuleTest() {
 
 149         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 150         aaiConfigurationResources.connectConfigurationToVfModule(configuration.getConfigurationId(),
 
 151                 vfModule.getVfModuleId(), genericVnf.getVnfId());
 
 152         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 156     public void connectConfigurationToVnfcTest() {
 
 157         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 158         aaiConfigurationResources.connectConfigurationToVnfc(configuration.getConfigurationId(), "vnfcName");
 
 159         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 163     public void connectConfigurationToVpnBindingTest() {
 
 164         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 165         aaiConfigurationResources.connectConfigurationToVpnBinding(configuration.getConfigurationId(),
 
 166                 vpnBinding.getVpnId());
 
 167         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 171     public void getConfigurationFromRelatedLinkTest() {
 
 172         Optional<org.onap.aai.domain.yang.Configuration> configuration =
 
 173                 Optional.of(new org.onap.aai.domain.yang.Configuration());
 
 174         configuration.get().setConfigurationId("config1");
 
 175         doReturn(configuration).when(MOCK_aaiResourcesClient).get(eq(org.onap.aai.domain.yang.Configuration.class),
 
 176                 isA(AAIResourceUri.class));
 
 177         aaiConfigurationResources.getConfigurationFromRelatedLink(
 
 178                 "http://localhost:8090/aai/v12/network/configurations/configuration/config1");
 
 179         verify(MOCK_aaiResourcesClient, times(1)).get(eq(org.onap.aai.domain.yang.Configuration.class),
 
 180                 isA(AAIResourceUri.class));
 
 184     public void connectVrfConfigurationToVnrConfigurationTest() throws Exception {
 
 185         Configuration vrfConfiguration = buildConfiguration();
 
 186         Configuration vnrConfiguration = buildConfiguration();
 
 187         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 188         aaiConfigurationResources.connectVrfConfigurationToVnrConfiguration(vrfConfiguration.getConfigurationId(),
 
 189                 vnrConfiguration.getConfigurationId());
 
 190         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 194     public void connectConfigurationToPnfObjectTest() throws Exception {
 
 195         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), isA(AAIResourceUri.class));
 
 197         Pnf primaryPnf = serviceProxy.getServiceInstance().getPnfs().stream().filter(o -> o.getRole().equals("Primary"))
 
 200         aaiConfigurationResources.connectConfigurationToPnfObject(primaryPnf.getPnfId(),
 
 201                 configuration.getConfigurationId());
 
 202         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 206     public void getConfigurationTest() {
 
 207         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
 
 208         doReturn(Optional.of(new org.onap.aai.domain.yang.Configuration())).when(MOCK_aaiResourcesClient)
 
 209                 .get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
 
 210         aaiConfigurationResources.getConfiguration("configurationId");
 
 211         verify(MOCK_aaiResourcesClient, times(1)).get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
 
 215     public void deleteConfigurationTest() {
 
 216         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, "configurationId");
 
 217         doNothing().when(MOCK_aaiResourcesClient).delete(aaiResourceUri);
 
 218         aaiConfigurationResources.deleteConfiguration("configurationId");
 
 219         verify(MOCK_aaiResourcesClient, times(1)).delete(aaiResourceUri);
 
 223     public void updateOrchestrationStatusConfigurationTest() throws Exception {
 
 224         configuration.setOrchestrationStatus(OrchestrationStatus.ACTIVE);
 
 225         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
 
 226                 isA(org.onap.aai.domain.yang.Configuration.class));
 
 227         aaiConfigurationResources.updateOrchestrationStatusConfiguration(configuration, OrchestrationStatus.ACTIVE);
 
 228         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
 
 229         assertEquals(OrchestrationStatus.ACTIVE, configuration.getOrchestrationStatus());
 
 233     public void updateConfigurationOrchestrationStatusTest() throws Exception {
 
 234         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
 
 235                 isA(org.onap.aai.domain.yang.Configuration.class));
 
 236         aaiConfigurationResources.updateConfigurationOrchestrationStatus(configuration, OrchestrationStatus.ACTIVE);
 
 237         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class),
 
 238                 any(org.onap.aai.domain.yang.Configuration.class));