Replaced all tabs with spaces in java and pom.xml
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / network / NetworkAdapterRestTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.adapters.network;
22
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;
39 import java.io.File;
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;
66
67 public class NetworkAdapterRestTest extends BaseRestTestUtils {
68
69     @Autowired
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";
79
80     @Test
81     public void testCreateNetwork() throws JSONException, JsonParseException, JsonMappingException, IOException {
82
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";
89
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);
100
101         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
102
103         mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
104
105         mockOpenStackGetStackCreatedVUSP_200(wireMockServer);
106
107         mockOpenStackGetStackVUSP_404(wireMockServer);
108
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);
113
114         CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
115                 new File("src/test/resources/__files/CreateNetworkResponse.json"), CreateNetworkResponse.class);
116
117         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
118         assertThat(response.getBody(), sameBeanAs(expectedResponse));
119     }
120
121     @Test
122     public void testCreateNetwork_JSON() throws JSONException, JsonParseException, JsonMappingException, IOException {
123
124
125
126         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
127
128         mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
129
130         mockOpenStackGetStackCreatedAppC_200(wireMockServer);
131
132         mockOpenStackGetStackAppC_404(wireMockServer);
133
134         headers.add("Content-Type", MediaType.APPLICATION_JSON);
135         headers.add("Accept", MediaType.APPLICATION_JSON);
136
137         String request = readJsonFileAsString("src/test/resources/CreateNetwork.json");
138         HttpEntity<String> entity = new HttpEntity<String>(request, headers);
139
140         ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
141                 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
142
143         CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
144                 new File("src/test/resources/__files/CreateNetworkResponse2.json"), CreateNetworkResponse.class);
145
146         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
147         assertThat(response.getBody(), sameBeanAs(expectedResponse));
148     }
149
150
151
152     @Test
153     public void testDeleteNetwork() throws IOException {
154
155         DeleteNetworkRequest request = new DeleteNetworkRequest();
156
157         MsoRequest msoReq = new MsoRequest();
158
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);
168
169         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
170
171         mockOpenStackPublicUrlStackByID_200(wireMockServer, wireMockPort);
172
173         mockOpenStackGetPublicUrlStackByNameAndID_204(wireMockServer, wireMockPort);
174
175         mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
176
177         headers.add("Accept", MediaType.APPLICATION_JSON);
178
179         HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(request, headers);
180
181         ResponseEntity<DeleteNetworkResponse> response = restTemplate.exchange(
182                 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.DELETE,
183                 entity, DeleteNetworkResponse.class);
184
185         DeleteNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
186                 new File("src/test/resources/__files/DeleteNetworkResponse.json"), DeleteNetworkResponse.class);
187
188         assertThat(response.getBody(), sameBeanAs(expectedResponse));
189         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
190
191     }
192
193     @Test
194     public void testRollbackNetwork() throws IOException {
195
196         RollbackNetworkRequest request = new RollbackNetworkRequest();
197
198         MsoRequest msoReq = new MsoRequest();
199
200         msoReq.setRequestId(MSO_REQUEST_ID);
201         msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
202
203         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
204
205         mockOpenStackPublicUrlStackByID_200(wireMockServer, wireMockPort);
206
207         mockOpenStackGetPublicUrlStackByNameAndID_204(wireMockServer, wireMockPort);
208
209         mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
210
211         headers.add("Accept", MediaType.APPLICATION_JSON);
212
213         HttpEntity<RollbackNetworkRequest> entity = new HttpEntity<>(request, headers);
214
215         ResponseEntity<RollbackNetworkResponse> response = restTemplate.exchange(
216                 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b/rollback"),
217                 HttpMethod.DELETE, entity, RollbackNetworkResponse.class);
218
219         RollbackNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
220                 new File("src/test/resources/__files/RollbackNetworkResponse.json"), RollbackNetworkResponse.class);
221
222         assertThat(response.getBody(), sameBeanAs(expectedResponse));
223         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
224
225     }
226
227     @Test
228     public void testQueryNetwork_Exception() throws IOException {
229         MsoRequest msoReq = new MsoRequest();
230         msoReq.setRequestId(MSO_REQUEST_ID);
231         msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
232         headers.add("Accept", MediaType.APPLICATION_JSON);
233
234         HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
235
236         ResponseEntity<QueryNetworkError> response = restTemplate.exchange(
237                 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.GET,
238                 entity, QueryNetworkError.class);
239
240         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
241
242     }
243
244     @Test
245     public void testQueryNetwork() throws IOException {
246
247         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
248         mockOpenStackGetStackVfModule_200(wireMockServer);
249
250         headers.add("Accept", MediaType.APPLICATION_JSON);
251         HttpEntity<DeleteNetworkRequest> entity = new HttpEntity<DeleteNetworkRequest>(headers);
252
253         ResponseEntity<QueryNetworkResponse> response = restTemplate.exchange(
254                 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b" + "?cloudSiteId="
255                         + CLOUDSITE_ID + "&tenantId=" + TENANT_ID + "&aaiNetworkId=aaiNetworkId"),
256                 HttpMethod.GET, entity, QueryNetworkResponse.class);
257
258         assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatusCode().value());
259
260     }
261
262     @Test
263     public void testUpdateNetwork() throws IOException {
264
265         UpdateNetworkRequest request = new UpdateNetworkRequest();
266
267         MsoRequest msoReq = new MsoRequest();
268
269         msoReq.setRequestId(MSO_REQUEST_ID);
270         msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
271         request.setMsoRequest(msoReq);
272         request.setCloudSiteId(CLOUDSITE_ID);
273         request.setTenantId(TENANT_ID);
274         request.setNetworkId(NETWORK_ID);
275         request.setNetworkName(NETWORK_NAME);
276         request.setNetworkType(NETWORK_TYPE);
277         request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
278         request.setNetworkStackId(NETWORK_ID);
279
280         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
281
282         mockOpenStackPublicUrlStackByName_200(wireMockServer, wireMockPort);
283
284         mockOpenStackPublicUrlStackByID_200(wireMockServer, wireMockPort);
285
286         mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockServer, wireMockPort);
287
288         mockOpenStackPutPublicUrlStackByNameAndID_200(wireMockServer);
289
290         headers.add("Accept", MediaType.APPLICATION_JSON);
291
292         HttpEntity<UpdateNetworkRequest> entity = new HttpEntity<UpdateNetworkRequest>(request, headers);
293
294         ResponseEntity<UpdateNetworkResponse> response = restTemplate.exchange(
295                 createURLWithPort("/services/rest/v1/networks/da886914-efb2-4917-b335-c8381528d90b"), HttpMethod.PUT,
296                 entity, UpdateNetworkResponse.class);
297
298         UpdateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
299                 new File("src/test/resources/__files/UpdateNetworkResponse.json"), UpdateNetworkResponse.class);
300
301         assertThat(response.getBody(), sameBeanAs(expectedResponse));
302         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
303     }
304
305     @Test
306     public void testCreateNetworkCNRC_JSON()
307             throws JSONException, JsonParseException, JsonMappingException, IOException {
308
309         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
310
311         mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
312
313         mockOpenStackGetStackCreatedAppC_200(wireMockServer);
314
315         mockOpenStackGetStackAppC_404(wireMockServer);
316
317         headers.add("Content-Type", MediaType.APPLICATION_JSON);
318         headers.add("Accept", MediaType.APPLICATION_JSON);
319
320         String request = readJsonFileAsString("src/test/resources/CreateNetwork3.json");
321         HttpEntity<String> entity = new HttpEntity<String>(request, headers);
322
323         ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
324                 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
325
326         CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
327                 new File("src/test/resources/__files/CreateNetworkResponse3.json"), CreateNetworkResponse.class);
328
329         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
330         assertThat(response.getBody(), sameBeanAs(expectedResponse));
331     }
332
333     @Test
334     public void testCreateNetworkNC_Shared_JSON()
335             throws JSONException, JsonParseException, JsonMappingException, IOException {
336
337         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
338
339         mockOpenStackPostPublicUrlWithBodyFile_200(wireMockServer);
340
341         mockOpenStackGetStackCreatedAppC_200(wireMockServer);
342
343         mockOpenStackGetStackAppC_404(wireMockServer);
344
345         headers.add("Content-Type", MediaType.APPLICATION_JSON);
346         headers.add("Accept", MediaType.APPLICATION_JSON);
347
348         String request = readJsonFileAsString("src/test/resources/CreateNetwork4.json");
349         HttpEntity<String> entity = new HttpEntity<String>(request, headers);
350
351         ResponseEntity<CreateNetworkResponse> response = restTemplate.exchange(
352                 createURLWithPort("/services/rest/v1/networks"), HttpMethod.POST, entity, CreateNetworkResponse.class);
353
354         CreateNetworkResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
355                 new File("src/test/resources/__files/CreateNetworkResponse4.json"), CreateNetworkResponse.class);
356
357         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
358         assertThat(response.getBody(), sameBeanAs(expectedResponse));
359     }
360
361     @Override
362     protected String readJsonFileAsString(String fileLocation)
363             throws JsonParseException, JsonMappingException, IOException {
364         return new String(Files.readAllBytes(Paths.get(fileLocation)));
365     }
366 }