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 permissions 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.util.HashSet;
31 import java.util.List;
32 import java.util.Optional;
34 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;
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;
58 @RunWith(MockitoJUnitRunner.Silent.class)
59 public class AuditVServerTest extends AuditVServer {
62 private AuditVServer auditNova = new AuditVServer();
65 private AAIResourcesClient aaiResourcesMock;
67 private String cloudOwner = "cloudOwner";
68 private String cloudRegion = "cloudRegion";
69 private String tenantId = "tenantId";
71 private AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER,cloudOwner, cloudRegion,
72 tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
74 private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
75 tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
77 private AAIResourceUri ssc_1_trusted_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
78 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
80 private AAIResourceUri ssc_1_service1_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
81 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "1c56a24b-5f03-435a-850d-31cd4252de56");
83 private AAIResourceUri ssc_1_mgmt_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
84 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "12afcd28-929f-4d80-8a5a-0833bfd5e20b");
86 private AAIResourceUri ssc_1_mgmt_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
87 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "80baec42-ffae-425f-ad8c-3f7b2c24bfff");
89 private AAIResourceUri ssc_1_service2_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
90 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "13eddf95-4cf3-45f2-823a-2d890a6549b4");
92 private AAIResourceUri ssc_1_int_ha_port_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
93 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adb8");
95 private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
96 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adz1");
99 private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.L_INTERFACE,
100 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz").queryParam("interface-id", "9cab2903-70f7-44fd-b681-491d6ae2adz2");
104 private AAIResourceUri service2_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
105 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "f711be16-2654-4a09-b89d-0511fda20e81");
107 private AAIResourceUri service1_sub_0_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
108 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
110 private AAIResourceUri service1_sub_1_uri = AAIUriFactory.createResourceUri(AAIObjectPlurals.SUB_L_INTERFACE,
111 cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db","interface-name").queryParam("interface-id", "b7019dd0-2ee9-4447-bdef-ac25676b205a");
115 private Set<Vserver> vserversToAudit = new HashSet<>();
118 LInterface test_port_1 = new LInterface();
119 LInterface test_port_2 = new LInterface();
120 LInterface ssc_1_int_ha_port_0 = new LInterface();
121 LInterface service2_sub_interface_1 = new LInterface();
122 LInterface ssc_1_service2_port_0 = new LInterface();
123 LInterface ssc_1_mgmt_port_0 = new LInterface();
124 LInterface ssc_1_mgmt_port_1 = new LInterface();
125 LInterface service1_sub_interface_2 = new LInterface();
126 LInterface service1_sub_interface_1 = new LInterface();
127 LInterface ssc_1_service1_port_0 = new LInterface();
128 LInterface ssc_1_trusted_port_0 = new LInterface();
130 LInterfaces test_port_1_plural = new LInterfaces();
131 LInterfaces test_port_2_plural = new LInterfaces();
132 LInterfaces ssc_1_int_ha_port_0_plural = new LInterfaces();
133 LInterfaces service2_sub_interface_1_plural = new LInterfaces();
134 LInterfaces ssc_1_service2_port_0_plural = new LInterfaces();
135 LInterfaces ssc_1_mgmt_port_0_plural = new LInterfaces();
136 LInterfaces ssc_1_mgmt_port_1_plural = new LInterfaces();
137 LInterfaces service1_sub_interface_2_plural = new LInterfaces();
138 LInterfaces service1_sub_interface_1_plural = new LInterfaces();
139 LInterfaces ssc_1_service1_port_0_plural = new LInterfaces();
140 LInterfaces ssc_1_trusted_port_0_plural = new LInterfaces();
144 public void setup() {
145 auditNova.setAaiClient(aaiResourcesMock);
147 Vserver vServer1= new Vserver();
148 vServer1.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
149 LInterfaces vServer1Linterfaces = new LInterfaces();
150 vServer1.setLInterfaces(vServer1Linterfaces);
152 ssc_1_trusted_port_0.setInterfaceId("dec8bdc7-5718-41dc-bfbb-561ff6eeb81c");
153 ssc_1_trusted_port_0.setInterfaceName("interface-name");
154 vServer1.getLInterfaces().getLInterface().add(ssc_1_trusted_port_0);
157 ssc_1_service1_port_0.setInterfaceId("1c56a24b-5f03-435a-850d-31cd4252de56");
158 ssc_1_service1_port_0.setInterfaceName("interface-name");
159 vServer1.getLInterfaces().getLInterface().add(ssc_1_service1_port_0);
160 ssc_1_service1_port_0.setLInterfaces(new LInterfaces());
163 service1_sub_interface_1.setInterfaceId("0d9cd813-2ae1-46c0-9ebb-48081f6cffbb");
164 ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_1);
167 service1_sub_interface_2.setInterfaceId("b7019dd0-2ee9-4447-bdef-ac25676b205a");
168 ssc_1_service1_port_0.getLInterfaces().getLInterface().add(service1_sub_interface_2);
171 ssc_1_mgmt_port_1.setInterfaceId("12afcd28-929f-4d80-8a5a-0833bfd5e20b");
172 ssc_1_mgmt_port_1.setInterfaceName("interface-name");
173 vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_1);
175 ssc_1_mgmt_port_0.setInterfaceId("80baec42-ffae-425f-ad8c-3f7b2c24bfff");
176 ssc_1_mgmt_port_0.setInterfaceName("interface-name");
177 vServer1.getLInterfaces().getLInterface().add(ssc_1_mgmt_port_0);
180 ssc_1_service2_port_0.setLInterfaces(new LInterfaces());
181 ssc_1_service2_port_0.setInterfaceId("13eddf95-4cf3-45f2-823a-2d890a6549b4");
182 ssc_1_service2_port_0.setInterfaceName("interface-name");
183 vServer1.getLInterfaces().getLInterface().add(ssc_1_service2_port_0);
186 service2_sub_interface_1.setInterfaceId("f711be16-2654-4a09-b89d-0511fda20e81");
187 ssc_1_service2_port_0.getLInterfaces().getLInterface().add(service2_sub_interface_1);
190 ssc_1_int_ha_port_0.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adb8");
191 vServer1.getLInterfaces().getLInterface().add(ssc_1_int_ha_port_0);
194 Vserver vServer2= new Vserver();
195 vServer2.setVserverId("3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
196 LInterfaces vServer2Linterfaces = new LInterfaces();
197 vServer2.setLInterfaces(vServer2Linterfaces);
199 test_port_1.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz1");
200 test_port_1.setInterfaceName("interface-name");
203 test_port_2.setInterfaceId("9cab2903-70f7-44fd-b681-491d6ae2adz2");
204 test_port_2.setInterfaceName("interface-name");
206 vServer2.getLInterfaces().getLInterface().add(test_port_1);
207 vServer2.getLInterfaces().getLInterface().add(test_port_2);
209 vserversToAudit.add(vServer1);
210 vserversToAudit.add(vServer2);
213 test_port_1_plural.getLInterface().add(test_port_1);
214 test_port_2_plural.getLInterface().add(test_port_2);
215 ssc_1_int_ha_port_0_plural.getLInterface().add(ssc_1_int_ha_port_0);
216 ssc_1_service2_port_0_plural.getLInterface().add(ssc_1_service2_port_0);
217 ssc_1_mgmt_port_0_plural.getLInterface().add(ssc_1_mgmt_port_0);
218 ssc_1_mgmt_port_1_plural.getLInterface().add(ssc_1_mgmt_port_1);
219 ssc_1_service1_port_0_plural.getLInterface().add(ssc_1_service1_port_0);
220 ssc_1_trusted_port_0_plural.getLInterface().add(ssc_1_trusted_port_0);
225 public void audit_Vserver_Empty_HashSet() throws JsonParseException, JsonMappingException, IOException {
226 boolean exists = auditNova.auditAllVserversDoExist(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);
227 assertEquals(false, exists);
229 boolean doNotExist = auditNova.auditAllVserversDoNotExist(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);
230 assertEquals(true, doNotExist);
235 public void audit_Vserver_Found_Test() throws JsonParseException, JsonMappingException, IOException {
236 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
237 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
238 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_trusted_port_0_uri);
239 doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service1_port_0_uri);
240 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_1_uri);
241 doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_0_uri);
242 doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service2_port_0_uri);
243 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_int_ha_port_0_uri);
244 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_1_uri);
245 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_2_uri);
247 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
248 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
249 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
251 boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
252 assertEquals(true, exists);
254 boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
255 assertEquals(false, doNotExist);
259 public void audit_Vserver_Found_Test_Network_Not_Found()
260 throws JsonParseException, JsonMappingException, IOException {
261 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
262 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
263 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_trusted_port_0_uri);
264 doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service1_port_0_uri);
265 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_1_uri);
266 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_mgmt_port_0_uri);
267 doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_service2_port_0_uri);
268 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterfaces.class,ssc_1_int_ha_port_0_uri);
269 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_1_uri);
270 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterfaces.class,test_port_2_uri);
272 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
273 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
274 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
276 boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
277 assertEquals(false, exists);
279 boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
280 assertEquals(false, doNotExist);
284 public void audit_Vserver_Found_Test_Network_Not_Found_Second_Server()
285 throws JsonParseException, JsonMappingException, IOException {
286 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
287 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
288 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
289 doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
290 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
291 doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
292 doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
293 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
294 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
295 doReturn(Optional.empty()).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
296 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
297 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
298 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
299 boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
300 assertEquals(false, exists);
302 boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
303 assertEquals(false, doNotExist);
307 public void audit_Vservers_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
308 doReturn(false).when(aaiResourcesMock).exists(vserverURI);
309 doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
311 boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
312 assertEquals(false, exists);
314 boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
315 assertEquals(true, doNotExist);
319 public void audit_Vserver_first_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
320 doReturn(false).when(aaiResourcesMock).exists(vserverURI);
321 doReturn(true).when(aaiResourcesMock).exists(vserverURI2);
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 boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
325 assertEquals(false, exists);
327 boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
328 assertEquals(false, doNotExist);
332 public void audit_Vserver_Second_Not_Found_Test() throws JsonParseException, JsonMappingException, IOException {
333 doReturn(true).when(aaiResourcesMock).exists(vserverURI);
334 doReturn(Optional.of(ssc_1_trusted_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_trusted_port_0_uri);
335 doReturn(Optional.of(ssc_1_service1_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service1_port_0_uri);
336 doReturn(Optional.of(ssc_1_mgmt_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_1_uri);
337 doReturn(Optional.of(ssc_1_mgmt_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_mgmt_port_0_uri);
338 doReturn(Optional.of(ssc_1_service2_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_service2_port_0_uri);
339 doReturn(Optional.of(ssc_1_int_ha_port_0_plural)).when(aaiResourcesMock).get(LInterface.class,ssc_1_int_ha_port_0_uri);
340 doReturn(Optional.of(test_port_1_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_1_uri);
341 doReturn(Optional.of(test_port_2_plural)).when(aaiResourcesMock).get(LInterface.class,test_port_2_uri);
342 doReturn(true).when(aaiResourcesMock).exists(service2_sub_1_uri);
343 doReturn(true).when(aaiResourcesMock).exists(service1_sub_0_uri);
344 doReturn(true).when(aaiResourcesMock).exists(service1_sub_1_uri);
345 doReturn(false).when(aaiResourcesMock).exists(vserverURI2);
347 boolean exists = auditNova.auditAllVserversDoExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
348 assertEquals(false, exists);
350 boolean doNotExist = auditNova.auditAllVserversDoNotExist(vserversToAudit, tenantId, cloudOwner, cloudRegion);
351 assertEquals(false, doNotExist);