3dbacd2679e4ede1e3e964039cdd1fbf15327af7
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / client / orchestration / AAIVfModuleResourcesTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.client.orchestration;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertTrue;
26 import static org.mockito.ArgumentMatchers.any;
27 import static org.mockito.ArgumentMatchers.eq;
28 import static org.mockito.ArgumentMatchers.isA;
29 import static org.mockito.Mockito.doNothing;
30 import static org.mockito.Mockito.doReturn;
31 import static org.mockito.Mockito.times;
32 import static org.mockito.Mockito.verify;
33 import java.util.Optional;
34 import org.junit.Before;
35 import org.junit.Test;
36 import org.junit.runner.RunWith;
37 import org.mockito.ArgumentMatchers;
38 import org.mockito.InjectMocks;
39 import org.mockito.Mock;
40 import org.mockito.junit.MockitoJUnitRunner;
41 import org.onap.so.bpmn.common.InjectionHelper;
42 import org.onap.so.bpmn.common.data.TestDataSetup;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
47 import org.onap.aaiclient.client.aai.AAIObjectPlurals;
48 import org.onap.aaiclient.client.aai.AAIResourcesClient;
49 import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri;
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;
54
55 @RunWith(MockitoJUnitRunner.Silent.class)
56 public class AAIVfModuleResourcesTest extends TestDataSetup {
57     @InjectMocks
58     private AAIVfModuleResources aaiVfModuleResources = new AAIVfModuleResources();
59
60     private VfModule vfModule;
61     private GenericVnf vnf;
62
63     @Mock
64     protected AAIResourcesClient MOCK_aaiResourcesClient;
65
66     @Mock
67     protected AAIObjectMapper MOCK_aaiObjectMapper;
68
69     @Mock
70     protected InjectionHelper MOCK_injectionHelper;
71
72     @Before
73     public void before() {
74         vfModule = buildVfModule();
75         vnf = buildGenericVnf();
76         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
77     }
78
79     @Test
80     public void updateOrchestrationStatusVfModuleTest() throws Exception {
81         vfModule.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
82
83         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
84                 isA(org.onap.aai.domain.yang.VfModule.class));
85
86         aaiVfModuleResources.updateOrchestrationStatusVfModule(vfModule, vnf, OrchestrationStatus.ACTIVE);
87
88         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
89
90         assertEquals(OrchestrationStatus.ACTIVE, vfModule.getOrchestrationStatus());
91     }
92
93     @Test
94     public void createVfModuleTest() throws Exception {
95         vfModule.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
96
97         doReturn(new org.onap.aai.domain.yang.VfModule()).when(MOCK_aaiObjectMapper).mapVfModule(vfModule);
98         doReturn(MOCK_aaiResourcesClient).when(MOCK_aaiResourcesClient).createIfNotExists(isA(AAIResourceUri.class),
99                 any(Optional.class));
100         aaiVfModuleResources.createVfModule(vfModule, vnf);
101
102         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
103         assertEquals(OrchestrationStatus.INVENTORIED, vfModule.getOrchestrationStatus());
104     }
105
106     @Test
107     public void deleteVfModuleTest() throws Exception {
108         doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
109
110         aaiVfModuleResources.deleteVfModule(vfModule, vnf);
111
112         verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
113     }
114
115     @Test
116     public void changeAssignVfModuleTest() throws Exception {
117         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
118                 isA(org.onap.aai.domain.yang.VfModule.class));
119
120         aaiVfModuleResources.changeAssignVfModule(vfModule, vnf);
121
122         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
123     }
124
125     @Test
126     public void connectVfModuleToVolumeGroupTest() throws Exception {
127         VolumeGroup volumeGroup = buildVolumeGroup();
128         volumeGroup.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
129
130         CloudRegion cloudRegion = buildCloudRegion();
131
132         aaiVfModuleResources.connectVfModuleToVolumeGroup(vnf, vfModule, volumeGroup, cloudRegion);
133         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
134     }
135
136     @Test
137     public void updateHeatStackIdVfModuleTest() throws Exception {
138         vfModule.setHeatStackId("testHeatStackId");
139
140         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
141                 isA(org.onap.aai.domain.yang.VfModule.class));
142
143         aaiVfModuleResources.updateHeatStackIdVfModule(vfModule, vnf);
144
145         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
146
147         assertEquals("testHeatStackId", vfModule.getHeatStackId());
148     }
149
150     @Test
151     public void updateContrailServiceInstanceFqdnVfModuleTest() throws Exception {
152         vfModule.setContrailServiceInstanceFqdn("testContrailServiceInstanceFqdn");
153
154         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
155                 isA(org.onap.aai.domain.yang.VfModule.class));
156
157         aaiVfModuleResources.updateContrailServiceInstanceFqdnVfModule(vfModule, vnf);
158
159         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), ArgumentMatchers.isNull());
160
161         assertEquals("testContrailServiceInstanceFqdn", vfModule.getContrailServiceInstanceFqdn());
162     }
163
164     @Test
165     public void checkNameInUseTrueTest() throws Exception {
166         AAIPluralResourceUri vfModuleUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE)
167                 .queryParam("vf-module-name", vfModule.getVfModuleName());
168         AAIPluralResourceUri vfModuleUriWithCustomization = vfModuleUri.clone().queryParam("model-customization-id",
169                 vfModule.getModelInfoVfModule().getModelCustomizationUUID());
170         doReturn(false).when(MOCK_aaiResourcesClient).exists(eq(vfModuleUriWithCustomization));
171         doReturn(true).when(MOCK_aaiResourcesClient).exists(eq(vfModuleUri));
172         boolean nameInUse = aaiVfModuleResources.checkNameInUse(vfModule);
173         assertTrue(nameInUse);
174     }
175
176     @Test
177     public void checkNameInUseFalseIsResumeTest() throws Exception {
178         AAIPluralResourceUri vfModuleUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE)
179                 .queryParam("vf-module-name", vfModule.getVfModuleName());
180         AAIPluralResourceUri vfModuleUriWithCustomization = vfModuleUri.clone().queryParam("model-customization-id",
181                 vfModule.getModelInfoVfModule().getModelCustomizationUUID());
182         doReturn(true).when(MOCK_aaiResourcesClient).exists(eq(vfModuleUriWithCustomization));
183         boolean nameInUse = aaiVfModuleResources.checkNameInUse(vfModule);
184         assertFalse(nameInUse);
185     }
186
187     @Test
188     public void checkNameInUseFalseTest() throws Exception {
189         AAIPluralResourceUri vfModuleUri = AAIUriFactory.createNodesUri(AAIObjectPlurals.VF_MODULE)
190                 .queryParam("vf-module-name", vfModule.getVfModuleName());
191         AAIPluralResourceUri vfModuleUriWithCustomization = vfModuleUri.clone().queryParam("model-customization-id",
192                 vfModule.getModelInfoVfModule().getModelCustomizationUUID());
193         doReturn(false).when(MOCK_aaiResourcesClient).exists(eq(vfModuleUriWithCustomization));
194         doReturn(false).when(MOCK_aaiResourcesClient).exists(eq(vfModuleUri));
195         boolean nameInUse = aaiVfModuleResources.checkNameInUse(vfModule);
196         assertFalse(nameInUse);
197     }
198 }