diff --git a/core/src/main/java/feign/Response.java b/core/src/main/java/feign/Response.java index 54b562da82..8165b04033 100644 --- a/core/src/main/java/feign/Response.java +++ b/core/src/main/java/feign/Response.java @@ -45,7 +45,6 @@ public final class Response implements Closeable { private final Request request; private Response(Builder builder) { - checkState(builder.status >= 200, "Invalid status code: %s", builder.status); checkState(builder.request != null, "original request is required"); this.status = builder.status; this.request = builder.request; diff --git a/core/src/test/java/feign/ResponseTest.java b/core/src/test/java/feign/ResponseTest.java index a6f98b1b09..4a47a2769c 100644 --- a/core/src/test/java/feign/ResponseTest.java +++ b/core/src/test/java/feign/ResponseTest.java @@ -14,6 +14,7 @@ package feign; import feign.Request.HttpMethod; +import org.assertj.core.util.Lists; import org.junit.Test; import java.util.Arrays; import java.util.Collection; @@ -81,4 +82,28 @@ public void headersAreOptional() { .build(); assertThat(response.headers()).isNotNull().isEmpty(); } + + @Test + public void support1xxStatusCodes() { + Response response = Response.builder() + .status(103) + .request(Request.create(HttpMethod.GET, "/api", Collections.emptyMap(), null, Util.UTF_8)) + .body((Response.Body) null) + .build(); + + assertThat(response.status()).isEqualTo(103); + } + + @Test + public void statusCodesOfAnyValueAreAllowed() { + Lists.list(600, 50, 35600).forEach(statusCode -> { + Response response = Response.builder() + .status(statusCode) + .request(Request.create(HttpMethod.GET, "/api", Collections.emptyMap(), null, Util.UTF_8)) + .body((Response.Body) null) + .build(); + + assertThat(response.status()).isEqualTo(statusCode); + }); + } }