if audit fails write sub interface data to a ai
[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
28 import java.io.File;
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;
35 import java.util.Set;
36 import java.util.stream.Stream;
37
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;
54
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;
61
62 @RunWith(MockitoJUnitRunner.Silent.class)
63 public class AuditVServerTest extends AuditVServer {
64
65         private ObjectMapper objectMapper = new ObjectMapper();
66
67         @InjectMocks
68         private AuditVServer auditNova = new AuditVServer();
69
70         @Mock
71         private AAIResourcesClient aaiResourcesMock;
72
73         private String cloudOwner = "cloudOwner";
74         private String cloudRegion = "cloudRegion";
75         private String tenantId = "tenantId";
76
77         private AAIResourceUri vserverURI = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER,cloudOwner, cloudRegion,
78                         tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4db");
79         
80         private AAIResourceUri vserverURI2 = AAIUriFactory.createResourceUri(AAIObjectType.VSERVER, cloudOwner, cloudRegion,
81                         tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz");
82
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");
85
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");
88
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");
91
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");
94
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");
97
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");
100
101         private AAIResourceUri test_port_1_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
102                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz","test_port_1");
103
104         private AAIResourceUri test_port_2_uri = AAIUriFactory.createResourceUri(AAIObjectType.L_INTERFACE,
105                         cloudOwner, cloudRegion, tenantId, "3a4c2ca5-27b3-4ecc-98c5-06804867c4dz","test_port_2");       
106         
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");
109
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");
112
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");
115
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 = auditNova.auditVservers(new HashSet<Vserver>(), tenantId, cloudOwner, cloudRegion);               
212                 assertEquals(Optional.empty(), actual);
213         }
214
215         @Test
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);
228                 
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);
232
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);
237         }
238
239         @Test
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);
252                 
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);
256
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);
261         }
262
263         @Test
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);
283         }
284
285         @Test
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);
293         }
294
295         @Test
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);
305         }
306         
307         
308         @Test
309         public void doesSubInterfaceExistinAAI_Test(){
310                 AAIResourceUri subInterfaceURI = AAIUriFactory.createResourceUri(AAIObjectType.SUB_L_INTERFACE, cloudOwner,
311                                 cloudRegion, tenantId, "vserverId", "l-interface", "sub-interface");
312                 
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());
314         }
315
316         @Test
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);
330                 
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");
335
336                 JSONAssert.assertEquals(expected,actualString, false);
337         }
338         
339         private String getJson(String filename) throws IOException {
340                  return new String(Files.readAllBytes(Paths.get("src/test/resources/" + filename)));
341         }
342
343
344
345 }