Enhanced List Level flow with backward support
[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 perservice2sions 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 import java.io.File;
28 import java.io.IOException;
29 import java.nio.file.Files;
30 import java.nio.file.Paths;
31 import java.util.HashSet;
32 import java.util.List;
33 import java.util.Optional;
34 import java.util.Set;
35 import java.util.stream.Stream;
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 import org.onap.so.objects.audit.AAIObjectAuditList;
52 import org.skyscreamer.jsonassert.JSONAssert;
53 import com.fasterxml.jackson.annotation.JsonInclude.Include;
54 import com.fasterxml.jackson.core.JsonParseException;
55 import com.fasterxml.jackson.databind.JsonMappingException;
56 import com.fasterxml.jackson.databind.ObjectMapper;
57 import com.woorea.openstack.heat.model.Resource;
58 import com.woorea.openstack.heat.model.Resources;
59
60 @RunWith(MockitoJUnitRunner.Silent.class)
61 public class AuditVServerTest extends AuditVServer {
62
63     private ObjectMapper objectMapper = new ObjectMapper();
64
65     @InjectMocks
66     private AuditVServer auditNova = new AuditVServer();
67
68     @Mock
69     private AAIResourcesClient aaiResourcesMock;
70
71     private String cloudOwner = "cloudOwner";
72     private String cloudRegion = "cloudRegion";
73     private String tenantId = "tenantId";
74
75     private AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
76             tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
77
78     private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
79             tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
80
81     private AAIResourceUri ssc_1_trusted_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
82             cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_trusted_port_0");
83
84     private AAIResourceUri ssc_1_service1_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
85             cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_service1_port_0");
86
87     private AAIResourceUri ssc_1_mgmt_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
88             cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_mgmt_port_1");
89
90     private AAIResourceUri ssc_1_mgmt_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
91             cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_mgmt_port_0");
92
93     private AAIResourceUri ssc_1_service2_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
94             cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_service2_port_0");
95
96     private AAIResourceUri ssc_1_int_ha_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
97             cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_int_ha_port_0");
98
99     private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE, cloudOwner,
100             cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz", "test_port_1");
101
102     private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE, cloudOwner,
103             cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz", "test_port_2");
104
105     private AAIResourceUri service2_sub_1_uri =
106             AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner, cloudRegion, tenantId,
107                     "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_service2_port_0", "service2_sub_interface_1");
108
109     private AAIResourceUri service1_sub_0_uri =
110             AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner, cloudRegion, tenantId,
111                     "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_service1_port_0", "service1_sub_interface_1");
112
113     private AAIResourceUri service1_sub_1_uri =
114             AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner, cloudRegion, tenantId,
115                     "3a4c2ca5-27b3-4ecc-98c5-06804867c4db", "ssc_1_service1_port_0", "service1_sub_interface_2");
116
117
118
119     private Set<Vserver> vserversToAudit = new HashSet<>();
120
121     LInterface test_port_1 = new LInterface();
122     LInterface test_port_2 = new LInterface();
123     LInterface ssc_1_int_ha_port_0 = new LInterface();
124     LInterface service2_sub_interface_1 = new LInterface();
125     LInterface ssc_1_service2_port_0 = new LInterface();
126     LInterface ssc_1_mgmt_port_0 = new LInterface();
127     LInterface ssc_1_mgmt_port_1 = new LInterface();
128     LInterface service1_sub_interface_2 = new LInterface();
129     LInterface service1_sub_interface_1 = new LInterface();
130     LInterface ssc_1_service1_port_0 = new LInterface();
131     LInterface ssc_1_trusted_port_0 = new LInterface();
132
133
134
135     @Before
136     public void setup() {
137         objectMapper.setSerializationInclusion(Include.NON_NULL);
138         auditNova.setAaiClient(aaiResourcesMock);
139
140         Vserver vServer1 = new Vserver();
141         vServer1.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
142         LInterfaces vServer1Linterfaces = new LInterfaces();
143         vServer1.setLInterfaces(vServer1Linterfaces);
144
145         ssc_1_trusted_port_0.setInterfaceId("dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
146         ssc_1_trusted_port_0.setInterfaceName("ssc_1_trusted_port_0");
147         vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
148
149
150         ssc_1_service1_port_0.setInterfaceId("1c56a24b-5f03-435a-850d-31cd4252de56");
151         ssc_1_service1_port_0.setInterfaceName("ssc_1_service1_port_0");
152         vServer1.getLInterfaces().getLInterface().add(ssc_1_service1_port_0);
153         ssc_1_service1_port_0.setLInterfaces(new LInterfaces());
154
155
156         service1_sub_interface_1.setInterfaceId("0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
157         service1_sub_interface_1.setInterfaceName("service1_sub_interface_1");
158         ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_1);
159
160
161         service1_sub_interface_2.setInterfaceId("b7019dd0-2ee9-4447-bdef-ac25676b205a");
162         service1_sub_interface_2.setInterfaceName("service1_sub_interface_2");
163         ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_2);
164
165
166         ssc_1_mgmt_port_1.setInterfaceId("12afcd28-929f-4d80-8a5a-0833bfd5e20b");
167         ssc_1_mgmt_port_1.setInterfaceName("ssc_1_mgmt_port_1");
168         vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
169
170         ssc_1_mgmt_port_0.setInterfaceId("80baec42-ffae-425f-ad8c-3f7b2c24bfff");
171         ssc_1_mgmt_port_0.setInterfaceName("ssc_1_mgmt_port_0");
172         vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_0);
173
174
175         ssc_1_service2_port_0.setLInterfaces(new LInterfaces());
176         ssc_1_service2_port_0.setInterfaceId("13eddf95-4cf3-45f2-823a-2d890a6549b4");
177         ssc_1_service2_port_0.setInterfaceName("ssc_1_service2_port_0");
178         vServer1.getLInterfaces().getLInterface().add(ssc_1_service2_port_0);
179
180
181         service2_sub_interface_1.setInterfaceId("f711be16-2654-4a09-b89d-0511fda20e81");
182         service2_sub_interface_1.setInterfaceName("service2_sub_interface_1");
183         ssc_1_service2_port_0.getLInterfaces().getLInterface().add(service2_sub_interface_1);
184
185
186         ssc_1_int_ha_port_0.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adb8");
187         ssc_1_int_ha_port_0.setInterfaceName("ssc_1_int_ha_port_0");
188         vServer1.getLInterfaces().getLInterface().add(ssc_1_int_ha_port_0);
189
190         Vserver vServer2 = new Vserver();
191         vServer2.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
192         LInterfaces vServer2Linterfaces = new LInterfaces();
193         vServer2.setLInterfaces(vServer2Linterfaces);
194
195         test_port_1.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz1");
196         test_port_1.setInterfaceName("test_port_1");
197
198
199         test_port_2.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz2");
200         test_port_2.setInterfaceName("test_port_2");
201
202         vServer2.getLInterfaces().getLInterface().add(test_port_1);
203         vServer2.getLInterfaces().getLInterface().add(test_port_2);
204
205         vserversToAudit.add(vServer1);
206         vserversToAudit.add(vServer2);
207     }
208
209     @Test
210     public void audit_Vserver_Empty_HashSet() throws JsonParseException, JsonMappingException, IOException {
211         Optional<AAIObjectAuditList> actual =
212                 auditNova.auditVservers(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);
213         assertEquals(Optional.empty(), actual);
214     }
215
216     @Test
217     public void audit_Vserver_Found_Test() throws JsonParseException, JsonMappingException, IOException {
218         doReturn(true).when(aaiResourcesMock).exists(vserverURI);
219         doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
220         doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,
221                 ssc_1_trusted_port_0_uri);
222         doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,
223                 ssc_1_service1_port_0_uri);
224         doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_1_uri);
225         doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_0_uri);
226         doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,
227                 ssc_1_service2_port_0_uri);
228         doReturn(Optional.of(service2_sub_interface_1)).when(aaiResourcesMock).get(LInterface.class,
229                 service1_sub_1_uri);
230         doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,
231                 ssc_1_int_ha_port_0_uri);
232         doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class, test_port_1_uri);
233         doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class, test_port_2_uri);
234
235         doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
236         doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
237         doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
238
239         Optional<AAIObjectAuditList> actual =
240                 auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
241         String actualString = objectMapper.writeValueAsString(actual.get());
242         String expected = getJson("ExpectedVServerFound.json");
243         JSONAssert.assertEquals(expected, actualString, false);
244     }
245
246     @Test
247     public void audit_Vserver_Found_Test_Network_Not_Found()
248             throws JsonParseException, JsonMappingException, IOException {
249         doReturn(true).when(aaiResourcesMock).exists(vserverURI);
250         doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
251         doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,
252                 ssc_1_trusted_port_0_uri);
253         doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,
254                 ssc_1_service1_port_0_uri);
255         doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_1_uri);
256         doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_0_uri);
257         doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,
258                 ssc_1_service2_port_0_uri);
259         doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,
260                 ssc_1_int_ha_port_0_uri);
261         doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class, test_port_1_uri);
262         doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class, test_port_2_uri);
263
264         doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
265         doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
266         doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
267
268         Optional<AAIObjectAuditList> actual =
269                 auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
270         String actualString = objectMapper.writeValueAsString(actual.get());
271         String expected = getJson("VServer_Found_network_Not_Found.json");
272         JSONAssert.assertEquals(expected, actualString, false);
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)).when(aaiResourcesMock).get(LInterface.class,
281                 ssc_1_trusted_port_0_uri);
282         doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,
283                 ssc_1_service1_port_0_uri);
284         doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_1_uri);
285         doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_0_uri);
286         doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,
287                 ssc_1_service2_port_0_uri);
288         doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,
289                 ssc_1_int_ha_port_0_uri);
290         doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class, test_port_1_uri);
291         doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class, test_port_2_uri);
292         doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
293         doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
294         doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
295         Optional<AAIObjectAuditList> actual =
296                 auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
297         String actualString = objectMapper.writeValueAsString(actual.get());
298         String expected = getJson("VServer_Found_Network_Sec_Server_Not_Found.json");
299         JSONAssert.assertEquals(expected, actualString, false);
300     }
301
302     @Test
303     public void audit_Vserver_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
304         doReturn(false).when(aaiResourcesMock).exists(vserverURI);
305         doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
306         Optional<AAIObjectAuditList> actual =
307                 auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
308         String actualString = objectMapper.writeValueAsString(actual.get());
309         String expected = getJson("Vservers_Not_Found.json");
310         JSONAssert.assertEquals(expected, actualString, false);
311     }
312
313     @Test
314     public void audit_Vserver_first_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
315         doReturn(false).when(aaiResourcesMock).exists(vserverURI);
316         doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
317         doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class, test_port_1_uri);
318         doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class, test_port_2_uri);
319         Optional<AAIObjectAuditList> actual =
320                 auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
321         String actualString = objectMapper.writeValueAsString(actual.get());
322         String expected = getJson("Vserver2_Found_VServer1_Not_Found.json");
323         JSONAssert.assertEquals(expected, actualString, false);
324     }
325
326
327     @Test
328     public void doesSubInterfaceExistinAAI_Test() {
329         AAIResourceUri subInterfaceURI = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner,
330                 cloudRegion, tenantId, "vserverId", "l-interface", "sub-interface");
331
332         assertEquals(
333                 "/cloud-infrastructure/cloud-regions/cloud-region/cloudOwner/cloudRegion/tenants/tenant/tenantId/vservers/vserver/vserverId/l-interfaces/l-interface/l-interface/l-interfaces/l-interface/sub-interface",
334                 subInterfaceURI.build().toString());
335     }
336
337     @Test
338     public void audit_Vserver_Second_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
339         doReturn(true).when(aaiResourcesMock).exists(vserverURI);
340         doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,
341                 ssc_1_trusted_port_0_uri);
342         doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,
343                 ssc_1_service1_port_0_uri);
344         doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_1_uri);
345         doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class, ssc_1_mgmt_port_0_uri);
346         doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,
347                 ssc_1_service2_port_0_uri);
348         doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,
349                 ssc_1_int_ha_port_0_uri);
350         doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class, test_port_1_uri);
351         doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class, test_port_2_uri);
352         doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
353         doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
354         doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
355
356         doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
357         Optional<AAIObjectAuditList> actual =
358                 auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
359         String actualString = objectMapper.writeValueAsString(actual.get());
360         String expected = getJson("VServer_Found_Sec_Server_Not_Found2.json");
361
362         JSONAssert.assertEquals(expected, actualString, false);
363     }
364
365     private String getJson(String filename) throws IOException {
366         return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename)));
367     }
368
369
370
371 }