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.client.orchestration;
 
  23 import static org.junit.Assert.assertFalse;
 
  24 import static org.junit.Assert.assertTrue;
 
  25 import static org.mockito.ArgumentMatchers.any;
 
  26 import static org.mockito.ArgumentMatchers.eq;
 
  27 import static org.mockito.ArgumentMatchers.isA;
 
  28 import static org.mockito.Mockito.doNothing;
 
  29 import static org.mockito.Mockito.doReturn;
 
  30 import static org.mockito.Mockito.times;
 
  31 import static org.mockito.Mockito.verify;
 
  32 import java.util.Optional;
 
  33 import org.junit.Before;
 
  34 import org.junit.Test;
 
  35 import org.junit.runner.RunWith;
 
  36 import org.mockito.InjectMocks;
 
  37 import org.mockito.Mock;
 
  38 import org.mockito.junit.MockitoJUnitRunner;
 
  39 import org.onap.so.bpmn.common.InjectionHelper;
 
  40 import org.onap.so.bpmn.common.data.TestDataSetup;
 
  41 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 
  42 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
 
  43 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
 
  44 import org.onap.aaiclient.client.aai.AAIObjectPlurals;
 
  45 import org.onap.aaiclient.client.aai.AAIObjectType;
 
  46 import org.onap.aaiclient.client.aai.AAIResourcesClient;
 
  47 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel;
 
  48 import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri;
 
  49 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 
  50 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 
  51 import org.onap.so.client.aai.mapper.AAIObjectMapper;
 
  53 @RunWith(MockitoJUnitRunner.Silent.class)
 
  54 public class AAIInstanceGroupResourcesTest extends TestDataSetup {
 
  57     private AAIInstanceGroupResources aaiInstanceGroupResources = new AAIInstanceGroupResources();
 
  59     private InstanceGroup instanceGroup;
 
  60     private GenericVnf vnf;
 
  61     private ServiceInstance serviceInstance;
 
  64     protected AAIResourcesClient MOCK_aaiResourcesClient;
 
  67     protected AAIObjectMapper MOCK_aaiObjectMapper;
 
  70     protected InjectionHelper MOCK_injectionHelper;
 
  73     public void before() {
 
  74         instanceGroup = buildInstanceGroup();
 
  75         vnf = buildGenericVnf();
 
  76         serviceInstance = buildServiceInstance();
 
  77         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
 
  81     public void createInstanceGroupTest() throws Exception {
 
  82         doReturn(new org.onap.aai.domain.yang.InstanceGroup()).when(MOCK_aaiObjectMapper)
 
  83                 .mapInstanceGroup(instanceGroup);
 
  84         aaiInstanceGroupResources.createInstanceGroup(instanceGroup);
 
  85         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(
 
  86                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())),
 
  91     public void deleteInstanceGroupTest() throws Exception {
 
  92         aaiInstanceGroupResources.deleteInstanceGroup(instanceGroup);
 
  93         verify(MOCK_aaiResourcesClient, times(1))
 
  94                 .delete(eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())));
 
  98     public void connectInstanceGroupTest() throws Exception {
 
  99         aaiInstanceGroupResources.connectInstanceGroupToVnf(instanceGroup, vnf);
 
 100         verify(MOCK_aaiResourcesClient, times(1)).connect(
 
 101                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())),
 
 102                 eq(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnf.getVnfId())));
 
 106     public void connectInstanceGroupWithEdgeTest() throws Exception {
 
 107         aaiInstanceGroupResources.connectInstanceGroupToVnf(instanceGroup, vnf, AAIEdgeLabel.BELONGS_TO);
 
 108         verify(MOCK_aaiResourcesClient, times(1)).connect(
 
 109                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())),
 
 110                 eq(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnf.getVnfId())),
 
 111                 eq(AAIEdgeLabel.BELONGS_TO));
 
 115     public void existsTest() throws Exception {
 
 116         aaiInstanceGroupResources.exists(instanceGroup);
 
 117         verify(MOCK_aaiResourcesClient, times(1))
 
 118                 .exists(eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())));
 
 122     public void createInstanceGroupandConnectServiceInstanceTest() {
 
 123         doReturn(new org.onap.aai.domain.yang.InstanceGroup()).when(MOCK_aaiObjectMapper)
 
 124                 .mapInstanceGroup(instanceGroup);
 
 125         doReturn(MOCK_aaiResourcesClient).when(MOCK_aaiResourcesClient).createIfNotExists(isA(AAIResourceUri.class),
 
 126                 any(Optional.class));
 
 127         doNothing().when(MOCK_aaiResourcesClient).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 129         aaiInstanceGroupResources.createInstanceGroupandConnectServiceInstance(instanceGroup, serviceInstance);
 
 131         verify(MOCK_aaiObjectMapper, times(1)).mapInstanceGroup(instanceGroup);
 
 132         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
 
 133         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
 
 137     public void checkInstanceGroupNameInUseTrueTest() throws Exception {
 
 138         AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.INSTANCE_GROUP)
 
 139                 .queryParam("instance-group-name", "instanceGroupName");
 
 140         doReturn(true).when(MOCK_aaiResourcesClient).exists(eq(uri));
 
 141         boolean nameInUse = aaiInstanceGroupResources.checkInstanceGroupNameInUse("instanceGroupName");
 
 142         assertTrue(nameInUse);
 
 146     public void checkInstanceGroupNameInUseFalseTest() throws Exception {
 
 147         AAIPluralResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.INSTANCE_GROUP)
 
 148                 .queryParam("instance-group-name", "instanceGroupName");
 
 149         doReturn(false).when(MOCK_aaiResourcesClient).exists(eq(uri));
 
 150         boolean nameInUse = aaiInstanceGroupResources.checkInstanceGroupNameInUse("instanceGroupName");
 
 151         assertFalse(nameInUse);