2 * Copyright 2020 - 2021 ZTE Corporation.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.holmes.common.utils;
19 import org.easymock.EasyMock;
20 import org.junit.Rule;
21 import org.junit.Test;
22 import org.junit.rules.ExpectedException;
23 import org.junit.runner.RunWith;
24 import org.onap.holmes.common.exception.HttpException;
25 import org.powermock.api.easymock.PowerMock;
26 import org.powermock.core.classloader.annotations.PowerMockIgnore;
27 import org.powermock.modules.junit4.PowerMockRunner;
28 import org.powermock.reflect.internal.WhiteboxImpl;
30 import javax.ws.rs.client.Client;
31 import javax.ws.rs.client.Entity;
32 import javax.ws.rs.client.Invocation;
33 import javax.ws.rs.client.WebTarget;
34 import javax.ws.rs.core.MediaType;
35 import javax.ws.rs.core.Response;
36 import java.util.HashMap;
39 import static org.hamcrest.core.IsEqual.equalTo;
40 import static org.hamcrest.core.IsNull.nullValue;
41 import static org.junit.Assert.assertThat;
43 @RunWith(PowerMockRunner.class)
44 @PowerMockIgnore({"javax.net.ssl.*", "javax.security.*"})
45 public class JerseyClientTest {
47 private JerseyClient jerseyClient = JerseyClient.newInstance();
48 private String url = "http://www.onap.org/holmes/test";
51 public void get_normal() {
52 Client mockedClient = PowerMock.createMock(Client.class);
53 WebTarget mockedTarget = PowerMock.createMock(WebTarget.class);
54 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
55 Response mockedResponse = PowerMock.createMock(Response.class);
57 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
58 EasyMock.expect(mockedTarget.path("test")).andReturn(mockedTarget);
59 EasyMock.expect(mockedTarget.queryParam("ut", true)).andReturn(mockedTarget);
60 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
61 EasyMock.expect(mockedBuilder.header("Accept", MediaType.APPLICATION_JSON)).andReturn(mockedBuilder);
62 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
63 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
64 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
66 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
68 PowerMock.replayAll();
70 assertThat(jerseyClient.path("test")
71 .header("Accept", MediaType.APPLICATION_JSON)
72 .queryParam("ut", true)
73 .get(url), equalTo("Normal"));
75 PowerMock.verifyAll();
79 public void get_normal_with_class() {
80 Client mockedClient = PowerMock.createMock(Client.class);
81 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
82 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
83 Response mockedResponse = PowerMock.createMock(Response.class);
84 Bean bean = new Bean("name", "holmes");
86 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
87 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
88 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
89 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
90 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
92 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
94 PowerMock.replayAll();
96 assertThat(jerseyClient.get(url, Bean.class), equalTo(bean));
98 PowerMock.verifyAll();
102 public void get_normal_with_null_class_info() {
103 Client mockedClient = PowerMock.createMock(Client.class);
104 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
105 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
106 Response mockedResponse = PowerMock.createMock(Response.class);
108 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
109 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
110 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
111 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
112 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
114 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
116 PowerMock.replayAll();
118 assertThat(jerseyClient.get(url, null), equalTo("Normal"));
120 PowerMock.verifyAll();
124 public void get_fail() {
125 Client mockedClient = PowerMock.createMock(Client.class);
126 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
127 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
128 Response mockedResponse = PowerMock.createMock(Response.class);
130 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
131 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
132 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
133 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
134 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
136 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
138 PowerMock.replayAll();
140 assertThat(jerseyClient.get(url), nullValue());
142 PowerMock.verifyAll();
146 public void post_normal_no_body() {
147 Client mockedClient = PowerMock.createMock(Client.class);
148 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
149 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
150 Response mockedResponse = PowerMock.createMock(Response.class);
152 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
153 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
154 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
155 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
156 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
158 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
160 PowerMock.replayAll();
162 assertThat(jerseyClient.post(url), equalTo("Normal"));
164 PowerMock.verifyAll();
168 public void post_nobody_fail() {
169 Client mockedClient = PowerMock.createMock(Client.class);
170 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
171 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
172 Response mockedResponse = PowerMock.createMock(Response.class);
174 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
175 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
176 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
177 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
178 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
180 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
182 PowerMock.replayAll();
184 assertThat(jerseyClient.post(url), nullValue());
186 PowerMock.verifyAll();
190 public void post_normal_no_body_with_class() {
191 Client mockedClient = PowerMock.createMock(Client.class);
192 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
193 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
194 Response mockedResponse = PowerMock.createMock(Response.class);
195 Bean bean = new Bean("name", "holmes");
197 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
198 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
199 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
200 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
201 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
203 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
205 PowerMock.replayAll();
207 assertThat(jerseyClient.post(url, null, Bean.class), equalTo(bean));
209 PowerMock.verifyAll();
214 public void put_normal() {
215 Client mockedClient = PowerMock.createMock(Client.class);
216 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
217 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
218 Response mockedResponse = PowerMock.createMock(Response.class);
220 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
221 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
222 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
223 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
224 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
226 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
228 PowerMock.replayAll();
230 assertThat(jerseyClient.put(url, null), equalTo("Normal"));
232 PowerMock.verifyAll();
236 public void put_normal_with_class_info() {
237 Client mockedClient = PowerMock.createMock(Client.class);
238 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
239 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
240 Response mockedResponse = PowerMock.createMock(Response.class);
241 Bean bean = new Bean("name", "holmes");
243 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
244 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
245 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
246 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
247 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
249 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
251 PowerMock.replayAll();
253 assertThat(jerseyClient.put(url, null, Bean.class), equalTo(bean));
255 PowerMock.verifyAll();
259 public void put_normal_with_null_class_info() {
260 Client mockedClient = PowerMock.createMock(Client.class);
261 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
262 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
263 Response mockedResponse = PowerMock.createMock(Response.class);
264 Bean bean = new Bean("name", "holmes");
266 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
267 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
268 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
269 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
270 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
272 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
274 PowerMock.replayAll();
276 assertThat(jerseyClient.put(url, null, null), equalTo(GsonUtil.beanToJson(bean)));
278 PowerMock.verifyAll();
282 public void put_fail() {
283 Client mockedClient = PowerMock.createMock(Client.class);
284 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
285 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
286 Response mockedResponse = PowerMock.createMock(Response.class);
288 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
289 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
290 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
291 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
292 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
294 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
296 PowerMock.replayAll();
298 assertThat(jerseyClient.put(url, null, null), nullValue());
300 PowerMock.verifyAll();
305 public void delete_normal() {
306 Client mockedClient = PowerMock.createMock(Client.class);
307 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
308 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
309 Response mockedResponse = PowerMock.createMock(Response.class);
311 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
312 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
313 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
314 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
315 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
317 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
319 PowerMock.replayAll();
321 assertThat(jerseyClient.delete(url), equalTo("Normal"));
323 PowerMock.verifyAll();
327 public void delete_normal_with_class_info() {
328 Client mockedClient = PowerMock.createMock(Client.class);
329 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
330 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
331 Response mockedResponse = PowerMock.createMock(Response.class);
332 Bean bean = new Bean("name", "holmes");
334 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
335 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
336 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
337 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
338 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
340 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
342 PowerMock.replayAll();
344 assertThat(jerseyClient.delete(url, Bean.class), equalTo(bean));
346 PowerMock.verifyAll();
350 public void delete_with_null_class_info() {
351 Client mockedClient = PowerMock.createMock(Client.class);
352 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
353 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
354 Response mockedResponse = PowerMock.createMock(Response.class);
356 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
357 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
358 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
359 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
360 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
362 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
364 PowerMock.replayAll();
366 assertThat(jerseyClient.delete(url, null), equalTo("Normal"));
368 PowerMock.verifyAll();
372 public void delete_fail() {
373 Client mockedClient = PowerMock.createMock(Client.class);
374 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
375 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
376 Response mockedResponse = PowerMock.createMock(Response.class);
378 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
379 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
380 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
381 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
382 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
384 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
386 PowerMock.replayAll();
388 assertThat(jerseyClient.delete(url), nullValue());
390 PowerMock.verifyAll();
394 public void headers() {
395 Map<String, Object> hds = new HashMap<>();
396 jerseyClient.headers(hds);
400 public void queryParams() {
401 Map<String, Object> params = new HashMap<>();
402 jerseyClient.queryParams(params);
408 private String value;
410 public Bean(String name, String value) {
415 public String getName() {
419 public void setName(String name) {
423 public String getValue() {
427 public void setValue(String value) {
432 public int hashCode() {
433 int hName = name == null ? 0 : name.hashCode();
434 int hValue = value == null ? 0 : value.hashCode();
435 return hName << 1 + hValue >> 1;
439 public boolean equals(Object o) {
440 if (o == null || !(o instanceof Bean)) {
445 return name.equals(b.name) && value.equals(b.value);