Skip to content

Commit d34ee53

Browse files
authored
fix: Utilize headers set on the Request object (#657)
1 parent b829f6e commit d34ee53

2 files changed

Lines changed: 55 additions & 7 deletions

File tree

src/main/java/com/sendgrid/BaseInterface.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -268,13 +268,9 @@ public Response api(final Request request) throws IOException {
268268
req.setEndpoint("/" + version + "/" + request.getEndpoint());
269269
req.setBody(request.getBody());
270270

271-
for (final Map.Entry<String, String> header : this.requestHeaders.entrySet()) {
272-
req.addHeader(header.getKey(), header.getValue());
273-
}
274-
275-
for (final Map.Entry<String, String> queryParam : request.getQueryParams().entrySet()) {
276-
req.addQueryParam(queryParam.getKey(), queryParam.getValue());
277-
}
271+
req.getHeaders().putAll(this.requestHeaders);
272+
req.getHeaders().putAll(request.getHeaders());
273+
req.getQueryParams().putAll(request.getQueryParams());
278274

279275
return makeCall(req);
280276
}

src/test/java/com/sendgrid/SendGridTest.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3190,4 +3190,56 @@ public void test_get_impersonate_subuser() {
31903190
sg.removeImpersonateSubuser();
31913191
Assert.assertEquals(sg.getImpersonateSubuser(), null);
31923192
}
3193+
3194+
@Test
3195+
public void test_sendgrid_object_headers_are_used_in_request() throws IOException {
3196+
Client client = mock(Client.class);
3197+
SendGrid sg = new SendGrid(SENDGRID_API_KEY, client);
3198+
sg.addRequestHeader("set-on-sendgrid", "123");
3199+
3200+
Request request = new Request();
3201+
3202+
sg.api(request);
3203+
verify(client).api(argThat((Request req) -> req.getHeaders().containsKey("set-on-sendgrid")));
3204+
}
3205+
3206+
@Test
3207+
public void test_request_headers_are_used_in_request() throws IOException {
3208+
Client client = mock(Client.class);
3209+
SendGrid sg = new SendGrid(SENDGRID_API_KEY, client);
3210+
3211+
Request request = new Request();
3212+
request.addHeader("set-on-request", "456");
3213+
3214+
sg.api(request);
3215+
verify(client).api(argThat((Request req) -> req.getHeaders().containsKey("set-on-request")));
3216+
}
3217+
3218+
3219+
@Test
3220+
public void test_sendgrid_object_and_request_headers_are_both_used_in_request() throws IOException {
3221+
Client client = mock(Client.class);
3222+
SendGrid sg = new SendGrid(SENDGRID_API_KEY, client);
3223+
sg.addRequestHeader("set-on-sendgrid", "123");
3224+
3225+
Request request = new Request();
3226+
request.addHeader("set-on-request", "456");
3227+
3228+
sg.api(request);
3229+
verify(client).api(argThat((Request req) ->
3230+
req.getHeaders().containsKey("set-on-sendgrid") && req.getHeaders().containsKey("set-on-request")));
3231+
}
3232+
3233+
@Test
3234+
public void test_request_headers_override_sendgrid_object_headers() throws IOException {
3235+
Client client = mock(Client.class);
3236+
SendGrid sg = new SendGrid(SENDGRID_API_KEY, client);
3237+
sg.addRequestHeader("set-on-both", "123");
3238+
3239+
Request request = new Request();
3240+
request.addHeader("set-on-both", "456");
3241+
3242+
sg.api(request);
3243+
verify(client).api(argThat((Request req) -> req.getHeaders().get("set-on-both").equals("456")));
3244+
}
31933245
}

0 commit comments

Comments
 (0)