Replaced all tabs with spaces in java and pom.xml
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / client / orchestration / AAINetworkResourcesTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 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 permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.client.orchestration;
22
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27 import static org.junit.Assert.assertTrue;
28 import static org.mockito.ArgumentMatchers.any;
29 import static org.mockito.ArgumentMatchers.eq;
30 import static org.mockito.ArgumentMatchers.isA;
31 import static org.mockito.Mockito.doNothing;
32 import static org.mockito.Mockito.doReturn;
33 import static org.mockito.Mockito.times;
34 import static org.mockito.Mockito.verify;
35 import java.nio.file.Files;
36 import java.nio.file.Paths;
37 import java.util.ArrayList;
38 import java.util.List;
39 import java.util.Optional;
40 import org.junit.Before;
41 import org.junit.Test;
42 import org.junit.runner.RunWith;
43 import org.mockito.InjectMocks;
44 import org.mockito.Mock;
45 import org.mockito.junit.MockitoJUnitRunner;
46 import org.onap.aai.domain.yang.RouteTableReference;
47 import org.onap.aai.domain.yang.VpnBinding;
48 import org.onap.so.bpmn.common.InjectionHelper;
49 import org.onap.so.bpmn.common.data.TestDataSetup;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
57 import org.onap.so.client.aai.AAIObjectPlurals;
58 import org.onap.so.client.aai.AAIObjectType;
59 import org.onap.so.client.aai.AAIResourcesClient;
60 import org.onap.so.client.aai.entities.AAIEdgeLabel;
61 import org.onap.so.client.aai.entities.AAIResultWrapper;
62 import org.onap.so.client.aai.entities.Relationships;
63 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
64 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
65 import org.onap.so.client.aai.mapper.AAIObjectMapper;
66 import org.onap.so.db.catalog.beans.OrchestrationStatus;
67
68 @RunWith(MockitoJUnitRunner.Silent.class)
69 public class AAINetworkResourcesTest extends TestDataSetup {
70
71     private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
72
73     private L3Network network;
74     private Collection collection;
75     private InstanceGroup instanceGroup;
76     private ServiceInstance serviceInstance;
77     private CloudRegion cloudRegion;
78     private Subnet subnet;
79     private NetworkPolicy networkPolicy;
80
81     @Mock
82     protected AAIResourcesClient MOCK_aaiResourcesClient;
83
84     @Mock
85     protected AAIObjectMapper MOCK_aaiObjectMapper;
86
87     @Mock
88     protected InjectionHelper MOCK_injectionHelper;
89
90     @InjectMocks
91     private AAINetworkResources aaiNetworkResources = new AAINetworkResources();
92
93     @Before
94     public void before() {
95         network = buildL3Network();
96
97         collection = buildCollection();
98
99         List<L3Network> l3NetworkList = new ArrayList<L3Network>();
100         l3NetworkList.add(network);
101
102         instanceGroup = buildInstanceGroup();
103
104         serviceInstance = buildServiceInstance();
105
106         cloudRegion = buildCloudRegion();
107
108         subnet = buildSubnet();
109
110         networkPolicy = buildNetworkPolicy();
111
112         doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
113     }
114
115
116     @Test
117     public void updateNetworkTest() throws Exception {
118
119         network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
120
121         doReturn(new org.onap.aai.domain.yang.L3Network()).when(MOCK_aaiObjectMapper).mapNetwork(network);
122         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
123                 isA(org.onap.aai.domain.yang.L3Network.class));
124
125         aaiNetworkResources.updateNetwork(network);
126
127         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class),
128                 isA(org.onap.aai.domain.yang.L3Network.class));
129         assertEquals(OrchestrationStatus.ASSIGNED, network.getOrchestrationStatus());
130     }
131
132     @Test
133     public void createNetworkConnectToServiceInstanceTest() throws Exception {
134
135         network.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
136
137         doReturn(new org.onap.aai.domain.yang.L3Network()).when(MOCK_aaiObjectMapper).mapNetwork(network);
138         doReturn(MOCK_aaiResourcesClient).when(MOCK_aaiResourcesClient).createIfNotExists(any(AAIResourceUri.class),
139                 any(Optional.class));
140         doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), any(AAIResourceUri.class));
141
142         aaiNetworkResources.createNetworkConnectToServiceInstance(network, serviceInstance);
143
144         assertEquals(OrchestrationStatus.INVENTORIED, network.getOrchestrationStatus());
145
146         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
147         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
148     }
149
150     @Test
151     public void deleteNetworkTest() throws Exception {
152
153         network.setOrchestrationStatus(OrchestrationStatus.INVENTORIED);
154
155         doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
156
157         aaiNetworkResources.deleteNetwork(network);
158
159         verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
160     }
161
162     @Test
163     public void getVpnBindingTest() throws Exception {
164         final String content =
165                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiVpnBinding.json")));
166         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
167         Optional<VpnBinding> oVpnBinding = Optional.empty();
168         AAIResourceUri aaiUri = AAIUriFactory.createResourceUri(AAIObjectType.VPN_BINDING, "ModelInvariantUUID");
169
170         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
171         oVpnBinding = aaiNetworkResources.getVpnBinding(aaiUri);
172         verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
173
174         if (oVpnBinding.isPresent()) {
175             VpnBinding vpnBinding = oVpnBinding.get();
176             assertThat(aaiResultWrapper.asBean(VpnBinding.class).get(), sameBeanAs(vpnBinding));
177         }
178     }
179
180     @Test
181     public void getNetworkPolicyTest() throws Exception {
182         final String content =
183                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkPolicy.json")));
184         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
185         Optional<org.onap.aai.domain.yang.NetworkPolicy> oNetPolicy = Optional.empty();
186         AAIResourceUri netPolicyUri =
187                 AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, "ModelInvariantUUID");
188
189         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
190         oNetPolicy = aaiNetworkResources.getNetworkPolicy(netPolicyUri);
191         verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
192         if (oNetPolicy.isPresent()) {
193             org.onap.aai.domain.yang.NetworkPolicy networkPolicy = oNetPolicy.get();
194             assertThat(aaiResultWrapper.asBean(org.onap.aai.domain.yang.NetworkPolicy.class).get(),
195                     sameBeanAs(networkPolicy));
196         }
197     }
198
199     @Test
200     public void getNetworkPoliciesTest() throws Exception {
201         final String content =
202                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkPolicies.json")));
203         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
204         Optional<org.onap.aai.domain.yang.NetworkPolicies> oNetPolicies = Optional.empty();
205         AAIResourceUri netPoliciesUri = AAIUriFactory.createResourceUri(AAIObjectPlurals.NETWORK_POLICY);
206
207         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
208         oNetPolicies = aaiNetworkResources.getNetworkPolicies(netPoliciesUri);
209         verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
210         if (oNetPolicies.isPresent()) {
211             org.onap.aai.domain.yang.NetworkPolicies networkPolicies = oNetPolicies.get();
212             assertThat(aaiResultWrapper.asBean(org.onap.aai.domain.yang.NetworkPolicies.class).get(),
213                     sameBeanAs(networkPolicies));
214         }
215     }
216
217     @Test
218     public void getRouteTableTest() throws Exception {
219         final String content =
220                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkTableRefs.json")));
221         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
222         Optional<RouteTableReference> oRtref = Optional.empty();
223         AAIResourceUri rTRefUri =
224                 AAIUriFactory.createResourceUri(AAIObjectType.ROUTE_TABLE_REFERENCE, "ModelInvariantUUID");
225
226         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
227         oRtref = aaiNetworkResources.getRouteTable(rTRefUri);
228         verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
229
230         if (oRtref.isPresent()) {
231             RouteTableReference rTref = oRtref.get();
232             assertThat(aaiResultWrapper.asBean(RouteTableReference.class).get(), sameBeanAs(rTref));
233         }
234     }
235
236     @Test
237     public void queryNetworkByIdTest() throws Exception {
238         final String content =
239                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "aaiQueryAAIResponse-Wrapper.json")));
240         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
241         L3Network network = new L3Network();
242         network.setNetworkId("0384d743-f69b-4cc8-9aa8-c3ae66662c44");
243         network.setNetworkName("Dev_Bindings_1802_020118");
244         network.setOrchestrationStatus(OrchestrationStatus.CREATED);
245
246         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
247         Optional<org.onap.aai.domain.yang.L3Network> l3NetworkOpt = aaiNetworkResources.queryNetworkById(network);
248         org.onap.aai.domain.yang.L3Network l3Network = l3NetworkOpt.isPresent() ? l3NetworkOpt.get() : null;
249
250         verify(MOCK_aaiResourcesClient, times(1)).get(isA(AAIResourceUri.class));
251         assertNotNull(l3Network);
252         assertEquals("0384d743-f69b-4cc8-9aa8-c3ae66662c44", l3Network.getNetworkId());
253         assertEquals("Dev_Bindings_1802_020118", l3Network.getNetworkName());
254     }
255
256     @Test
257     public void queryNetworkWrapperByIdTest() throws Exception {
258         final String content =
259                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "aaiQueryAAIResponse-Wrapper.json")));
260         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
261         L3Network network = new L3Network();
262         network.setNetworkId("0384d743-f69b-4cc8-9aa8-c3ae66662c44");
263         network.setNetworkName("Dev_Bindings_1802_020118");
264         network.setOrchestrationStatus(OrchestrationStatus.CREATED);
265
266         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
267         AAIResultWrapper result = aaiNetworkResources.queryNetworkWrapperById(network);
268
269         verify(MOCK_aaiResourcesClient, times(1)).get(isA(AAIResourceUri.class));
270         assertEquals(aaiResultWrapper.getJson(), result.getJson());
271         assertNotNull(result);
272         Optional<Relationships> resultNetworkRelationships = result.getRelationships();
273         assertTrue(resultNetworkRelationships.isPresent());
274         Optional<org.onap.aai.domain.yang.L3Network> aaiL3Network =
275                 result.asBean(org.onap.aai.domain.yang.L3Network.class);
276         assertEquals(network.getNetworkId(), aaiL3Network.get().getNetworkId());
277         assertEquals(network.getNetworkName(), aaiL3Network.get().getNetworkName());
278
279
280     }
281
282     @Test
283     public void createNetworkCollectionTest() throws Exception {
284
285         doNothing().when(MOCK_aaiResourcesClient).create(isA(AAIResourceUri.class),
286                 isA(org.onap.aai.domain.yang.Collection.class));
287         doReturn(new org.onap.aai.domain.yang.Collection()).when(MOCK_aaiObjectMapper).mapCollection(collection);
288         collection.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
289
290         aaiNetworkResources.createNetworkCollection(collection);
291         assertEquals(OrchestrationStatus.INVENTORIED, collection.getOrchestrationStatus());
292         verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class),
293                 isA(org.onap.aai.domain.yang.Collection.class));
294     }
295
296     @Test
297     public void createNetworkInstanceGroupTest() throws Exception {
298         doReturn(new org.onap.aai.domain.yang.InstanceGroup()).when(MOCK_aaiObjectMapper)
299                 .mapInstanceGroup(instanceGroup);
300         doNothing().when(MOCK_aaiResourcesClient).create(isA(AAIResourceUri.class),
301                 isA(org.onap.aai.domain.yang.InstanceGroup.class));
302         aaiNetworkResources.createNetworkInstanceGroup(instanceGroup);
303         verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class),
304                 isA(org.onap.aai.domain.yang.InstanceGroup.class));
305     }
306
307     @Test
308     public void connectNetworkToNetworkCollectionInstanceGroupTest() throws Exception {
309         aaiNetworkResources.connectNetworkToNetworkCollectionInstanceGroup(network, instanceGroup);
310         verify(MOCK_aaiResourcesClient, times(1)).connect(
311                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())),
312                 eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
313     }
314
315     @Test
316     public void connectNetworkToNetworkCollectionServiceInstanceTest() throws Exception {
317         aaiNetworkResources.connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
318         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class),
319                 eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
320     }
321
322     @Test
323     public void connectNetworkToCloudRegionTest() throws Exception {
324         aaiNetworkResources.connectNetworkToCloudRegion(network, cloudRegion);
325         verify(MOCK_aaiResourcesClient, times(1)).connect(
326                 eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())),
327                 eq(AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudRegion.getCloudOwner(),
328                         cloudRegion.getLcpCloudRegionId())));
329     }
330
331     @Test
332     public void connectNetworkToTenantTest() throws Exception {
333         aaiNetworkResources.connectNetworkToTenant(network, cloudRegion);
334         verify(MOCK_aaiResourcesClient, times(1)).connect(
335                 eq(AAIUriFactory.createResourceUri(AAIObjectType.TENANT, cloudRegion.getCloudOwner(),
336                         cloudRegion.getLcpCloudRegionId(), cloudRegion.getTenantId())),
337                 eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
338     }
339
340     @Test
341     public void connectNetworkCollectionInstanceGroupToNetworkCollectionTest() throws Exception {
342         aaiNetworkResources.connectNetworkCollectionInstanceGroupToNetworkCollection(instanceGroup, collection);
343         verify(MOCK_aaiResourcesClient, times(1)).connect(
344                 eq(AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, collection.getId())),
345                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())));
346     }
347
348     @Test
349     public void connectNetworkCollectionToServiceInstanceTest() throws Exception {
350         aaiNetworkResources.connectNetworkCollectionToServiceInstance(collection, serviceInstance);
351         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
352     }
353
354     @Test
355     public void deleteCollectionTest() throws Exception {
356         doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
357         aaiNetworkResources.deleteCollection(collection);
358         verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
359     }
360
361     @Test
362     public void deleteInstanceGroupTest() throws Exception {
363         doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
364         aaiNetworkResources.deleteNetworkInstanceGroup(instanceGroup);
365         verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
366     }
367
368     @Test
369     public void updateSubnetTest() throws Exception {
370
371         doReturn(new org.onap.aai.domain.yang.Subnet()).when(MOCK_aaiObjectMapper).mapSubnet(subnet);
372         doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class),
373                 isA(org.onap.aai.domain.yang.Subnet.class));
374
375         aaiNetworkResources.updateSubnet(network, subnet);
376
377         verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class),
378                 isA(org.onap.aai.domain.yang.Subnet.class));
379     }
380
381     @Test
382     public void connectInstanceGroupToCloudRegionTest() throws Exception {
383         aaiNetworkResources.connectInstanceGroupToCloudRegion(instanceGroup, cloudRegion);
384         verify(MOCK_aaiResourcesClient, times(1)).connect(
385                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())),
386                 eq(AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudRegion.getCloudOwner(),
387                         cloudRegion.getLcpCloudRegionId())),
388                 eq(AAIEdgeLabel.USES));
389     }
390
391     @Test
392     public void getSubnetTest() throws Exception {
393         final String content =
394                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "aaiSubnetsMapped_to_aai.json")));
395         AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
396         Optional<org.onap.aai.domain.yang.Subnet> oSubnet = Optional.empty();
397         AAIResourceUri subnetUri =
398                 AAIUriFactory.createResourceUri(AAIObjectType.SUBNET, "ModelInvariantUUID", "serviceModelVersionId");
399
400         doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
401         oSubnet = aaiNetworkResources.getSubnet(subnetUri);
402         verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
403
404         if (oSubnet.isPresent()) {
405             org.onap.aai.domain.yang.Subnet subnet = oSubnet.get();
406             assertThat(aaiResultWrapper.asBean(org.onap.aai.domain.yang.Subnet.class).get(), sameBeanAs(subnet));
407         }
408     }
409
410     @Test
411     public void createNetworkPolicyTest() throws Exception {
412         doNothing().when(MOCK_aaiResourcesClient).create(isA(AAIResourceUri.class),
413                 isA(org.onap.aai.domain.yang.NetworkPolicy.class));
414         doReturn(new org.onap.aai.domain.yang.NetworkPolicy()).when(MOCK_aaiObjectMapper)
415                 .mapNetworkPolicy(networkPolicy);
416         aaiNetworkResources.createNetworkPolicy(networkPolicy);
417         verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class),
418                 isA(org.onap.aai.domain.yang.NetworkPolicy.class));
419     }
420
421     @Test
422     public void deleteNetworkPolicyTest() throws Exception {
423         doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
424         aaiNetworkResources.deleteNetworkPolicy(networkPolicy.getNetworkPolicyId());
425         verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
426     }
427
428 }