X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=holmes-actions%2Fsrc%2Ftest%2Fjava%2Forg%2Fonap%2Fholmes%2Fcommon%2Futils%2FJerseyClientTest.java;h=01837401e490512a4ce95a2e4e664f06ba6604b7;hb=6af8af01fb0cdceb384cf47cf241736620510465;hp=6c95ccb2f5c193c13b690ef42d8c631e22285085;hpb=459e4faa15c47f39c7400000cb15ca2d2123e70f;p=holmes%2Fcommon.git diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/utils/JerseyClientTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/utils/JerseyClientTest.java index 6c95ccb..0183740 100644 --- a/holmes-actions/src/test/java/org/onap/holmes/common/utils/JerseyClientTest.java +++ b/holmes-actions/src/test/java/org/onap/holmes/common/utils/JerseyClientTest.java @@ -1,5 +1,5 @@ /** - * Copyright 2020 ZTE Corporation. + * Copyright 2020 - 2021 ZTE Corporation. *

* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,32 +16,446 @@ package org.onap.holmes.common.utils; +import org.easymock.EasyMock; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.onap.holmes.common.exception.HttpException; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.reflect.internal.WhiteboxImpl; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.Entity; +import javax.ws.rs.client.Invocation; +import javax.ws.rs.client.WebTarget; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; +import java.util.HashMap; +import java.util.Map; + +import static org.hamcrest.core.IsEqual.equalTo; +import static org.junit.Assert.assertThat; + +@RunWith(PowerMockRunner.class) +@PowerMockIgnore({"javax.net.ssl.*", "javax.security.*"}) public class JerseyClientTest { + private final String ERROR_MSG = "Status code: <404>. Message: Failed to get response from the server. Info: Error"; private JerseyClient jerseyClient = new JerseyClient(); + private String url = "http://www.onap.org/holmes/test"; + @Rule + private ExpectedException exception = ExpectedException.none(); + + @Test + public void get_normal() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createMock(WebTarget.class); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get"); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.path("test")).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.queryParam("ut", true)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.header("Accept", MediaType.APPLICATION_JSON)).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.path("test") + .header("Accept", MediaType.APPLICATION_JSON) + .queryParam("ut", true) + .get(url), equalTo("Normal")); + + PowerMock.verifyAll(); + } + + @Test + public void get_normal_with_class() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get"); + Response mockedResponse = PowerMock.createMock(Response.class); + Bean bean = new Bean("name", "holmes"); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean)); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.get(url, Bean.class), equalTo(bean)); + + PowerMock.verifyAll(); + } + + @Test + public void get_normal_with_null_class_info() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get"); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.get(url, null), equalTo("Normal")); + + PowerMock.verifyAll(); + } + + @Test + public void get_fail() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get"); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.get()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(404); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + exception.expect(HttpException.class); + exception.expectMessage(ERROR_MSG); + + PowerMock.replayAll(); + + jerseyClient.get(url); + + PowerMock.verifyAll(); + } + + @Test + public void post_normal_no_body() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.post(url), equalTo("Normal")); + + PowerMock.verifyAll(); + } + + @Test + public void post_nobody_fail() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(404); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + exception.expect(HttpException.class); + exception.expectMessage(ERROR_MSG); + + PowerMock.replayAll(); + + jerseyClient.post(url); + + PowerMock.verifyAll(); + } + + @Test + public void post_normal_no_body_with_class() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "post", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + Bean bean = new Bean("name", "holmes"); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.post(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean)); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.post(url, null, Bean.class), equalTo(bean)); + + PowerMock.verifyAll(); + } + + + @Test + public void put_normal() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.put(url, null), equalTo("Normal")); + + PowerMock.verifyAll(); + } @Test - public void http() { - jerseyClient.httpClient(); + public void put_normal_with_class_info() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + Bean bean = new Bean("name", "holmes"); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean)); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.put(url, null, Bean.class), equalTo(bean)); + + PowerMock.verifyAll(); } @Test - public void https() throws Exception { - WhiteboxImpl.invokeMethod(jerseyClient, "init"); - jerseyClient.httpsClient(); + public void put_normal_with_null_class_info() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + Bean bean = new Bean("name", "holmes"); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean)); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.put(url, null, null), equalTo(GsonUtil.beanToJson(bean))); + + PowerMock.verifyAll(); } @Test - public void clientHttp() { - jerseyClient.client(false); + public void put_fail() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "put", Entity.class); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.put(null)).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(404); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + exception.expect(HttpException.class); + exception.expectMessage(ERROR_MSG); + + PowerMock.replayAll(); + + jerseyClient.put(url, null, null); + + PowerMock.verifyAll(); } + @Test - public void clientHttps() throws Exception { - WhiteboxImpl.invokeMethod(jerseyClient, "init"); - jerseyClient.client(true); + public void delete_normal() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete"); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.delete(url), equalTo("Normal")); + + PowerMock.verifyAll(); + } + + @Test + public void delete_normal_with_class_info() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "get"); + Response mockedResponse = PowerMock.createMock(Response.class); + Bean bean = new Bean("name", "holmes"); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn(GsonUtil.beanToJson(bean)); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.delete(url, Bean.class), equalTo(bean)); + + PowerMock.verifyAll(); + } + + @Test + public void delete_with_null_class_info() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete"); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(200); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Normal"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + PowerMock.replayAll(); + + assertThat(jerseyClient.delete(url, null), equalTo("Normal")); + + PowerMock.verifyAll(); + } + + @Test + public void delete_fail() { + Client mockedClient = PowerMock.createMock(Client.class); + WebTarget mockedTarget = PowerMock.createPartialMock(WebTarget.class, "request"); + Invocation.Builder mockedBuilder = PowerMock.createPartialMock(Invocation.Builder.class, "delete"); + Response mockedResponse = PowerMock.createMock(Response.class); + + EasyMock.expect(mockedClient.target(url)).andReturn(mockedTarget); + EasyMock.expect(mockedTarget.request()).andReturn(mockedBuilder); + EasyMock.expect(mockedBuilder.delete()).andReturn(mockedResponse); + EasyMock.expect(mockedResponse.getStatus()).andReturn(404); + EasyMock.expect(mockedResponse.readEntity(String.class)).andReturn("Error"); + + WhiteboxImpl.setInternalState(jerseyClient, "client", mockedClient); + + exception.expect(HttpException.class); + exception.expectMessage(ERROR_MSG); + + PowerMock.replayAll(); + + jerseyClient.delete(url); + + PowerMock.verifyAll(); + } + + @Test + public void headers() { + Map hds = new HashMap<>(); + jerseyClient.headers(hds); + } + + @Test + public void queryParams() { + Map params = new HashMap<>(); + jerseyClient.queryParams(params); + } +} + +class Bean { + private String name; + private String value; + + public Bean(String name, String value) { + this.name = name; + this.value = value; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public int hashCode() { + int hName = name == null ? 0 : name.hashCode(); + int hValue = value == null ? 0 : value.hashCode(); + return hName << 1 + hValue >> 1; + } + + @Override + public boolean equals(Object o) { + if (o == null || !(o instanceof Bean)) { + return false; + } + + Bean b = (Bean) o; + return name.equals(b.name) && value.equals(b.value); } } \ No newline at end of file