replace all fixed wiremock ports
[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.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;
61
62 import com.fasterxml.jackson.core.JsonParseException;
63 import com.fasterxml.jackson.databind.JsonMappingException;
64
65 public class TenantAdapterRestTest extends BaseRestTestUtils {
66
67         @Autowired
68         private JettisonStyleMapperProvider jettisonTypeObjectMapper;
69         
70         @Test
71         public void testCreateTenantCreated() throws JsonParseException, JsonMappingException, IOException {
72                 
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);
85                 
86                 request.setCloudSiteId(cloudSiteId);
87                 request.setMsoRequest(msoReq);
88                 request.setTenantName(tenantName);
89                 request.setMetadata(metaData);
90                 request.setBackout(backout);
91                 request.setFailIfExists(failIfExists);
92                 
93                 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
94                 
95                 mockOpenStackGetTenantByName_404(wireMockServer, tenantName);
96                 
97                 mockOpenStackPostTenantWithBodyFile_200(wireMockServer);
98                 
99                 mockOpenStackGetUser_200(wireMockServer, "m93945");
100                 
101                 mockOpenStackGetRoles_200(wireMockServer, "OS-KSADM");
102                 
103                 mockOpenStackPutRolesAdmin_200(wireMockServer, "OS-KSADM");
104                 
105                 mockOpenStackPostMetadata_200(wireMockServer);
106                 
107                 headers.add("Accept", MediaType.APPLICATION_JSON);
108                 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
109
110                 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
111                                 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
112                                 entity, CreateTenantResponse.class);
113
114                 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
115                                 new File("src/test/resources/__files/CreateTenantResponse_Created.json"), CreateTenantResponse.class);
116
117                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
118                 assertThat(response.getBody(), sameBeanAs(expectedResponse)); 
119         }
120         
121         @Test
122         public void testCreateTenantExists() throws JsonParseException, JsonMappingException, IOException {
123                 
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<>();
132                 
133                 MsoRequest msoReq = new MsoRequest();
134                 msoReq.setRequestId(requestId);
135                 msoReq.setServiceInstanceId(serviceInstanceId);
136                 
137                 request.setCloudSiteId(cloudSiteId);
138                 request.setMsoRequest(msoReq);
139                 request.setTenantName(tenantName);
140                 request.setMetadata(metadata);
141                 request.setBackout(backout);
142                 request.setFailIfExists(failIfExists);
143
144                 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
145                 
146                 mockOpenStackGetTenantByName_200(wireMockServer, tenantName);
147                 
148                 mockOpenStackPostTenant_200(wireMockServer);
149                 
150                 mockOpenStackGetMetadata_200(wireMockServer);
151                 
152                 headers.add("Accept", MediaType.APPLICATION_JSON);
153                 HttpEntity<CreateTenantRequest> entity = new HttpEntity<CreateTenantRequest>(request, headers);
154
155                 ResponseEntity<CreateTenantResponse> response = restTemplate.exchange(
156                                 createURLWithPort("/services/rest/v1/tenants"), HttpMethod.POST,
157                                 entity, CreateTenantResponse.class);
158
159                 CreateTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
160                                 new File("src/test/resources/__files/CreateTenantResponse_Exists.json"), CreateTenantResponse.class);
161
162                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
163                 assertThat(response.getBody(), sameBeanAs(expectedResponse));
164         }
165         
166         @Test
167         public void testDeleteTenant() throws IOException {
168                 
169                 DeleteTenantRequest request = new DeleteTenantRequest();
170                 String cloudSiteId = "mtn13";
171                 String tenantId = "tenantId";
172                 String requestId = "ra1";
173                 String serviceInstanceId = "sa1";
174                 
175                 MsoRequest msoReq = new MsoRequest();
176                 msoReq.setRequestId(requestId);
177                 msoReq.setServiceInstanceId(serviceInstanceId);
178                 
179                 request.setCloudSiteId(cloudSiteId);
180                 request.setTenantId(tenantId);
181                 request.setMsoRequest(msoReq);
182                 
183                 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
184                 
185                 mockOpenStackGetTenantById_200(wireMockServer, tenantId);
186                 
187                 mockOpenStackDeleteTenantById_200(wireMockServer, tenantId);
188                 
189                 headers.add("Accept", MediaType.APPLICATION_JSON);
190                 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
191
192                 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
193                                 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
194                                 entity, DeleteTenantResponse.class);
195                 
196                 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
197                                 new File("src/test/resources/__files/DeleteTenantResponse_Success.json"), DeleteTenantResponse.class);
198
199                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
200                 assertThat(response.getBody(), sameBeanAs(expectedResponse));
201         }
202         
203         //@Ignore
204         @Test
205         public void testDeleteTenantFails() throws IOException {
206                 
207                 DeleteTenantRequest request = new DeleteTenantRequest();
208                 String cloudSiteId = "mtn13";
209                 String tenantId = "tenantId";
210                 String requestId = "ra1";
211                 String serviceInstanceId = "sa1";
212                 
213                 MsoRequest msoReq = new MsoRequest();
214                 msoReq.setRequestId(requestId);
215                 msoReq.setServiceInstanceId(serviceInstanceId);
216                 
217                 request.setCloudSiteId(cloudSiteId);
218                 request.setTenantId(tenantId);
219                 request.setMsoRequest(msoReq);
220                 
221                 mockOpenStackResponseAccessAdmin(wireMockServer, wireMockPort);
222
223                 mockOpenStackGetTenantById_404(wireMockServer, tenantId);
224                 
225                 headers.add("Accept", MediaType.APPLICATION_JSON);
226                 HttpEntity<DeleteTenantRequest> entity = new HttpEntity<DeleteTenantRequest>(request, headers);
227
228                 ResponseEntity<DeleteTenantResponse> response = restTemplate.exchange(
229                                 createURLWithPort("/services/rest/v1/tenants/tenantId"), HttpMethod.DELETE,
230                                 entity, DeleteTenantResponse.class);
231                 
232                 DeleteTenantResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
233                                 new File("src/test/resources/__files/DeleteTenantResponse_Failed.json"), DeleteTenantResponse.class);
234
235                 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
236                 assertThat(response.getBody(), sameBeanAs(expectedResponse));
237         }
238         
239         @Ignore
240         @Test
241         public void testQuaryTenant() {
242                 
243
244                 
245         }
246 }