2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.adapters.vnf;
23 import org.junit.Test;
24 import org.onap.so.adapters.vnfrest.CreateVolumeGroupRequest;
25 import org.onap.so.adapters.vnfrest.CreateVolumeGroupResponse;
26 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupRequest;
27 import org.onap.so.adapters.vnfrest.DeleteVolumeGroupResponse;
28 import org.onap.so.adapters.vnfrest.QueryVolumeGroupResponse;
29 import org.onap.so.adapters.vnfrest.RollbackVolumeGroupRequest;
30 import org.onap.so.adapters.vnfrest.RollbackVolumeGroupResponse;
31 import org.onap.so.adapters.vnfrest.UpdateVolumeGroupRequest;
32 import org.onap.so.adapters.vnfrest.UpdateVolumeGroupResponse;
33 import org.onap.so.adapters.vnfrest.VolumeGroupExceptionResponse;
34 import org.springframework.http.HttpEntity;
35 import org.springframework.http.HttpMethod;
36 import org.springframework.http.ResponseEntity;
37 import javax.ws.rs.core.Response;
38 import javax.ws.rs.core.UriBuilder;
39 import java.io.IOException;
40 import static org.junit.Assert.assertEquals;
41 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
42 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackWithBody_200;
43 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_200;
44 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStacks_200;
45 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStack;
46 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
48 public class VolumeAdapterRestTest extends VolumeGroupAdapterCommon {
51 public void testCreateVNFVolumes() throws IOException {
53 mockOpenStackResponseAccess(wireMockPort);
54 mockOpenStackPostStacks_200();
55 mockOpenStackGetStackVfModule_200();
56 CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
58 HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
59 ResponseEntity<CreateVolumeGroupResponse> response = restTemplate.exchange(
60 createURLWithPort("/services/rest/v1/volume-groups"), HttpMethod.POST,
61 entity, CreateVolumeGroupResponse.class);
62 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
66 public void testCreateVNFVolumesAsync() throws IOException {
68 mockOpenStackResponseAccess(wireMockPort);
69 mockOpenStackPostStacks_200();
70 mockOpenStackGetStackVfModule_200();
71 CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
72 request.setNotificationUrl("http://localhost:8080");
74 HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
75 ResponseEntity<CreateVolumeGroupResponse> response = restTemplate.exchange(
76 createURLWithPort("/services/rest/v1/volume-groups"), HttpMethod.POST,
77 entity, CreateVolumeGroupResponse.class);
78 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
82 public void testDeleteVNFVolumes() throws IOException {
83 mockOpenStackResponseAccess(wireMockPort);
84 DeleteVolumeGroupRequest request = buildDeleteVolumeGroupRequest();
85 HttpEntity<DeleteVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
86 ResponseEntity<DeleteVolumeGroupResponse> response = restTemplate.exchange(
87 createURLWithPort("/services/rest/v1/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.DELETE,
88 entity, DeleteVolumeGroupResponse.class);
89 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
93 public void testDeleteVNFVolumesAsync() throws IOException {
94 mockOpenStackResponseAccess(wireMockPort);
95 DeleteVolumeGroupRequest request = buildDeleteVolumeGroupRequest();
96 request.setNotificationUrl("http://localhost:8080");
97 HttpEntity<DeleteVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
98 ResponseEntity<DeleteVolumeGroupResponse> response = restTemplate.exchange(
99 createURLWithPort("/services/rest/v1/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.DELETE,
100 entity, DeleteVolumeGroupResponse.class);
101 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
105 public void testRollbackVNFVolumes() throws IOException {
106 mockOpenStackResponseAccess(wireMockPort);
107 RollbackVolumeGroupRequest request = buildRollbackVolumeGroupRequest();
108 HttpEntity<RollbackVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
109 ResponseEntity<RollbackVolumeGroupResponse> response = restTemplate.exchange(
110 createURLWithPort("/services/rest/v1/volume-groups/"+VOLUME_GROUP_ID+"/rollback"), HttpMethod.DELETE,
111 entity, RollbackVolumeGroupResponse.class);
112 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
116 public void testRollbackVNFVolumesAsync() throws IOException {
117 mockOpenStackResponseAccess(wireMockPort);
118 RollbackVolumeGroupRequest request = buildRollbackVolumeGroupRequest();
119 request.setNotificationUrl("http://localhost:8080");
120 HttpEntity<RollbackVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
121 ResponseEntity<RollbackVolumeGroupResponse> response = restTemplate.exchange(
122 createURLWithPort("/services/rest/v1/volume-groups/"+VOLUME_GROUP_ID+"/rollback"), HttpMethod.DELETE,
123 entity, RollbackVolumeGroupResponse.class);
124 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
128 public void testQueryVNFVolumes() throws IOException{
129 mockOpenStackResponseAccess(wireMockPort);
130 mockOpenStackGetStacksWithBody_200("UPDATE_COMPLETE");
131 javax.ws.rs.core.UriBuilder builder = UriBuilder.fromPath("/services/rest/v1/volume-groups/" + VOLUME_GROUP_ID);
132 builder.queryParam("cloudSiteId", CLOUDSITE_ID).queryParam("tenantId", TENANT_ID)
133 .queryParam("volumeGroupStackId", VOUME_GROUP_NAME).queryParam("skipAAI", true)
134 .queryParam("msoRequest.requestId", MSO_REQUEST_ID)
135 .queryParam("msoRequest.serviceInstanceId", MSO_SERVICE_INSTANCE_ID);
137 ResponseEntity<QueryVolumeGroupResponse> response = restTemplate.exchange(
138 createURLWithPort(builder.build().toString()), HttpMethod.GET,
139 null,QueryVolumeGroupResponse.class);
140 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
144 public void testQueryVNFVolumesError() throws IOException{
145 mockOpenStackResponseAccess(wireMockPort);
146 mockOpenStackGetStacksWithBody_200("UPDATE_COMPLETE");
147 javax.ws.rs.core.UriBuilder builder = UriBuilder.fromPath("/services/rest/v1/volume-groups/" + VOLUME_GROUP_ID);
148 builder.queryParam("tenantId", TENANT_ID)
149 .queryParam("volumeGroupStackId", VOUME_GROUP_NAME).queryParam("skipAAI", true)
150 .queryParam("msoRequest.requestId", MSO_REQUEST_ID)
151 .queryParam("msoRequest.serviceInstanceId", MSO_SERVICE_INSTANCE_ID);
153 ResponseEntity<VolumeGroupExceptionResponse> response = restTemplate.exchange(
154 createURLWithPort(builder.build().toString()), HttpMethod.GET,
155 null,VolumeGroupExceptionResponse.class);
156 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
160 public void testUpdateVNFVolumes() throws IOException {
161 mockOpenStackResponseAccess(wireMockPort);
162 mockOpenStackGetStacksWithBody_200("CREATE_COMPLETE");
163 mockOpenStackPutStack(VOUME_GROUP_NAME+"/stackId",200);
164 mockOpenStackGetStackWithBody_200("UPDATE_COMPLETE");
165 UpdateVolumeGroupRequest request = buildUpdateVolumeGroupRequest();
166 HttpEntity<UpdateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
167 ResponseEntity<UpdateVolumeGroupResponse> response = restTemplate.exchange(
168 createURLWithPort("/services/rest/v1/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.PUT,
169 entity,UpdateVolumeGroupResponse.class);
170 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
174 public void testUpdateVNFVolumesAsync() throws IOException {
175 mockOpenStackResponseAccess(wireMockPort);
176 mockOpenStackGetStacksWithBody_200("CREATE_COMPLETE");
177 mockOpenStackPutStack(VOUME_GROUP_NAME+"/stackId",200);
178 mockOpenStackGetStackWithBody_200("UPDATE_COMPLETE");
179 UpdateVolumeGroupRequest request = buildUpdateVolumeGroupRequest();
180 request.setNotificationUrl("http://localhost:8080");
181 HttpEntity<UpdateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
182 ResponseEntity<UpdateVolumeGroupResponse> response = restTemplate.exchange(
183 createURLWithPort("/services/rest/v1/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.PUT,
184 entity,UpdateVolumeGroupResponse.class);
185 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());