2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing perservice2sions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.adapters.audit;
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;
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;
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;
60 @RunWith(MockitoJUnitRunner.Silent.class)
61 public class AuditVServerTest extends AuditVServer {
63 private ObjectMapper objectMapper = new ObjectMapper();
66 private AuditVServer auditNova = new AuditVServer();
69 private AAIResourcesClient aaiResourcesMock;
71 private String cloudOwner = "cloudOwner";
72 private String cloudRegion = "cloudRegion";
73 private String tenantId = "tenantId";
75 private AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
76 tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
78 private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
79 tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
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");
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");
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");
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");
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");
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");
99 private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE, cloudOwner,
100 cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz", "test_port_1");
102 private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE, cloudOwner,
103 cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz", "test_port_2");
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");
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");
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");
119 private Set<Vserver> vserversToAudit = new HashSet<>();
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();
136 public void setup() {
137 objectMapper.setSerializationInclusion(Include.NON_NULL);
138 auditNova.setAaiClient(aaiResourcesMock);
140 Vserver vServer1 = new Vserver();
141 vServer1.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
142 LInterfaces vServer1Linterfaces = new LInterfaces();
143 vServer1.setLInterfaces(vServer1Linterfaces);
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);
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());
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);
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);
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);
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);
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);
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);
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);
190 Vserver vServer2 = new Vserver();
191 vServer2.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
192 LInterfaces vServer2Linterfaces = new LInterfaces();
193 vServer2.setLInterfaces(vServer2Linterfaces);
195 test_port_1.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz1");
196 test_port_1.setInterfaceName("test_port_1");
199 test_port_2.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz2");
200 test_port_2.setInterfaceName("test_port_2");
202 vServer2.getLInterfaces().getLInterface().add(test_port_1);
203 vServer2.getLInterfaces().getLInterface().add(test_port_2);
205 vserversToAudit.add(vServer1);
206 vserversToAudit.add(vServer2);
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);
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,
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);
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);
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);
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);
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);
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);
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);
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);
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);
328 public void doesSubInterfaceExistinAAI_Test() {
329 AAIResourceUri subInterfaceURI = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner,
330 cloudRegion, tenantId, "vserverId", "l-interface", "sub-interface");
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());
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);
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");
362 JSONAssert.assertEquals(expected, actualString, false);
365 private String getJson(String filename) throws IOException {
366 return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename)));