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.entity.MsoRequest;
57 import org.springframework.beans.factory.annotation.Autowired;
58 import org.springframework.http.HttpEntity;
59 import org.springframework.http.HttpMethod;
60 import org.springframework.http.ResponseEntity;
62 import com.fasterxml.jackson.core.JsonParseException;
63 import com.fasterxml.jackson.databind.JsonMappingException;
65 public class TenantAdapterRestTest extends BaseRestTestUtils {
68 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
71 public void testCreateTenantCreated() throws JsonParseException, JsonMappingException, IOException {
73 CreateTenantRequest request = new CreateTenantRequest();
74 String cloudSiteId = "MTN13";
75 String requestId = "62265093-277d-4388-9ba6-449838ade586";
76 String serviceInstanceId = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
77 String tenantName = "testingTenantName";
78 boolean failIfExists = true;
79 boolean backout = true;
80 Map<String, String> metaData = new HashMap<>();
81 metaData.put("key1", "value2");
82 MsoRequest msoReq = new MsoRequest();
83 msoReq.setRequestId(requestId);
84 msoReq.setServiceInstanceId(serviceInstanceId);
86 request.setCloudSiteId(cloudSiteId);
87 request.setMsoRequest(msoReq);
88 request.setTenantName(tenantName);
89 request.setMetadata(metaData);
90 request.setBackout(backout);
91 request.setFailIfExists(failIfExists);
93 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
95 mockOpenStackGetTenantByName_404(wireMockServer, tenantName);
97 mockOpenStackPostTenantWithBodyFile_200(wireMockServer);
99 mockOpenStackGetUser_200(wireMockServer, "m93945");
101 mockOpenStackGetRoles_200(wireMockServer, "OS-KSADM");
103 mockOpenStackPutRolesAdmin_200(wireMockServer, "OS-KSADM");
105 mockOpenStackPostMetadata_200(wireMockServer);
107 headers.add("Accept", MediaType.APPLICATION_JSON);
108 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
110 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
111 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
112 entity, CreateTenantResponse.class);
114 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
115 new File("src/test/resources/__files/CreateTenantResponse_Created.json"), CreateTenantResponse.class);
117 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
118 assertThat(response.getBody(), sameBeanAs(expectedResponse));
122 public void testCreateTenantExists() throws JsonParseException, JsonMappingException, IOException {
124 CreateTenantRequest request = new CreateTenantRequest();
125 String cloudSiteId = "MTN13";
126 String requestId = "62265093-277d-4388-9ba6-449838ade586";
127 String serviceInstanceId = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
128 String tenantName = "testingTenantName";
129 boolean failIfExists = false;
130 boolean backout = true;
131 Map<String, String> metadata = new HashMap<>();
133 MsoRequest msoReq = new MsoRequest();
134 msoReq.setRequestId(requestId);
135 msoReq.setServiceInstanceId(serviceInstanceId);
137 request.setCloudSiteId(cloudSiteId);
138 request.setMsoRequest(msoReq);
139 request.setTenantName(tenantName);
140 request.setMetadata(metadata);
141 request.setBackout(backout);
142 request.setFailIfExists(failIfExists);
144 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
146 mockOpenStackGetTenantByName_200(wireMockServer, tenantName);
148 mockOpenStackPostTenant_200(wireMockServer);
150 mockOpenStackGetMetadata_200(wireMockServer);
152 headers.add("Accept", MediaType.APPLICATION_JSON);
153 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
155 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
156 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
157 entity, CreateTenantResponse.class);
159 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
160 new File("src/test/resources/__files/CreateTenantResponse_Exists.json"), CreateTenantResponse.class);
162 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
163 assertThat(response.getBody(), sameBeanAs(expectedResponse));
167 public void testDeleteTenant() throws IOException {
169 DeleteTenantRequest request = new DeleteTenantRequest();
170 String cloudSiteId = "mtn13";
171 String tenantId = "tenantId";
172 String requestId = "ra1";
173 String serviceInstanceId = "sa1";
175 MsoRequest msoReq = new MsoRequest();
176 msoReq.setRequestId(requestId);
177 msoReq.setServiceInstanceId(serviceInstanceId);
179 request.setCloudSiteId(cloudSiteId);
180 request.setTenantId(tenantId);
181 request.setMsoRequest(msoReq);
183 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
185 mockOpenStackGetTenantById_200(wireMockServer, tenantId);
187 mockOpenStackDeleteTenantById_200(wireMockServer, tenantId);
189 headers.add("Accept", MediaType.APPLICATION_JSON);
190 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
192 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
193 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
194 entity, DeleteTenantResponse.class);
196 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
197 new File("src/test/resources/__files/DeleteTenantResponse_Success.json"), DeleteTenantResponse.class);
199 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
200 assertThat(response.getBody(), sameBeanAs(expectedResponse));
205 public void testDeleteTenantFails() throws IOException {
207 DeleteTenantRequest request = new DeleteTenantRequest();
208 String cloudSiteId = "mtn13";
209 String tenantId = "tenantId";
210 String requestId = "ra1";
211 String serviceInstanceId = "sa1";
213 MsoRequest msoReq = new MsoRequest();
214 msoReq.setRequestId(requestId);
215 msoReq.setServiceInstanceId(serviceInstanceId);
217 request.setCloudSiteId(cloudSiteId);
218 request.setTenantId(tenantId);
219 request.setMsoRequest(msoReq);
221 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
223 mockOpenStackGetTenantById_404(wireMockServer, tenantId);
225 headers.add("Accept", MediaType.APPLICATION_JSON);
226 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
228 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
229 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
230 entity, DeleteTenantResponse.class);
232 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
233 new File("src/test/resources/__files/DeleteTenantResponse_Failed.json"), DeleteTenantResponse.class);
235 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
236 assertThat(response.getBody(), sameBeanAs(expectedResponse));
241 public void testQuaryTenant() {