Replaced all tabs with spaces in java and pom.xml
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / client / adapter / network / mapper / NetworkAdapterObjectMapperTest.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 package org.onap.so.client.adapter.network.mapper;
21
22 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
23 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
24 import static org.junit.Assert.*;
25 import static org.mockito.ArgumentMatchers.isA;
26 import static org.mockito.Mockito.doReturn;
27 import java.io.UnsupportedEncodingException;
28 import java.nio.file.Files;
29 import java.nio.file.Paths;
30 import java.util.ArrayList;
31 import java.util.Arrays;
32 import java.util.HashMap;
33 import java.util.List;
34 import java.util.Map;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.mockito.Mockito;
38 import org.onap.so.adapters.nwrest.ContrailNetwork;
39 import org.onap.so.adapters.nwrest.CreateNetworkRequest;
40 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
41 import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
42 import org.onap.so.adapters.nwrest.NetworkTechnology;
43 import org.onap.so.adapters.nwrest.ProviderVlanNetwork;
44 import org.onap.so.adapters.nwrest.RollbackNetworkRequest;
45 import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
46 import org.onap.so.bpmn.common.data.TestDataSetup;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTableReference;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTarget;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.VpnBinding;
58 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
59 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
60 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
61 import org.onap.so.entity.MsoRequest;
62 import org.onap.so.openstack.beans.NetworkRollback;
63 import com.fasterxml.jackson.databind.ObjectMapper;
64
65 public class NetworkAdapterObjectMapperTest extends TestDataSetup {
66
67     private NetworkAdapterObjectMapper SPY_networkAdapterObjectMapper = Mockito.spy(NetworkAdapterObjectMapper.class);
68
69     private L3Network l3Network;
70     private RequestContext requestContext;
71     private ServiceInstance serviceInstance;
72     private CloudRegion cloudRegion;
73     private OrchestrationContext orchestrationContext;
74     private Customer customer;
75     Map<String, String> userInput;
76
77     private final static String JSON_FILE_LOCATION = "src/test/resources/__files/BuildingBlocks/NetworkMapper/";
78
79     @Before
80     public void before() {
81         requestContext = setRequestContext();
82
83         customer = buildCustomer();
84
85         serviceInstance = setServiceInstance();
86
87         cloudRegion = setCloudRegion();
88
89         orchestrationContext = setOrchestrationContext();
90         orchestrationContext.setIsRollbackEnabled(false);
91
92         userInput = setUserInput();
93
94         l3Network = setL3Network();
95
96         customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
97     }
98
99     @Test
100     public void buildCreateNetworkRequestFromBbobjectTest() throws Exception {
101
102         String cloudRegionPo = "cloudRegionPo";
103         CreateNetworkRequest expectedCreateNetworkRequest = new CreateNetworkRequest();
104
105         expectedCreateNetworkRequest.setCloudSiteId(cloudRegionPo);
106         expectedCreateNetworkRequest.setTenantId(cloudRegion.getTenantId());
107         expectedCreateNetworkRequest.setNetworkId(l3Network.getNetworkId());
108         expectedCreateNetworkRequest.setNetworkName(l3Network.getNetworkName());
109         expectedCreateNetworkRequest.setNetworkType(l3Network.getNetworkType());
110         expectedCreateNetworkRequest.setBackout(false);
111         expectedCreateNetworkRequest.setFailIfExists(true);
112         expectedCreateNetworkRequest.setNetworkTechnology("CONTRAIL");
113         MsoRequest msoRequest = new MsoRequest();
114         msoRequest.setRequestId(requestContext.getMsoRequestId());
115         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
116         expectedCreateNetworkRequest.setMsoRequest(msoRequest);
117         expectedCreateNetworkRequest.setSkipAAI(true);
118         HashMap<String, String> networkParams = new HashMap<String, String>();
119         networkParams.put("shared", "true");
120         networkParams.put("external", "false");
121         networkParams.put("testUserInputKey", "testUserInputValue");
122         expectedCreateNetworkRequest.setNetworkParams(networkParams);
123
124         expectedCreateNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
125
126         Subnet openstackSubnet = new Subnet();
127         HostRoute hostRoute = new HostRoute();
128         hostRoute.setHostRouteId("hostRouteId");
129         hostRoute.setNextHop("nextHop");
130         hostRoute.setRoutePrefix("routePrefix");
131         openstackSubnet.getHostRoutes().add(hostRoute);
132         List<Subnet> subnetList = new ArrayList<Subnet>();
133         subnetList.add(openstackSubnet);
134         l3Network.getSubnets().add(openstackSubnet);
135         l3Network.setNetworkTechnology("Contrail");
136         l3Network.setIsSharedNetwork(true);
137         l3Network.setIsExternalNetwork(false);
138
139         doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
140         doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
141
142         CreateNetworkRequest createNetworkRequest =
143                 SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion,
144                         orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer);
145
146         assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("contrailRequest")
147                 .ignoring("contrailNetwork").ignoring("providerVlanNetwork").ignoring("subnets").ignoring("messageId"));
148     }
149
150     @Test
151     public void createNetworkRollbackRequestMapperTest() throws Exception {
152
153         String cloudRegionPo = "cloudRegionPo";
154         RollbackNetworkRequest expectedRollbackNetworkRequest = new RollbackNetworkRequest();
155
156         expectedRollbackNetworkRequest.setMessageId(requestContext.getMsoRequestId());
157         NetworkRollback networkRollback = new NetworkRollback();
158         networkRollback.setCloudId(cloudRegionPo);
159         networkRollback.setNetworkCreated(true);
160         networkRollback.setNetworkId(l3Network.getNetworkId());
161         networkRollback.setNetworkType(l3Network.getNetworkType());
162         networkRollback.setTenantId(cloudRegion.getTenantId());
163         expectedRollbackNetworkRequest.setNetworkRollback(networkRollback);
164         expectedRollbackNetworkRequest.setSkipAAI(true);
165
166         CreateNetworkResponse createNetworkResponse = new CreateNetworkResponse();
167         createNetworkResponse.setNetworkCreated(true);
168
169         RollbackNetworkRequest rollbackNetworkRequest = SPY_networkAdapterObjectMapper
170                 .createNetworkRollbackRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance,
171                         l3Network, userInput, cloudRegionPo, createNetworkResponse);
172
173         assertThat(rollbackNetworkRequest, sameBeanAs(expectedRollbackNetworkRequest).ignoring("contrailNetwork")
174                 .ignoring("providerVlanNetwork").ignoring("subnets").ignoring("networkParams").ignoring("messageId"));
175     }
176
177     @Test
178     public void updateNetworkRequestMapperTest() throws UnsupportedEncodingException {
179         org.onap.so.openstack.beans.Subnet subnet = new org.onap.so.openstack.beans.Subnet();
180         subnet.setSubnetId("subnetId");
181         subnet.setHostRoutes(new ArrayList<org.onap.so.openstack.beans.HostRoute>());
182
183         List<org.onap.so.openstack.beans.Subnet> subnets = new ArrayList<>();
184         subnets.add(subnet);
185
186         ProviderVlanNetwork providerVlanNetwork =
187                 new ProviderVlanNetwork("physicalNetworkName", new ArrayList<Integer>());
188
189         List<String> policyFqdns = Arrays.asList("networkPolicyFqdn");
190
191         org.onap.so.openstack.beans.RouteTarget expectedRouteTarget = new org.onap.so.openstack.beans.RouteTarget();
192         expectedRouteTarget.setRouteTarget("globalRouteTarget");
193
194         ContrailNetwork contrailNetwork = new ContrailNetwork();
195         contrailNetwork.setPolicyFqdns(policyFqdns);
196         contrailNetwork.setRouteTableFqdns(new ArrayList<String>());
197         contrailNetwork.setRouteTargets(new ArrayList<org.onap.so.openstack.beans.RouteTarget>());
198         contrailNetwork.getRouteTargets().add(expectedRouteTarget);
199         contrailNetwork.getRouteTableFqdns().add("routeTableReferenceFqdn");
200
201         MsoRequest msoRequest = new MsoRequest();
202         msoRequest.setServiceInstanceId("testServiceInstanceId1");
203
204         ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
205         modelInfoNetwork.setNetworkType("networkType");
206         modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
207         modelInfoNetwork.setModelVersion("modelVersion");
208
209         Subnet actualSubnet = new Subnet();
210         actualSubnet.setSubnetId("subnetId");
211         actualSubnet.setDhcpEnabled(false);
212         actualSubnet.setIpVersion("4");
213
214         RouteTarget routeTarget = new RouteTarget();
215         routeTarget.setGlobalRouteTarget("globalRouteTarget");
216
217         VpnBinding vpnBinding = new VpnBinding();
218         vpnBinding.setVpnId("vpnId");
219         vpnBinding.getRouteTargets().add(routeTarget);
220
221         Customer customer = new Customer();
222         customer.getVpnBindings().add(vpnBinding);
223         ServiceSubscription serviceSubscription = new ServiceSubscription();
224         customer.setServiceSubscription(serviceSubscription);
225         // set Customer on service instance
226         customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
227
228         NetworkPolicy networkPolicy = new NetworkPolicy();
229         networkPolicy.setNetworkPolicyId("networkPolicyId");
230         networkPolicy.setNetworkPolicyFqdn("networkPolicyFqdn");
231
232         RouteTableReference routeTableReference = new RouteTableReference();
233         routeTableReference.setRouteTableReferenceFqdn("routeTableReferenceFqdn");
234
235         l3Network.setModelInfoNetwork(modelInfoNetwork);
236         l3Network.setPhysicalNetworkName("physicalNetworkName");
237         l3Network.getSubnets().add(actualSubnet);
238         l3Network.getNetworkPolicies().add(networkPolicy);
239         l3Network.getContrailNetworkRouteTableReferences().add(routeTableReference);
240         l3Network.setIsSharedNetwork(false);
241         l3Network.setIsExternalNetwork(false);
242         HashMap<String, String> networkParams = new HashMap<String, String>();
243         networkParams.put("shared", "false");
244         networkParams.put("external", "false");
245         networkParams.put("testUserInputKey", "testUserInputValue");
246
247         UpdateNetworkRequest expectedUpdateNetworkRequest = new UpdateNetworkRequest();
248         expectedUpdateNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
249         expectedUpdateNetworkRequest.setTenantId(cloudRegion.getTenantId());
250         expectedUpdateNetworkRequest.setNetworkId(l3Network.getNetworkId());
251         expectedUpdateNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
252         expectedUpdateNetworkRequest.setNetworkName(l3Network.getNetworkName());
253         expectedUpdateNetworkRequest.setNetworkType(l3Network.getModelInfoNetwork().getNetworkType());
254         expectedUpdateNetworkRequest.setNetworkTypeVersion(l3Network.getModelInfoNetwork().getModelVersion());
255         expectedUpdateNetworkRequest
256                 .setModelCustomizationUuid(l3Network.getModelInfoNetwork().getModelCustomizationUUID());
257         expectedUpdateNetworkRequest.setSubnets(subnets);
258         expectedUpdateNetworkRequest.setProviderVlanNetwork(providerVlanNetwork);
259         expectedUpdateNetworkRequest.setContrailNetwork(contrailNetwork);
260         expectedUpdateNetworkRequest.setNetworkParams(networkParams);
261         expectedUpdateNetworkRequest.setMsoRequest(msoRequest);
262         expectedUpdateNetworkRequest.setSkipAAI(true);
263         expectedUpdateNetworkRequest.setBackout(Boolean.TRUE.equals(orchestrationContext.getIsRollbackEnabled()));
264         expectedUpdateNetworkRequest.setMessageId("messageId");
265         expectedUpdateNetworkRequest
266                 .setNotificationUrl("http://localhost:28080/mso/WorkflowMesssage/NetworkAResponse/messageId");
267
268         doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
269         doReturn("http://localhost:28080/mso/WorkflowMesssage").when(SPY_networkAdapterObjectMapper).getEndpoint();
270         UpdateNetworkRequest actualUpdateNetworkRequest =
271                 SPY_networkAdapterObjectMapper.createNetworkUpdateRequestMapper(requestContext, cloudRegion,
272                         orchestrationContext, serviceInstance, l3Network, userInput, customer);
273
274         assertThat(actualUpdateNetworkRequest,
275                 sameBeanAs(expectedUpdateNetworkRequest).ignoring("msoRequest.requestId"));
276     }
277
278     @Test
279     public void deleteNetworkRequestMapperTest() throws Exception {
280         DeleteNetworkRequest expectedDeleteNetworkRequest = new DeleteNetworkRequest();
281
282         String messageId = "messageId";
283         expectedDeleteNetworkRequest.setMessageId(messageId);
284         doReturn(messageId).when(SPY_networkAdapterObjectMapper).getRandomUuid();
285
286         ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
287         l3Network.setModelInfoNetwork(modelInfoNetwork);
288         modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
289         expectedDeleteNetworkRequest.setModelCustomizationUuid(modelInfoNetwork.getModelCustomizationUUID());
290
291         MsoRequest msoRequest = new MsoRequest();
292         msoRequest.setRequestId(requestContext.getMsoRequestId());
293         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
294         expectedDeleteNetworkRequest.setMsoRequest(msoRequest);
295
296         expectedDeleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
297
298         l3Network.setHeatStackId("heatStackId");
299         expectedDeleteNetworkRequest.setNetworkStackId(l3Network.getHeatStackId());
300
301         expectedDeleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
302
303         expectedDeleteNetworkRequest.setSkipAAI(true);
304
305         expectedDeleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
306
307         expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
308
309         expectedDeleteNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
310
311         doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
312         doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
313
314         DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper
315                 .deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
316
317         assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
318     }
319
320     @Test
321     public void deleteNetworkRequestNoHeatIdMapperTest() throws Exception {
322         DeleteNetworkRequest expectedDeleteNetworkRequest = new DeleteNetworkRequest();
323
324         String messageId = "messageId";
325         expectedDeleteNetworkRequest.setMessageId(messageId);
326         doReturn(messageId).when(SPY_networkAdapterObjectMapper).getRandomUuid();
327
328         ModelInfoNetwork modelInfoNetwork = new ModelInfoNetwork();
329         l3Network.setModelInfoNetwork(modelInfoNetwork);
330         modelInfoNetwork.setModelCustomizationUUID("modelCustomizationUuid");
331         expectedDeleteNetworkRequest.setModelCustomizationUuid(modelInfoNetwork.getModelCustomizationUUID());
332
333         MsoRequest msoRequest = new MsoRequest();
334         msoRequest.setRequestId(requestContext.getMsoRequestId());
335         msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
336         expectedDeleteNetworkRequest.setMsoRequest(msoRequest);
337
338         expectedDeleteNetworkRequest.setNetworkId(l3Network.getNetworkId());
339
340         l3Network.setNetworkName("heatStackId");
341         expectedDeleteNetworkRequest.setNetworkStackId("heatStackId");
342
343         expectedDeleteNetworkRequest.setNetworkType(l3Network.getNetworkType());
344
345         expectedDeleteNetworkRequest.setSkipAAI(true);
346
347         expectedDeleteNetworkRequest.setTenantId(cloudRegion.getTenantId());
348
349         expectedDeleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
350
351         expectedDeleteNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
352
353         doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
354         doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
355         DeleteNetworkRequest deleteNetworkRequest = SPY_networkAdapterObjectMapper
356                 .deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
357
358         assertThat(expectedDeleteNetworkRequest, sameBeanAs(deleteNetworkRequest));
359     }
360
361     @Test
362     public void buildOpenstackSubnetListTest() throws Exception {
363
364         ObjectMapper omapper = new ObjectMapper();
365         String bbJson = new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "generalBB.json")));
366         org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock gbb =
367                 omapper.readValue(bbJson, org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock.class);
368         L3Network myNetwork = gbb.getServiceInstance().getNetworks().get(0);
369
370         String expectedCreateNetworkRequestJson =
371                 new String(Files.readAllBytes(Paths.get(JSON_FILE_LOCATION + "createNetworkRequest.json")));
372         org.onap.so.adapters.nwrest.CreateNetworkRequest expectedCreateNetworkRequest = omapper
373                 .readValue(expectedCreateNetworkRequestJson, org.onap.so.adapters.nwrest.CreateNetworkRequest.class);
374
375         String cloudRegionPo = "cloudRegionPo";
376
377         expectedCreateNetworkRequest.setNotificationUrl("endpoint/NetworkAResponse/messageId");
378
379         doReturn("endpoint/").when(SPY_networkAdapterObjectMapper).getEndpoint();
380         doReturn("messageId").when(SPY_networkAdapterObjectMapper).getRandomUuid();
381         CreateNetworkRequest createNetworkRequest =
382                 SPY_networkAdapterObjectMapper.createNetworkRequestMapper(requestContext, cloudRegion,
383                         orchestrationContext, serviceInstance, myNetwork, userInput, cloudRegionPo, customer);
384         // ignoring dynamic fields and networkParams that throws parsing exception on json file load
385         assertThat(createNetworkRequest, sameBeanAs(expectedCreateNetworkRequest).ignoring("messageId")
386                 .ignoring("msoRequest.requestId").ignoring("networkParams"));
387     }
388 }