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.junit.Assert.assertThat;
42 @RunWith(PowerMockRunner.class)
43 @PowerMockIgnore({"javax.net.ssl.*", "javax.security.*"})
44 public class JerseyClientTest {
46 private final String ERROR_MSG = "Status code: <404>. Message: Failed to get response from the server. Info: Error";
47 private JerseyClient jerseyClient = new JerseyClient();
48 private String url = "http://www.onap.org/holmes/test";
50 private ExpectedException exception = ExpectedException.none();
53 public void get_normal() {
54 Client mockedClient = PowerMock.createMock(Client.class);
55 WebTarget mockedTarget = PowerMock.createMock(WebTarget.class);
56 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
57 Response mockedResponse = PowerMock.createMock(Response.class);
59 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
60 EasyMock.expect(mockedTarget.path("test")).andReturn(mockedTarget);
61 EasyMock.expect(mockedTarget.queryParam("ut", true)).andReturn(mockedTarget);
62 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
63 EasyMock.expect(mockedBuilder.header("Accept", MediaType.APPLICATION_JSON)).andReturn(mockedBuilder);
64 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
65 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
66 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
68 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
70 PowerMock.replayAll();
72 assertThat(jerseyClient.path("test")
73 .header("Accept", MediaType.APPLICATION_JSON)
74 .queryParam("ut", true)
75 .get(url), equalTo("Normal"));
77 PowerMock.verifyAll();
81 public void get_normal_with_class() {
82 Client mockedClient = PowerMock.createMock(Client.class);
83 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
84 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
85 Response mockedResponse = PowerMock.createMock(Response.class);
86 Bean bean = new Bean("name", "holmes");
88 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
89 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
90 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
91 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
92 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
94 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
96 PowerMock.replayAll();
98 assertThat(jerseyClient.get(url, Bean.class), equalTo(bean));
100 PowerMock.verifyAll();
104 public void get_normal_with_null_class_info() {
105 Client mockedClient = PowerMock.createMock(Client.class);
106 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
107 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
108 Response mockedResponse = PowerMock.createMock(Response.class);
110 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
111 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
112 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
113 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
114 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
116 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
118 PowerMock.replayAll();
120 assertThat(jerseyClient.get(url, null), equalTo("Normal"));
122 PowerMock.verifyAll();
126 public void get_fail() {
127 Client mockedClient = PowerMock.createMock(Client.class);
128 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
129 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
130 Response mockedResponse = PowerMock.createMock(Response.class);
132 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
133 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
134 EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse);
135 EasyMock.expect(mockedResponse.getStatus()).andReturn(404);
136 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
138 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
140 exception.expect(HttpException.class);
141 exception.expectMessage(ERROR_MSG);
143 PowerMock.replayAll();
145 jerseyClient.get(url);
147 PowerMock.verifyAll();
151 public void post_normal_no_body() {
152 Client mockedClient = PowerMock.createMock(Client.class);
153 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
154 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
155 Response mockedResponse = PowerMock.createMock(Response.class);
157 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
158 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
159 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
160 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
161 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
163 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
165 PowerMock.replayAll();
167 assertThat(jerseyClient.post(url), equalTo("Normal"));
169 PowerMock.verifyAll();
173 public void post_nobody_fail() {
174 Client mockedClient = PowerMock.createMock(Client.class);
175 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
176 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
177 Response mockedResponse = PowerMock.createMock(Response.class);
179 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
180 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
181 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
182 EasyMock.expect(mockedResponse.getStatus()).andReturn(404);
183 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
185 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
187 exception.expect(HttpException.class);
188 exception.expectMessage(ERROR_MSG);
190 PowerMock.replayAll();
192 jerseyClient.post(url);
194 PowerMock.verifyAll();
198 public void post_normal_no_body_with_class() {
199 Client mockedClient = PowerMock.createMock(Client.class);
200 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
201 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class);
202 Response mockedResponse = PowerMock.createMock(Response.class);
203 Bean bean = new Bean("name", "holmes");
205 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
206 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
207 EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse);
208 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
209 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
211 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
213 PowerMock.replayAll();
215 assertThat(jerseyClient.post(url, null, Bean.class), equalTo(bean));
217 PowerMock.verifyAll();
222 public void put_normal() {
223 Client mockedClient = PowerMock.createMock(Client.class);
224 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
225 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
226 Response mockedResponse = PowerMock.createMock(Response.class);
228 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
229 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
230 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
231 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
232 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
234 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
236 PowerMock.replayAll();
238 assertThat(jerseyClient.put(url, null), equalTo("Normal"));
240 PowerMock.verifyAll();
244 public void put_normal_with_class_info() {
245 Client mockedClient = PowerMock.createMock(Client.class);
246 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
247 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
248 Response mockedResponse = PowerMock.createMock(Response.class);
249 Bean bean = new Bean("name", "holmes");
251 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
252 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
253 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
254 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
255 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
257 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
259 PowerMock.replayAll();
261 assertThat(jerseyClient.put(url, null, Bean.class), equalTo(bean));
263 PowerMock.verifyAll();
267 public void put_normal_with_null_class_info() {
268 Client mockedClient = PowerMock.createMock(Client.class);
269 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
270 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
271 Response mockedResponse = PowerMock.createMock(Response.class);
272 Bean bean = new Bean("name", "holmes");
274 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
275 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
276 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
277 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
278 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
280 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
282 PowerMock.replayAll();
284 assertThat(jerseyClient.put(url, null, null), equalTo(GsonUtil.beanToJson(bean)));
286 PowerMock.verifyAll();
290 public void put_fail() {
291 Client mockedClient = PowerMock.createMock(Client.class);
292 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
293 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class);
294 Response mockedResponse = PowerMock.createMock(Response.class);
296 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
297 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
298 EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse);
299 EasyMock.expect(mockedResponse.getStatus()).andReturn(404);
300 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
302 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
304 exception.expect(HttpException.class);
305 exception.expectMessage(ERROR_MSG);
307 PowerMock.replayAll();
309 jerseyClient.put(url, null, null);
311 PowerMock.verifyAll();
316 public void delete_normal() {
317 Client mockedClient = PowerMock.createMock(Client.class);
318 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
319 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
320 Response mockedResponse = PowerMock.createMock(Response.class);
322 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
323 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
324 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
325 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
326 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
328 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
330 PowerMock.replayAll();
332 assertThat(jerseyClient.delete(url), equalTo("Normal"));
334 PowerMock.verifyAll();
338 public void delete_normal_with_class_info() {
339 Client mockedClient = PowerMock.createMock(Client.class);
340 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
341 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get");
342 Response mockedResponse = PowerMock.createMock(Response.class);
343 Bean bean = new Bean("name", "holmes");
345 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
346 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
347 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
348 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
349 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean));
351 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
353 PowerMock.replayAll();
355 assertThat(jerseyClient.delete(url, Bean.class), equalTo(bean));
357 PowerMock.verifyAll();
361 public void delete_with_null_class_info() {
362 Client mockedClient = PowerMock.createMock(Client.class);
363 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
364 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
365 Response mockedResponse = PowerMock.createMock(Response.class);
367 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
368 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
369 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
370 EasyMock.expect(mockedResponse.getStatus()).andReturn(200);
371 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal");
373 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
375 PowerMock.replayAll();
377 assertThat(jerseyClient.delete(url, null), equalTo("Normal"));
379 PowerMock.verifyAll();
383 public void delete_fail() {
384 Client mockedClient = PowerMock.createMock(Client.class);
385 WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request");
386 Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete");
387 Response mockedResponse = PowerMock.createMock(Response.class);
389 EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget);
390 EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder);
391 EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse);
392 EasyMock.expect(mockedResponse.getStatus()).andReturn(404);
393 EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error");
395 WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient);
397 exception.expect(HttpException.class);
398 exception.expectMessage(ERROR_MSG);
400 PowerMock.replayAll();
402 jerseyClient.delete(url);
404 PowerMock.verifyAll();
408 public void headers() {
409 Map<String, Object> hds = new HashMap<>();
410 jerseyClient.headers(hds);
414 public void queryParams() {
415 Map<String, Object> params = new HashMap<>();
416 jerseyClient.queryParams(params);
422 private String value;
424 public Bean(String name, String value) {
429 public String getName() {
433 public void setName(String name) {
437 public String getValue() {
441 public void setValue(String value) {
446 public int hashCode() {
447 int hName = name == null ? 0 : name.hashCode();
448 int hValue = value == null ? 0 : value.hashCode();
449 return hName << 1 + hValue >> 1;
453 public boolean equals(Object o) {
454 if (o == null || !(o instanceof Bean)) {
459 return name.equals(b.name) && value.equals(b.value);