2 * Copyright 2020 - 2022 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 jakarta.ws.rs.client.Client;
20 import jakarta.ws.rs.client.Entity;
21 import jakarta.ws.rs.client.Invocation;
22 import jakarta.ws.rs.client.WebTarget;
23 import jakarta.ws.rs.core.MediaType;
24 import jakarta.ws.rs.core.Response;
25 import org.easymock.EasyMock;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.powermock.api.easymock.PowerMock;
29 import org.powermock.core.classloader.annotations.PowerMockIgnore;
30 import org.powermock.modules.junit4.PowerMockRunner;
31 import org.powermock.reflect.internal.WhiteboxImpl;
33 import java.util.HashMap;
36 import static org.hamcrest.core.IsEqual.equalTo;
37 import static org.hamcrest.core.IsNull.nullValue;
38 import static org.junit.Assert.assertThat;
40 @RunWith(PowerMockRunner.class)
41 @PowerMockIgnore({"javax.net.ssl.*", "javax.security.*"})
42 public class JerseyClientTest {
44 private JerseyClient jerseyClient = JerseyClient.newInstance();
45 private String url = "http://www.onap.org/holmes/test";
48 public void get_normal() {
49 Client mockedClient = PowerMock.createMock(Client.class);
50 WebTarget mockedTarget = PowerMock.createMock(WebTarget.class);
51 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
52 Response mockedResponse = PowerMock.createMock(Response.class);
54 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
55 EasyMock.expect(mockedTarget.path("test")).andReturn(mockedTarget);
56 EasyMock.expect(mockedTarget.queryParam("ut", true)).andReturn(mockedTarget);
57 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
58 EasyMock.expect(mockedBuilder.header("Accept", MediaType.APPLICATION_JSON)).andReturn(mockedBuilder);
59 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
60 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
61 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
63 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
65 PowerMock.replayAll();
67 assertThat(jerseyClient.path("test")
68 .header("Accept", MediaType.APPLICATION_JSON)
69 .queryParam("ut", true)
70 .get(url), equalTo("Normal"));
72 PowerMock.verifyAll();
76 public void get_normal_with_class() {
77 Client mockedClient = PowerMock.createMock(Client.class);
78 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
79 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
80 Response mockedResponse = PowerMock.createMock(Response.class);
81 Bean bean = new Bean("name", "holmes");
83 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
84 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
85 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
86 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
87 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
89 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
91 PowerMock.replayAll();
93 assertThat(jerseyClient.get(url, Bean.class), equalTo(bean));
95 PowerMock.verifyAll();
99 public void get_normal_with_null_class_info() {
100 Client mockedClient = PowerMock.createMock(Client.class);
101 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
102 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
103 Response mockedResponse = PowerMock.createMock(Response.class);
105 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
106 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
107 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
108 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
109 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
111 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
113 PowerMock.replayAll();
115 assertThat(jerseyClient.get(url, null), equalTo("Normal"));
117 PowerMock.verifyAll();
121 public void get_fail() {
122 Client mockedClient = PowerMock.createMock(Client.class);
123 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
124 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
125 Response mockedResponse = PowerMock.createMock(Response.class);
127 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
128 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
129 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
130 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
131 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
133 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
135 PowerMock.replayAll();
137 assertThat(jerseyClient.get(url), nullValue());
139 PowerMock.verifyAll();
143 public void post_normal_no_body() {
144 Client mockedClient = PowerMock.createMock(Client.class);
145 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
146 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
147 Response mockedResponse = PowerMock.createMock(Response.class);
149 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
150 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
151 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
152 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
153 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
155 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
157 PowerMock.replayAll();
159 assertThat(jerseyClient.post(url), equalTo("Normal"));
161 PowerMock.verifyAll();
165 public void post_nobody_fail() {
166 Client mockedClient = PowerMock.createMock(Client.class);
167 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
168 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
169 Response mockedResponse = PowerMock.createMock(Response.class);
171 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
172 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
173 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
174 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
175 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
177 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
179 PowerMock.replayAll();
181 assertThat(jerseyClient.post(url), nullValue());
183 PowerMock.verifyAll();
187 public void post_normal_no_body_with_class() {
188 Client mockedClient = PowerMock.createMock(Client.class);
189 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
190 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
191 Response mockedResponse = PowerMock.createMock(Response.class);
192 Bean bean = new Bean("name", "holmes");
194 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
195 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
196 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
197 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
198 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
200 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
202 PowerMock.replayAll();
204 assertThat(jerseyClient.post(url, null, Bean.class), equalTo(bean));
206 PowerMock.verifyAll();
211 public void put_normal() {
212 Client mockedClient = PowerMock.createMock(Client.class);
213 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
214 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
215 Response mockedResponse = PowerMock.createMock(Response.class);
217 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
218 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
219 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
220 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
221 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
223 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
225 PowerMock.replayAll();
227 assertThat(jerseyClient.put(url, null), equalTo("Normal"));
229 PowerMock.verifyAll();
233 public void put_normal_with_class_info() {
234 Client mockedClient = PowerMock.createMock(Client.class);
235 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
236 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
237 Response mockedResponse = PowerMock.createMock(Response.class);
238 Bean bean = new Bean("name", "holmes");
240 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
241 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
242 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
243 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
244 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
246 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
248 PowerMock.replayAll();
250 assertThat(jerseyClient.put(url, null, Bean.class), equalTo(bean));
252 PowerMock.verifyAll();
256 public void put_normal_with_null_class_info() {
257 Client mockedClient = PowerMock.createMock(Client.class);
258 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
259 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
260 Response mockedResponse = PowerMock.createMock(Response.class);
261 Bean bean = new Bean("name", "holmes");
263 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
264 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
265 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
266 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
267 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
269 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
271 PowerMock.replayAll();
273 assertThat(jerseyClient.put(url, null, null), equalTo(GsonUtil.beanToJson(bean)));
275 PowerMock.verifyAll();
279 public void put_fail() {
280 Client mockedClient = PowerMock.createMock(Client.class);
281 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
282 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
283 Response mockedResponse = PowerMock.createMock(Response.class);
285 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
286 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
287 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
288 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
289 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
291 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
293 PowerMock.replayAll();
295 assertThat(jerseyClient.put(url, null, null), nullValue());
297 PowerMock.verifyAll();
302 public void delete_normal() {
303 Client mockedClient = PowerMock.createMock(Client.class);
304 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
305 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
306 Response mockedResponse = PowerMock.createMock(Response.class);
308 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
309 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
310 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
311 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
312 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
314 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
316 PowerMock.replayAll();
318 assertThat(jerseyClient.delete(url), equalTo("Normal"));
320 PowerMock.verifyAll();
324 public void delete_normal_with_class_info() {
325 Client mockedClient = PowerMock.createMock(Client.class);
326 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
327 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
328 Response mockedResponse = PowerMock.createMock(Response.class);
329 Bean bean = new Bean("name", "holmes");
331 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
332 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
333 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
334 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
335 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
337 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
339 PowerMock.replayAll();
341 assertThat(jerseyClient.delete(url, Bean.class), equalTo(bean));
343 PowerMock.verifyAll();
347 public void delete_with_null_class_info() {
348 Client mockedClient = PowerMock.createMock(Client.class);
349 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
350 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
351 Response mockedResponse = PowerMock.createMock(Response.class);
353 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
354 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
355 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
356 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.OK);
357 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
359 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
361 PowerMock.replayAll();
363 assertThat(jerseyClient.delete(url, null), equalTo("Normal"));
365 PowerMock.verifyAll();
369 public void delete_fail() {
370 Client mockedClient = PowerMock.createMock(Client.class);
371 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
372 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
373 Response mockedResponse = PowerMock.createMock(Response.class);
375 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
376 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
377 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
378 EasyMock.expect(mockedResponse.getStatusInfo()).andReturn(Response.Status.NOT_FOUND);
379 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
381 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
383 PowerMock.replayAll();
385 assertThat(jerseyClient.delete(url), nullValue());
387 PowerMock.verifyAll();
391 public void headers() {
392 Map<String, Object> hds = new HashMap<>();
393 jerseyClient.headers(hds);
397 public void queryParams() {
398 Map<String, Object> params = new HashMap<>();
399 jerseyClient.queryParams(params);
405 private String value;
407 public Bean(String name, String value) {
412 public String getName() {
416 public void setName(String name) {
420 public String getValue() {
424 public void setValue(String value) {
429 public int hashCode() {
430 int hName = name == null ? 0 : name.hashCode();
431 int hValue = value == null ? 0 : value.hashCode();
432 return hName << 1 + hValue >> 1;
436 public boolean equals(Object o) {
437 if (o == null || !(o instanceof Bean)) {
442 return name.equals(b.name) && value.equals(b.value);