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