SO WorkflowAction refactor
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / bpmn / infrastructure / workflow / tasks / AaiResourceIdValidatorTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2019 Samsung
8  * ================================================================================
9  * Modifications Copyright (c) 2020 Nokia
10  * ================================================================================
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *      http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  * ============LICENSE_END=========================================================
23  */
24
25 package org.onap.so.bpmn.infrastructure.workflow.tasks;
26
27 import static org.hamcrest.CoreMatchers.containsString;
28 import static org.junit.Assert.assertEquals;
29 import static org.mockito.Mockito.when;
30 import java.util.HashMap;
31 import java.util.Map;
32 import java.util.Optional;
33 import org.junit.Rule;
34 import org.junit.Test;
35 import org.junit.rules.ExpectedException;
36 import org.junit.runner.RunWith;
37 import org.mockito.InjectMocks;
38 import org.mockito.Mock;
39 import org.mockito.junit.MockitoJUnitRunner;
40 import org.onap.aai.domain.yang.GenericVnf;
41 import org.onap.aai.domain.yang.GenericVnfs;
42 import org.onap.aai.domain.yang.L3Network;
43 import org.onap.aai.domain.yang.ServiceInstance;
44 import org.onap.aai.domain.yang.ServiceInstances;
45 import org.onap.aai.domain.yang.VfModule;
46 import org.onap.aai.domain.yang.VfModules;
47 import org.onap.aai.domain.yang.VolumeGroup;
48 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
49 import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
50 import org.onap.so.bpmn.servicedecomposition.tasks.BBInputSetupUtils;
51 import org.onap.so.bpmn.servicedecomposition.tasks.exceptions.DuplicateNameException;
52 import org.onap.so.serviceinstancebeans.ModelInfo;
53 import org.onap.so.serviceinstancebeans.RequestDetails;
54 import org.onap.so.serviceinstancebeans.RequestParameters;
55 import org.onap.so.serviceinstancebeans.SubscriberInfo;
56
57 @RunWith(MockitoJUnitRunner.class)
58 public class AaiResourceIdValidatorTest {
59
60     @Mock
61     private BBInputSetupUtils bbInputSetupUtilsMock;
62
63     @InjectMocks
64     private AaiResourceIdValidator testedObject;
65
66     @Rule
67     public ExpectedException expectedException = ExpectedException.none();
68
69     @Test
70     public void validateResourceIdInAAIVnfTest() throws Exception {
71         RequestDetails reqDetails = setupRequestDetails();
72         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
73         workflowResourceIds.setServiceInstanceId("siId123");
74         GenericVnf vnf = new GenericVnf();
75         vnf.setVnfId("id123");
76         vnf.setModelCustomizationId("1234567");
77         Optional<GenericVnf> opVnf = Optional.of(vnf);
78         GenericVnf vnf2 = new GenericVnf();
79         vnf2.setVnfId("id123");
80         vnf2.setModelCustomizationId("222");
81         Optional<GenericVnf> opVnf2 = Optional.of(vnf2);
82         when(bbInputSetupUtilsMock.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
83         when(bbInputSetupUtilsMock.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName222")).thenReturn(opVnf2);
84         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName123", reqDetails,
85                 workflowResourceIds);
86         assertEquals("id123", id);
87         String id2 = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "nameTest", reqDetails,
88                 workflowResourceIds);
89         assertEquals("generatedId123", id2);
90
91         this.expectedException.expect(DuplicateNameException.class);
92         this.expectedException.expectMessage(containsString(
93                 "generic-vnf with name (vnfName222), same parent and different customization id (222) already exists. The name must be unique."));
94         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName222", reqDetails,
95                 workflowResourceIds);
96     }
97
98     @Test
99     public void validateResourceIdInAAIVnfNotGloballyUniqueTest() throws Exception {
100         RequestDetails reqDetails = setupRequestDetails();
101         GenericVnfs genericVnfs = new GenericVnfs();
102         GenericVnf vnf3 = new GenericVnf();
103         vnf3.setVnfId("id123");
104
105         genericVnfs.getGenericVnf().add(vnf3);
106         when(bbInputSetupUtilsMock.getAAIVnfsGloballyByName("vnfName333")).thenReturn(genericVnfs);
107
108         this.expectedException.expect(DuplicateNameException.class);
109         this.expectedException.expectMessage(containsString(
110                 "generic-vnf with name (vnfName333) id (id123) and different parent relationship already exists. The name must be unique."));
111         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VNF, "vnfName333", reqDetails,
112                 new WorkflowResourceIds());
113     }
114
115     @Test
116     public void validateResourceIdInAAINetworkTest() throws Exception {
117         RequestDetails reqDetails = setupRequestDetails();
118         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
119         workflowResourceIds.setServiceInstanceId("siId123");
120         L3Network network = new L3Network();
121         network.setNetworkId("id123");
122         network.setModelCustomizationId("1234567");
123         Optional<L3Network> opNetwork = Optional.of(network);
124         L3Network network2 = new L3Network();
125         network2.setNetworkId("id123");
126         network2.setModelCustomizationId("222");
127         Optional<L3Network> opNetwork2 = Optional.of(network2);
128
129         when(bbInputSetupUtilsMock.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
130                 .thenReturn(opNetwork);
131         when(bbInputSetupUtilsMock.getRelatedNetworkByNameFromServiceInstance("siId123", "networkName222"))
132                 .thenReturn(opNetwork2);
133         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "name123", reqDetails,
134                 workflowResourceIds);
135         assertEquals("id123", id);
136         String id2 = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "111111", reqDetails,
137                 workflowResourceIds);
138         assertEquals("generatedId123", id2);
139
140         this.expectedException.expect(DuplicateNameException.class);
141         this.expectedException.expectMessage(containsString(
142                 "l3Network with name (networkName222), same parent and different customization id (222) already exists. The name must be unique."));
143         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName222", reqDetails,
144                 workflowResourceIds);
145     }
146
147     @Test
148     public void validateNetworkResourceNameExistsInAAITest() throws Exception {
149         RequestDetails reqDetails = setupRequestDetails();
150         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
151         workflowResourceIds.setServiceInstanceId("siId123");
152
153         when(bbInputSetupUtilsMock.existsAAINetworksGloballyByName("networkName333")).thenReturn(true);
154
155         this.expectedException.expect(DuplicateNameException.class);
156         this.expectedException.expectMessage(containsString(
157                 "l3Network with name (networkName333) id (siId123) and different parent relationship already exists. The name must be unique."));
158         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.NETWORK, "networkName333", reqDetails,
159                 workflowResourceIds);
160     }
161
162     @Test
163     public void validateResourceIdInAAIVfModuleTest() throws Exception {
164         RequestDetails reqDetails = setupRequestDetails();
165         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
166         workflowResourceIds.setVnfId("id123");
167
168         GenericVnf vnf = new GenericVnf();
169         VfModules vfModules = new VfModules();
170         VfModule vfModule = new VfModule();
171         vfModule.setVfModuleId("id123");
172         vfModule.setVfModuleName("name123");
173         vfModule.setModelCustomizationId("1234567");
174         vfModules.getVfModule().add(vfModule);
175         vnf.setVfModules(vfModules);
176
177         when(bbInputSetupUtilsMock.getAAIGenericVnf("id123")).thenReturn(vnf);
178         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "name123", reqDetails,
179                 workflowResourceIds);
180         assertEquals("id123", id);
181
182         GenericVnf vnf1 = new GenericVnf();
183         VfModules vfModules2 = new VfModules();
184         VfModule vfModule2 = new VfModule();
185         vfModule2.setVfModuleName("vFModName222");
186         vfModule2.setModelCustomizationId("222");
187         vfModules2.getVfModule().add(vfModule2);
188         vnf1.setVfModules(vfModules2);
189         workflowResourceIds.setVnfId("id111");
190         when(bbInputSetupUtilsMock.getAAIGenericVnf("id111")).thenReturn(vnf1);
191         String id2 = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "111111", reqDetails,
192                 workflowResourceIds);
193         assertEquals("generatedId123", id2);
194
195         this.expectedException.expect(DuplicateNameException.class);
196         this.expectedException.expectMessage(containsString(
197                 "vfModule with name (vFModName222), same parent and different customization id (1234567) already exists. The name must be unique."));
198         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName222", reqDetails,
199                 workflowResourceIds);
200     }
201
202     @Test
203     public void validateResourceIdInAAIVfModuleNotGloballyUniqueTest() throws Exception {
204         RequestDetails reqDetails = setupRequestDetails();
205
206         when(bbInputSetupUtilsMock.existsAAIVfModuleGloballyByName("vFModName333")).thenReturn(true);
207         this.expectedException.expect(DuplicateNameException.class);
208         this.expectedException.expectMessage(
209                 containsString("vfModule with name vFModName333 already exists. The name must be unique."));
210         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VFMODULE, "vFModName333", reqDetails,
211                 new WorkflowResourceIds());
212     }
213
214     @Test
215     public void validateResourceIdInAAIVolumeGroupTest() throws Exception {
216         RequestDetails reqDetails = setupRequestDetails();
217         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
218         workflowResourceIds.setVnfId("id123");
219         VolumeGroup volumeGroup = new VolumeGroup();
220         volumeGroup.setVolumeGroupId("id123");
221         volumeGroup.setVolumeGroupName("name123");
222         volumeGroup.setVfModuleModelCustomizationId("1234567");
223         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
224
225         when(bbInputSetupUtilsMock.getRelatedVolumeGroupByNameFromVnf("id123", "name123")).thenReturn(opVolumeGroup);
226         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
227                 reqDetails, workflowResourceIds);
228         assertEquals("id123", id);
229
230         String id2 = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "111111",
231                 reqDetails, workflowResourceIds);
232         assertEquals("generatedId123", id2);
233     }
234
235
236     @Test
237     public void validateSourceIdInAAIVolumeGroupNotGloballyUniqueTest() throws Exception {
238         RequestDetails reqDetails = setupRequestDetails();
239         when(bbInputSetupUtilsMock.existsAAIVolumeGroupGloballyByName("testVolumeGroup")).thenReturn(true);
240         this.expectedException.expect(DuplicateNameException.class);
241         this.expectedException.expectMessage(
242                 containsString("volumeGroup with name testVolumeGroup already exists. The name must be unique."));
243         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "testVolumeGroup", reqDetails,
244                 new WorkflowResourceIds());
245     }
246
247     @Test
248     public void validateResourceIdInAAIConfigurationTest() throws Exception {
249         RequestDetails reqDetails = setupRequestDetails();
250         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
251         workflowResourceIds.setServiceInstanceId("siId123");
252
253         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
254         configuration.setConfigurationId("id123");
255         configuration.setModelCustomizationId("1234567");
256         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
257
258         org.onap.aai.domain.yang.Configuration configuration2 = new org.onap.aai.domain.yang.Configuration();
259         configuration2.setConfigurationId("id123");
260         configuration2.setModelCustomizationId("222");
261         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration2 = Optional.of(configuration2);
262
263         when(bbInputSetupUtilsMock.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
264                 .thenReturn(opConfiguration);
265         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name123",
266                 reqDetails, workflowResourceIds);
267         assertEquals("id123", id);
268
269         String id2 = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "111111",
270                 reqDetails, workflowResourceIds);
271         assertEquals("generatedId123", id2);
272
273         when(bbInputSetupUtilsMock.getRelatedConfigurationByNameFromServiceInstance("siId123", "name222"))
274                 .thenReturn(opConfiguration2);
275         this.expectedException.expect(DuplicateNameException.class);
276         this.expectedException.expectMessage(containsString(
277                 "configuration with name (name222), same parent and different customization id (id123) already exists. The name must be unique."));
278         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "name222", reqDetails,
279                 workflowResourceIds);
280     }
281
282     @Test
283     public void validateResourceIdInAAIConfigurationNotGloballyUniqueTest() throws Exception {
284         RequestDetails reqDetails = setupRequestDetails();
285         when(bbInputSetupUtilsMock.existsAAIConfigurationGloballyByName("testConfig")).thenReturn(true);
286         this.expectedException.expect(DuplicateNameException.class);
287         this.expectedException.expectMessage(
288                 containsString("configuration with name testConfig already exists. The name must be unique."));
289         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.CONFIGURATION, "testConfig", reqDetails,
290                 new WorkflowResourceIds());
291     }
292
293     @Test
294     public void validateResourceIdInAAISITest() throws Exception {
295         RequestDetails reqDetails = setupRequestDetails();
296         reqDetails.getModelInfo().setModelVersionId("1234567");
297
298         ServiceInstance si = new ServiceInstance();
299         si.setServiceInstanceId("siId123");
300         si.setModelVersionId("1234567");
301         ServiceInstances serviceInstances = new ServiceInstances();
302         serviceInstances.getServiceInstance().add(si);
303         Optional<ServiceInstance> siOp = Optional.of(si);
304         ServiceInstance si2 = new ServiceInstance();
305         si2.setServiceInstanceId("siId222");
306         si2.setModelVersionId("22222");
307         si2.setServiceInstanceName("siName222");
308         Optional<ServiceInstance> siOp2 = Optional.of(si2);
309         ServiceInstances serviceInstances2 = new ServiceInstances();
310         serviceInstances2.getServiceInstance().add(si2);
311
312         when(bbInputSetupUtilsMock.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123"))
313                 .thenReturn(siOp);
314         when(bbInputSetupUtilsMock.getAAIServiceInstanceByName("id123", "subServiceType123", "siName222"))
315                 .thenReturn(siOp2);
316         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123",
317                 reqDetails, new WorkflowResourceIds());
318         assertEquals("siId123", id);
319         String id2 = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "111111", reqDetails,
320                 new WorkflowResourceIds());
321         assertEquals("generatedId123", id2);
322
323         this.expectedException.expect(DuplicateNameException.class);
324         this.expectedException.expectMessage(containsString(
325                 "serviceInstance with name (siName222) and different version id (1234567) already exists. The name must be unique."));
326         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName222", reqDetails,
327                 new WorkflowResourceIds());
328     }
329
330     @Test
331     public void validateResourceIdInAAIMultipleSITest() throws Exception {
332         RequestDetails reqDetails = setupRequestDetails();
333         reqDetails.getModelInfo().setModelVersionId("1234567");
334         ServiceInstance si = new ServiceInstance();
335         ServiceInstances serviceInstances = new ServiceInstances();
336         serviceInstances.getServiceInstance().add(si);
337         ServiceInstance si2 = new ServiceInstance();
338         serviceInstances.getServiceInstance().add(si2);
339         when(bbInputSetupUtilsMock.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
340
341         this.expectedException.expect(DuplicateNameException.class);
342         this.expectedException.expectMessage(containsString(
343                 "serviceInstance with name (siName123) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
344         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
345                 new WorkflowResourceIds());
346     }
347
348     @Test
349     public void validateResourceIdInAAISIExistsTest() throws Exception {
350         RequestDetails reqDetails = setupRequestDetails();
351         reqDetails.getModelInfo().setModelVersionId("1234567");
352
353         ServiceInstance si = new ServiceInstance();
354         si.setServiceInstanceId("siId123");
355         si.setModelVersionId("1234567");
356         ServiceInstances serviceInstances = new ServiceInstances();
357         serviceInstances.getServiceInstance().add(si);
358
359         Map<String, String> uriKeys = new HashMap<>();
360         uriKeys.put(AAIFluentTypeBuilder.Types.CUSTOMER.getUriParams().globalCustomerId, "globalCustomerId");
361         uriKeys.put(AAIFluentTypeBuilder.Types.SERVICE_SUBSCRIPTION.getUriParams().serviceType, "serviceType");
362
363         when(bbInputSetupUtilsMock.getAAIServiceInstancesGloballyByName("siName123")).thenReturn(serviceInstances);
364         when(bbInputSetupUtilsMock.getURIKeysFromServiceInstance("siId123")).thenReturn(uriKeys);
365
366         this.expectedException.expect(DuplicateNameException.class);
367         this.expectedException.expectMessage(containsString(
368                 "serviceInstance with name (siName123) and global-customer-id (globalCustomerId), service-type (serviceType), model-version-id (1234567) already exists. The name must be unique."));
369         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.SERVICE, "siName123", reqDetails,
370                 new WorkflowResourceIds());
371     }
372
373     @Test
374     public void validateServiceResourceIdInAAINoDupTest() throws Exception {
375         RequestDetails reqDetails = setupRequestDetails();
376         String id = testedObject.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
377         assertEquals("generatedId123", id);
378     }
379
380     @Test
381     public void validateServiceResourceIdInAAISameModelVersionId() throws Exception {
382         RequestDetails reqDetails = setupRequestDetails();
383         reqDetails.getModelInfo().setModelVersionId("1234567");
384
385         ServiceInstance si = new ServiceInstance();
386         si.setServiceInstanceId("siId123");
387         si.setModelVersionId("1234567");
388         Optional<ServiceInstance> siOp = Optional.of(si);
389
390         when(bbInputSetupUtilsMock.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123"))
391                 .thenReturn(siOp);
392         String id = testedObject.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
393         assertEquals("siId123", id);
394     }
395
396     @Test
397     public void validateServiceResourceIdInAAIDifferentModelVersionId() throws Exception {
398         RequestDetails reqDetails = setupRequestDetails();
399         reqDetails.getModelInfo().setModelVersionId("1234567");
400
401         ServiceInstance si = new ServiceInstance();
402         si.setModelVersionId("9999999");
403         ServiceInstances serviceInstances = new ServiceInstances();
404         serviceInstances.getServiceInstance().add(si);
405         Optional<ServiceInstance> siOp = Optional.of(si);
406
407         when(bbInputSetupUtilsMock.getAAIServiceInstanceByName("id123", "subServiceType123", "siName123"))
408                 .thenReturn(siOp);
409
410         this.expectedException.expect(DuplicateNameException.class);
411         this.expectedException.expectMessage(containsString(
412                 "serviceInstance with name (siName123) and different version id (1234567) already exists. The name must be unique."));
413
414         String id = testedObject.validateServiceResourceIdInAAI("generatedId123", "siName123", reqDetails);
415         assertEquals("siId123", id);
416     }
417
418     @Test
419     public void validateServiceResourceIdInAAIDuplicateNameTest() throws Exception {
420         RequestDetails reqDetails = setupRequestDetails();
421         ServiceInstance si = new ServiceInstance();
422         si.setModelVersionId("1234567");
423         ServiceInstances serviceInstances = new ServiceInstances();
424         serviceInstances.getServiceInstance().add(si);
425
426         when(bbInputSetupUtilsMock.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
427
428         this.expectedException.expect(DuplicateNameException.class);
429         this.expectedException.expectMessage(containsString(
430                 "serviceInstance with name (siName) and global-customer-id (null), service-type (null), model-version-id (1234567) already exists. The name must be unique."));
431
432         testedObject.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
433     }
434
435     @Test
436     public void validateServiceResourceIdInAAIDuplicateNameMultipleTest() throws Exception {
437         RequestDetails reqDetails = setupRequestDetails();
438         ServiceInstances serviceInstances = new ServiceInstances();
439         serviceInstances.getServiceInstance().add(new ServiceInstance());
440         serviceInstances.getServiceInstance().add(new ServiceInstance());
441
442         when(bbInputSetupUtilsMock.getAAIServiceInstancesGloballyByName("siName")).thenReturn(serviceInstances);
443
444         this.expectedException.expect(DuplicateNameException.class);
445         this.expectedException.expectMessage(containsString(
446                 "serviceInstance with name (siName) and multiple combination of model-version-id + service-type + global-customer-id already exists. The name must be unique."));
447
448         testedObject.validateServiceResourceIdInAAI("generatedId123", "siName", reqDetails);
449     }
450
451     @Test
452     public void validateNetworkResourceIdInAAITest() throws Exception {
453         RequestDetails reqDetails = setupRequestDetails();
454         String id = testedObject.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
455                 new WorkflowResourceIds());
456         assertEquals("generatedId123", id);
457     }
458
459     @Test
460     public void validateNetworkResourceIdInAAISameModelCustIdTest() throws Exception {
461         RequestDetails reqDetails = setupRequestDetails();
462         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
463         workflowResourceIds.setServiceInstanceId("siId123");
464         L3Network network = new L3Network();
465         network.setNetworkId("id123");
466         network.setModelCustomizationId("1234567");
467         Optional<L3Network> opNetwork = Optional.of(network);
468
469         when(bbInputSetupUtilsMock.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
470                 .thenReturn(opNetwork);
471
472         String id = testedObject.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails,
473                 workflowResourceIds);
474         assertEquals("id123", id);
475     }
476
477     @Test
478     public void validateNetworkResourceIdInAAIDuplicateNameTest() throws Exception {
479         RequestDetails reqDetails = setupRequestDetails();
480         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
481         workflowResourceIds.setServiceInstanceId("siId123");
482         L3Network network = new L3Network();
483         network.setModelCustomizationId("9999999");
484         Optional<L3Network> opNetwork = Optional.of(network);
485
486         when(bbInputSetupUtilsMock.getRelatedNetworkByNameFromServiceInstance("siId123", "name123"))
487                 .thenReturn(opNetwork);
488
489         this.expectedException.expect(DuplicateNameException.class);
490         this.expectedException.expectMessage(containsString(
491                 "l3Network with name (name123), same parent and different customization id (9999999) already exists. The name must be unique."));
492
493         testedObject.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
494     }
495
496     @Test
497     public void validateNetworkResourceIdInAAINotGloballyUniqueTest() throws Exception {
498         RequestDetails reqDetails = setupRequestDetails();
499         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
500         workflowResourceIds.setServiceInstanceId("siId123");
501
502         when(bbInputSetupUtilsMock.existsAAINetworksGloballyByName("name123")).thenReturn(true);
503
504         this.expectedException.expect(DuplicateNameException.class);
505         this.expectedException.expectMessage(containsString(
506                 "l3Network with name (name123) id (siId123) and different parent relationship already exists. The name must be unique."));
507
508         testedObject.validateNetworkResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
509     }
510
511     @Test
512     public void validateVnfResourceIdInAAITest() throws Exception {
513         RequestDetails reqDetails = setupRequestDetails();
514         String id = testedObject.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
515                 new WorkflowResourceIds());
516         assertEquals("generatedId123", id);
517     }
518
519     @Test
520     public void validateVnfResourceIdInAAISameModelCustomizationIdTest() throws Exception {
521         RequestDetails reqDetails = setupRequestDetails();
522         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
523         workflowResourceIds.setServiceInstanceId("siId123");
524
525         GenericVnf vnf = new GenericVnf();
526         vnf.setVnfId("id123");
527         vnf.setModelCustomizationId("1234567");
528         Optional<GenericVnf> opVnf = Optional.of(vnf);
529
530         when(bbInputSetupUtilsMock.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
531         String id = testedObject.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails,
532                 workflowResourceIds);
533         assertEquals("id123", id);
534     }
535
536     @Test
537     public void validateVnfResourceIdInAAIDiffModelCustomizationIdTest() throws Exception {
538         RequestDetails reqDetails = setupRequestDetails();
539         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
540         workflowResourceIds.setServiceInstanceId("siId123");
541         GenericVnf vnf = new GenericVnf();
542         vnf.setModelCustomizationId("9999999");
543         Optional<GenericVnf> opVnf = Optional.of(vnf);
544
545         when(bbInputSetupUtilsMock.getRelatedVnfByNameFromServiceInstance("siId123", "vnfName123")).thenReturn(opVnf);
546
547         this.expectedException.expect(DuplicateNameException.class);
548         this.expectedException.expectMessage(containsString(
549                 "generic-vnf with name (vnfName123), same parent and different customization id (9999999) already exists. The name must be unique."));
550
551         testedObject.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, workflowResourceIds);
552     }
553
554     @Test
555     public void validateVnfResourceIdInAAINotGloballyUniqueTest() throws Exception {
556         RequestDetails reqDetails = setupRequestDetails();
557         GenericVnf vnf = new GenericVnf();
558         vnf.setVnfId("id123");
559         GenericVnfs genericVnfs = new GenericVnfs();
560         genericVnfs.getGenericVnf().add(vnf);
561
562         when(bbInputSetupUtilsMock.getAAIVnfsGloballyByName("vnfName123")).thenReturn(genericVnfs);
563
564         this.expectedException.expect(DuplicateNameException.class);
565         this.expectedException.expectMessage(containsString(
566                 "generic-vnf with name (vnfName123) id (id123) and different parent relationship already exists. The name must be unique."));
567
568         testedObject.validateVnfResourceIdInAAI("generatedId123", "vnfName123", reqDetails, new WorkflowResourceIds());
569     }
570
571     @Test
572     public void validateVfModuleResourceIdTest() throws Exception {
573         RequestDetails reqDetails = setupRequestDetails();
574         String id = testedObject.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
575                 new WorkflowResourceIds());
576         assertEquals("generatedId123", id);
577     }
578
579     @Test
580     public void validateVfModuleResourceIdSameModelCustIdTest() throws Exception {
581         RequestDetails reqDetails = setupRequestDetails();
582         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
583         workflowResourceIds.setVnfId("vnfId123");
584         VfModules vfModules = new VfModules();
585         VfModule vfModule = new VfModule();
586         vfModule.setVfModuleId("id123");
587         vfModule.setVfModuleName("name123");
588         vfModule.setModelCustomizationId("1234567");
589         vfModules.getVfModule().add(vfModule);
590         GenericVnf vnf = new GenericVnf();
591         vnf.setVfModules(vfModules);
592
593         when(bbInputSetupUtilsMock.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
594
595         String id = testedObject.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails,
596                 workflowResourceIds);
597         assertEquals("id123", id);
598     }
599
600     @Test
601     public void validateVfModuleResourceIdDifferentModelCustIdTest() throws Exception {
602         RequestDetails reqDetails = setupRequestDetails();
603         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
604         workflowResourceIds.setVnfId("vnfId123");
605         VfModules vfModules = new VfModules();
606         VfModule vfModule = new VfModule();
607         vfModule.setVfModuleName("name123");
608         vfModule.setModelCustomizationId("9999999");
609         vfModules.getVfModule().add(vfModule);
610         GenericVnf vnf = new GenericVnf();
611         vnf.setVfModules(vfModules);
612
613         when(bbInputSetupUtilsMock.getAAIGenericVnf("vnfId123")).thenReturn(vnf);
614
615         this.expectedException.expect(DuplicateNameException.class);
616         this.expectedException.expectMessage(containsString(
617                 "vfModule with name (name123), same parent and different customization id (1234567) already exists. The name must be unique."));
618
619         testedObject.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
620     }
621
622     @Test
623     public void validateVfModuleResourceIdNotGloballyUniqueTest() throws Exception {
624         RequestDetails reqDetails = setupRequestDetails();
625         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
626         when(bbInputSetupUtilsMock.existsAAIVfModuleGloballyByName("name123")).thenReturn(true);
627
628         this.expectedException.expect(DuplicateNameException.class);
629         this.expectedException
630                 .expectMessage(containsString("vfModule with name name123 already exists. The name must be unique."));
631
632         testedObject.validateVfModuleResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
633     }
634
635     @Test
636     public void validateVolumeGroupResourceIdInAAITest() throws Exception {
637         RequestDetails reqDetails = setupRequestDetails();
638         String id = testedObject.validateVolumeGroupResourceIdInAAI("generatedId123", "name123", reqDetails,
639                 new WorkflowResourceIds());
640         assertEquals("generatedId123", id);
641     }
642
643     @Test
644     public void validateVolumeGroupResourceIdInAAISameModelCustIdTest() throws Exception {
645         RequestDetails reqDetails = setupRequestDetails();
646         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
647         workflowResourceIds.setVnfId("vnfId123");
648         VolumeGroup volumeGroup = new VolumeGroup();
649         volumeGroup.setVolumeGroupId("id123");
650         volumeGroup.setVfModuleModelCustomizationId("1234567");
651         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
652
653         when(bbInputSetupUtilsMock.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
654         String id = testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123",
655                 reqDetails, workflowResourceIds);
656
657         assertEquals("id123", id);
658     }
659
660     @Test
661     public void validateVolumeGroupResourceIdInAAIDifferentModelCustIdTest() throws Exception {
662         RequestDetails reqDetails = setupRequestDetails();
663         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
664         workflowResourceIds.setVnfId("vnfId123");
665         VolumeGroup volumeGroup = new VolumeGroup();
666         volumeGroup.setVolumeGroupName("name123");
667         volumeGroup.setVfModuleModelCustomizationId("9999999");
668         Optional<VolumeGroup> opVolumeGroup = Optional.of(volumeGroup);
669
670         when(bbInputSetupUtilsMock.getRelatedVolumeGroupByNameFromVnf("vnfId123", "name123")).thenReturn(opVolumeGroup);
671
672         this.expectedException.expect(DuplicateNameException.class);
673         this.expectedException.expectMessage(
674                 containsString("volumeGroup with name name123 already exists. The name must be unique."));
675
676         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
677                 workflowResourceIds);
678     }
679
680     @Test
681     public void validateVolumeGroupResourceIdInAAINotGloballyUniqueTest() throws Exception {
682         RequestDetails reqDetails = setupRequestDetails();
683         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
684         when(bbInputSetupUtilsMock.existsAAIVolumeGroupGloballyByName("name123")).thenReturn(true);
685
686         this.expectedException.expect(DuplicateNameException.class);
687         this.expectedException.expectMessage(
688                 containsString("volumeGroup with name name123 already exists. The name must be unique."));
689
690         testedObject.validateResourceIdInAAI("generatedId123", WorkflowType.VOLUMEGROUP, "name123", reqDetails,
691                 workflowResourceIds);
692     }
693
694     @Test
695     public void validateConfigurationResourceIdInAAITest() throws Exception {
696         RequestDetails reqDetails = setupRequestDetails();
697         String id = testedObject.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
698                 new WorkflowResourceIds());
699         assertEquals("generatedId123", id);
700     }
701
702     @Test
703     public void validateConfigurationResourceIdInAAISameModelCustIdTest() throws Exception {
704         RequestDetails reqDetails = setupRequestDetails();
705         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
706         workflowResourceIds.setServiceInstanceId("siId123");
707         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
708         configuration.setConfigurationId("id123");
709         configuration.setModelCustomizationId("1234567");
710         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
711
712         when(bbInputSetupUtilsMock.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
713                 .thenReturn(opConfiguration);
714
715         String id = testedObject.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails,
716                 workflowResourceIds);
717         assertEquals("id123", id);
718     }
719
720     @Test
721     public void validateConfigurationResourceIdInAAIDifferentModelCustIdTest() throws Exception {
722         RequestDetails reqDetails = setupRequestDetails();
723         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
724         workflowResourceIds.setServiceInstanceId("siId123");
725         org.onap.aai.domain.yang.Configuration configuration = new org.onap.aai.domain.yang.Configuration();
726         configuration.setConfigurationId("id123");
727         configuration.setModelCustomizationId("9999999");
728         Optional<org.onap.aai.domain.yang.Configuration> opConfiguration = Optional.of(configuration);
729
730         when(bbInputSetupUtilsMock.getRelatedConfigurationByNameFromServiceInstance("siId123", "name123"))
731                 .thenReturn(opConfiguration);
732         this.expectedException.expect(DuplicateNameException.class);
733         this.expectedException.expectMessage(containsString(
734                 "configuration with name (name123), same parent and different customization id (id123) already exists. The name must be unique."));
735
736         testedObject.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
737     }
738
739     @Test
740     public void validateConfigurationResourceIdInAAINotGloballyUniqueTest() throws Exception {
741         RequestDetails reqDetails = setupRequestDetails();
742         WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
743
744         when(bbInputSetupUtilsMock.existsAAIConfigurationGloballyByName("name123")).thenReturn(true);
745         this.expectedException.expect(DuplicateNameException.class);
746         this.expectedException.expectMessage(
747                 containsString("configuration with name name123 already exists. The name must be unique."));
748
749         testedObject.validateConfigurationResourceIdInAAI("generatedId123", "name123", reqDetails, workflowResourceIds);
750     }
751
752     private RequestDetails setupRequestDetails() {
753         RequestDetails reqDetails = new RequestDetails();
754         SubscriberInfo subInfo = new SubscriberInfo();
755         subInfo.setGlobalSubscriberId("id123");
756         reqDetails.setSubscriberInfo(subInfo);
757         RequestParameters reqParams = new RequestParameters();
758         reqParams.setSubscriptionServiceType("subServiceType123");
759         reqDetails.setRequestParameters(reqParams);
760         ModelInfo modelInfo = new ModelInfo();
761         modelInfo.setModelCustomizationId("1234567");
762         reqDetails.setModelInfo(modelInfo);
763         return reqDetails;
764     }
765 }