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;
41 import java.io.IOException;
42 import java.nio.file.Files;
43 import java.nio.file.Paths;
45 import javax.ws.rs.core.MediaType;
46 import javax.ws.rs.core.Response;
48 import org.json.JSONException;
49 import org.junit.Test;
50 import org.onap.so.adapters.nwrest.CreateNetworkRequest;
51 import org.onap.so.adapters.nwrest.CreateNetworkResponse;
52 import org.onap.so.adapters.nwrest.DeleteNetworkRequest;
53 import org.onap.so.adapters.nwrest.DeleteNetworkResponse;
54 import org.onap.so.adapters.nwrest.NetworkTechnology;
55 import org.onap.so.adapters.nwrest.QueryNetworkError;
56 import org.onap.so.adapters.nwrest.QueryNetworkResponse;
57 import org.onap.so.adapters.nwrest.UpdateNetworkRequest;
58 import org.onap.so.adapters.nwrest.UpdateNetworkResponse;
59 import org.onap.so.adapters.vnf.BaseRestTestUtils;
60 import org.onap.so.client.policy.JettisonStyleMapperProvider;
61 import org.onap.so.entity.MsoRequest;
62 import org.springframework.beans.factory.annotation.Autowired;
63 import org.springframework.http.HttpEntity;
64 import org.springframework.http.HttpMethod;
65 import org.springframework.http.ResponseEntity;
67 import com.fasterxml.jackson.core.JsonParseException;
68 import com.fasterxml.jackson.databind.JsonMappingException;
70 public class NetworkAdapterRestTest extends BaseRestTestUtils {
73 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
74 private static final String CLOUDSITE_ID = "mtn13";
75 private static final String TENANT_ID = "ba38bc24a2ef4fb2ad2810c894f1938f";
76 private static final String NETWORK_ID = "da886914-efb2-4917-b335-c8381528d90b";
77 private static final String NETWORK_TYPE = "CONTRAIL30_BASIC";
78 private static final String MODEL_CUSTOMIZATION_UUID = "3bdbb104-476c-483e-9f8b-c095b3d308ac";
79 private static final String MSO_SERVICE_INSTANCE_ID = "05869d5f-47df-4b45-bbfc-4f03ce0a50bf";
80 private static final String MSO_REQUEST_ID = "requestId";
81 private static final String NETWORK_NAME = "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0";
84 public void testCreateNetwork() throws JSONException, JsonParseException, JsonMappingException, IOException {
86 CreateNetworkRequest request = new CreateNetworkRequest();
87 request.setBackout(true);
88 request.setSkipAAI(true);
89 request.setFailIfExists(false);
90 MsoRequest msoReq = new MsoRequest();
91 String networkTechnology = "CONTRAIL";
93 msoReq.setRequestId(MSO_REQUEST_ID);
94 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
95 request.setMsoRequest(msoReq);
96 request.setCloudSiteId(CLOUDSITE_ID);
97 request.setTenantId(TENANT_ID);
98 request.setNetworkId(NETWORK_ID);
99 request.setNetworkName(NETWORK_NAME);
100 request.setNetworkType(NETWORK_TYPE);
101 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
102 request.setNetworkTechnology(networkTechnology);
104 mockOpenStackResponseAccess(wireMockPort);
106 mockOpenStackPostPublicUrlWithBodyFile_200();
108 mockOpenStackGetStackCreatedVUSP_200();
110 mockOpenStackGetStackVUSP_404();
112 headers.add("Accept", MediaType.APPLICATION_JSON);
113 HttpEntity<CreateNetworkRequest> entity = new HttpEntity<CreateNetworkRequest>(request, headers);
114 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
115 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
117 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
118 new File("src/test/resources/__files/CreateNetworkResponse.json"), CreateNetworkResponse.class);
120 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
121 assertThat(response.getBody(), sameBeanAs(expectedResponse));
125 public void testCreateNetwork_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
129 mockOpenStackResponseAccess(wireMockPort);
131 mockOpenStackPostPublicUrlWithBodyFile_200();
133 mockOpenStackGetStackCreatedAppC_200();
135 mockOpenStackGetStackAppC_404();
137 headers.add("Content-Type", MediaType.APPLICATION_JSON);
138 headers.add("Accept", MediaType.APPLICATION_JSON);
140 String request = readJsonFileAsString("src/test/resources/CreateNetwork.json");
141 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
143 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
144 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
146 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
147 new File("src/test/resources/__files/CreateNetworkResponse2.json"), CreateNetworkResponse.class);
149 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
150 assertThat(response.getBody(), sameBeanAs(expectedResponse));
156 public void testDeleteNetwork() throws IOException{
158 DeleteNetworkRequest request = new DeleteNetworkRequest();
160 MsoRequest msoReq = new MsoRequest();
162 msoReq.setRequestId(MSO_REQUEST_ID);
163 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
164 request.setMsoRequest(msoReq);
165 request.setCloudSiteId(CLOUDSITE_ID);
166 request.setTenantId(TENANT_ID);
167 request.setNetworkId(NETWORK_ID);
168 request.setNetworkType(NETWORK_TYPE);
169 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
170 request.setNetworkStackId(NETWORK_ID);
172 mockOpenStackResponseAccess(wireMockPort);
174 mockOpenStackPublicUrlStackByID_200(wireMockPort);
176 mockOpenStackGetPublicUrlStackByNameAndID_204(wireMockPort);
178 mockOpenStackDeletePublicUrlStackByNameAndID_204();
180 headers.add("Accept", MediaType.APPLICATION_JSON);
182 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(request, headers);
184 ResponseEntity<DeleteNetworkResponse> response = restTemplate.exchange(
185 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.DELETE, entity, DeleteNetworkResponse.class);
187 DeleteNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
188 new File("src/test/resources/__files/DeleteNetworkResponse.json"), DeleteNetworkResponse.class);
190 assertThat(response.getBody(), sameBeanAs(expectedResponse));
191 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
196 public void testQueryNetwork_Exception() throws IOException{
197 MsoRequest msoReq = new MsoRequest();
198 msoReq.setRequestId(MSO_REQUEST_ID);
199 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
200 headers.add("Accept", MediaType.APPLICATION_JSON);
202 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
204 ResponseEntity<QueryNetworkError> response = restTemplate.exchange(
205 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.GET,
206 entity, QueryNetworkError.class);
208 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
213 public void testQueryNetwork() throws IOException{
215 mockOpenStackResponseAccess(wireMockPort);
216 mockOpenStackGetStackVfModule_200();
218 headers.add("Accept", MediaType.APPLICATION_JSON);
219 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
221 ResponseEntity<QueryNetworkResponse> response = restTemplate.exchange(
222 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"+"?cloudSiteId=" + CLOUDSITE_ID + "&tenantId=" + TENANT_ID
223 + "&aaiNetworkId=aaiNetworkId"), HttpMethod.GET,
224 entity, QueryNetworkResponse.class);
226 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatusCode().value());
231 public void testUpdateNetwork() throws IOException{
233 UpdateNetworkRequest request = new UpdateNetworkRequest();
235 MsoRequest msoReq = new MsoRequest();
237 msoReq.setRequestId(MSO_REQUEST_ID);
238 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
239 request.setMsoRequest(msoReq);
240 request.setCloudSiteId(CLOUDSITE_ID);
241 request.setTenantId(TENANT_ID);
242 request.setNetworkId(NETWORK_ID);
243 request.setNetworkName(NETWORK_NAME);
244 request.setNetworkType(NETWORK_TYPE);
245 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
246 request.setNetworkStackId(NETWORK_ID);
248 mockOpenStackResponseAccess(wireMockPort);
250 mockOpenStackPublicUrlStackByName_200(wireMockPort);
252 mockOpenStackPublicUrlStackByID_200(wireMockPort);
254 mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockPort);
256 mockOpenStackPutPublicUrlStackByNameAndID_200();
258 headers.add("Accept", MediaType.APPLICATION_JSON);
260 HttpEntity<UpdateNetworkRequest> entity = new HttpEntity<UpdateNetworkRequest>(request, headers);
262 ResponseEntity<UpdateNetworkResponse> response = restTemplate.exchange(
263 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.PUT, entity, UpdateNetworkResponse.class);
265 UpdateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
266 new File("src/test/resources/__files/UpdateNetworkResponse.json"), UpdateNetworkResponse.class);
268 assertThat(response.getBody(), sameBeanAs(expectedResponse));
269 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
273 public void testCreateNetworkCNRC_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
275 mockOpenStackResponseAccess(wireMockPort);
277 mockOpenStackPostPublicUrlWithBodyFile_200();
279 mockOpenStackGetStackCreatedAppC_200();
281 mockOpenStackGetStackAppC_404();
283 headers.add("Content-Type", MediaType.APPLICATION_JSON);
284 headers.add("Accept", MediaType.APPLICATION_JSON);
286 String request = readJsonFileAsString("src/test/resources/CreateNetwork3.json");
287 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
289 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
290 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
292 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
293 new File("src/test/resources/__files/CreateNetworkResponse3.json"), CreateNetworkResponse.class);
295 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
296 assertThat(response.getBody(), sameBeanAs(expectedResponse));
300 public void testCreateNetworkNC_Shared_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
302 mockOpenStackResponseAccess(wireMockPort);
304 mockOpenStackPostPublicUrlWithBodyFile_200();
306 mockOpenStackGetStackCreatedAppC_200();
308 mockOpenStackGetStackAppC_404();
310 headers.add("Content-Type", MediaType.APPLICATION_JSON);
311 headers.add("Accept", MediaType.APPLICATION_JSON);
313 String request = readJsonFileAsString("src/test/resources/CreateNetwork4.json");
314 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
316 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
317 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
319 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
320 new File("src/test/resources/__files/CreateNetworkResponse4.json"), CreateNetworkResponse.class);
322 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
323 assertThat(response.getBody(), sameBeanAs(expectedResponse));
327 protected String readJsonFileAsString(String fileLocation) throws JsonParseException, JsonMappingException, IOException{
328 return new String(Files.readAllBytes(Paths.get(fileLocation)));