88c6992a0abf9826d843415fafa248508fee1133
[so.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
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.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;
59
60 public class MSONetworkAdapterImplTest extends BaseRestTestUtils {
61
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";
64
65
66     @Test
67     public void createNetworkByModelNameHeatMode() throws IOException {
68
69         mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
70
71         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
72
73         mockOpenStackGetStack_404(wireMockServer, "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
74
75         mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
76
77         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
78                 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
79
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());
84     }
85
86     @Test
87     public void createNetworkByModelNameAlreadyExistHeatMode() throws IOException {
88
89         mockUpdateRequestDb(wireMockServer, "9733c8d1-2668-4e5f-8b51-2cacc9b662c0");
90
91         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
92
93         mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
94
95         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
96                 "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId");
97
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());
102     }
103
104     @Test
105     public void createNetworkByModelNameAlreadyExistHeatModeFailIfExistTrue() throws IOException {
106
107         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
108
109         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
110                 "dvspg-VCE_VPE-mtjnj40avbc");
111
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());
117     }
118
119
120     @Test
121     public void createNetworkByModelNameHeatModeQueryNetworkException() throws IOException {
122
123         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
124
125         mockOpenstackGet(wireMockServer, "/mockPublicUrl/stacks/dvspg-VCE_VPE-mtjnj40avbc",
126                 HttpStatus.SC_INTERNAL_SERVER_ERROR);
127
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());
132     }
133
134     @Test
135     public void createNetworkByModelNameHeatModeCreateNetworkException() throws IOException {
136
137         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
138
139         mockOpenStackGetStack_404(wireMockServer, "dvspg-VCE_VPE-mtjnj40avbc");
140
141         mockOpenstackPost(wireMockServer, "/mockPublicUrl/stacks", HttpStatus.SC_INTERNAL_SERVER_ERROR);
142
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());
147     }
148
149     @Test
150     public void createNetworkByModelNameCloudSiteNotPresentError() throws IOException {
151
152         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
153
154         mockOpenStackPostStack_200(wireMockServer, "OpenstackResponse_Stack.json");
155
156         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
157                 "dvspg-VCE_VPE-mtjnj40avbc");
158
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());
164     }
165
166     @Test
167     public void deleteNetworkHeatModeSuccess() throws IOException {
168
169         mockUpdateRequestDb(wireMockServer, "5a29d907-b8c7-47bf-85f3-3940c0cce0f7");
170
171         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
172
173         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
174
175         mockOpenStackDeleteStack_200(wireMockServer);
176
177         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
178                 "43173f6a-d699-414b-888f-ab243dda6dfe");
179
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());
184     }
185
186     @Test
187     public void deleteNetworkDeleteStackException() throws IOException {
188
189         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
190
191         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
192
193         mockOpenStackDeleteStack_500(wireMockServer);
194
195         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
196                 "43173f6a-d699-414b-888f-ab243dda6dfe");
197
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());
202     }
203
204     @Test
205     public void deleteNetworkError() throws IOException {
206
207         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
208
209         mockOpenStackGetStackDeleteOrUpdateComplete_200(wireMockServer, "OpenstackResponse_Stack_DeleteComplete.json");
210
211         mockOpenStackDeleteStack_200(wireMockServer);
212
213         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json",
214                 "43173f6a-d699-414b-888f-ab243dda6dfe");
215
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());
221     }
222
223     @Test
224     public void updateNetworkNeutronUpdateException() throws IOException {
225
226         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
227
228         mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
229         mockOpenStackPutNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
230
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());
237     }
238
239     @Test
240     public void updateNetworkHeatUpdateException() throws IOException {
241
242         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
243
244         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json", NETWORK_NAME);
245
246         mockOpenStackPutStack(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
247
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());
252     }
253
254     @Test
255     public void updateNetworkHeatQueryException() throws IOException {
256
257         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
258
259         mockOpenStackGetStack_500(wireMockServer, NETWORK_NAME);
260
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());
265     }
266
267     @Test
268     public void updateNetworkHeatStackNotFound() throws IOException {
269
270         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
271
272         mockOpenStackGetStack_404(wireMockServer, NETWORK_NAME);
273
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());
278     }
279
280     @Test
281     public void updateNetworkNeutronQueryException() throws IOException {
282
283         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
284
285         mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_INTERNAL_SERVER_ERROR);
286
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());
293     }
294
295     @Test
296     public void updateNetworkNeutronStackNotFound() throws IOException {
297
298         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
299
300         mockOpenStackGetNeutronNetwork(wireMockServer, NETWORK_ID, HttpStatus.SC_NOT_FOUND);
301
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());
308     }
309
310     @Test
311     public void queryNetworkHeatModesuccess() throws IOException {
312
313         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
314
315         mockOpenStackGetStackCreated_200(wireMockServer, "OpenstackResponse_Stack_Created.json", NETWORK_ID);
316
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,
321                         HttpMethod.POST);
322         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
323     }
324
325     @Test
326     public void queryNetworkHeatModeQueryException() throws IOException {
327
328         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
329
330         mockOpenStackGetStack_500(wireMockServer, NETWORK_ID);
331
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,
336                         HttpMethod.POST);
337         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
338     }
339
340     @Test
341     public void queryNetworkNeutronModeSuccess() throws IOException {
342
343         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
344
345         mockOpenStackGetNeutronNetwork(wireMockServer, "GetNeutronNetwork.json", NETWORK_ID, HttpStatus.SC_OK);
346
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,
351                         HttpMethod.POST);
352         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
353     }
354
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);
358
359         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(createURLWithPort(uriPath));
360
361         HttpEntity<String> request = new HttpEntity<String>(requestJson, headers);
362         ResponseEntity<String> response =
363                 restTemplate.exchange(builder.toUriString(), reqMethod, request, String.class);
364
365         return response;
366     }
367
368     public String inputStream(String JsonInput) throws IOException {
369         JsonInput = "src/test/resources/" + JsonInput;
370         String input = new String(Files.readAllBytes(Paths.get(JsonInput)));
371         return input;
372     }
373
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)));
377     }
378 }