Containerization feature of SO
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / vnf / VolumeAdapterRestV2Test.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 VolumeAdapterRestV2Test extends VolumeGroupAdapterCommon {
49
50     @Test
51     public void testCreateVNFVolumes() throws IOException {
52         mockOpenStackResponseAccess(wireMockPort);
53         mockOpenStackPostStacks_200();
54         mockOpenStackGetStackVfModule_200();
55         CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
56
57         HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
58         ResponseEntity<CreateVolumeGroupResponse> response = restTemplate.exchange(
59                 createURLWithPort("/services/rest/v2/volume-groups"), HttpMethod.POST,
60                 entity, CreateVolumeGroupResponse.class);
61         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
62     }
63
64     @Test
65     public void testCreateVNFVolumesAsync() throws IOException {
66
67         mockOpenStackResponseAccess(wireMockPort);
68         mockOpenStackPostStacks_200();
69         mockOpenStackGetStackVfModule_200();
70         CreateVolumeGroupRequest request = buildCreateVfModuleRequest();
71         request.setNotificationUrl("http://localhost:8080");
72         HttpEntity<CreateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
73         ResponseEntity<CreateVolumeGroupResponse> response = restTemplate.exchange(
74                 createURLWithPort("/services/rest/v2/volume-groups"), HttpMethod.POST,
75                 entity, CreateVolumeGroupResponse.class);
76         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
77     }
78
79     @Test
80     public void testDeleteVNFVolumes() throws IOException  {
81         mockOpenStackResponseAccess(wireMockPort);
82         DeleteVolumeGroupRequest request = buildDeleteVolumeGroupRequest();
83         HttpEntity<DeleteVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
84         ResponseEntity<DeleteVolumeGroupResponse> response = restTemplate.exchange(
85                 createURLWithPort("/services/rest/v2/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.DELETE,
86                 entity, DeleteVolumeGroupResponse.class);
87         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
88     }
89
90     @Test
91     public void testDeleteVNFVolumesAsync() throws IOException  {
92         mockOpenStackResponseAccess(wireMockPort);
93         DeleteVolumeGroupRequest request = buildDeleteVolumeGroupRequest();
94         request.setNotificationUrl("http://localhost:8080");
95         HttpEntity<DeleteVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
96         ResponseEntity<DeleteVolumeGroupResponse> response = restTemplate.exchange(
97                 createURLWithPort("/services/rest/v2/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.DELETE,
98                 entity, DeleteVolumeGroupResponse.class);
99         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
100     }
101
102     @Test
103     public void testRollbackVNFVolumes()  throws IOException {
104         mockOpenStackResponseAccess(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"), HttpMethod.DELETE,
109                 entity, RollbackVolumeGroupResponse.class);
110         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
111     }
112
113     @Test
114     public void testRollbackVNFVolumesAsync()  throws IOException {
115         mockOpenStackResponseAccess(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"), HttpMethod.DELETE,
121                 entity, RollbackVolumeGroupResponse.class);
122         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
123     }
124
125     @Test
126     public void testQueryVNFVolumes() throws IOException{
127         mockOpenStackResponseAccess(wireMockPort);
128         mockOpenStackGetStacksWithBody_200("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);
134
135         ResponseEntity<QueryVolumeGroupResponse> response = restTemplate.exchange(
136                 createURLWithPort(builder.build().toString()), HttpMethod.GET,
137                 null,QueryVolumeGroupResponse.class);
138         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
139     }
140
141     @Test
142     public void testQueryVNFVolumesError() throws IOException{
143         mockOpenStackResponseAccess(wireMockPort);
144         mockOpenStackGetStacksWithBody_200("UPDATE_COMPLETE");
145         javax.ws.rs.core.UriBuilder builder = UriBuilder.fromPath("/services/rest/v2/volume-groups/" + VOLUME_GROUP_ID);
146         builder.queryParam("tenantId", TENANT_ID)
147                 .queryParam("volumeGroupStackId", VOUME_GROUP_NAME).queryParam("skipAAI", true)
148                 .queryParam("msoRequest.requestId", MSO_REQUEST_ID)
149                 .queryParam("msoRequest.serviceInstanceId", MSO_SERVICE_INSTANCE_ID);
150
151         ResponseEntity<VolumeGroupExceptionResponse> response = restTemplate.exchange(
152                 createURLWithPort(builder.build().toString()), HttpMethod.GET,
153                 null,VolumeGroupExceptionResponse.class);
154         assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), response.getStatusCode().value());
155     }
156     @Test
157     public void testUpdateVNFVolumes() throws IOException {
158         mockOpenStackResponseAccess(wireMockPort);
159         mockOpenStackGetStacksWithBody_200("CREATE_COMPLETE");
160         mockOpenStackPutStack(VOUME_GROUP_NAME+"/stackId",200);
161         mockOpenStackGetStackWithBody_200("UPDATE_COMPLETE");
162         UpdateVolumeGroupRequest request = buildUpdateVolumeGroupRequest();
163         HttpEntity<UpdateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
164         ResponseEntity<UpdateVolumeGroupResponse> response = restTemplate.exchange(
165                 createURLWithPort("/services/rest/v2/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.PUT,
166                 entity,UpdateVolumeGroupResponse.class);
167         assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
168     }
169
170     @Test
171     public void testUpdateVNFVolumesAsync() throws IOException {
172         mockOpenStackResponseAccess(wireMockPort);
173         mockOpenStackGetStacksWithBody_200("CREATE_COMPLETE");
174         mockOpenStackPutStack(VOUME_GROUP_NAME+"/stackId",200);
175         mockOpenStackGetStackWithBody_200("UPDATE_COMPLETE");
176         UpdateVolumeGroupRequest request = buildUpdateVolumeGroupRequest();
177         request.setNotificationUrl("http://localhost:8080");
178         HttpEntity<UpdateVolumeGroupRequest> entity = new HttpEntity<>(request, headers);
179         ResponseEntity<UpdateVolumeGroupResponse> response = restTemplate.exchange(
180                 createURLWithPort("/services/rest/v2/volume-groups/"+VOLUME_GROUP_ID), HttpMethod.PUT,
181                 entity,UpdateVolumeGroupResponse.class);
182         assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
183     }
184 }