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;
29 import java.io.IOException;
30 import java.nio.file.Files;
31 import java.nio.file.Paths;
32 import java.util.HashSet;
33 import java.util.List;
34 import java.util.Optional;
36 import java.util.stream.Stream;
38 import org.junit.Before;
39 import org.junit.Test;
40 import org.junit.runner.RunWith;
41 import org.mockito.InjectMocks;
42 import org.mockito.Mock;
43 import org.mockito.junit.MockitoJUnitRunner;
44 import org.onap.aai.domain.yang.LInterface;
45 import org.onap.aai.domain.yang.LInterfaces;
46 import org.onap.aai.domain.yang.Vserver;
47 import org.onap.so.client.aai.AAIObjectPlurals;
48 import org.onap.so.client.aai.AAIObjectType;
49 import org.onap.so.client.aai.AAIResourcesClient;
50 import org.onap.so.client.aai.entities.AAIResultWrapper;
51 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
52 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
53 import org.skyscreamer.jsonassert.JSONAssert;
55 import com.fasterxml.jackson.annotation.JsonInclude.Include;
56 import com.fasterxml.jackson.core.JsonParseException;
57 import com.fasterxml.jackson.databind.JsonMappingException;
58 import com.fasterxml.jackson.databind.ObjectMapper;
59 import com.woorea.openstack.heat.model.Resource;
60 import com.woorea.openstack.heat.model.Resources;
62 @RunWith(MockitoJUnitRunner.Silent.class)
63 public class AuditVServerTest extends AuditVServer {
65 private ObjectMapper objectMapper = new ObjectMapper();
68 private AuditVServer auditNova = new AuditVServer();
71 private AAIResourcesClient aaiResourcesMock;
73 private String cloudOwner = "cloudOwner";
74 private String cloudRegion = "cloudRegion";
75 private String tenantId = "tenantId";
77 private AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER,cloudOwner, cloudRegion,
78 tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
80 private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
81 tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
83 private AAIResourceUri ssc_1_trusted_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
84 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_trusted_port_0");
86 private AAIResourceUri ssc_1_service1_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
87 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service1_port_0");
89 private AAIResourceUri ssc_1_mgmt_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
90 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_mgmt_port_1");
92 private AAIResourceUri ssc_1_mgmt_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
93 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_mgmt_port_0");
95 private AAIResourceUri ssc_1_service2_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
96 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service2_port_0");
98 private AAIResourceUri ssc_1_int_ha_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
99 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_int_ha_port_0");
101 private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
102 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz","test_port_1");
104 private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
105 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz","test_port_2");
107 private AAIResourceUri service2_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
108 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service2_port_0","service2_sub_interface_1");
110 private AAIResourceUri service1_sub_0_uri = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
111 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","ssc_1_service1_port_0","service1_sub_interface_1");
113 private AAIResourceUri service1_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE,
114 cloudOwner, cloudRegion, tenantId, "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 = auditNova.auditVservers(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);
212 assertEquals(Optional.empty(), actual);
216 public void audit_Vserver_Found_Test() throws JsonParseException, JsonMappingException, IOException {
217 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
218 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
219 doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
220 doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
221 doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
222 doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
223 doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
224 doReturn(Optional.of(service2_sub_interface_1)).when(aaiResourcesMock).get(LInterface.class,service1_sub_1_uri);
225 doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
226 doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
227 doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
229 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
230 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
231 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
233 Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
234 String actualString = objectMapper.writeValueAsString(actual.get());
235 String expected = getJson("ExpectedVServerFound.json");
236 JSONAssert.assertEquals(expected,actualString, false);
240 public void audit_Vserver_Found_Test_Network_Not_Found()
241 throws JsonParseException, JsonMappingException, IOException {
242 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
243 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
244 doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
245 doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
246 doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
247 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
248 doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
249 doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
250 doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
251 doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
253 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
254 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
255 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
257 Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
258 String actualString = objectMapper.writeValueAsString(actual.get());
259 String expected = getJson("VServer_Found_network_Not_Found.json");
260 JSONAssert.assertEquals(expected,actualString, false);
264 public void audit_Vserver_Found_Test_Network_Not_Found_Second_Server()
265 throws JsonParseException, JsonMappingException, IOException {
266 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
267 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
268 doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
269 doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
270 doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
271 doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
272 doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
273 doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
274 doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
275 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
276 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
277 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
278 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
279 Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
280 String actualString = objectMapper.writeValueAsString(actual.get());
281 String expected = getJson("VServer_Found_Network_Sec_Server_Not_Found.json");
282 JSONAssert.assertEquals(expected,actualString, false);
286 public void audit_Vserver_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
287 doReturn(false).when(aaiResourcesMock).exists(vserverURI);
288 doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
289 Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
290 String actualString = objectMapper.writeValueAsString(actual.get());
291 String expected = getJson("Vservers_Not_Found.json");
292 JSONAssert.assertEquals(expected,actualString, false);
296 public void audit_Vserver_first_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
297 doReturn(false).when(aaiResourcesMock).exists(vserverURI);
298 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
299 doReturn(Optional.of(test_port_1)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
300 doReturn(Optional.of(test_port_2)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
301 Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
302 String actualString = objectMapper.writeValueAsString(actual.get());
303 String expected = getJson("Vserver2_Found_VServer1_Not_Found.json");
304 JSONAssert.assertEquals(expected,actualString, false);
309 public void doesSubInterfaceExistinAAI_Test(){
310 AAIResourceUri subInterfaceURI = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner,
311 cloudRegion, tenantId, "vserverId", "l-interface", "sub-interface");
313 assertEquals("/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",subInterfaceURI.build().toString());
317 public void audit_Vserver_Second_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
318 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
319 doReturn(Optional.of(ssc_1_trusted_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
320 doReturn(Optional.of(ssc_1_service1_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
321 doReturn(Optional.of(ssc_1_mgmt_port_1)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
322 doReturn(Optional.of(ssc_1_mgmt_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
323 doReturn(Optional.of(ssc_1_service2_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
324 doReturn(Optional.of(ssc_1_int_ha_port_0)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
325 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
326 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
327 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
328 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
329 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
331 doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
332 Optional<AAIObjectAuditList> actual = auditNova.auditVservers(vserversToAudit, tenantId, cloudOwner, cloudRegion);
333 String actualString = objectMapper.writeValueAsString(actual.get());
334 String expected = getJson("VServer_Found_Sec_Server_Not_Found2.json");
336 JSONAssert.assertEquals(expected,actualString, false);
339 private String getJson(String filename) throws IOException {
340 return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename)));