Merge "add in a retry function for cloud config migration"
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / audit / AuditVServerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017-2019 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.adapters.audit;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.mockito.Mockito.doReturn;
25 import static org.mockito.Mockito.times;
26 import static org.mockito.Mockito.verify;
27
28 import java.io.File;
29 import java.io.IOException;
30 import java.util.HashSet;
31 import java.util.List;
32 import java.util.Optional;
33 import java.util.Set;
34 import java.util.stream.Stream;
35
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.mockito.InjectMocks;
40 import org.mockito.Mock;
41 import org.mockito.junit.MockitoJUnitRunner;
42 import org.onap.aai.domain.yang.LInterface;
43 import org.onap.aai.domain.yang.LInterfaces;
44 import org.onap.aai.domain.yang.Vserver;
45 import org.onap.so.client.aai.AAIObjectPlurals;
46 import org.onap.so.client.aai.AAIObjectType;
47 import org.onap.so.client.aai.AAIResourcesClient;
48 import org.onap.so.client.aai.entities.AAIResultWrapper;
49 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
50 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
51
52 import com.fasterxml.jackson.core.JsonParseException;
53 import com.fasterxml.jackson.databind.JsonMappingException;
54 import com.fasterxml.jackson.databind.ObjectMapper;
55 import com.woorea.openstack.heat.model.Resource;
56 import com.woorea.openstack.heat.model.Resources;
57
58 @RunWith(MockitoJUnitRunner.Silent.class)
59 public class AuditVServerTest extends AuditVServer {
60
61         private ObjectMapper objectMapper = new ObjectMapper();
62
63         @InjectMocks
64         private AuditVServer auditNova = new AuditVServer();
65
66         @Mock
67         private AAIResourcesClient aaiResourcesMock;
68
69         private String cloudOwner = "cloudOwner";
70         private String cloudRegion = "cloudRegion";
71         private String tenantId = "tenantId";
72
73         private AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER,cloudOwner, cloudRegion,
74                         tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
75         
76         private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
77                         tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
78
79         private AAIResourceUri ssc_1_trusted_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
80                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
81
82         private AAIResourceUri ssc_1_avpn_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
83                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "1c56a24b-5f03-435a-850d-31cd4252de56");
84
85         private AAIResourceUri ssc_1_mgmt_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
86                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "12afcd28-929f-4d80-8a5a-0833bfd5e20b");
87
88         private AAIResourceUri ssc_1_mgmt_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
89                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "80baec42-ffae-425f-ad8c-3f7b2c24bfff");
90
91         private AAIResourceUri ssc_1_mis_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
92                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "13eddf95-4cf3-45f2-823a-2d890a6549b4");
93
94         private AAIResourceUri ssc_1_int_ha_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
95                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adb8");
96
97         private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
98                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adz1");
99
100
101         private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
102                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adz2");
103
104         
105         
106         private AAIResourceUri mis_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
107                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "f711be16-2654-4a09-b89d-0511fda20e81");
108
109         private AAIResourceUri avpn_sub_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
110                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
111
112         private AAIResourceUri avpn_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
113                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "b7019dd0-2ee9-4447-bdef-ac25676b205a");
114
115         
116
117         private Set<Vserver> vserversToAudit = new HashSet<>();
118         
119         
120         LInterface test_port_1 = new LInterface();
121         LInterface test_port_2 = new LInterface();
122         LInterface ssc_1_int_ha_port_0 = new LInterface();
123         LInterface mis_sub_interface_1 = new LInterface();
124         LInterface ssc_1_mis_port_0 = new LInterface();
125         LInterface ssc_1_mgmt_port_0 = new LInterface();
126         LInterface ssc_1_mgmt_port_1 = new LInterface();
127         LInterface avpn_sub_interface_2 = new LInterface();
128         LInterface avpn_sub_interface_1 = new LInterface();
129         LInterface ssc_1_avpn_port_0 = new LInterface();
130         LInterface ssc_1_trusted_port_0 = new LInterface();
131         
132         LInterfaces test_port_1_plural = new LInterfaces();     
133         LInterfaces test_port_2_plural = new LInterfaces();
134         LInterfaces ssc_1_int_ha_port_0_plural = new LInterfaces();
135         LInterfaces mis_sub_interface_1_plural = new LInterfaces();
136         LInterfaces ssc_1_mis_port_0_plural = new LInterfaces();
137         LInterfaces ssc_1_mgmt_port_0_plural = new LInterfaces();
138         LInterfaces ssc_1_mgmt_port_1_plural = new LInterfaces();
139         LInterfaces avpn_sub_interface_2_plural = new LInterfaces();
140         LInterfaces avpn_sub_interface_1_plural = new LInterfaces();
141         LInterfaces ssc_1_avpn_port_0_plural = new LInterfaces();
142         LInterfaces ssc_1_trusted_port_0_plural = new LInterfaces();
143         
144         
145         @Before
146         public void setup() {
147                 auditNova.setAaiClient(aaiResourcesMock);
148
149                 Vserver vServer1= new Vserver();
150                 vServer1.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
151                 LInterfaces vServer1Linterfaces = new LInterfaces();
152                 vServer1.setLInterfaces(vServer1Linterfaces);
153                 
154                 ssc_1_trusted_port_0.setInterfaceId("dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
155                 ssc_1_trusted_port_0.setInterfaceName("interface-name");
156                 vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
157                 
158                 
159                 ssc_1_avpn_port_0.setInterfaceId("1c56a24b-5f03-435a-850d-31cd4252de56");
160                 ssc_1_avpn_port_0.setInterfaceName("interface-name");
161                 vServer1.getLInterfaces().getLInterface().add(ssc_1_avpn_port_0);
162                 ssc_1_avpn_port_0.setLInterfaces(new LInterfaces());    
163                 
164                 
165                 avpn_sub_interface_1.setInterfaceId("0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
166                 ssc_1_avpn_port_0.getLInterfaces().getLInterface().add(avpn_sub_interface_1);
167                 
168                 
169                 avpn_sub_interface_2.setInterfaceId("b7019dd0-2ee9-4447-bdef-ac25676b205a");
170                 ssc_1_avpn_port_0.getLInterfaces().getLInterface().add(avpn_sub_interface_2);
171                 
172                 
173                 ssc_1_mgmt_port_1.setInterfaceId("12afcd28-929f-4d80-8a5a-0833bfd5e20b");
174                 ssc_1_mgmt_port_1.setInterfaceName("interface-name");
175                 vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
176
177                 ssc_1_mgmt_port_0.setInterfaceId("80baec42-ffae-425f-ad8c-3f7b2c24bfff");
178                 ssc_1_mgmt_port_0.setInterfaceName("interface-name");
179                 vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_0);
180                 
181         
182                 ssc_1_mis_port_0.setLInterfaces(new LInterfaces());
183                 ssc_1_mis_port_0.setInterfaceId("13eddf95-4cf3-45f2-823a-2d890a6549b4");
184                 ssc_1_mis_port_0.setInterfaceName("interface-name");
185                 vServer1.getLInterfaces().getLInterface().add(ssc_1_mis_port_0);
186                 
187
188                 mis_sub_interface_1.setInterfaceId("f711be16-2654-4a09-b89d-0511fda20e81");     
189                 ssc_1_mis_port_0.getLInterfaces().getLInterface().add(mis_sub_interface_1);
190                 
191
192                 ssc_1_int_ha_port_0.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adb8");     
193                 vServer1.getLInterfaces().getLInterface().add(ssc_1_int_ha_port_0);
194                 
195                 
196                 Vserver vServer2= new Vserver();
197                 vServer2.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
198                 LInterfaces vServer2Linterfaces = new LInterfaces();
199                 vServer2.setLInterfaces(vServer2Linterfaces);
200         
201                 test_port_1.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz1");
202                 test_port_1.setInterfaceName("interface-name");
203                 
204
205                 test_port_2.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz2");
206                 test_port_2.setInterfaceName("interface-name");
207                 
208                 vServer2.getLInterfaces().getLInterface().add(test_port_1);
209                 vServer2.getLInterfaces().getLInterface().add(test_port_2);
210                 
211                 vserversToAudit.add(vServer1);
212                 vserversToAudit.add(vServer2);
213                 
214                 
215                 test_port_1_plural.getLInterface().add(test_port_1);
216                 test_port_2_plural.getLInterface().add(test_port_2);
217                 ssc_1_int_ha_port_0_plural.getLInterface().add(ssc_1_int_ha_port_0);
218                 ssc_1_mis_port_0_plural.getLInterface().add(ssc_1_mis_port_0);
219                 ssc_1_mgmt_port_0_plural.getLInterface().add(ssc_1_mgmt_port_0);
220                 ssc_1_mgmt_port_1_plural.getLInterface().add(ssc_1_mgmt_port_1);
221                 ssc_1_avpn_port_0_plural.getLInterface().add(ssc_1_avpn_port_0);
222                 ssc_1_trusted_port_0_plural.getLInterface().add(ssc_1_trusted_port_0);
223
224         } 
225         
226         @Test
227         public void audit_Vserver_Empty_HashSet() throws JsonParseException, JsonMappingException, IOException {
228                 boolean exists = auditNova.auditVservers(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);            
229                 assertEquals(false, exists);
230         }
231
232         @Test
233         public void audit_Vserver_Found_Test() throws JsonParseException, JsonMappingException, IOException {
234                 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
235                 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
236                 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_trusted_port_0_uri);
237                 doReturn(Optional.of(ssc_1_avpn_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_avpn_port_0_uri);
238                 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_1_uri);
239                 doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_0_uri);
240                 doReturn(Optional.of(ssc_1_mis_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mis_port_0_uri);
241                 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_int_ha_port_0_uri);
242                 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_1_uri);
243                 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_2_uri);
244                 
245                 doReturn(true).when(aaiResourcesMock).exists(mis_sub_1_uri);
246                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_0_uri);
247                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_1_uri);
248
249                 boolean exists = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);           
250                 assertEquals(true, exists);
251         }
252
253         @Test
254         public void audit_Vserver_Found_Test_Network_Not_Found()
255                         throws JsonParseException, JsonMappingException, IOException {
256                 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
257                 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
258                 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_trusted_port_0_uri);
259                 doReturn(Optional.of(ssc_1_avpn_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_avpn_port_0_uri);
260                 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_1_uri);
261                 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_0_uri);
262                 doReturn(Optional.of(ssc_1_mis_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mis_port_0_uri);
263                 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_int_ha_port_0_uri);
264                 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_1_uri);
265                 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_2_uri);
266                 
267                 doReturn(true).when(aaiResourcesMock).exists(mis_sub_1_uri);
268                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_0_uri);
269                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_1_uri);
270
271                 boolean exists = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);           
272                 assertEquals(false, exists);
273         }
274
275         @Test
276         public void audit_Vserver_Found_Test_Network_Not_Found_Second_Server()
277                         throws JsonParseException, JsonMappingException, IOException {
278                 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
279                 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
280                 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
281                 doReturn(Optional.of(ssc_1_avpn_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_avpn_port_0_uri);
282                 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
283                 doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
284                 doReturn(Optional.of(ssc_1_mis_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mis_port_0_uri);
285                 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
286                 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
287                 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);                
288                 doReturn(true).when(aaiResourcesMock).exists(mis_sub_1_uri);
289                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_0_uri);
290                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_1_uri);
291                 boolean exists = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
292                 assertEquals(false, exists);
293         }
294
295         @Test
296         public void audit_Vserver_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
297                 doReturn(false).when(aaiResourcesMock).exists(vserverURI);
298                 doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
299                 boolean exists = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);           
300                 assertEquals(false, exists);
301         }
302
303         @Test
304         public void audit_Vserver_first_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
305                 doReturn(false).when(aaiResourcesMock).exists(vserverURI);
306                 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
307                 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
308                 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
309                 boolean exists = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);           
310                 assertEquals(false, exists);
311         }
312
313         @Test
314         public void audit_Vserver_Second_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
315                 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
316                 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
317                 doReturn(Optional.of(ssc_1_avpn_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_avpn_port_0_uri);
318                 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
319                 doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
320                 doReturn(Optional.of(ssc_1_mis_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mis_port_0_uri);
321                 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
322                 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
323                 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
324                 doReturn(true).when(aaiResourcesMock).exists(mis_sub_1_uri);
325                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_0_uri);
326                 doReturn(true).when(aaiResourcesMock).exists(avpn_sub_1_uri);
327                 doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
328                 boolean exists = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
329                 assertEquals(false, exists);
330         }
331
332 }