Springboot 2.0 upgrade
[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.Matchers.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
36 import java.nio.file.Files;
37 import java.nio.file.Paths;
38 import java.util.ArrayList;
39 import java.util.List;
40 import java.util.Optional;
41
42 import org.junit.Before;
43 import org.junit.Test;
44 import org.junit.runner.RunWith;
45 import org.mockito.InjectMocks;
46 import org.mockito.Mock;
47 import org.mockito.junit.MockitoJUnitRunner;
48 import org.onap.aai.domain.yang.NetworkPolicy;
49 import org.onap.aai.domain.yang.RouteTableReference;
50 import org.onap.aai.domain.yang.VpnBinding;
51 import org.onap.so.bpmn.common.InjectionHelper;
52 import org.onap.so.bpmn.common.data.TestDataSetup;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
58 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
59 import org.onap.so.client.aai.AAIObjectType;
60 import org.onap.so.client.aai.AAIResourcesClient;
61 import org.onap.so.client.aai.entities.AAIEdgeLabel;
62 import org.onap.so.client.aai.entities.AAIResultWrapper;
63 import org.onap.so.client.aai.entities.Relationships;
64 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
65 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
66 import org.onap.so.client.aai.mapper.AAIObjectMapper;
67 import org.onap.so.db.catalog.beans.OrchestrationStatus;
68
69 @RunWith(MockitoJUnitRunner.Silent.class)
70 public class AAINetworkResourcesTest extends TestDataSetup{
71         
72         private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/";
73         
74         private L3Network network;
75         private Collection collection;
76         private InstanceGroup instanceGroup;
77         private ServiceInstance serviceInstance;
78         private CloudRegion cloudRegion;
79         private Subnet subnet;
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                 doReturn(MOCK_aaiResourcesClient).when(MOCK_injectionHelper).getAaiClient();
111         }
112         
113
114         @Test
115         public void updateNetworkTest() throws Exception {
116
117                 network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
118                 
119                 doReturn(new org.onap.aai.domain.yang.L3Network()).when(MOCK_aaiObjectMapper).mapNetwork(network);
120                 doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class), isA(org.onap.aai.domain.yang.L3Network.class));
121                 
122                 aaiNetworkResources.updateNetwork(network);
123
124                 verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), isA(org.onap.aai.domain.yang.L3Network.class));
125                 assertEquals(OrchestrationStatus.ASSIGNED, network.getOrchestrationStatus());
126         }
127         
128         @Test
129         public void createNetworkConnectToServiceInstanceTest() throws Exception {
130
131                 network.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
132                 
133                 doReturn(new org.onap.aai.domain.yang.L3Network()).when(MOCK_aaiObjectMapper).mapNetwork(network);
134                 doReturn(MOCK_aaiResourcesClient).when(MOCK_aaiResourcesClient).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
135                 doNothing().when(MOCK_aaiResourcesClient).connect(isA(AAIResourceUri.class), any(AAIResourceUri.class));
136                 
137                 aaiNetworkResources.createNetworkConnectToServiceInstance(network, serviceInstance);
138                 
139                 assertEquals(OrchestrationStatus.INVENTORIED, network.getOrchestrationStatus());
140
141         verify(MOCK_aaiResourcesClient, times(1)).createIfNotExists(any(AAIResourceUri.class), any(Optional.class));
142         verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
143         }
144         
145         @Test
146         public void deleteNetworkTest() throws Exception {
147
148                 network.setOrchestrationStatus(OrchestrationStatus.INVENTORIED);
149                 
150                 doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
151                 
152                 aaiNetworkResources.deleteNetwork(network);
153
154                 verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
155         }
156         
157         @Test
158         public void getVpnBindingTest() throws Exception {
159                 final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiVpnBinding.json")));
160                 AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
161                 Optional<VpnBinding> oVpnBinding = Optional.empty();
162                 AAIResourceUri aaiUri = AAIUriFactory.createResourceUri(AAIObjectType.VPN_BINDING, "ModelInvariantUUID", "serviceModelVersionId");
163                 
164                 doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
165                 oVpnBinding = aaiNetworkResources.getVpnBinding(aaiUri);
166                 verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
167                 
168                 if (oVpnBinding.isPresent()) {
169                         VpnBinding vpnBinding = oVpnBinding.get();
170                         assertThat(aaiResultWrapper.asBean(VpnBinding.class).get(), sameBeanAs(vpnBinding));
171                 }
172         }
173         
174         @Test
175         public void getNetworkPolicyTest() throws Exception {
176                 final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkPolicy.json")));
177                 AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
178                 Optional<NetworkPolicy> oNetPolicy = Optional.empty();
179                 AAIResourceUri netPolicyUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, "ModelInvariantUUID", "serviceModelVersionId");
180                 
181                 doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
182                 oNetPolicy = aaiNetworkResources.getNetworkPolicy(netPolicyUri);
183                 verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
184                 
185                 if (oNetPolicy.isPresent()) {
186                         NetworkPolicy networkPolicy = oNetPolicy.get();
187                         assertThat(aaiResultWrapper.asBean(NetworkPolicy.class).get(), sameBeanAs(networkPolicy));
188                 }
189         }
190         
191         @Test
192         public void getRouteTableTest() throws Exception {
193                 final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "queryAaiNetworkTableRefs.json")));
194                 AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
195                 Optional<RouteTableReference> oRtref = Optional.empty();
196                 AAIResourceUri rTRefUri = AAIUriFactory.createResourceUri(AAIObjectType.ROUTE_TABLE_REFERENCE, "ModelInvariantUUID", "serviceModelVersionId");
197                 
198                 doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
199                 oRtref = aaiNetworkResources.getRouteTable(rTRefUri);
200                 verify(MOCK_aaiResourcesClient, times(1)).get(any(AAIResourceUri.class));
201                 
202                 if (oRtref.isPresent()) {
203                         RouteTableReference rTref = oRtref.get();
204                         assertThat(aaiResultWrapper.asBean(RouteTableReference.class).get(), sameBeanAs(rTref));
205                 }
206         }
207         
208         @Test
209         public void queryNetworkByIdTest() throws Exception {
210                 final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "aaiQueryAAIResponse-Wrapper.json")));
211                 AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
212                 L3Network network = new L3Network();
213                 network.setNetworkId("0384d743-f69b-4cc8-9aa8-c3ae66662c44");
214                 network.setNetworkName("Dev_Bindings_1802_020118");
215                 network.setOrchestrationStatus(OrchestrationStatus.CREATED);
216
217                 doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
218                 Optional<org.onap.aai.domain.yang.L3Network> l3NetworkOpt =  aaiNetworkResources.queryNetworkById(network);
219                 org.onap.aai.domain.yang.L3Network l3Network = l3NetworkOpt.isPresent() ? l3NetworkOpt.get() : null; 
220                 
221                 verify(MOCK_aaiResourcesClient, times(1)).get(isA(AAIResourceUri.class));
222                 assertNotNull(l3Network);
223                 assertEquals("0384d743-f69b-4cc8-9aa8-c3ae66662c44", l3Network.getNetworkId());         
224                 assertEquals("Dev_Bindings_1802_020118", l3Network.getNetworkName());
225         }       
226         
227         @Test
228         public void queryNetworkWrapperByIdTest() throws Exception {
229                 final String content = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "aaiQueryAAIResponse-Wrapper.json")));
230                 AAIResultWrapper aaiResultWrapper = new AAIResultWrapper(content);
231                 L3Network network = new L3Network();
232                 network.setNetworkId("0384d743-f69b-4cc8-9aa8-c3ae66662c44");
233                 network.setNetworkName("Dev_Bindings_1802_020118");
234                 network.setOrchestrationStatus(OrchestrationStatus.CREATED);
235
236                 doReturn(aaiResultWrapper).when(MOCK_aaiResourcesClient).get(isA(AAIResourceUri.class));
237                 AAIResultWrapper result =  aaiNetworkResources.queryNetworkWrapperById(network);
238                 
239                 verify(MOCK_aaiResourcesClient, times(1)).get(isA(AAIResourceUri.class));
240                 assertEquals(aaiResultWrapper.getJson(), result.getJson());
241                 assertNotNull(result);
242                 Optional<Relationships> resultNetworkRelationships = result.getRelationships();
243                 assertTrue(resultNetworkRelationships.isPresent());
244                 Optional<org.onap.aai.domain.yang.L3Network> aaiL3Network = result.asBean(org.onap.aai.domain.yang.L3Network.class);
245                 assertEquals(network.getNetworkId(),aaiL3Network.get().getNetworkId());
246                 assertEquals(network.getNetworkName(),aaiL3Network.get().getNetworkName());
247                 
248         
249         }
250
251         @Test
252         public void createNetworkCollectionTest() throws Exception {
253                 
254                 doNothing().when(MOCK_aaiResourcesClient).create(isA(AAIResourceUri.class), isA(org.onap.aai.domain.yang.Collection.class));
255                 doReturn(new org.onap.aai.domain.yang.Collection()).when(MOCK_aaiObjectMapper).mapCollection(collection);
256                 collection.setOrchestrationStatus(OrchestrationStatus.PRECREATED);
257                 
258                 aaiNetworkResources.createNetworkCollection(collection);
259                 assertEquals(OrchestrationStatus.INVENTORIED, collection.getOrchestrationStatus());
260                 verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class), isA(org.onap.aai.domain.yang.Collection.class));
261         }
262         
263         @Test
264         public void createNetworkInstanceGroupTest() throws Exception {
265                 doReturn(new org.onap.aai.domain.yang.InstanceGroup()).when(MOCK_aaiObjectMapper).mapInstanceGroup(instanceGroup);
266                 doNothing().when(MOCK_aaiResourcesClient).create(isA(AAIResourceUri.class), isA(org.onap.aai.domain.yang.InstanceGroup.class));
267                 aaiNetworkResources.createNetworkInstanceGroup(instanceGroup);
268                 verify(MOCK_aaiResourcesClient, times(1)).create(any(AAIResourceUri.class), isA(org.onap.aai.domain.yang.InstanceGroup.class));
269         }
270         
271         @Test
272         public void connectNetworkToNetworkCollectionInstanceGroupTest() throws Exception {
273                 aaiNetworkResources.connectNetworkToNetworkCollectionInstanceGroup(network, instanceGroup);
274                 verify(MOCK_aaiResourcesClient, times(1)).connect(eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())), eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
275         }
276         
277         @Test
278         public void connectNetworkToNetworkCollectionServiceInstanceTest() throws Exception {
279                 aaiNetworkResources.connectNetworkToNetworkCollectionServiceInstance(network, serviceInstance);
280                 verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
281         }
282         
283         @Test
284         public void connectNetworkToCloudRegionTest() throws Exception {
285                 aaiNetworkResources.connectNetworkToCloudRegion(network, cloudRegion);
286                 verify(MOCK_aaiResourcesClient, times(1)).connect(eq(AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, 
287                                 cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId())), eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
288         }
289         
290         @Test
291         public void connectNetworkToTenantTest() throws Exception {
292                 aaiNetworkResources.connectNetworkToTenant(network, cloudRegion);
293                 verify(MOCK_aaiResourcesClient, times(1)).connect(eq(AAIUriFactory.createResourceUri(AAIObjectType.TENANT, 
294                                 cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId(), cloudRegion.getTenantId())), 
295                                 eq(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId())));
296         }
297         
298         @Test
299         public void connectNetworkCollectionInstanceGroupToNetworkCollectionTest() throws Exception {
300                 aaiNetworkResources.connectNetworkCollectionInstanceGroupToNetworkCollection(instanceGroup, collection);
301                 verify(MOCK_aaiResourcesClient, times(1)).connect(eq(AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, collection.getId())), eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())));
302         }
303         
304         @Test
305         public void connectNetworkCollectionToServiceInstanceTest() throws Exception {
306                 aaiNetworkResources.connectNetworkCollectionToServiceInstance(collection, serviceInstance);
307                 verify(MOCK_aaiResourcesClient, times(1)).connect(any(AAIResourceUri.class), any(AAIResourceUri.class));
308         }
309         
310         @Test
311         public void deleteCollectionTest() throws Exception {
312                 doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
313                 aaiNetworkResources.deleteCollection(collection);
314                 verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
315         }
316         
317         @Test
318         public void deleteInstanceGroupTest() throws Exception {
319                 doNothing().when(MOCK_aaiResourcesClient).delete(isA(AAIResourceUri.class));
320                 aaiNetworkResources.deleteNetworkInstanceGroup(instanceGroup);
321                 verify(MOCK_aaiResourcesClient, times(1)).delete(any(AAIResourceUri.class));
322         }
323         
324         @Test
325         public void updateSubnetTest() throws Exception {
326
327                 doReturn(new org.onap.aai.domain.yang.Subnet()).when(MOCK_aaiObjectMapper).mapSubnet(subnet);
328                 doNothing().when(MOCK_aaiResourcesClient).update(isA(AAIResourceUri.class), isA(org.onap.aai.domain.yang.Subnet.class));
329                 
330                 aaiNetworkResources.updateSubnet(network, subnet);
331
332                 verify(MOCK_aaiResourcesClient, times(1)).update(any(AAIResourceUri.class), isA(org.onap.aai.domain.yang.Subnet.class));
333         }
334         
335         @Test
336         public void connectInstanceGroupToCloudRegionTest() throws Exception {
337                 aaiNetworkResources.connectInstanceGroupToCloudRegion(instanceGroup, cloudRegion);
338                 verify(MOCK_aaiResourcesClient, times(1)).connect(
339                                 eq(AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId())),
340                                 eq(AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION, cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId())),
341                                 eq(AAIEdgeLabel.USES));
342         }
343 }