Skip to content

Commit 7dcac1d

Browse files
authored
Merge pull request #2964 from square/jakew/header-tests/2018-11-16
Add tests for form and multipart header values and overrides
2 parents 69a81a9 + 07cb4ae commit 7dcac1d

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

retrofit/src/test/java/retrofit2/RequestFactoryTest.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1717,6 +1717,8 @@ Call<ResponseBody> method(@Part("ping") String ping, @Part("kit") RequestBody ki
17171717
assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");
17181718

17191719
RequestBody body = request.body();
1720+
assertThat(body.contentType().toString()).startsWith("multipart/form-data; boundary=");
1721+
17201722
Buffer buffer = new Buffer();
17211723
body.writeTo(buffer);
17221724
String bodyString = buffer.readUtf8();
@@ -2316,7 +2318,9 @@ Call<ResponseBody> method(@Field("foo") String foo, @Field("ping") String ping)
23162318
}
23172319
}
23182320
Request request = buildRequest(Example.class, "bar", "pong");
2319-
assertBody(request.body(), "foo=bar&ping=pong");
2321+
RequestBody body = request.body();
2322+
assertBody(body, "foo=bar&ping=pong");
2323+
assertThat(body.contentType().toString()).isEqualTo("application/x-www-form-urlencoded");
23202324
}
23212325

23222326
@Test public void formEncodedWithEncodedNameFieldParam() {
@@ -2639,6 +2643,36 @@ Call<ResponseBody> method(@Body RequestBody body) {
26392643
assertThat(request.body().contentType().toString()).isEqualTo("text/not-plain");
26402644
}
26412645

2646+
@Test public void contentTypeAnnotationHeaderOverridesFormEncoding() {
2647+
class Example {
2648+
@FormUrlEncoded //
2649+
@POST("/foo") //
2650+
@Headers("Content-Type: text/not-plain") //
2651+
Call<ResponseBody> method(@Field("foo") String foo, @Field("ping") String ping) {
2652+
return null;
2653+
}
2654+
}
2655+
Request request = buildRequest(Example.class, "bar", "pong");
2656+
assertThat(request.body().contentType().toString()).isEqualTo("text/not-plain");
2657+
}
2658+
2659+
@Test public void contentTypeAnnotationHeaderOverridesMultipart() {
2660+
class Example {
2661+
@Multipart //
2662+
@POST("/foo/bar/") //
2663+
@Headers("Content-Type: text/not-plain") //
2664+
Call<ResponseBody> method(@Part("ping") String ping, @Part("kit") RequestBody kit) {
2665+
return null;
2666+
}
2667+
}
2668+
2669+
Request request = buildRequest(Example.class, "pong", RequestBody.create(
2670+
TEXT_PLAIN, "kat"));
2671+
2672+
RequestBody body = request.body();
2673+
assertThat(request.body().contentType().toString()).isEqualTo("text/not-plain");
2674+
}
2675+
26422676
@Test public void malformedContentTypeHeaderThrows() {
26432677
class Example {
26442678
@POST("/") //

0 commit comments

Comments
 (0)