f602690a103c1da4873cf297243dd8e6e2d9018b
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / vnf / VolumeAdapterRestTest.java
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.vnf;
22
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;
47
48 public class VolumeAdapterRestTest extends VolumeGroupAdapterCommon {
49
50     @Test
51     public void testCreateVNFVolumes() throws IOException {
52
53         mockOpenStackResponseAccess(wireMockPort);
54         mockOpenStackPostStacks_200();
55         mockOpenStackGetStackVfModule_200();
56         CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
57
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());
63     }
64
65     @Test
66     public void testCreateVNFVolumesAsync() throws IOException {
67
68         mockOpenStackResponseAccess(wireMockPort);
69         mockOpenStackPostStacks_200();
70         mockOpenStackGetStackVfModule_200();
71         CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
72         request.setNotificationUrl("http://localhost:8080");
73
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());
79     }
80
81     @Test
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());
90     }
91
92     @Test
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());
102     }
103
104     @Test
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());
113     }
114
115     @Test
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());
125     }
126
127     @Test
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);
136
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());
141     }
142
143     @Test
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);
152
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());
157     }
158
159     @Test
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());
171     }
172
173     @Test
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());
186     }
187
188
189 }