a7abdcab7fdb836e389d866a4966422df6a2a593
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 - 2018 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.adapters.network;
22
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
24 import static com.github.tomakehurst.wiremock.client.WireMock.patch;
25 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
26 import static org.junit.Assert.assertNotNull;
27 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStack_200;
28 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStack_500;
29 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetNeutronNetwork;
30 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreated_200;
31 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackDeleteOrUpdateComplete_200;
32 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStack_404;
33 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStack_500;
34 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStack_200;
35 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutNeutronNetwork;
36 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStack;
37 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
38 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackGet;
39 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackPost;
40 import java.io.IOException;
41 import java.nio.file.Files;
42 import java.nio.file.Paths;
43 import javax.ws.rs.core.MediaType;
44 import javax.xml.ws.Holder;
45 import org.apache.commons.lang3.mutable.MutableBoolean;
46 import org.apache.http.HttpStatus;
47 import org.junit.Rule;
48 import org.junit.Test;
49 import org.junit.rules.ExpectedException;
50 import org.onap.so.adapters.network.exceptions.NetworkException;
51 import org.onap.so.adapters.vnf.BaseRestTestUtils;
52 import org.onap.so.entity.MsoRequest;
53 import org.springframework.beans.factory.annotation.Autowired;
54 import org.springframework.http.HttpEntity;
55 import org.springframework.http.HttpMethod;
56 import org.springframework.http.ResponseEntity;
57 import org.springframework.web.util.UriComponentsBuilder;
58 import com.github.tomakehurst.wiremock.WireMockServer;
59 import com.woorea.openstack.base.client.OpenStackResponseException;
60
61 public class MSONetworkAdapterImplTest extends BaseRestTestUtils {
62
63     public static final String NETWORK_ID = "43173f6a-d699-414b-888f-ab243dda6dfe";
64     public static final String NETWORK_NAME = "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0";
65
66     @Autowired
67     MsoNetworkAdapterImpl impl;
68
69     @Rule
70     public final ExpectedException exception = ExpectedException.none();
71
72     @Test
73     public void createNetworkByModelNameHeatMode() throws IOException, NetworkException {
74
75         mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
76
77         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
78
79         mockOpenStackGetStack_404(wireMockServer, "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
80
81         mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
82
83         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
84                 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
85
86         MsoRequest request = new MsoRequest();
87         request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
88         request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
89
90         Holder<String> stackId = new Holder<String>();
91
92         impl.createNetwork("mtn13", "bef254252c5d44e6bcec65c180180ab5", "CONTRAIL30_GNDIRECT", null,
93                 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001", "dvs-mtjnj-01", null, null, null, null, false,
94                 false, null, null, null, request, stackId, new MutableBoolean());
95
96         assertNotNull(stackId.value);
97     }
98
99     @Test
100     public void createNetworkByModelNameAlreadyExistHeatModeFailIfExistTrue() throws IOException, NetworkException {
101         exception.expect(NetworkException.class);
102
103         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
104
105         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
106                 "dvspg-VCE_VPE-mtjnj40avbc");
107
108         MsoRequest request = new MsoRequest();
109         request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
110         request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
111
112         Holder<String> stackId = new Holder<String>();
113
114         impl.createNetwork("mtn13", "bef254252c5d44e6bcec65c180180ab5", "CONTRAIL30_GNDIRECT", null,
115                 "dvspg-VCE_VPE-mtjnj40avbc", "dvs-mtjnj-01", null, null, null, null, true, false, null, null, null,
116                 request, stackId, new MutableBoolean());
117     }
118
119
120     @Test
121     public void createNetworkByModelNameHeatModeQueryNetworkException() throws IOException, NetworkException {
122         exception.expect(NetworkException.class);
123
124         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
125
126         mockOpenstackGet(wireMockServer, "/mockPublicUrl/stacks/dvspg-VCE_VPE-mtjnj40avbc",
127                 HttpStatus.SC_INTERNAL_SERVER_ERROR);
128
129         MsoRequest request = new MsoRequest();
130         request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
131         request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
132
133         Holder<String> stackId = new Holder<String>();
134
135         impl.createNetwork("mtn13", "bef254252c5d44e6bcec65c180180ab5", "CONTRAIL30_GNDIRECT", null,
136                 "dvspg-VCE_VPE-mtjnj40avbc", "dvs-mtjnj-01", null, null, null, null, true, false, null, null, null,
137                 request, stackId, new MutableBoolean());
138     }
139
140     @Test
141     public void createNetworkByModelNameHeatModeCreateNetworkException() throws IOException, NetworkException {
142         exception.expect(NetworkException.class);
143
144         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
145
146         mockOpenStackGetStack_404(wireMockServer, "dvspg-VCE_VPE-mtjnj40avbc");
147
148         mockOpenstackPost(wireMockServer, "/mockPublicUrl/stacks", HttpStatus.SC_INTERNAL_SERVER_ERROR);
149
150         MsoRequest request = new MsoRequest();
151         request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
152         request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
153
154         Holder<String> stackId = new Holder<String>();
155
156         impl.createNetwork("mtn13", "bef254252c5d44e6bcec65c180180ab5", "CONTRAIL30_GNDIRECT", null,
157                 "dvspg-VCE_VPE-mtjnj40avbc", "dvs-mtjnj-01", null, null, null, null, false, false, null, null, null,
158                 request, stackId, new MutableBoolean());
159     }
160
161     @Test
162     public void createNetworkByModelNameCloudSiteNotPresentError() throws IOException, NetworkException {
163         exception.expect(NetworkException.class);
164
165         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
166
167         mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
168
169         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
170                 "dvspg-VCE_VPE-mtjnj40avbc");
171
172         MsoRequest request = new MsoRequest();
173         request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
174         request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
175
176         Holder<String> stackId = new Holder<String>();
177
178         impl.createNetwork("mtn14", "bef254252c5d44e6bcec65c180180ab5", "CONTRAIL30_GNDIRECT", null,
179                 "dvspg-VCE_VPE-mtjnj40avbc", "dvs-mtjnj-01", null, null, null, null, false, false, null, null, null,
180                 request, stackId, new MutableBoolean());
181
182     }
183
184     @Test
185     public void deleteNetworkHeatModeSuccess() throws IOException, NetworkException {
186
187         mockUpdateRequestDb(wireMockServer, "5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
188
189         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
190
191         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
192
193         mockOpenStackDeleteStack_200(wireMockServer);
194
195         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
196                 "43173f6a-d699-414b-888f-ab243dda6dfe");
197
198         MsoRequest request = new MsoRequest();
199         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
200         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
201
202         impl.deleteNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
203                 "43173f6a-d699-414b-888f-ab243dda6dfe", request);
204     }
205
206     @Test
207     public void deleteNetworkDeleteStackException() throws IOException, NetworkException {
208         exception.expect(OpenStackResponseException.class);
209
210         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
211
212         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
213
214         mockOpenStackDeleteStack_500(wireMockServer);
215
216         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
217                 "43173f6a-d699-414b-888f-ab243dda6dfe");
218
219         MsoRequest request = new MsoRequest();
220         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
221         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
222
223         impl.deleteNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
224                 "43173f6a-d699-414b-888f-ab243dda6dfe", request);
225     }
226
227     @Test
228     public void deleteNetworkError() throws IOException, NetworkException {
229         exception.expect(NetworkException.class);
230
231         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
232
233         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
234
235         mockOpenStackDeleteStack_200(wireMockServer);
236
237         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
238                 "43173f6a-d699-414b-888f-ab243dda6dfe");
239
240         MsoRequest request = new MsoRequest();
241         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
242         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
243
244         impl.deleteNetwork("", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
245                 "43173f6a-d699-414b-888f-ab243dda6dfe", request);
246
247     }
248
249     @Test
250     public void updateNetworkNeutronUpdateException() throws IOException, NetworkException {
251         exception.expect(NetworkException.class);
252
253         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
254
255         mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
256         mockOpenStackPutNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
257
258         MsoRequest request = new MsoRequest();
259         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
260         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
261
262         Holder<String> stackId = new Holder<String>();
263
264         impl.updateNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL31_GNDIRECT", null,
265                 "43173f6a-d699-414b-888f-ab243dda6dfe", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
266                 "TestPhysicalNetwork", null, null, null, null, null, null, null, request, stackId);
267     }
268
269     @Test
270     public void updateNetworkHeatUpdateException() throws IOException, NetworkException {
271         exception.expect(NetworkException.class);
272
273         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
274
275         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json", NETWORK_NAME);
276
277         mockOpenStackPutStack(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
278
279         MsoRequest request = new MsoRequest();
280         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
281         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
282
283         Holder<String> stackId = new Holder<String>();
284
285         impl.updateNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
286                 "43173f6a-d699-414b-888f-ab243dda6dfe", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
287                 "TestPhysicalNetwork", null, null, null, null, null, null, null, request, stackId);
288
289     }
290
291     @Test
292     public void updateNetworkHeatQueryException() throws IOException, NetworkException {
293         exception.expect(NetworkException.class);
294
295         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
296
297         mockOpenStackGetStack_500(wireMockServer, NETWORK_NAME);
298
299         MsoRequest request = new MsoRequest();
300         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
301         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
302
303         Holder<String> stackId = new Holder<String>();
304
305         impl.updateNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
306                 "43173f6a-d699-414b-888f-ab243dda6dfe", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
307                 "TestPhysicalNetwork", null, null, null, null, null, null, null, request, stackId);
308     }
309
310     @Test
311     public void updateNetworkHeatStackNotFound() throws IOException, NetworkException {
312         exception.expect(NetworkException.class);
313
314         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
315
316         mockOpenStackGetStack_404(wireMockServer, NETWORK_NAME);
317
318         MsoRequest request = new MsoRequest();
319         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
320         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
321
322         Holder<String> stackId = new Holder<String>();
323
324         impl.updateNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
325                 "43173f6a-d699-414b-888f-ab243dda6dfe", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
326                 "TestPhysicalNetwork", null, null, null, null, null, null, null, request, stackId);
327     }
328
329     @Test
330     public void updateNetworkNeutronQueryException() throws IOException, NetworkException {
331         exception.expect(NetworkException.class);
332
333         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
334
335         mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
336
337         MsoRequest request = new MsoRequest();
338         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
339         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
340
341         Holder<String> stackId = new Holder<String>();
342
343         impl.updateNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL31_GNDIRECT", null,
344                 "43173f6a-d699-414b-888f-ab243dda6dfe", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
345                 "TestPhysicalNetwork", null, null, null, null, null, null, null, request, stackId);
346     }
347
348     @Test
349     public void updateNetworkNeutronStackNotFound() throws IOException, NetworkException {
350         exception.expect(NetworkException.class);
351
352         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
353
354         mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_NOT_FOUND);
355
356         MsoRequest request = new MsoRequest();
357         request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
358         request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
359
360         Holder<String> stackId = new Holder<String>();
361
362         impl.updateNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL31_GNDIRECT", null,
363                 "43173f6a-d699-414b-888f-ab243dda6dfe", "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0",
364                 "TestPhysicalNetwork", null, null, null, null, null, null, null, request, stackId);
365     }
366
367
368     public ResponseEntity<String> sendXMLRequest(String requestJson, String uriPath, HttpMethod reqMethod) {
369         headers.set("Accept", MediaType.APPLICATION_XML);
370         headers.set("Content-Type", MediaType.APPLICATION_XML);
371
372         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath));
373
374         HttpEntity<String> request = new HttpEntity<String>(requestJson, headers);
375         ResponseEntity<String> response =
376                 restTemplate.exchange(builder.toUriString(), reqMethod, request, String.class);
377
378         return response;
379     }
380
381     public String inputStream(String JsonInput) throws IOException {
382         JsonInput = "src/test/resources/" + JsonInput;
383         String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
384         return input;
385     }
386
387     public static void mockUpdateRequestDb(WireMockServer wireMockServer, String requestId) throws IOException {
388         wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/" + requestId))
389                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));
390     }
391 }