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.namingservice.tasks;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
25 import static org.mockito.ArgumentMatchers.any;
26 import static org.mockito.ArgumentMatchers.isA;
27 import static org.mockito.Mockito.doReturn;
28 import static org.mockito.Mockito.doThrow;
29 import static org.mockito.Mockito.times;
30 import static org.mockito.Mockito.verify;
31 import static org.mockito.Mockito.when;
32 import java.util.Optional;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.mockito.ArgumentCaptor;
36 import org.mockito.ArgumentMatchers;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.Mockito;
40 import org.onap.aai.domain.yang.Zone;
41 import org.onap.so.bpmn.BaseTaskTest;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
45 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
46 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
47 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
48 import org.onap.so.client.aai.AAICommonObjectMapperProvider;
49 import org.onap.so.client.aai.entities.AAIResultWrapper;
50 import org.onap.so.client.aai.entities.Relationships;
51 import org.onap.so.client.exception.BBObjectNotFoundException;
52 import org.onap.so.client.namingservice.NamingRequestObject;
53 import org.onap.so.client.namingservice.NamingServiceConstants;
55 public class NamingServiceCreateTasksTest extends BaseTaskTest {
57 private NamingServiceCreateTasks namingServiceCreateTasks;
60 private BBInputSetupUtils MOCK_bbInputSetupUtils;
62 private InstanceGroup instanceGroup;
63 private ServiceInstance serviceInstance;
66 public void before() throws BBObjectNotFoundException {
67 instanceGroup = setInstanceGroup();
68 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID)))
69 .thenReturn(instanceGroup);
70 serviceInstance = setServiceInstance();
71 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.SERVICE_INSTANCE_ID)))
72 .thenReturn(serviceInstance);
76 public void createInstanceGroupTest() throws Exception {
77 String policyInstanceName = "policyInstanceName";
78 String nfNamingCode = "nfNamingCode";
79 String generatedName = "generatedInstanceGroupName";
80 execution.setVariable(policyInstanceName, policyInstanceName);
81 execution.setVariable(nfNamingCode, nfNamingCode);
82 doReturn(generatedName).when(namingServiceResources).generateInstanceGroupName(instanceGroup,
83 policyInstanceName, nfNamingCode);
85 namingServiceCreateTasks.createInstanceGroupName(execution);
86 verify(namingServiceResources, times(1)).generateInstanceGroupName(instanceGroup, policyInstanceName,
88 assertEquals(instanceGroup.getInstanceGroupName(), generatedName);
92 public void createInstanceGroupExceptionTest() throws Exception {
93 expectedException.expect(BBObjectNotFoundException.class);
94 lookupKeyMap.put(ResourceKey.INSTANCE_GROUP_ID, "notfound");
95 doThrow(BBObjectNotFoundException.class).when(extractPojosForBB).extractByKey(any(),
96 ArgumentMatchers.eq(ResourceKey.INSTANCE_GROUP_ID));
97 String policyInstanceName = "policyInstanceName";
98 String nfNamingCode = "nfNamingCode";
99 execution.setVariable(policyInstanceName, policyInstanceName);
100 execution.setVariable(nfNamingCode, nfNamingCode);
101 doReturn("").when(namingServiceResources).generateInstanceGroupName(instanceGroup, policyInstanceName,
103 namingServiceCreateTasks.createInstanceGroupName(execution);
104 verify(namingServiceResources, times(1)).generateInstanceGroupName(instanceGroup, policyInstanceName,
109 public void createWanTransportServiceNameTest() throws Exception {
110 String generatedName = "generatedWanTransportServiceName";
111 doReturn(generatedName).when(namingServiceResources).generateServiceInstanceName(any());
112 NamingServiceCreateTasks spy = Mockito.spy(namingServiceCreateTasks);
113 ArgumentCaptor<NamingRequestObject> captor = ArgumentCaptor.forClass(NamingRequestObject.class);
115 spy.createWanTransportServiceName(execution);
116 verify(namingServiceResources, times(1)).generateServiceInstanceName(captor.capture());
117 assertTrue(captor.getAllValues().get(0).getExternalKeyValue().startsWith("testServiceInstanceId"));
118 assertEquals(captor.getAllValues().get(0).getNamingTypeValue(), NamingServiceConstants.NAMING_TYPE_SERVICE);
119 assertEquals(captor.getAllValues().get(0).getResourceNameValue(),
120 NamingServiceConstants.RESOURCE_NAME_SERVICE_INSTANCE_NAME);
121 assertEquals(captor.getAllValues().get(0).getPolicyInstanceNameValue(), null);
122 assertTrue(captor.getAllValues().get(0).getServiceModelNameValue().startsWith("testModelName"));
123 assertTrue(captor.getAllValues().get(0).getModelVersionValue().startsWith("testModelVersion"));
124 assertEquals(generatedName, serviceInstance.getServiceInstanceName());
128 public void createVpnBondingServiceNameTest() throws Exception {
129 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.NETWORK_ID)))
130 .thenReturn(buildL3Network());
131 when(extractPojosForBB.extractByKey(any(), ArgumentMatchers.eq(ResourceKey.VPN_ID)))
132 .thenReturn(buildVpnBinding());
133 ArgumentCaptor<NamingRequestObject> captor = ArgumentCaptor.forClass(NamingRequestObject.class);
134 String generatedName = "generatedWanTransportServiceName";
135 doReturn(generatedName).when(namingServiceResources).generateServiceInstanceName(any());
136 namingServiceCreateTasks.createVpnBondingServiceName(execution);
137 verify(namingServiceResources, times(1)).generateServiceInstanceName(captor.capture());
138 assertTrue(captor.getAllValues().get(0).getExternalKeyValue().startsWith("testServiceInstanceId"));
139 assertEquals(captor.getAllValues().get(0).getPolicyInstanceNameValue(), null);
140 assertEquals(captor.getAllValues().get(0).getNamingTypeValue(), NamingServiceConstants.NAMING_TYPE_SERVICE);
141 assertTrue(captor.getAllValues().get(0).getServiceModelNameValue().startsWith("testModelName"));
142 assertTrue(captor.getAllValues().get(0).getModelVersionValue().startsWith("testModelVersion"));
143 assertTrue(captor.getAllValues().get(0).getNetworkNameValue().startsWith("testNetworkName"));
144 assertTrue(captor.getAllValues().get(0).getVpnNameValue().startsWith("testVpnName"));
145 assertEquals(captor.getAllValues().get(0).getResourceNameValue(),
146 NamingServiceConstants.RESOURCE_NAME_SERVICE_INSTANCE_NAME);
147 assertEquals(generatedName, serviceInstance.getServiceInstanceName());