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.assertEquals;
27 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteNeutronNetwork;
28 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStack_200;
29 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStack_500;
30 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetAllNeutronNetworks_200;
31 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetAllNeutronNetworks_404;
32 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetNeutronNetwork;
33 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetNeutronNetwork_404;
34 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreated_200;
35 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackDeleteOrUpdateComplete_200;
36 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStack_404;
37 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStack_500;
38 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostNeutronNetwork_200;
39 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStack_200;
40 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutNeutronNetwork;
41 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutNeutronNetwork_200;
42 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStack;
43 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
44 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackGet;
45 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackPost;
46 import java.io.IOException;
47 import java.nio.file.Files;
48 import java.nio.file.Paths;
49 import javax.ws.rs.core.MediaType;
50 import javax.ws.rs.core.Response;
51 import org.apache.http.HttpStatus;
52 import org.junit.Test;
53 import org.onap.so.adapters.vnf.BaseRestTestUtils;
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;
60 public class MSONetworkAdapterImplTest extends BaseRestTestUtils {
62 public static final String NETWORK_ID = "43173f6a-d699-414b-888f-ab243dda6dfe";
63 public static final String NETWORK_NAME = "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0";
67 public void createNetworkByModelNameHeatMode() throws IOException {
69 mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
71 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
73 mockOpenStackGetStack_404(wireMockServer, "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
75 mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
77 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
78 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
80 String uri = "/services/NetworkAdapter";
81 headers.set("X-ECOMP-RequestID", "123456789456127");
82 ResponseEntity<String> response = sendXMLRequest(inputStream("/CreateNetwork.xml"), uri, HttpMethod.POST);
83 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
87 public void createNetworkByModelNameAlreadyExistHeatMode() throws IOException {
89 mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
91 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
93 mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
95 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
96 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
98 String uri = "/services/NetworkAdapter";
99 headers.set("X-ECOMP-RequestID", "123456789456127");
100 ResponseEntity<String> response = sendXMLRequest(inputStream("/CreateNetwork.xml"), uri, HttpMethod.POST);
101 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
105 public void createNetworkByModelNameAlreadyExistHeatModeFailIfExistTrue() throws IOException {
107 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
109 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
110 "dvspg-VCE_VPE-mtjnj40avbc");
112 String uri = "/services/NetworkAdapter";
113 headers.set("X-ECOMP-RequestID", "123456789456127");
114 ResponseEntity<String> response =
115 sendXMLRequest(inputStream("/CreateNetwork_Fail_If_Exist_True.xml"), uri, HttpMethod.POST);
116 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
121 public void createNetworkByModelNameHeatModeQueryNetworkException() throws IOException {
123 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
125 mockOpenstackGet(wireMockServer, "/mockPublicUrl/stacks/dvspg-VCE_VPE-mtjnj40avbc",
126 HttpStatus.SC_INTERNAL_SERVER_ERROR);
128 String uri = "/services/NetworkAdapter";
129 headers.set("X-ECOMP-RequestID", "123456789456127");
130 ResponseEntity<String> response = sendXMLRequest(inputStream("/CreateNetwork.xml"), uri, HttpMethod.POST);
131 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
135 public void createNetworkByModelNameHeatModeCreateNetworkException() throws IOException {
137 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
139 mockOpenStackGetStack_404(wireMockServer, "dvspg-VCE_VPE-mtjnj40avbc");
141 mockOpenstackPost(wireMockServer, "/mockPublicUrl/stacks", HttpStatus.SC_INTERNAL_SERVER_ERROR);
143 String uri = "/services/NetworkAdapter";
144 headers.set("X-ECOMP-RequestID", "123456789456127");
145 ResponseEntity<String> response = sendXMLRequest(inputStream("/CreateNetwork.xml"), uri, HttpMethod.POST);
146 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
150 public void createNetworkByModelNameCloudSiteNotPresentError() throws IOException {
152 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
154 mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
156 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
157 "dvspg-VCE_VPE-mtjnj40avbc");
159 String uri = "/services/NetworkAdapter";
160 headers.set("X-ECOMP-RequestID", "123456789456127");
161 ResponseEntity<String> response =
162 sendXMLRequest(inputStream("/CreateNetwork_InvalidCloudSiteId.xml"), uri, HttpMethod.POST);
163 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
167 public void deleteNetworkHeatModeSuccess() throws IOException {
169 mockUpdateRequestDb(wireMockServer, "5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
171 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
173 mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
175 mockOpenStackDeleteStack_200(wireMockServer);
177 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
178 "43173f6a-d699-414b-888f-ab243dda6dfe");
180 String uri = "/services/NetworkAdapter";
181 headers.set("X-ECOMP-RequestID", "123456789456127");
182 ResponseEntity<String> response = sendXMLRequest(inputStream("/DeleteNetwork.xml"), uri, HttpMethod.POST);
183 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
187 public void deleteNetworkDeleteStackException() throws IOException {
189 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
191 mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
193 mockOpenStackDeleteStack_500(wireMockServer);
195 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
196 "43173f6a-d699-414b-888f-ab243dda6dfe");
198 String uri = "/services/NetworkAdapter";
199 headers.set("X-ECOMP-RequestID", "123456789456127");
200 ResponseEntity<String> response = sendXMLRequest(inputStream("/DeleteNetwork.xml"), uri, HttpMethod.POST);
201 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
205 public void deleteNetworkError() throws IOException {
207 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
209 mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
211 mockOpenStackDeleteStack_200(wireMockServer);
213 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
214 "43173f6a-d699-414b-888f-ab243dda6dfe");
216 String uri = "/services/NetworkAdapter";
217 headers.set("X-ECOMP-RequestID", "123456789456127");
218 ResponseEntity<String> response =
219 sendXMLRequest(inputStream("/DeleteNetwork.xml").replace("mtn13", ""), uri, HttpMethod.POST);
220 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
224 public void updateNetworkNeutronUpdateException() throws IOException {
226 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
228 mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
229 mockOpenStackPutNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
231 String uri = "/services/NetworkAdapter";
232 headers.set("X-ECOMP-RequestID", "123456789456127");
233 ResponseEntity<String> response =
234 sendXMLRequest(inputStream("/UpdateNetwork.xml").replace("CONTRAIL30_BASIC", "CONTRAIL31_GNDIRECT"),
235 uri, HttpMethod.POST);
236 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
240 public void updateNetworkHeatUpdateException() throws IOException {
242 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
244 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json", NETWORK_NAME);
246 mockOpenStackPutStack(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
248 String uri = "/services/NetworkAdapter";
249 headers.set("X-ECOMP-RequestID", "123456789456127");
250 ResponseEntity<String> response = sendXMLRequest(inputStream("/UpdateNetwork.xml"), uri, HttpMethod.POST);
251 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
255 public void updateNetworkHeatQueryException() throws IOException {
257 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
259 mockOpenStackGetStack_500(wireMockServer, NETWORK_NAME);
261 String uri = "/services/NetworkAdapter";
262 headers.set("X-ECOMP-RequestID", "123456789456127");
263 ResponseEntity<String> response = sendXMLRequest(inputStream("/UpdateNetwork.xml"), uri, HttpMethod.POST);
264 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
268 public void updateNetworkHeatStackNotFound() throws IOException {
270 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
272 mockOpenStackGetStack_404(wireMockServer, NETWORK_NAME);
274 String uri = "/services/NetworkAdapter";
275 headers.set("X-ECOMP-RequestID", "123456789456127");
276 ResponseEntity<String> response = sendXMLRequest(inputStream("/UpdateNetwork.xml"), uri, HttpMethod.POST);
277 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
281 public void updateNetworkNeutronQueryException() throws IOException {
283 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
285 mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
287 String uri = "/services/NetworkAdapter";
288 headers.set("X-ECOMP-RequestID", "123456789456127");
289 ResponseEntity<String> response =
290 sendXMLRequest(inputStream("/UpdateNetwork.xml").replace("CONTRAIL30_BASIC", "CONTRAIL31_GNDIRECT"),
291 uri, HttpMethod.POST);
292 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
296 public void updateNetworkNeutronStackNotFound() throws IOException {
298 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
300 mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_NOT_FOUND);
302 String uri = "/services/NetworkAdapter";
303 headers.set("X-ECOMP-RequestID", "123456789456127");
304 ResponseEntity<String> response =
305 sendXMLRequest(inputStream("/UpdateNetwork.xml").replace("CONTRAIL30_BASIC", "CONTRAIL31_GNDIRECT"),
306 uri, HttpMethod.POST);
307 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
311 public void queryNetworkHeatModesuccess() throws IOException {
313 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
315 mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json", NETWORK_ID);
317 String uri = "/services/NetworkAdapter";
318 headers.set("X-ECOMP-RequestID", "123456789456127");
319 ResponseEntity<String> response =
320 sendXMLRequest(inputStream("/QueryNetwork.xml").replace("CONTRAIL30_BASIC", "CONTRAIL31_GNDIRECT"), uri,
322 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
326 public void queryNetworkHeatModeQueryException() throws IOException {
328 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
330 mockOpenStackGetStack_500(wireMockServer, NETWORK_ID);
332 String uri = "/services/NetworkAdapter";
333 headers.set("X-ECOMP-RequestID", "123456789456127");
334 ResponseEntity<String> response =
335 sendXMLRequest(inputStream("/QueryNetwork.xml").replace("CONTRAIL30_BASIC", "CONTRAIL31_GNDIRECT"), uri,
337 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
341 public void queryNetworkNeutronModeSuccess() throws IOException {
343 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
345 mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
347 String uri = "/services/NetworkAdapter";
348 headers.set("X-ECOMP-RequestID", "123456789456127");
349 ResponseEntity<String> response =
350 sendXMLRequest(inputStream("/QueryNetwork.xml").replace("CONTRAIL30_BASIC", "CONTRAIL31_GNDIRECT"), uri,
352 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
355 public ResponseEntity<String> sendXMLRequest(String requestJson, String uriPath, HttpMethod reqMethod) {
356 headers.set("Accept", MediaType.APPLICATION_XML);
357 headers.set("Content-Type", MediaType.APPLICATION_XML);
359 UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath));
361 HttpEntity<String> request = new HttpEntity<String>(requestJson, headers);
362 ResponseEntity<String> response =
363 restTemplate.exchange(builder.toUriString(), reqMethod, request, String.class);
368 public String inputStream(String JsonInput) throws IOException {
369 JsonInput = "src/test/resources/" + JsonInput;
370 String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
374 public static void mockUpdateRequestDb(WireMockServer wireMockServer, String requestId) throws IOException {
375 wireMockServer.stubFor(patch(urlPathEqualTo("/infraActiveRequests/" + requestId))
376 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_OK)));