2 * ============LICENSE_START=======================================================
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
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.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeletePublicUrlStackByNameAndID_204;
27 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetPublicUrlStackByNameAndID_200;
28 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetPublicUrlStackByNameAndID_204;
29 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackAppC_404;
30 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreatedAppC_200;
31 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackCreatedVUSP_200;
32 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVUSP_404;
33 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
34 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostPublicUrlWithBodyFile_200;
35 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPublicUrlStackByID_200;
36 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPublicUrlStackByName_200;
37 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutPublicUrlStackByNameAndID_200;
38 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
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.ws.rs.core.Response;
45 import org.json.JSONException;
46 import org.junit.Test;
47 import org.onap.so.adapters.nwrest.CreateNetworkRequest;
48 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
49 import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
50 import org.onap.so.adapters.nwrest.DeleteNetworkResponse;
51 import org.onap.so.adapters.nwrest.QueryNetworkError;
52 import org.onap.so.adapters.nwrest.QueryNetworkResponse;
53 import org.onap.so.adapters.nwrest.RollbackNetworkRequest;
54 import org.onap.so.adapters.nwrest.RollbackNetworkResponse;
55 import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
56 import org.onap.so.adapters.nwrest.UpdateNetworkResponse;
57 import org.onap.so.adapters.vnf.BaseRestTestUtils;
58 import org.onap.so.client.policy.JettisonStyleMapperProvider;
59 import org.onap.so.entity.MsoRequest;
60 import org.springframework.beans.factory.annotation.Autowired;
61 import org.springframework.http.HttpEntity;
62 import org.springframework.http.HttpMethod;
63 import org.springframework.http.ResponseEntity;
64 import com.fasterxml.jackson.core.JsonParseException;
65 import com.fasterxml.jackson.databind.JsonMappingException;
67 public class NetworkAdapterRestTest extends BaseRestTestUtils {
70 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
71 private static final String CLOUDSITE_ID = "mtn13";
72 private static final String TENANT_ID = "ba38bc24a2ef4fb2ad2810c894f1938f";
73 private static final String NETWORK_ID = "da886914-efb2-4917-b335-c8381528d90b";
74 private static final String NETWORK_TYPE = "CONTRAIL30_BASIC";
75 private static final String MODEL_CUSTOMIZATION_UUID = "3bdbb104-476c-483e-9f8b-c095b3d308ac";
76 private static final String MSO_SERVICE_INSTANCE_ID = "05869d5f-47df-4b45-bbfc-4f03ce0a50bf";
77 private static final String MSO_REQUEST_ID = "requestId";
78 private static final String NETWORK_NAME = "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0";
81 public void testCreateNetwork() throws JSONException, JsonParseException, JsonMappingException, IOException {
83 CreateNetworkRequest request = new CreateNetworkRequest();
84 request.setBackout(true);
85 request.setSkipAAI(true);
86 request.setFailIfExists(false);
87 MsoRequest msoReq = new MsoRequest();
88 String networkTechnology = "CONTRAIL";
90 msoReq.setRequestId(MSO_REQUEST_ID);
91 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
92 request.setMsoRequest(msoReq);
93 request.setCloudSiteId(CLOUDSITE_ID);
94 request.setTenantId(TENANT_ID);
95 request.setNetworkId(NETWORK_ID);
96 request.setNetworkName(NETWORK_NAME);
97 request.setNetworkType(NETWORK_TYPE);
98 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
99 request.setNetworkTechnology(networkTechnology);
101 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
103 mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
105 mockOpenStackGetStackCreatedVUSP_200(wireMockServer);
107 mockOpenStackGetStackVUSP_404(wireMockServer);
109 headers.add("Accept", MediaType.APPLICATION_JSON);
110 HttpEntity<CreateNetworkRequest> entity = new HttpEntity<CreateNetworkRequest>(request, headers);
111 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
112 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
114 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
115 new File("src/test/resources/__files/CreateNetworkResponse.json"), CreateNetworkResponse.class);
117 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
118 assertThat(response.getBody(), sameBeanAs(expectedResponse));
122 public void testCreateNetwork_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
126 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
128 mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
130 mockOpenStackGetStackCreatedAppC_200(wireMockServer);
132 mockOpenStackGetStackAppC_404(wireMockServer);
134 headers.add("Content-Type", MediaType.APPLICATION_JSON);
135 headers.add("Accept", MediaType.APPLICATION_JSON);
137 String request = readJsonFileAsString("src/test/resources/CreateNetwork.json");
138 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
140 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
141 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
143 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
144 new File("src/test/resources/__files/CreateNetworkResponse2.json"), CreateNetworkResponse.class);
146 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
147 assertThat(response.getBody(), sameBeanAs(expectedResponse));
153 public void testDeleteNetwork() throws IOException {
155 DeleteNetworkRequest request = new DeleteNetworkRequest();
157 MsoRequest msoReq = new MsoRequest();
159 msoReq.setRequestId(MSO_REQUEST_ID);
160 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
161 request.setMsoRequest(msoReq);
162 request.setCloudSiteId(CLOUDSITE_ID);
163 request.setTenantId(TENANT_ID);
164 request.setNetworkId(NETWORK_ID);
165 request.setNetworkType(NETWORK_TYPE);
166 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
167 request.setNetworkStackId(NETWORK_ID);
169 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
171 mockOpenStackPublicUrlStackByID_200(wireMockServer, wireMockPort);
173 mockOpenStackGetPublicUrlStackByNameAndID_204(wireMockServer, wireMockPort);
175 mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
177 headers.add("Accept", MediaType.APPLICATION_JSON);
179 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(request, headers);
181 ResponseEntity<DeleteNetworkResponse> response = restTemplate.exchange(
182 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.DELETE,
183 entity, DeleteNetworkResponse.class);
185 DeleteNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
186 new File("src/test/resources/__files/DeleteNetworkResponse.json"), DeleteNetworkResponse.class);
188 assertThat(response.getBody(), sameBeanAs(expectedResponse));
189 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
194 public void testRollbackNetwork() throws IOException {
196 RollbackNetworkRequest request = new RollbackNetworkRequest();
197 MsoRequest msoReq = new MsoRequest();
198 msoReq.setRequestId(MSO_REQUEST_ID);
199 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
201 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
203 mockOpenStackPublicUrlStackByID_200(wireMockServer, wireMockPort);
205 mockOpenStackGetPublicUrlStackByNameAndID_204(wireMockServer, wireMockPort);
207 mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
209 headers.add("Accept", MediaType.APPLICATION_JSON);
211 HttpEntity<RollbackNetworkRequest> entity = new HttpEntity<>(request, headers);
213 ResponseEntity<RollbackNetworkResponse> response = restTemplate.exchange(
214 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b/rollback"),
215 HttpMethod.DELETE, entity, RollbackNetworkResponse.class);
217 RollbackNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
218 new File("src/test/resources/__files/RollbackNetworkResponse.json"), RollbackNetworkResponse.class);
220 assertThat(response.getBody(), sameBeanAs(expectedResponse));
221 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
226 public void testQueryNetwork_Exception() throws IOException {
227 MsoRequest msoReq = new MsoRequest();
228 msoReq.setRequestId(MSO_REQUEST_ID);
229 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
230 headers.add("Accept", MediaType.APPLICATION_JSON);
232 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
234 ResponseEntity<QueryNetworkError> response = restTemplate.exchange(
235 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.GET,
236 entity, QueryNetworkError.class);
238 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
243 public void testQueryNetwork() throws IOException {
245 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
246 mockOpenStackGetStackVfModule_200(wireMockServer);
248 headers.add("Accept", MediaType.APPLICATION_JSON);
249 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
251 ResponseEntity<QueryNetworkResponse> response = restTemplate.exchange(
252 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b" + "?cloudSiteId="
253 + CLOUDSITE_ID + "&tenantId=" + TENANT_ID + "&aaiNetworkId=aaiNetworkId"),
254 HttpMethod.GET, entity, QueryNetworkResponse.class);
256 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatusCode().value());
261 public void testUpdateNetwork() throws IOException {
263 UpdateNetworkRequest request = new UpdateNetworkRequest();
265 MsoRequest msoReq = new MsoRequest();
267 msoReq.setRequestId(MSO_REQUEST_ID);
268 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
269 request.setMsoRequest(msoReq);
270 request.setCloudSiteId(CLOUDSITE_ID);
271 request.setTenantId(TENANT_ID);
272 request.setNetworkId(NETWORK_ID);
273 request.setNetworkName(NETWORK_NAME);
274 request.setNetworkType(NETWORK_TYPE);
275 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
276 request.setNetworkStackId(NETWORK_ID);
278 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
280 mockOpenStackPublicUrlStackByName_200(wireMockServer, wireMockPort);
282 mockOpenStackPublicUrlStackByID_200(wireMockServer, wireMockPort);
284 mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockServer, wireMockPort);
286 mockOpenStackPutPublicUrlStackByNameAndID_200(wireMockServer);
288 headers.add("Accept", MediaType.APPLICATION_JSON);
290 HttpEntity<UpdateNetworkRequest> entity = new HttpEntity<UpdateNetworkRequest>(request, headers);
292 ResponseEntity<UpdateNetworkResponse> response = restTemplate.exchange(
293 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.PUT,
294 entity, UpdateNetworkResponse.class);
296 UpdateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
297 new File("src/test/resources/__files/UpdateNetworkResponse.json"), UpdateNetworkResponse.class);
299 assertThat(response.getBody(), sameBeanAs(expectedResponse));
300 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
304 public void testCreateNetworkCNRC_JSON()
305 throws JSONException, JsonParseException, JsonMappingException, IOException {
307 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
309 mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
311 mockOpenStackGetStackCreatedAppC_200(wireMockServer);
313 mockOpenStackGetStackAppC_404(wireMockServer);
315 headers.add("Content-Type", MediaType.APPLICATION_JSON);
316 headers.add("Accept", MediaType.APPLICATION_JSON);
318 String request = readJsonFileAsString("src/test/resources/CreateNetwork3.json");
319 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
321 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
322 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
324 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
325 new File("src/test/resources/__files/CreateNetworkResponse3.json"), CreateNetworkResponse.class);
327 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
328 assertThat(response.getBody(), sameBeanAs(expectedResponse));
332 public void testCreateNetworkNC_Shared_JSON()
333 throws JSONException, JsonParseException, JsonMappingException, IOException {
335 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
337 mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
339 mockOpenStackGetStackCreatedAppC_200(wireMockServer);
341 mockOpenStackGetStackAppC_404(wireMockServer);
343 headers.add("Content-Type", MediaType.APPLICATION_JSON);
344 headers.add("Accept", MediaType.APPLICATION_JSON);
346 String request = readJsonFileAsString("src/test/resources/CreateNetwork4.json");
347 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
349 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
350 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
352 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
353 new File("src/test/resources/__files/CreateNetworkResponse4.json"), CreateNetworkResponse.class);
355 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
356 assertThat(response.getBody(), sameBeanAs(expectedResponse));
360 protected String readJsonFileAsString(String fileLocation)
361 throws JsonParseException, JsonMappingException, IOException {
362 return new String(Files.readAllBytes(Paths.get(fileLocation)));