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.cloud.CloudConfig;
62 import org.onap.so.entity.MsoRequest;
63 import org.springframework.beans.factory.annotation.Autowired;
64 import org.springframework.http.HttpEntity;
65 import org.springframework.http.HttpMethod;
66 import org.springframework.http.ResponseEntity;
68 import com.fasterxml.jackson.core.JsonParseException;
69 import com.fasterxml.jackson.databind.JsonMappingException;
71 public class NetworkAdapterRestTest extends BaseRestTestUtils {
74 private CloudConfig cloudConfig;
76 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
77 private static final String CLOUDSITE_ID = "mtn13";
78 private static final String TENANT_ID = "ba38bc24a2ef4fb2ad2810c894f1938f";
79 private static final String NETWORK_ID = "da886914-efb2-4917-b335-c8381528d90b";
80 private static final String NETWORK_TYPE = "CONTRAIL30_BASIC";
81 private static final String MODEL_CUSTOMIZATION_UUID = "3bdbb104-476c-483e-9f8b-c095b3d308ac";
82 private static final String MSO_SERVICE_INSTANCE_ID = "05869d5f-47df-4b45-bbfc-4f03ce0a50bf";
83 private static final String MSO_REQUEST_ID = "requestId";
84 private static final String NETWORK_NAME = "vUSP-23804-T-01-dpa2b_EVUSP-CORE-VIF-TSIG0_net_0";
87 public void testCreateNetwork() throws JSONException, JsonParseException, JsonMappingException, IOException {
89 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
90 CreateNetworkRequest request = new CreateNetworkRequest();
91 request.setBackout(true);
92 request.setSkipAAI(true);
93 request.setFailIfExists(false);
94 MsoRequest msoReq = new MsoRequest();
95 NetworkTechnology networkTechnology = NetworkTechnology.CONTRAIL;
97 msoReq.setRequestId(MSO_REQUEST_ID);
98 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
99 request.setMsoRequest(msoReq);
100 request.setCloudSiteId(CLOUDSITE_ID);
101 request.setTenantId(TENANT_ID);
102 request.setNetworkId(NETWORK_ID);
103 request.setNetworkName(NETWORK_NAME);
104 request.setNetworkType(NETWORK_TYPE);
105 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
106 request.setNetworkTechnology(networkTechnology);
108 mockOpenStackResponseAccess(wireMockPort);
110 mockOpenStackPostPublicUrlWithBodyFile_200();
112 mockOpenStackGetStackCreatedVUSP_200();
114 mockOpenStackGetStackVUSP_404();
116 headers.add("Accept", MediaType.APPLICATION_JSON);
117 HttpEntity<CreateNetworkRequest> entity = new HttpEntity<CreateNetworkRequest>(request, headers);
118 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
119 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
121 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
122 new File("src/test/resources/__files/CreateNetworkResponse.json"), CreateNetworkResponse.class);
124 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
125 assertThat(response.getBody(), sameBeanAs(expectedResponse));
129 public void testCreateNetwork_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
131 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
133 mockOpenStackResponseAccess(wireMockPort);
135 mockOpenStackPostPublicUrlWithBodyFile_200();
137 mockOpenStackGetStackCreatedAppC_200();
139 mockOpenStackGetStackAppC_404();
141 headers.add("Content-Type", MediaType.APPLICATION_JSON);
142 headers.add("Accept", MediaType.APPLICATION_JSON);
144 String request = readJsonFileAsString("src/test/resources/CreateNetwork.json");
145 HttpEntity<String> entity = new HttpEntity<String>(request, headers);
147 ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
148 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
150 CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
151 new File("src/test/resources/__files/CreateNetworkResponse2.json"), CreateNetworkResponse.class);
153 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
154 assertThat(response.getBody(), sameBeanAs(expectedResponse));
158 public void testDeleteNetwork() throws IOException{
160 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
161 DeleteNetworkRequest request = new DeleteNetworkRequest();
163 MsoRequest msoReq = new MsoRequest();
165 msoReq.setRequestId(MSO_REQUEST_ID);
166 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
167 request.setMsoRequest(msoReq);
168 request.setCloudSiteId(CLOUDSITE_ID);
169 request.setTenantId(TENANT_ID);
170 request.setNetworkId(NETWORK_ID);
171 request.setNetworkType(NETWORK_TYPE);
172 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
173 request.setNetworkStackId(NETWORK_ID);
175 mockOpenStackResponseAccess(wireMockPort);
177 mockOpenStackPublicUrlStackByID_200(wireMockPort);
179 mockOpenStackGetPublicUrlStackByNameAndID_204(wireMockPort);
181 mockOpenStackDeletePublicUrlStackByNameAndID_204();
183 headers.add("Accept", MediaType.APPLICATION_JSON);
185 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(request, headers);
187 ResponseEntity<DeleteNetworkResponse> response = restTemplate.exchange(
188 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.DELETE, entity, DeleteNetworkResponse.class);
190 DeleteNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
191 new File("src/test/resources/__files/DeleteNetworkResponse.json"), DeleteNetworkResponse.class);
193 assertThat(response.getBody(), sameBeanAs(expectedResponse));
194 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
199 public void testQueryNetwork_Exception() throws IOException{
200 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
201 MsoRequest msoReq = new MsoRequest();
202 msoReq.setRequestId(MSO_REQUEST_ID);
203 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
204 headers.add("Accept", MediaType.APPLICATION_JSON);
206 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
208 ResponseEntity<QueryNetworkError> response = restTemplate.exchange(
209 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.GET,
210 entity, QueryNetworkError.class);
212 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
217 public void testQueryNetwork() throws IOException{
219 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
220 mockOpenStackResponseAccess(wireMockPort);
221 mockOpenStackGetStackVfModule_200();
223 headers.add("Accept", MediaType.APPLICATION_JSON);
224 HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
226 ResponseEntity<QueryNetworkResponse> response = restTemplate.exchange(
227 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"+"?cloudSiteId=" + CLOUDSITE_ID + "&tenantId=" + TENANT_ID
228 + "&aaiNetworkId=aaiNetworkId"), HttpMethod.GET,
229 entity, QueryNetworkResponse.class);
231 assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatusCode().value());
236 public void testUpdateNetwork() throws IOException{
238 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
239 UpdateNetworkRequest request = new UpdateNetworkRequest();
241 MsoRequest msoReq = new MsoRequest();
243 msoReq.setRequestId(MSO_REQUEST_ID);
244 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
245 request.setMsoRequest(msoReq);
246 request.setCloudSiteId(CLOUDSITE_ID);
247 request.setTenantId(TENANT_ID);
248 request.setNetworkId(NETWORK_ID);
249 request.setNetworkName(NETWORK_NAME);
250 request.setNetworkType(NETWORK_TYPE);
251 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
252 request.setNetworkStackId(NETWORK_ID);
254 mockOpenStackResponseAccess(wireMockPort);
256 mockOpenStackPublicUrlStackByName_200(wireMockPort);
258 mockOpenStackPublicUrlStackByID_200(wireMockPort);
260 mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockPort);
262 mockOpenStackPutPublicUrlStackByNameAndID_200();
264 headers.add("Accept", MediaType.APPLICATION_JSON);
266 HttpEntity<UpdateNetworkRequest> entity = new HttpEntity<UpdateNetworkRequest>(request, headers);
268 ResponseEntity<UpdateNetworkResponse> response = restTemplate.exchange(
269 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.PUT, entity, UpdateNetworkResponse.class);
271 UpdateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
272 new File("src/test/resources/__files/UpdateNetworkResponse.json"), UpdateNetworkResponse.class);
274 assertThat(response.getBody(), sameBeanAs(expectedResponse));
275 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
279 protected String readJsonFileAsString(String fileLocation) throws JsonParseException, JsonMappingException, IOException{
280 return new String(Files.readAllBytes(Paths.get(fileLocation)));