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