Skip to content

Commit 9cdfadc

Browse files
Extracting httpClient for mocking
1 parent 3b101ec commit 9cdfadc

File tree

2 files changed

+65
-20
lines changed

2 files changed

+65
-20
lines changed

http/src/main/java/com/sendgrid/Client.java

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class Client {
3535
private CloseableHttpClient httpClient;
3636

3737
public Client(){
38+
this.httpClient = HttpClients.createDefault();
3839
}
3940

4041
public Client(CloseableHttpClient httpClient){
@@ -85,17 +86,18 @@ public Response getResponse(CloseableHttpResponse resp){
8586

8687
public Response Get(Request request){
8788
Response response = new Response();
88-
CloseableHttpClient httpclient = HttpClients.createDefault();
8989

9090
URI url = buildURL(request.baseURL, request.endpoint, request.queryParams);
9191
HttpGet httpGet = new HttpGet(url.toString());
9292

93-
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
94-
httpGet.setHeader(entry.getKey(), entry.getValue());
93+
if(request.requestHeaders != null){
94+
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
95+
httpGet.setHeader(entry.getKey(), entry.getValue());
96+
}
9597
}
9698

9799
try{
98-
CloseableHttpResponse resp = httpclient.execute(httpGet);
100+
CloseableHttpResponse resp = httpClient.execute(httpGet);
99101
response = getResponse(resp);
100102
resp.close();
101103
}catch(IOException ex){
@@ -107,22 +109,24 @@ public Response Get(Request request){
107109

108110
public Response Post(Request request){
109111
Response response = new Response();
110-
CloseableHttpClient httpclient = HttpClients.createDefault();
111112

112113
URI url = buildURL(request.baseURL, request.endpoint, request.queryParams);
113114
HttpPost httpPost = new HttpPost(url.toString());
114115

115-
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
116-
httpPost.setHeader(entry.getKey(), entry.getValue());
116+
if(request.requestHeaders != null){
117+
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
118+
httpPost.setHeader(entry.getKey(), entry.getValue());
119+
}
117120
}
121+
118122
try{
119123
httpPost.setEntity(new StringEntity(request.requestBody));
120124
}catch(IOException ex){
121125
ex.printStackTrace();
122126
}
123127

124128
try{
125-
CloseableHttpResponse resp = httpclient.execute(httpPost);
129+
CloseableHttpResponse resp = httpClient.execute(httpPost);
126130
response = getResponse(resp);
127131
resp.close();
128132
}catch(IOException ex){
@@ -134,13 +138,14 @@ public Response Post(Request request){
134138

135139
public Response Patch(Request request){
136140
Response response = new Response();
137-
CloseableHttpClient httpclient = HttpClients.createDefault();
138141

139142
URI url = buildURL(request.baseURL, request.endpoint, request.queryParams);
140143
HttpPatch httpPatch = new HttpPatch(url.toString());
141144

142-
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
143-
httpPatch.setHeader(entry.getKey(), entry.getValue());
145+
if(request.requestHeaders != null){
146+
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
147+
httpPatch.setHeader(entry.getKey(), entry.getValue());
148+
}
144149
}
145150

146151
try{
@@ -150,7 +155,7 @@ public Response Patch(Request request){
150155
}
151156

152157
try{
153-
CloseableHttpResponse resp = httpclient.execute(httpPatch);
158+
CloseableHttpResponse resp = httpClient.execute(httpPatch);
154159
response = getResponse(resp);
155160
resp.close();
156161
}catch(IOException ex){
@@ -162,12 +167,14 @@ public Response Patch(Request request){
162167

163168
public Response Put(Request request){
164169
Response response = new Response();
165-
CloseableHttpClient httpclient = HttpClients.createDefault();
166170

167171
URI url = buildURL(request.baseURL, request.endpoint, request.queryParams);
168172
HttpPut httpPut = new HttpPut(url.toString());
169-
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
170-
httpPut.setHeader(entry.getKey(), entry.getValue());
173+
174+
if(request.requestHeaders != null){
175+
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
176+
httpPut.setHeader(entry.getKey(), entry.getValue());
177+
}
171178
}
172179

173180
try{
@@ -177,7 +184,7 @@ public Response Put(Request request){
177184
}
178185

179186
try{
180-
CloseableHttpResponse resp = httpclient.execute(httpPut);
187+
CloseableHttpResponse resp = httpClient.execute(httpPut);
181188
response = getResponse(resp);
182189
resp.close();
183190
}catch(IOException ex){
@@ -189,17 +196,18 @@ public Response Put(Request request){
189196

190197
public Response Delete(Request request){
191198
Response response = new Response();
192-
CloseableHttpClient httpclient = HttpClients.createDefault();
193199

194200
URI url = buildURL(request.baseURL, request.endpoint, request.queryParams);
195201
HttpDelete httpDelete = new HttpDelete(url.toString());
196202

197-
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
198-
httpDelete.setHeader(entry.getKey(), entry.getValue());
203+
if(request.requestHeaders != null){
204+
for (Map.Entry<String, String> entry : request.requestHeaders.entrySet()) {
205+
httpDelete.setHeader(entry.getKey(), entry.getValue());
206+
}
199207
}
200208

201209
try{
202-
CloseableHttpResponse resp = httpclient.execute(httpDelete);
210+
CloseableHttpResponse resp = httpClient.execute(httpDelete);
203211
response = getResponse(resp);
204212
resp.close();
205213
}catch(IOException ex){

http/src/test/java/com/sendgrid/ClientTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,41 @@ public void testGetResponse()
9292
}
9393
Assert.assertEquals(testResponse.responseHeaders, headers);
9494
}
95+
96+
@Test
97+
public void testGet()
98+
{
99+
Response testResponse = new Response();
100+
Request request = new Request();
101+
Header[] mockedHeaders = null;
102+
try{
103+
CloseableHttpResponse response = mock(CloseableHttpResponse.class);
104+
HttpEntity entity = mock(HttpEntity.class);
105+
StatusLine statusline = mock(StatusLine.class);
106+
when(statusline.getStatusCode()).thenReturn(200);
107+
when(response.getStatusLine()).thenReturn(statusline);
108+
when(response.getEntity()).thenReturn(new InputStreamEntity(new ByteArrayInputStream("{\"message\":\"success\"}".getBytes())));
109+
mockedHeaders = new Header[] { new BasicHeader("headerA", "valueA") };
110+
when(response.getAllHeaders()).thenReturn(mockedHeaders);
111+
when(httpClient.execute(Matchers.any(HttpGet.class))).thenReturn(response);
112+
Client client = new Client(httpClient);
113+
request.method = Method.GET;
114+
request.endpoint = "/test";
115+
Map<String,String> requestHeaders = new HashMap<String, String>();
116+
requestHeaders.put("Authorization", "Bearer XXXX");
117+
requestHeaders.put("Content-Type", "application/json");
118+
request.requestHeaders = requestHeaders;
119+
testResponse = client.Get(request);
120+
}catch(IOException ex){
121+
ex.printStackTrace();
122+
}
123+
124+
Assert.assertTrue(testResponse.statusCode == 200);
125+
Assert.assertEquals(testResponse.responseBody, "{\"message\":\"success\"}");
126+
Map<String,String> headers = new HashMap<String,String>();
127+
for(Header h:mockedHeaders){
128+
headers.put(h.getName(), h.getValue());
129+
}
130+
Assert.assertEquals(testResponse.responseHeaders, headers);
131+
}
95132
}

0 commit comments

Comments
 (0)