2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.so.adapters.network;
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;
61 public class MSONetworkAdapterImplTest extends BaseRestTestUtils {
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";
67 MsoNetworkAdapterImpl impl;
70 public final ExpectedException exception = ExpectedException.none();
73 public void createNetworkByModelNameHeatMode() throws IOException, NetworkException {
75 mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
77 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
79 mockOpenStackGetStack_404(wireMockServer, "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
81 mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
83 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
84 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
86 MsoRequest request = new MsoRequest();
87 request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
88 request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
90 Holder<String> stackId = new Holder<String>();
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());
96 assertNotNull(stackId.value);
100 public void createNetworkByModelNameAlreadyExistHeatModeFailIfExistTrue() throws IOException, NetworkException {
101 exception.expect(NetworkException.class);
103 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
105 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
106 "dvspg-VCE_VPE-mtjnj40avbc");
108 MsoRequest request = new MsoRequest();
109 request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
110 request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
112 Holder<String> stackId = new Holder<String>();
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());
121 public void createNetworkByModelNameHeatModeQueryNetworkException() throws IOException, NetworkException {
122 exception.expect(NetworkException.class);
124 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
126 mockOpenstackGet(wireMockServer, "/mockPublicUrl/stacks/dvspg-VCE_VPE-mtjnj40avbc",
127 HttpStatus.SC_INTERNAL_SERVER_ERROR);
129 MsoRequest request = new MsoRequest();
130 request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
131 request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
133 Holder<String> stackId = new Holder<String>();
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());
141 public void createNetworkByModelNameHeatModeCreateNetworkException() throws IOException, NetworkException {
142 exception.expect(NetworkException.class);
144 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
146 mockOpenStackGetStack_404(wireMockServer, "dvspg-VCE_VPE-mtjnj40avbc");
148 mockOpenstackPost(wireMockServer, "/mockPublicUrl/stacks", HttpStatus.SC_INTERNAL_SERVER_ERROR);
150 MsoRequest request = new MsoRequest();
151 request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
152 request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
154 Holder<String> stackId = new Holder<String>();
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());
162 public void createNetworkByModelNameCloudSiteNotPresentError() throws IOException, NetworkException {
163 exception.expect(NetworkException.class);
165 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
167 mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
169 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
170 "dvspg-VCE_VPE-mtjnj40avbc");
172 MsoRequest request = new MsoRequest();
173 request.setRequestId("9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
174 request.setServiceInstanceId("MIS/1806/25009/SW_INTERNET");
176 Holder<String> stackId = new Holder<String>();
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());
185 public void deleteNetworkHeatModeSuccess() throws IOException, NetworkException {
187 mockUpdateRequestDb(wireMockServer, "5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
189 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
191 mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
193 mockOpenStackDeleteStack_200(wireMockServer);
195 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
196 "43173f6a-d699-414b-888f-ab243dda6dfe");
198 MsoRequest request = new MsoRequest();
199 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
200 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
202 impl.deleteNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
203 "43173f6a-d699-414b-888f-ab243dda6dfe", request);
207 public void deleteNetworkDeleteStackException() throws IOException, NetworkException {
208 exception.expect(OpenStackResponseException.class);
210 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
212 mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
214 mockOpenStackDeleteStack_500(wireMockServer);
216 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
217 "43173f6a-d699-414b-888f-ab243dda6dfe");
219 MsoRequest request = new MsoRequest();
220 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
221 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
223 impl.deleteNetwork("mtn13", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
224 "43173f6a-d699-414b-888f-ab243dda6dfe", request);
228 public void deleteNetworkError() throws IOException, NetworkException {
229 exception.expect(NetworkException.class);
231 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
233 mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
235 mockOpenStackDeleteStack_200(wireMockServer);
237 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
238 "43173f6a-d699-414b-888f-ab243dda6dfe");
240 MsoRequest request = new MsoRequest();
241 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
242 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
244 impl.deleteNetwork("", "2871503957144f72b3cf481b379828ec", "CONTRAIL30_BASIC", null,
245 "43173f6a-d699-414b-888f-ab243dda6dfe", request);
250 public void updateNetworkNeutronUpdateException() throws IOException, NetworkException {
251 exception.expect(NetworkException.class);
253 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
255 mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
256 mockOpenStackPutNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
258 MsoRequest request = new MsoRequest();
259 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
260 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
262 Holder<String> stackId = new Holder<String>();
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);
270 public void updateNetworkHeatUpdateException() throws IOException, NetworkException {
271 exception.expect(NetworkException.class);
273 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
275 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json", NETWORK_NAME);
277 mockOpenStackPutStack(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
279 MsoRequest request = new MsoRequest();
280 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
281 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
283 Holder<String> stackId = new Holder<String>();
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);
292 public void updateNetworkHeatQueryException() throws IOException, NetworkException {
293 exception.expect(NetworkException.class);
295 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
297 mockOpenStackGetStack_500(wireMockServer, NETWORK_NAME);
299 MsoRequest request = new MsoRequest();
300 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
301 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
303 Holder<String> stackId = new Holder<String>();
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);
311 public void updateNetworkHeatStackNotFound() throws IOException, NetworkException {
312 exception.expect(NetworkException.class);
314 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
316 mockOpenStackGetStack_404(wireMockServer, NETWORK_NAME);
318 MsoRequest request = new MsoRequest();
319 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
320 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
322 Holder<String> stackId = new Holder<String>();
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);
330 public void updateNetworkNeutronQueryException() throws IOException, NetworkException {
331 exception.expect(NetworkException.class);
333 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
335 mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
337 MsoRequest request = new MsoRequest();
338 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
339 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
341 Holder<String> stackId = new Holder<String>();
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);
349 public void updateNetworkNeutronStackNotFound() throws IOException, NetworkException {
350 exception.expect(NetworkException.class);
352 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
354 mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_NOT_FOUND);
356 MsoRequest request = new MsoRequest();
357 request.setRequestId("5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
358 request.setServiceInstanceId("ab652f96-1fc3-4fdd-8e1b-4af629bc22c0");
360 Holder<String> stackId = new Holder<String>();
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);
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);
372 UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath));
374 HttpEntity<String> request = new HttpEntity<String>(requestJson, headers);
375 ResponseEntity<String> response =
376 restTemplate.exchange(builder.toUriString(), reqMethod, request, String.class);
381 public String inputStream(String JsonInput) throws IOException {
382 JsonInput = "src/test/resources/" + JsonInput;
383 String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
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)));