Containerization feature of SO
[so.git] / adapters / mso-openstack-adapters / src / test / java / org / onap / so / adapters / tenant / TenantAdapterRestTest.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.tenant;
22
23 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
24 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
25 import static org.junit.Assert.assertEquals;
26 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteTenantById_200;
27 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetMetadata_200;
28 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetRoles_200;
29 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetTenantById_200;
30 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetTenantById_404;
31 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetTenantByName_200;
32 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetTenantByName_404;
33 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetUser_200;
34 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostMetadata_200;
35 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostTenantWithBodyFile_200;
36 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostTenant_200;
37 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutRolesAdmin_200;
38 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccessAdmin;
39
40 import java.io.File;
41 import java.io.IOException;
42 import java.util.HashMap;
43 import java.util.Map;
44
45 import javax.ws.rs.core.MediaType;
46 import javax.ws.rs.core.Response;
47
48 import org.junit.Ignore;
49 import org.junit.Test;
50 import org.onap.so.adapters.tenantrest.CreateTenantRequest;
51 import org.onap.so.adapters.tenantrest.CreateTenantResponse;
52 import org.onap.so.adapters.tenantrest.DeleteTenantRequest;
53 import org.onap.so.adapters.tenantrest.DeleteTenantResponse;
54 import org.onap.so.adapters.vnf.BaseRestTestUtils;
55 import org.onap.so.client.policy.JettisonStyleMapperProvider;
56 import org.onap.so.cloud.CloudConfig;
57 import org.onap.so.entity.MsoRequest;
58 import org.springframework.beans.factory.annotation.Autowired;
59 import org.springframework.http.HttpEntity;
60 import org.springframework.http.HttpMethod;
61 import org.springframework.http.ResponseEntity;
62
63 import com.fasterxml.jackson.core.JsonParseException;
64 import com.fasterxml.jackson.databind.JsonMappingException;
65
66 public class TenantAdapterRestTest extends BaseRestTestUtils {
67
68         @Autowired
69         private CloudConfig cloudConfig;
70         @Autowired
71         private JettisonStyleMapperProvider jettisonTypeObjectMapper;
72         
73         @Test
74         public void testCreateTenantCreated() throws JsonParseException, JsonMappingException, IOException {
75                 
76                 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
77                 CreateTenantRequest request = new CreateTenantRequest();
78                 String cloudSiteId = "mtn13";
79                 String requestId = "62265093-277d-4388-9ba6-449838ade586";
80                 String serviceInstanceId = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
81                 String tenantName = "testingTenantName";
82                 boolean failIfExists = true;
83                 boolean backout = true;
84                 Map<String, String> metaData = new HashMap<>();
85                 metaData.put("key1", "value2");
86                 MsoRequest msoReq = new MsoRequest();
87                 msoReq.setRequestId(requestId);
88                 msoReq.setServiceInstanceId(serviceInstanceId);
89                 
90                 request.setCloudSiteId(cloudSiteId);
91                 request.setMsoRequest(msoReq);
92                 request.setTenantName(tenantName);
93                 request.setMetadata(metaData);
94                 request.setBackout(backout);
95                 request.setFailIfExists(failIfExists);
96                 
97                 mockOpenStackResponseAccessAdmin(wireMockPort);
98                 
99                 mockOpenStackGetTenantByName_404(tenantName);
100                 
101                 mockOpenStackPostTenantWithBodyFile_200();
102                 
103                 mockOpenStackGetUser_200("m93945");
104                 
105                 mockOpenStackGetRoles_200("OS-KSADM");
106                 
107                 mockOpenStackPutRolesAdmin_200("OS-KSADM");
108                 
109                 mockOpenStackPostMetadata_200();
110                 
111                 headers.add("Accept", MediaType.APPLICATION_JSON);
112                 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
113
114                 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
115                                 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
116                                 entity, CreateTenantResponse.class);
117
118                 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
119                                 new File("src/test/resources/__files/CreateTenantResponse_Created.json"), CreateTenantResponse.class);
120
121                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
122                 assertThat(response.getBody(), sameBeanAs(expectedResponse)); 
123         }
124         
125         @Test
126         public void testCreateTenantExists() throws JsonParseException, JsonMappingException, IOException {
127                 
128                 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
129                 CreateTenantRequest request = new CreateTenantRequest();
130                 String cloudSiteId = "mtn13";
131                 String requestId = "62265093-277d-4388-9ba6-449838ade586";
132                 String serviceInstanceId = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
133                 String tenantName = "testingTenantName";
134                 boolean failIfExists = false;
135                 boolean backout = true;
136                 Map<String, String> metadata = new HashMap<>();
137                 
138                 MsoRequest msoReq = new MsoRequest();
139                 msoReq.setRequestId(requestId);
140                 msoReq.setServiceInstanceId(serviceInstanceId);
141                 
142                 request.setCloudSiteId(cloudSiteId);
143                 request.setMsoRequest(msoReq);
144                 request.setTenantName(tenantName);
145                 request.setMetadata(metadata);
146                 request.setBackout(backout);
147                 request.setFailIfExists(failIfExists);
148
149                 mockOpenStackResponseAccessAdmin(wireMockPort);
150                 
151                 mockOpenStackGetTenantByName_200(tenantName);
152                 
153                 mockOpenStackPostTenant_200();
154                 
155                 mockOpenStackGetMetadata_200();
156                 
157                 headers.add("Accept", MediaType.APPLICATION_JSON);
158                 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
159
160                 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
161                                 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
162                                 entity, CreateTenantResponse.class);
163
164                 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
165                                 new File("src/test/resources/__files/CreateTenantResponse_Exists.json"), CreateTenantResponse.class);
166
167                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
168                 assertThat(response.getBody(), sameBeanAs(expectedResponse));
169         }
170         
171         @Test
172         public void testDeleteTenant() throws IOException {
173                 
174                 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
175                 DeleteTenantRequest request = new DeleteTenantRequest();
176                 String cloudSiteId = "mtn13";
177                 String tenantId = "tenantId";
178                 String requestId = "ra1";
179                 String serviceInstanceId = "sa1";
180                 
181                 MsoRequest msoReq = new MsoRequest();
182                 msoReq.setRequestId(requestId);
183                 msoReq.setServiceInstanceId(serviceInstanceId);
184                 
185                 request.setCloudSiteId(cloudSiteId);
186                 request.setTenantId(tenantId);
187                 request.setMsoRequest(msoReq);
188                 
189                 mockOpenStackResponseAccessAdmin(wireMockPort);
190                 
191                 mockOpenStackGetTenantById_200(tenantId);
192                 
193                 mockOpenStackDeleteTenantById_200(tenantId);
194                 
195                 headers.add("Accept", MediaType.APPLICATION_JSON);
196                 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
197
198                 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
199                                 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
200                                 entity, DeleteTenantResponse.class);
201                 
202                 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
203                                 new File("src/test/resources/__files/DeleteTenantResponse_Success.json"), DeleteTenantResponse.class);
204
205                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
206                 assertThat(response.getBody(), sameBeanAs(expectedResponse));
207         }
208         
209         //@Ignore
210         @Test
211         public void testDeleteTenantFails() throws IOException {
212                 
213                 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
214                 DeleteTenantRequest request = new DeleteTenantRequest();
215                 String cloudSiteId = "mtn13";
216                 String tenantId = "tenantId";
217                 String requestId = "ra1";
218                 String serviceInstanceId = "sa1";
219                 
220                 MsoRequest msoReq = new MsoRequest();
221                 msoReq.setRequestId(requestId);
222                 msoReq.setServiceInstanceId(serviceInstanceId);
223                 
224                 request.setCloudSiteId(cloudSiteId);
225                 request.setTenantId(tenantId);
226                 request.setMsoRequest(msoReq);
227                 
228                 mockOpenStackResponseAccessAdmin(wireMockPort);
229
230                 mockOpenStackGetTenantById_404(tenantId);
231                 
232                 headers.add("Accept", MediaType.APPLICATION_JSON);
233                 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
234
235                 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
236                                 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
237                                 entity, DeleteTenantResponse.class);
238                 
239                 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
240                                 new File("src/test/resources/__files/DeleteTenantResponse_Failed.json"), DeleteTenantResponse.class);
241
242                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
243                 assertThat(response.getBody(), sameBeanAs(expectedResponse));
244         }
245         
246         @Ignore
247         @Test
248         public void testQuaryTenant() {
249                 
250                 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");
251
252                 
253         }
254 }