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 VolumeAdapterRestV2Test extends VolumeGroupAdapterCommon {
51 public void testCreateVNFVolumes() throws IOException {
52 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
53 mockOpenStackPostStacks_200(wireMockServer);
54 mockOpenStackGetStackVfModule_200(wireMockServer);
55 CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
57 HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
58 ResponseEntity<CreateVolumeGroupResponse> response =
59 restTemplate.exchange(createURLWithPort("/services/rest/v2/volume-groups"), HttpMethod.POST, entity,
60 CreateVolumeGroupResponse.class);
61 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
65 public void testCreateVNFVolumesAsync() throws IOException {
67 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
68 mockOpenStackPostStacks_200(wireMockServer);
69 mockOpenStackGetStackVfModule_200(wireMockServer);
70 CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
71 request.setNotificationUrl("http://localhost:8080");
72 HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
73 ResponseEntity<CreateVolumeGroupResponse> response =
74 restTemplate.exchange(createURLWithPort("/services/rest/v2/volume-groups"), HttpMethod.POST, entity,
75 CreateVolumeGroupResponse.class);
76 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
80 public void testDeleteVNFVolumes() throws IOException {
81 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
82 DeleteVolumeGroupRequest request = buildDeleteVolumeGroupRequest();
83 HttpEntity<DeleteVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
84 ResponseEntity<DeleteVolumeGroupResponse> response =
85 restTemplate.exchange(createURLWithPort("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID),
86 HttpMethod.DELETE, entity, DeleteVolumeGroupResponse.class);
87 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
91 public void testDeleteVNFVolumesAsync() throws IOException {
92 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
93 DeleteVolumeGroupRequest request = buildDeleteVolumeGroupRequest();
94 request.setNotificationUrl("http://localhost:8080");
95 HttpEntity<DeleteVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
96 ResponseEntity<DeleteVolumeGroupResponse> response =
97 restTemplate.exchange(createURLWithPort("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID),
98 HttpMethod.DELETE, entity, DeleteVolumeGroupResponse.class);
99 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
103 public void testRollbackVNFVolumes() throws IOException {
104 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
105 RollbackVolumeGroupRequest request = buildRollbackVolumeGroupRequest();
106 HttpEntity<RollbackVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
107 ResponseEntity<RollbackVolumeGroupResponse> response = restTemplate.exchange(
108 createURLWithPort("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID + "/rollback"),
109 HttpMethod.DELETE, entity, RollbackVolumeGroupResponse.class);
110 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
114 public void testRollbackVNFVolumesAsync() throws IOException {
115 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
116 RollbackVolumeGroupRequest request = buildRollbackVolumeGroupRequest();
117 request.setNotificationUrl("http://localhost:8080");
118 HttpEntity<RollbackVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
119 ResponseEntity<RollbackVolumeGroupResponse> response = restTemplate.exchange(
120 createURLWithPort("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID + "/rollback"),
121 HttpMethod.DELETE, entity, RollbackVolumeGroupResponse.class);
122 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
126 public void testQueryVNFVolumes() throws IOException {
127 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
128 mockOpenStackGetStacksWithBody_200(wireMockServer, "UPDATE_COMPLETE");
129 javax.ws.rs.core.UriBuilder builder = UriBuilder.fromPath("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID);
130 builder.queryParam("cloudSiteId", CLOUDSITE_ID).queryParam("tenantId", TENANT_ID)
131 .queryParam("volumeGroupStackId", VOUME_GROUP_NAME).queryParam("skipAAI", true)
132 .queryParam("msoRequest.requestId", MSO_REQUEST_ID)
133 .queryParam("msoRequest.serviceInstanceId", MSO_SERVICE_INSTANCE_ID);
135 ResponseEntity<QueryVolumeGroupResponse> response = restTemplate.exchange(
136 createURLWithPort(builder.build().toString()), HttpMethod.GET, null, QueryVolumeGroupResponse.class);
137 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
141 public void testQueryVNFVolumesError() throws IOException {
142 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
143 mockOpenStackGetStacksWithBody_200(wireMockServer, "UPDATE_COMPLETE");
144 javax.ws.rs.core.UriBuilder builder = UriBuilder.fromPath("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID);
145 builder.queryParam("tenantId", TENANT_ID).queryParam("volumeGroupStackId", VOUME_GROUP_NAME)
146 .queryParam("skipAAI", true).queryParam("msoRequest.requestId", MSO_REQUEST_ID)
147 .queryParam("msoRequest.serviceInstanceId", MSO_SERVICE_INSTANCE_ID);
149 ResponseEntity<VolumeGroupExceptionResponse> response =
150 restTemplate.exchange(createURLWithPort(builder.build().toString()), HttpMethod.GET, null,
151 VolumeGroupExceptionResponse.class);
152 assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
156 public void testUpdateVNFVolumes() throws IOException {
157 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
158 mockOpenStackGetStacksWithBody_200(wireMockServer, "CREATE_COMPLETE");
159 mockOpenStackPutStack(wireMockServer, VOUME_GROUP_NAME + "/stackId", 200);
160 mockOpenStackGetStackWithBody_200(wireMockServer, "UPDATE_COMPLETE");
161 UpdateVolumeGroupRequest request = buildUpdateVolumeGroupRequest();
162 HttpEntity<UpdateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
163 ResponseEntity<UpdateVolumeGroupResponse> response =
164 restTemplate.exchange(createURLWithPort("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID),
165 HttpMethod.PUT, entity, UpdateVolumeGroupResponse.class);
166 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
170 public void testUpdateVNFVolumesAsync() throws IOException {
171 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
172 mockOpenStackGetStacksWithBody_200(wireMockServer, "CREATE_COMPLETE");
173 mockOpenStackPutStack(wireMockServer, VOUME_GROUP_NAME + "/stackId", 200);
174 mockOpenStackGetStackWithBody_200(wireMockServer, "UPDATE_COMPLETE");
175 UpdateVolumeGroupRequest request = buildUpdateVolumeGroupRequest();
176 request.setNotificationUrl("http://localhost:8080");
177 HttpEntity<UpdateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
178 ResponseEntity<UpdateVolumeGroupResponse> response =
179 restTemplate.exchange(createURLWithPort("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID),
180 HttpMethod.PUT, entity, UpdateVolumeGroupResponse.class);
181 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());