2 * ============LICENSE_START=======================================================
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
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.tenant;
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;
41 import java.io.IOException;
42 import java.util.HashMap;
45 import javax.ws.rs.core.MediaType;
46 import javax.ws.rs.core.Response;
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;
63 import com.fasterxml.jackson.core.JsonParseException;
64 import com.fasterxml.jackson.databind.JsonMappingException;
66 public class TenantAdapterRestTest extends BaseRestTestUtils {
69 private CloudConfig cloudConfig;
71 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
74 public void testCreateTenantCreated() throws JsonParseException, JsonMappingException, IOException {
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);
90 request.setCloudSiteId(cloudSiteId);
91 request.setMsoRequest(msoReq);
92 request.setTenantName(tenantName);
93 request.setMetadata(metaData);
94 request.setBackout(backout);
95 request.setFailIfExists(failIfExists);
97 mockOpenStackResponseAccessAdmin(wireMockPort);
99 mockOpenStackGetTenantByName_404(tenantName);
101 mockOpenStackPostTenantWithBodyFile_200();
103 mockOpenStackGetUser_200("m93945");
105 mockOpenStackGetRoles_200("OS-KSADM");
107 mockOpenStackPutRolesAdmin_200("OS-KSADM");
109 mockOpenStackPostMetadata_200();
111 headers.add("Accept", MediaType.APPLICATION_JSON);
112 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
114 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
115 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
116 entity, CreateTenantResponse.class);
118 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
119 new File("src/test/resources/__files/CreateTenantResponse_Created.json"), CreateTenantResponse.class);
121 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
122 assertThat(response.getBody(), sameBeanAs(expectedResponse));
126 public void testCreateTenantExists() throws JsonParseException, JsonMappingException, IOException {
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<>();
138 MsoRequest msoReq = new MsoRequest();
139 msoReq.setRequestId(requestId);
140 msoReq.setServiceInstanceId(serviceInstanceId);
142 request.setCloudSiteId(cloudSiteId);
143 request.setMsoRequest(msoReq);
144 request.setTenantName(tenantName);
145 request.setMetadata(metadata);
146 request.setBackout(backout);
147 request.setFailIfExists(failIfExists);
149 mockOpenStackResponseAccessAdmin(wireMockPort);
151 mockOpenStackGetTenantByName_200(tenantName);
153 mockOpenStackPostTenant_200();
155 mockOpenStackGetMetadata_200();
157 headers.add("Accept", MediaType.APPLICATION_JSON);
158 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
160 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
161 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
162 entity, CreateTenantResponse.class);
164 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
165 new File("src/test/resources/__files/CreateTenantResponse_Exists.json"), CreateTenantResponse.class);
167 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
168 assertThat(response.getBody(), sameBeanAs(expectedResponse));
172 public void testDeleteTenant() throws IOException {
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";
181 MsoRequest msoReq = new MsoRequest();
182 msoReq.setRequestId(requestId);
183 msoReq.setServiceInstanceId(serviceInstanceId);
185 request.setCloudSiteId(cloudSiteId);
186 request.setTenantId(tenantId);
187 request.setMsoRequest(msoReq);
189 mockOpenStackResponseAccessAdmin(wireMockPort);
191 mockOpenStackGetTenantById_200(tenantId);
193 mockOpenStackDeleteTenantById_200(tenantId);
195 headers.add("Accept", MediaType.APPLICATION_JSON);
196 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
198 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
199 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
200 entity, DeleteTenantResponse.class);
202 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
203 new File("src/test/resources/__files/DeleteTenantResponse_Success.json"), DeleteTenantResponse.class);
205 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
206 assertThat(response.getBody(), sameBeanAs(expectedResponse));
211 public void testDeleteTenantFails() throws IOException {
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";
220 MsoRequest msoReq = new MsoRequest();
221 msoReq.setRequestId(requestId);
222 msoReq.setServiceInstanceId(serviceInstanceId);
224 request.setCloudSiteId(cloudSiteId);
225 request.setTenantId(tenantId);
226 request.setMsoRequest(msoReq);
228 mockOpenStackResponseAccessAdmin(wireMockPort);
230 mockOpenStackGetTenantById_404(tenantId);
232 headers.add("Accept", MediaType.APPLICATION_JSON);
233 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
235 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
236 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
237 entity, DeleteTenantResponse.class);
239 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
240 new File("src/test/resources/__files/DeleteTenantResponse_Failed.json"), DeleteTenantResponse.class);
242 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
243 assertThat(response.getBody(), sameBeanAs(expectedResponse));
248 public void testQuaryTenant() {
250 cloudConfig.getIdentityService("MTN13").setIdentityUrl("http://localhost:" + wireMockPort + "/v2.0");