Replaced all tabs with spaces in java and pom.xml
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / vnf / VnfAdapterRestTest.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.vnf;
22
23 import com.fasterxml.jackson.core.JsonParseException;
24 import com.fasterxml.jackson.databind.JsonMappingException;
25 import org.json.JSONException;
26 import org.junit.Ignore;
27 import org.junit.Test;
28 import org.onap.so.adapters.vnfrest.CreateVfModuleRequest;
29 import org.onap.so.adapters.vnfrest.CreateVfModuleResponse;
30 import org.onap.so.adapters.vnfrest.DeleteVfModuleRequest;
31 import org.onap.so.adapters.vnfrest.DeleteVfModuleResponse;
32 import org.onap.so.adapters.vnfrest.QueryVfModuleResponse;
33 import org.onap.so.adapters.vnfrest.RollbackVfModuleRequest;
34 import org.onap.so.adapters.vnfrest.RollbackVfModuleResponse;
35 import org.onap.so.adapters.vnfrest.UpdateVfModuleRequest;
36 import org.onap.so.adapters.vnfrest.UpdateVfModuleResponse;
37 import org.onap.so.adapters.vnfrest.VfModuleExceptionResponse;
38 import org.onap.so.adapters.vnfrest.VfModuleRollback;
39 import org.onap.so.client.policy.JettisonStyleMapperProvider;
40 import org.onap.so.entity.MsoRequest;
41 import org.springframework.beans.factory.annotation.Autowired;
42 import org.springframework.http.HttpEntity;
43 import org.springframework.http.HttpMethod;
44 import org.springframework.http.ResponseEntity;
45 import javax.ws.rs.core.MediaType;
46 import javax.ws.rs.core.Response;
47 import javax.ws.rs.core.UriBuilder;
48 import java.io.File;
49 import java.io.IOException;
50 import java.util.HashMap;
51 import java.util.Map;
52 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
53 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
54 import static org.junit.Assert.assertEquals;
55 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeletePublicUrlStackByNameAndID_204;
56 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStacks;
57 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetPublicUrlStackByNameAndID_200;
58 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
59 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_404;
60 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksBaseStack_200;
61 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksStackId_200;
62 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksStackId_404;
63 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVUSP_404;
64 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVfModuleWithLocationHeader_200;
65 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVfModule_200;
66 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_200;
67 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_404;
68 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacks_404;
69 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStacks_200;
70 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStacks_200;
71 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
72
73 public class VnfAdapterRestTest extends BaseRestTestUtils {
74
75
76     @Autowired
77     private JettisonStyleMapperProvider jettisonTypeObjectMapper;
78     private static final String MESSAGE_ID = "62265093-277d-4388-9ba6-449838ade586-1517252396874";
79     private static final String AAI_VNF_ID = "c93e0d34-5b63-45de-bbae-b0fe49dd3bd9";
80     private static final String MSO_REQUEST_ID = "62265093-277d-4388-9ba6-449838ade586";
81     private static final String MSO_SERVICE_INSTANCE_ID = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
82     private static final String CLOUDSITE_ID = "mtn13";
83     private static final String CLOUD_OWNER = "CloudOwner";
84     private static final String TENANT_ID = "0422ffb57ba042c0800a29dc85ca70f8";
85     private static final String VNF_TYPE = "MSOTADevInfra_vSAMP10a_Service/vSAMP10a 1";
86     private static final String VNF_NAME = "MSO-DEV-VNF-1802-it3-pwt3-vSAMP10a-1XXX-Replace";
87     private static final String VNF_VERSION = "1.0";
88     private static final String VF_MODULE_ID = "1d48aaec-b7f3-4c24-ba4a-4e798ed3223c";
89     private static final String VF_MODULE_NAME = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001";
90     private static final String VF_MODULE_TYPE = "vSAMP10aDEV::PCM::module-2";
91     private static final String MODEL_CUSTOMIZATION_UUID = "cb82ffd8-252a-11e7-93ae-92361f002671";
92     private static final String BASE_VF_MODULE_ID = "3d7ff7b4-720b-4604-be0a-1974fc58ed96";
93     // vfModuleParams specific variables
94     private static final String NETWORK_NAME = "Dev-vSAMP10a-ntwk-1802-pwt3-v6-Replace-1001";
95     private static final String SERVER_NAME = "Dev-vSAMP10a-addon2-1802-pwt3-v6-Replace-1001";
96     private static final String IMAGE = "ubuntu_14.04_IPv6";
97     private static final String EXN_DIRECT_NET_FQDN = "direct";
98     private static final String EXN_HSL_NET_FQDN = "hsl";
99     private static final String AVAILABILITY_ZONE_0 = "nova";
100     private static final String VF_MODULE_INDEX = "0";
101     private static final String REQUEST_TYPE = "";
102
103     @Test
104     public void testCreateVfModule() throws JSONException, JsonParseException, JsonMappingException, IOException {
105
106         CreateVfModuleRequest request = populateCreateVfModuleRequest();
107
108         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
109
110         mockOpenStackGetStackVfModule_404(wireMockServer);
111
112         mockOpenStackPostStacks_200(wireMockServer);
113
114         mockOpenStackGetStackVfModule_200(wireMockServer);
115
116         headers.add("Accept", MediaType.APPLICATION_JSON);
117         HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
118
119         ResponseEntity<CreateVfModuleResponse> response =
120                 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
121                         HttpMethod.POST, entity, CreateVfModuleResponse.class);
122
123         ResponseEntity<CreateVfModuleResponse> responseV2 =
124                 restTemplate.exchange(createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules"),
125                         HttpMethod.POST, entity, CreateVfModuleResponse.class);
126
127         CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
128                 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
129
130         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
131         assertThat(response.getBody(), sameBeanAs(expectedResponse));
132
133         assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
134         assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
135     }
136
137     @Test
138     public void testCreateVfModuleAsyncCall() throws Exception {
139         CreateVfModuleRequest request = populateCreateVfModuleRequest();
140         request.setNotificationUrl(createURLWithPort("/mso/WorkflowMesssage"));
141
142         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
143         mockOpenStackGetStackVfModule_404(wireMockServer);
144         mockOpenStackPostStacks_200(wireMockServer);
145         mockOpenStackGetStackVfModule_200(wireMockServer);
146
147         headers.add("Accept", MediaType.APPLICATION_JSON);
148         HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
149
150         ResponseEntity<CreateVfModuleResponse> response =
151                 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
152                         HttpMethod.POST, entity, CreateVfModuleResponse.class);
153
154         CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
155                 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
156
157         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
158     }
159
160     @Test
161     public void testCreateVfModuleWithEnableBridgeNull()
162             throws JSONException, JsonParseException, JsonMappingException, IOException {
163
164         CreateVfModuleRequest request = new CreateVfModuleRequest();
165         request.setBackout(true);
166         request.setSkipAAI(true);
167         request.setFailIfExists(false);
168         MsoRequest msoReq = new MsoRequest();
169         boolean failIfExists = true;
170         Boolean enableBridge = null;
171         Map<String, Object> vfModuleParams = new HashMap<>();
172
173
174         vfModuleParams.put("vf_module_id", VF_MODULE_ID);
175         vfModuleParams.put("vnf_id", AAI_VNF_ID);
176         vfModuleParams.put("network_name", NETWORK_NAME);
177         vfModuleParams.put("vnf_name", VNF_NAME);
178         vfModuleParams.put("environment_context", "");
179         vfModuleParams.put("server_name", SERVER_NAME);
180         vfModuleParams.put("image", IMAGE);
181         vfModuleParams.put("workload_context", "");
182         vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
183         vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
184         vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
185         vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
186         vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
187
188         msoReq.setRequestId(MSO_REQUEST_ID);
189         msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
190         request.setMsoRequest(msoReq);
191         request.setRequestType(REQUEST_TYPE);
192         request.setCloudSiteId(CLOUDSITE_ID);
193         request.setTenantId(TENANT_ID);
194         request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
195         request.setVnfId(AAI_VNF_ID);
196         request.setVnfVersion(VNF_VERSION);
197         request.setVfModuleId(VF_MODULE_ID);
198         request.setVfModuleName(VF_MODULE_NAME);
199         request.setBaseVfModuleId(BASE_VF_MODULE_ID);
200         request.setFailIfExists(failIfExists);
201         request.setEnableBridge(enableBridge);
202         request.setVfModuleParams(vfModuleParams);
203         request.setMessageId(MESSAGE_ID);
204
205         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
206
207         mockOpenStackGetStackVfModule_404(wireMockServer);
208
209         mockOpenStackPostStacks_200(wireMockServer);
210
211         mockOpenStackGetStackVfModule_200(wireMockServer);
212
213
214         headers.add("Accept", MediaType.APPLICATION_JSON);
215         HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
216
217         ResponseEntity<CreateVfModuleResponse> response =
218                 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
219                         HttpMethod.POST, entity, CreateVfModuleResponse.class);
220
221         CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
222                 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
223
224         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
225         assertThat(response.getBody(), sameBeanAs(expectedResponse));
226     }
227
228     @Test
229     public void testCreateVfModuleFail() throws IOException {
230
231         CreateVfModuleRequest request = new CreateVfModuleRequest();
232         request.setBackout(true);
233         request.setSkipAAI(true);
234         request.setFailIfExists(false);
235         MsoRequest msoReq = new MsoRequest();
236         boolean failIfExists = true;
237         boolean enableBridge = false;
238         Map<String, Object> vfModuleParams = new HashMap<>();
239
240         vfModuleParams.put("vf_module_id", VF_MODULE_ID);
241         vfModuleParams.put("vnf_id", AAI_VNF_ID);
242         vfModuleParams.put("network_name", NETWORK_NAME);
243         vfModuleParams.put("vnf_name", VNF_NAME);
244         vfModuleParams.put("environment_context", "");
245         vfModuleParams.put("server_name", SERVER_NAME);
246         vfModuleParams.put("image", IMAGE);
247         vfModuleParams.put("workload_context", "");
248         vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
249         vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
250         vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
251         vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
252         vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
253
254         msoReq.setRequestId(MSO_REQUEST_ID);
255         msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
256         request.setMsoRequest(msoReq);
257         request.setRequestType(REQUEST_TYPE);
258         request.setCloudSiteId(CLOUDSITE_ID);
259         request.setTenantId(TENANT_ID);
260         request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
261         request.setVnfId(AAI_VNF_ID);
262         request.setVnfType(VNF_TYPE);
263         request.setVnfVersion(VNF_VERSION);
264         request.setVfModuleId(VF_MODULE_ID);
265         request.setVfModuleName(VF_MODULE_NAME);
266         request.setVfModuleType(VF_MODULE_TYPE);
267         request.setBaseVfModuleStackId(BASE_VF_MODULE_ID);
268         request.setFailIfExists(failIfExists);
269         request.setEnableBridge(enableBridge);
270         request.setVfModuleParams(vfModuleParams);
271         request.setMessageId(MESSAGE_ID);
272
273         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
274
275         mockOpenStackGetStackVfModule_404(wireMockServer);
276
277         mockOpenStackGetStacks_404(wireMockServer);
278
279         mockOpenStackPostStacks_200(wireMockServer);
280
281         mockOpenStackGetStackVfModule_200(wireMockServer);
282
283         headers.add("Accept", MediaType.APPLICATION_JSON);
284         HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
285
286         ResponseEntity<VfModuleExceptionResponse> response =
287                 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
288                         HttpMethod.POST, entity, VfModuleExceptionResponse.class);
289
290         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
291
292         mockOpenStackGetStacksWithBody_200(wireMockServer, "DELETE_IN_PROGRESS");
293
294         response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
295                 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
296
297         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
298
299         mockOpenStackGetStacksWithBody_200(wireMockServer, "DELETE_FAILED");
300
301         response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
302                 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
303
304         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
305
306         mockOpenStackGetStacksWithBody_200(wireMockServer, "UPDATE_COMPLETE");
307
308         response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
309                 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
310
311         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
312
313         mockOpenStackGetStacksWithBody_404(wireMockServer);
314
315         response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
316                 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
317
318         assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
319
320     }
321
322     @Test
323     public void testDeleteVfModule() throws IOException {
324
325         DeleteVfModuleRequest request = new DeleteVfModuleRequest();
326         MsoRequest msoRequest = new MsoRequest();
327         String vfModuleStackId = "stackId";
328
329         msoRequest.setRequestId(MSO_REQUEST_ID);
330         msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
331         request.setCloudSiteId(CLOUDSITE_ID);
332         request.setTenantId(TENANT_ID);
333         request.setVfModuleId(VF_MODULE_ID);
334         request.setVfModuleStackId(vfModuleStackId);
335         request.setVnfId(AAI_VNF_ID);
336         request.setMsoRequest(msoRequest);
337
338         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
339
340         mockOpenStackPostStacks_200(wireMockServer);
341
342         mockOpenStackGetStacksStackId_404(wireMockServer);
343
344         mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockServer, wireMockPort);
345
346         mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
347
348
349         headers.add("Accept", MediaType.APPLICATION_JSON);
350         HttpEntity<DeleteVfModuleRequest> entity = new HttpEntity<DeleteVfModuleRequest>(request, headers);
351
352         ResponseEntity<DeleteVfModuleResponse> response = restTemplate.exchange(
353                 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID),
354                 HttpMethod.DELETE, entity, DeleteVfModuleResponse.class);
355
356         ResponseEntity<DeleteVfModuleResponse> responseV2 = restTemplate.exchange(
357                 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID),
358                 HttpMethod.DELETE, entity, DeleteVfModuleResponse.class);
359
360
361         DeleteVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
362                 new File("src/test/resources/__files/DeleteVfModuleResponse.json"), DeleteVfModuleResponse.class);
363
364
365         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
366         assertThat(response.getBody(), sameBeanAs(expectedResponse));
367
368         assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
369         assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
370     }
371
372     @Test
373     public void testUpdateVfModule() throws IOException {
374
375         UpdateVfModuleRequest request = new UpdateVfModuleRequest();
376         MsoRequest msoRequest = new MsoRequest();
377         String vfModuleStackId = "vfModuleStackId";
378         Boolean failIfExists = false;
379         Boolean backout = false;
380         msoRequest.setRequestId(MSO_REQUEST_ID);
381         msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
382
383         Map<String, Object> vfModuleParams = new HashMap<>();
384
385         vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
386         vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
387
388         Map<String, String> vfModuleOutputs = new HashMap<String, String>();
389
390         vfModuleOutputs.put("output name", "output value");
391
392         request.setBackout(backout);
393         request.setCloudSiteId(CLOUDSITE_ID);
394         request.setFailIfExists(failIfExists);
395         request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
396         request.setMsoRequest(msoRequest);
397         request.setRequestType(REQUEST_TYPE);
398         request.setTenantId(TENANT_ID);
399         request.setVfModuleId(VF_MODULE_ID);
400         request.setVfModuleName(VF_MODULE_NAME);
401         request.setVfModuleStackId(vfModuleStackId);
402         request.setBackout(backout);
403         request.setVfModuleParams(vfModuleParams);
404
405         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
406
407         mockOpenStackGetStacksVfModuleWithLocationHeader_200(wireMockServer, wireMockPort);
408
409         mockOpenStackGetStacksVfModule_200(wireMockServer, wireMockPort);
410
411         mockOpenStackGetStacksBaseStack_200(wireMockServer, wireMockPort);
412
413         mockOpenStackPutStacks_200(wireMockServer);
414
415         UpdateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
416                 new File("src/test/resources/__files/UpdateVfModuleResponse.json"), UpdateVfModuleResponse.class);
417         expectedResponse.setVfModuleOutputs(vfModuleOutputs);
418
419         headers.add("Accept", MediaType.APPLICATION_JSON);
420         HttpEntity<UpdateVfModuleRequest> entity = new HttpEntity<UpdateVfModuleRequest>(request, headers);
421
422         ResponseEntity<UpdateVfModuleResponse> response = restTemplate.exchange(
423                 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_TYPE),
424                 HttpMethod.PUT, entity, UpdateVfModuleResponse.class);
425
426         ResponseEntity<UpdateVfModuleResponse> responseV2 = restTemplate.exchange(
427                 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_TYPE),
428                 HttpMethod.PUT, entity, UpdateVfModuleResponse.class);
429
430         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
431         assertThat(response.getBody(), sameBeanAs(expectedResponse));
432
433         assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
434         assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
435
436     }
437
438     @Test
439     public void testRollbackVfModule() throws IOException {
440
441
442         MsoRequest msoRequest = new MsoRequest();
443         msoRequest.setRequestId(MSO_REQUEST_ID);
444         msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
445
446         VfModuleRollback vfModuleRollback = new VfModuleRollback(AAI_VNF_ID, VF_MODULE_ID, "StackId", false, TENANT_ID,
447                 CLOUD_OWNER, CLOUDSITE_ID, msoRequest, "messageId");
448
449         RollbackVfModuleRequest request = new RollbackVfModuleRequest();
450         request.setVfModuleRollback(vfModuleRollback);
451
452         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
453
454         mockOpenStackGetStacksStackId_200(wireMockServer, wireMockPort);
455
456         mockOpenStackDeleteStacks(wireMockServer);
457
458         mockOpenStackGetStacksVUSP_404(wireMockServer);
459
460         headers.add("Accept", MediaType.APPLICATION_JSON);
461         HttpEntity<RollbackVfModuleRequest> entity = new HttpEntity<RollbackVfModuleRequest>(request, headers);
462
463         ResponseEntity<RollbackVfModuleResponse> response = restTemplate.exchange(
464                 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID + "/rollback"),
465                 HttpMethod.DELETE, entity, RollbackVfModuleResponse.class);
466
467         RollbackVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
468                 new File("src/test/resources/__files/RollbackVfModuleResponse.json"), RollbackVfModuleResponse.class);
469
470         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
471         assertThat(response.getBody(), sameBeanAs(expectedResponse));
472
473     }
474
475     @Ignore
476     @Test
477     public void testQueryVfModule() throws IOException {
478
479         String testUrl = createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID);
480         String testUri = UriBuilder.fromPath("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID)
481                 .host("localhost").port(wireMockPort).scheme("http")
482                 // .queryParam("cloudSiteId", CLOUDSITE_ID).queryParam("tenantId", TENANT_ID)
483                 .build().toString();
484         System.out.println(testUri);
485
486         mockOpenStackResponseAccess(wireMockServer, wireMockPort);
487
488
489         headers.add("Accept", MediaType.APPLICATION_JSON);
490         // HttpEntity entity = new HttpEntity(null, headers);
491         ResponseEntity<QueryVfModuleResponse> response =
492                 restTemplate.getForEntity(testUri, QueryVfModuleResponse.class);
493         // System.out.println(response);
494
495         QueryVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
496                 new File("src/test/resources/__files/QueryVfModuleResponse.json"), QueryVfModuleResponse.class);
497
498         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
499         assertThat(response.getBody(), sameBeanAs(expectedResponse));
500     }
501
502     private CreateVfModuleRequest populateCreateVfModuleRequest() {
503         CreateVfModuleRequest request = new CreateVfModuleRequest();
504         request.setBackout(true);
505         request.setSkipAAI(true);
506         request.setFailIfExists(false);
507         MsoRequest msoReq = new MsoRequest();
508         boolean failIfExists = true;
509         boolean enableBridge = false;
510         Map<String, Object> vfModuleParams = new HashMap<>();
511
512         vfModuleParams.put("vf_module_id", VF_MODULE_ID);
513         vfModuleParams.put("vnf_id", AAI_VNF_ID);
514         vfModuleParams.put("network_name", NETWORK_NAME);
515         vfModuleParams.put("vnf_name", VNF_NAME);
516         vfModuleParams.put("environment_context", "");
517         vfModuleParams.put("server_name", SERVER_NAME);
518         vfModuleParams.put("image", IMAGE);
519         vfModuleParams.put("workload_context", "");
520         vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
521         vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
522         vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
523         vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
524         vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
525
526         msoReq.setRequestId(MSO_REQUEST_ID);
527         msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
528         request.setMsoRequest(msoReq);
529         request.setRequestType(REQUEST_TYPE);
530         request.setCloudSiteId(CLOUDSITE_ID);
531         request.setTenantId(TENANT_ID);
532         request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
533         request.setVnfId(AAI_VNF_ID);
534         request.setVnfType(VNF_TYPE);
535         request.setVnfVersion(VNF_VERSION);
536         request.setVfModuleId(VF_MODULE_ID);
537         request.setVfModuleName(VF_MODULE_NAME);
538         request.setVfModuleType(VF_MODULE_TYPE);
539         request.setBaseVfModuleId(BASE_VF_MODULE_ID);
540         request.setFailIfExists(failIfExists);
541         request.setEnableBridge(enableBridge);
542         request.setVfModuleParams(vfModuleParams);
543         request.setMessageId(MESSAGE_ID);
544
545         return request;
546     }
547 }