0669b84fd6eefdbfa2b3279e2c9617fa897a503f
[so.git] / bpmn / so-bpmn-tasks / src / test / java / org / onap / so / client / orchestration / NetworkAdapterResourcesTest.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 org.junit.Assert.assertNotNull;
24 import static org.junit.Assert.assertThat;
25 import static org.mockito.Matchers.isA;
26 import static org.mockito.Mockito.doReturn;
27 import static org.mockito.Mockito.times;
28 import static org.mockito.Mockito.verify;
29
30 import java.io.UnsupportedEncodingException;
31 import java.util.ArrayList;
32 import java.util.List;
33 import java.util.Map;
34 import java.util.Optional;
35
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.mockito.InjectMocks;
40 import org.mockito.Mock;
41 import org.mockito.runners.MockitoJUnitRunner;
42 import org.onap.so.bpmn.common.data.TestDataSetup;
43 import org.onap.so.adapters.nwrest.CreateNetworkRequest;
44 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
45 import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
46 import org.onap.so.adapters.nwrest.DeleteNetworkResponse;
47 import org.onap.so.adapters.nwrest.RollbackNetworkRequest;
48 import org.onap.so.adapters.nwrest.RollbackNetworkResponse;
49 import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
50 import org.onap.so.adapters.nwrest.UpdateNetworkResponse;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
57 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
58 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
59 import org.onap.so.client.adapter.network.NetworkAdapterClientException;
60 import org.onap.so.client.adapter.network.NetworkAdapterClientImpl;
61 import org.onap.so.client.adapter.network.mapper.NetworkAdapterObjectMapper;
62 import org.onap.so.db.catalog.beans.OrchestrationStatus;
63 import org.onap.so.entity.MsoRequest;
64
65 import com.shazam.shazamcrest.matcher.Matchers;
66
67
68 @RunWith(MockitoJUnitRunner.class)
69 public class NetworkAdapterResourcesTest  extends TestDataSetup{
70         
71         @InjectMocks
72         private NetworkAdapterResources networkAdapterResources = new NetworkAdapterResources();
73         
74         @Mock
75         protected NetworkAdapterClientImpl MOCK_networkAdapterClient;
76         
77         @Mock
78         protected NetworkAdapterObjectMapper MOCK_networkAdapterObjectMapper;
79         
80         private L3Network l3Network;
81         private RequestContext requestContext;
82         private ServiceInstance serviceInstance;
83         private CloudRegion cloudRegion;
84         private OrchestrationContext orchestrationContext;
85         private Customer customer;
86         Map<String, String> userInput;
87         
88         @Before
89         public void before() {
90                 requestContext = buildRequestContext();
91
92                 customer = buildCustomer();
93
94                 serviceInstance = buildServiceInstance();
95                 
96                 cloudRegion = buildCloudRegion();
97                 
98                 orchestrationContext = buildOrchestrationContext();
99                 orchestrationContext.setIsRollbackEnabled(true);
100                 
101                 userInput = buildUserInput();
102
103                 l3Network = buildL3Network();
104         }
105         
106         @Test
107         public void createNetworTest() throws Exception {
108                 String cloudRegionPo = "cloudRegionPo";
109                 CreateNetworkRequest expectedCreateNetworkRequest = new CreateNetworkRequest();
110                 
111                 expectedCreateNetworkRequest.setCloudSiteId(cloudRegionPo);
112                 expectedCreateNetworkRequest.setTenantId(cloudRegion.getTenantId());
113                 expectedCreateNetworkRequest.setNetworkId(l3Network.getNetworkId());
114                 expectedCreateNetworkRequest.setNetworkName(l3Network.getNetworkName());
115                 expectedCreateNetworkRequest.setBackout(false);
116                 expectedCreateNetworkRequest.setFailIfExists(true);
117                 
118                 MsoRequest msoRequest = new MsoRequest();
119                 msoRequest.setRequestId(requestContext.getMsoRequestId());
120                 msoRequest.setServiceInstanceId(serviceInstance.getServiceInstanceId());
121                 expectedCreateNetworkRequest.setMsoRequest(msoRequest);
122                 expectedCreateNetworkRequest.setSkipAAI(true);
123                 
124                 Subnet openstackSubnet = new Subnet();
125                 HostRoute hostRoute = new HostRoute();
126                 hostRoute.setHostRouteId("hostRouteId");
127                 hostRoute.setNextHop("nextHop");
128                 hostRoute.setRoutePrefix("routePrefix");
129                 openstackSubnet.getHostRoutes().add(hostRoute);
130                 List<Subnet> subnetList = new ArrayList<Subnet>();
131                 subnetList.add(openstackSubnet);
132                 l3Network.getSubnets().add(openstackSubnet);
133                 
134                 l3Network.setOrchestrationStatus(OrchestrationStatus.ASSIGNED);
135
136                 CreateNetworkRequest createNetworkRequest = new CreateNetworkRequest();
137                 createNetworkRequest.setCloudSiteId("cloudSiteId");
138                 
139                 CreateNetworkResponse expectedCreateNetworkResponse = new CreateNetworkResponse();
140                 expectedCreateNetworkResponse.setNetworkStackId("networkStackId");
141                 expectedCreateNetworkResponse.setNetworkCreated(true);
142
143                 
144                 doReturn(expectedCreateNetworkResponse).when(MOCK_networkAdapterClient).createNetwork(isA(CreateNetworkRequest.class));
145                 
146                 doReturn(createNetworkRequest).when(MOCK_networkAdapterObjectMapper).createNetworkRequestMapper(isA(RequestContext.class), isA(CloudRegion.class), isA(OrchestrationContext.class), isA(ServiceInstance.class), isA(L3Network.class), isA(Map.class), isA(String.class), isA(Customer.class));
147
148                 CreateNetworkResponse actualCreateNetwrokResponse = (networkAdapterResources.createNetwork(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer)).get();
149
150                 verify(MOCK_networkAdapterClient, times(1)).createNetwork(createNetworkRequest);
151                 
152                 verify(MOCK_networkAdapterObjectMapper, times(1)).createNetworkRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, customer);
153
154                 assertThat(expectedCreateNetworkResponse, Matchers.sameBeanAs(actualCreateNetwrokResponse));
155         }
156         
157         @Test
158         public void rollbackCreateNetworkTest() throws Exception {
159                 String cloudRegionPo = "cloudRegionPo";
160                 RollbackNetworkResponse expectedRollbackNetworkResponse = new RollbackNetworkResponse();
161                 expectedRollbackNetworkResponse.setMessageId("messageId");
162                 expectedRollbackNetworkResponse.setNetworkRolledBack(true);
163
164                 RollbackNetworkRequest rollbackNetworkRequest = new RollbackNetworkRequest();
165                 rollbackNetworkRequest.setMessageId("messageId");
166                 
167                 RollbackNetworkResponse rollbackNetworkResponse = new RollbackNetworkResponse();
168                 rollbackNetworkResponse.setMessageId("messageId");
169                 rollbackNetworkResponse.setNetworkRolledBack(true);
170                 
171                 CreateNetworkResponse createNetworkResponse = new CreateNetworkResponse();
172                 createNetworkResponse.setMessageId("messageId");
173                 
174                 doReturn(rollbackNetworkResponse).when(MOCK_networkAdapterClient).rollbackNetwork(isA(String.class), isA(RollbackNetworkRequest.class));
175                 
176                 doReturn(rollbackNetworkRequest).when(MOCK_networkAdapterObjectMapper).createNetworkRollbackRequestMapper(isA(RequestContext.class), isA(CloudRegion.class), isA(OrchestrationContext.class), isA(ServiceInstance.class), isA(L3Network.class), isA(Map.class), isA(String.class), isA(CreateNetworkResponse.class));
177                 
178                 RollbackNetworkResponse actualRollbackCreateNetwrokResponse = (networkAdapterResources.rollbackCreateNetwork(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, createNetworkResponse)).get();
179
180                 verify(MOCK_networkAdapterClient, times(1)).rollbackNetwork(l3Network.getNetworkId(), rollbackNetworkRequest);
181                 
182                 verify(MOCK_networkAdapterObjectMapper, times(1)).createNetworkRollbackRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, cloudRegionPo, createNetworkResponse);
183                 
184                 assertThat(expectedRollbackNetworkResponse, Matchers.sameBeanAs(actualRollbackCreateNetwrokResponse));
185         }
186
187         @Test
188         public void updateNetworkTest() throws UnsupportedEncodingException, NetworkAdapterClientException {
189
190                 doReturn(new UpdateNetworkRequest()).when(MOCK_networkAdapterObjectMapper).createNetworkUpdateRequestMapper(isA(RequestContext.class), isA(CloudRegion.class), isA(OrchestrationContext.class), isA(ServiceInstance.class), isA(L3Network.class), isA(Map.class), isA(Customer.class));
191
192                 doReturn(new UpdateNetworkResponse()).when(MOCK_networkAdapterClient).updateNetwork(isA(String.class), isA(UpdateNetworkRequest.class));
193                 
194                 Optional<UpdateNetworkResponse> actualUpdateNetworkResponse = networkAdapterResources.updateNetwork(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, customer);
195                 
196
197                 verify(MOCK_networkAdapterObjectMapper, times(1)).createNetworkUpdateRequestMapper(requestContext, cloudRegion, orchestrationContext, serviceInstance, l3Network, userInput, customer);
198                 verify(MOCK_networkAdapterClient, times(1)).updateNetwork(isA(String.class), isA(UpdateNetworkRequest.class));
199                 assertNotNull(actualUpdateNetworkResponse);
200         }
201         
202         @Test
203         public void deleteNetwork_DeleteAction_Test() throws UnsupportedEncodingException, NetworkAdapterClientException {
204                 
205                 DeleteNetworkRequest deleteNetworkRequest = new DeleteNetworkRequest();
206                 doReturn(deleteNetworkRequest).when(MOCK_networkAdapterObjectMapper).deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
207                 
208                 DeleteNetworkResponse expectedDeleteNetworkResponse = new DeleteNetworkResponse();
209                 
210                 doReturn(expectedDeleteNetworkResponse).when(MOCK_networkAdapterClient).deleteNetwork(l3Network.getNetworkId(), deleteNetworkRequest);
211                 
212                 Optional<DeleteNetworkResponse> actualODeleteNetworkResponse = networkAdapterResources.deleteNetwork(requestContext, cloudRegion, serviceInstance, l3Network);
213                 DeleteNetworkResponse actualDeleteNetworkResponse = actualODeleteNetworkResponse.get();
214                 
215                 verify(MOCK_networkAdapterObjectMapper, times(1)).deleteNetworkRequestMapper(requestContext, cloudRegion, serviceInstance, l3Network);
216                 verify(MOCK_networkAdapterClient, times(1)).deleteNetwork(l3Network.getNetworkId(), deleteNetworkRequest);
217                 assertThat(expectedDeleteNetworkResponse, Matchers.sameBeanAs(actualDeleteNetworkResponse));
218         }
219 }