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;
40 import java.io.IOException;
41 import java.util.HashMap;
43 import javax.ws.rs.core.MediaType;
44 import javax.ws.rs.core.Response;
45 import org.junit.Ignore;
46 import org.junit.Test;
47 import org.onap.so.adapters.tenantrest.CreateTenantRequest;
48 import org.onap.so.adapters.tenantrest.CreateTenantResponse;
49 import org.onap.so.adapters.tenantrest.DeleteTenantRequest;
50 import org.onap.so.adapters.tenantrest.DeleteTenantResponse;
51 import org.onap.so.adapters.vnf.BaseRestTestUtils;
52 import org.onap.so.client.policy.JettisonStyleMapperProvider;
53 import org.onap.so.entity.MsoRequest;
54 import org.springframework.beans.factory.annotation.Autowired;
55 import org.springframework.http.HttpEntity;
56 import org.springframework.http.HttpMethod;
57 import org.springframework.http.ResponseEntity;
58 import com.fasterxml.jackson.core.JsonParseException;
59 import com.fasterxml.jackson.databind.JsonMappingException;
61 public class TenantAdapterRestTest extends BaseRestTestUtils {
64 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
67 public void testCreateTenantCreated() throws JsonParseException, JsonMappingException, IOException {
69 CreateTenantRequest request = new CreateTenantRequest();
70 String cloudSiteId = "MTN13";
71 String requestId = "62265093-277d-4388-9ba6-449838ade586";
72 String serviceInstanceId = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
73 String tenantName = "testingTenantName";
74 boolean failIfExists = true;
75 boolean backout = true;
76 Map<String, String> metaData = new HashMap<>();
77 metaData.put("key1", "value2");
78 MsoRequest msoReq = new MsoRequest();
79 msoReq.setRequestId(requestId);
80 msoReq.setServiceInstanceId(serviceInstanceId);
82 request.setCloudSiteId(cloudSiteId);
83 request.setMsoRequest(msoReq);
84 request.setTenantName(tenantName);
85 request.setMetadata(metaData);
86 request.setBackout(backout);
87 request.setFailIfExists(failIfExists);
89 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
91 mockOpenStackGetTenantByName_404(wireMockServer, tenantName);
93 mockOpenStackPostTenantWithBodyFile_200(wireMockServer);
95 mockOpenStackGetUser_200(wireMockServer, "m93945");
97 mockOpenStackGetRoles_200(wireMockServer, "OS-KSADM");
99 mockOpenStackPutRolesAdmin_200(wireMockServer, "OS-KSADM");
101 mockOpenStackPostMetadata_200(wireMockServer);
103 headers.add("Accept", MediaType.APPLICATION_JSON);
104 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
106 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
107 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST, entity, CreateTenantResponse.class);
109 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
110 new File("src/test/resources/__files/CreateTenantResponse_Created.json"), CreateTenantResponse.class);
112 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
113 assertThat(response.getBody(), sameBeanAs(expectedResponse));
117 public void testCreateTenantExists() throws JsonParseException, JsonMappingException, IOException {
119 CreateTenantRequest request = new CreateTenantRequest();
120 String cloudSiteId = "MTN13";
121 String requestId = "62265093-277d-4388-9ba6-449838ade586";
122 String serviceInstanceId = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
123 String tenantName = "testingTenantName";
124 boolean failIfExists = false;
125 boolean backout = true;
126 Map<String, String> metadata = new HashMap<>();
128 MsoRequest msoReq = new MsoRequest();
129 msoReq.setRequestId(requestId);
130 msoReq.setServiceInstanceId(serviceInstanceId);
132 request.setCloudSiteId(cloudSiteId);
133 request.setMsoRequest(msoReq);
134 request.setTenantName(tenantName);
135 request.setMetadata(metadata);
136 request.setBackout(backout);
137 request.setFailIfExists(failIfExists);
139 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
141 mockOpenStackGetTenantByName_200(wireMockServer, tenantName);
143 mockOpenStackPostTenant_200(wireMockServer);
145 mockOpenStackGetMetadata_200(wireMockServer);
147 headers.add("Accept", MediaType.APPLICATION_JSON);
148 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
150 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
151 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST, entity, CreateTenantResponse.class);
153 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
154 new File("src/test/resources/__files/CreateTenantResponse_Exists.json"), CreateTenantResponse.class);
156 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
157 assertThat(response.getBody(), sameBeanAs(expectedResponse));
161 public void testDeleteTenant() throws IOException {
163 DeleteTenantRequest request = new DeleteTenantRequest();
164 String cloudSiteId = "mtn13";
165 String tenantId = "tenantId";
166 String requestId = "ra1";
167 String serviceInstanceId = "sa1";
169 MsoRequest msoReq = new MsoRequest();
170 msoReq.setRequestId(requestId);
171 msoReq.setServiceInstanceId(serviceInstanceId);
173 request.setCloudSiteId(cloudSiteId);
174 request.setTenantId(tenantId);
175 request.setMsoRequest(msoReq);
177 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
179 mockOpenStackGetTenantById_200(wireMockServer, tenantId);
181 mockOpenStackDeleteTenantById_200(wireMockServer, tenantId);
183 headers.add("Accept", MediaType.APPLICATION_JSON);
184 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
186 ResponseEntity<DeleteTenantResponse> response =
187 restTemplate.exchange(createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
188 entity, DeleteTenantResponse.class);
190 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
191 new File("src/test/resources/__files/DeleteTenantResponse_Success.json"), DeleteTenantResponse.class);
193 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
194 assertThat(response.getBody(), sameBeanAs(expectedResponse));
199 public void testDeleteTenantFails() throws IOException {
201 DeleteTenantRequest request = new DeleteTenantRequest();
202 String cloudSiteId = "mtn13";
203 String tenantId = "tenantId";
204 String requestId = "ra1";
205 String serviceInstanceId = "sa1";
207 MsoRequest msoReq = new MsoRequest();
208 msoReq.setRequestId(requestId);
209 msoReq.setServiceInstanceId(serviceInstanceId);
211 request.setCloudSiteId(cloudSiteId);
212 request.setTenantId(tenantId);
213 request.setMsoRequest(msoReq);
215 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
217 mockOpenStackGetTenantById_404(wireMockServer, tenantId);
219 headers.add("Accept", MediaType.APPLICATION_JSON);
220 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
222 ResponseEntity<DeleteTenantResponse> response =
223 restTemplate.exchange(createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
224 entity, DeleteTenantResponse.class);
226 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
227 new File("src/test/resources/__files/DeleteTenantResponse_Failed.json"), DeleteTenantResponse.class);
229 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
230 assertThat(response.getBody(), sameBeanAs(expectedResponse));
235 public void testQuaryTenant() {