Test support for HTTP range requests to endpoints returning a Resource

Closes gh-9978
pull/9635/head
Andy Wilkinson 7 years ago
parent 2e01d90660
commit 16edf72faa

@ -447,7 +447,7 @@ public abstract class AbstractWebEndpointIntegrationTests<T extends Configurable
@Configuration
@Import(BaseConfiguration.class)
static class ResourceEndpointConfiguration {
protected static class ResourceEndpointConfiguration {
@Bean
public ResourceEndpoint resourceEndpoint() {

@ -31,12 +31,15 @@ import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.server.reactive.HttpHandler;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.reactive.config.EnableWebFlux;
import org.springframework.web.server.adapter.WebHttpHandlerBuilder;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Integration tests for web endpoints exposed using WebFlux.
*
@ -63,6 +66,18 @@ public class WebFluxEndpointIntegrationTests
.valueEquals("Access-Control-Allow-Methods", "GET,POST"));
}
@Test
public void readOperationsThatReturnAResourceSupportRangeRequests() {
load(ResourceEndpointConfiguration.class, (client) -> {
byte[] responseBody = client.get().uri("/resource")
.header("Range", "bytes=0-3").exchange().expectStatus()
.isEqualTo(HttpStatus.PARTIAL_CONTENT).expectHeader()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.returnResult(byte[].class).getResponseBodyContent();
assertThat(responseBody).containsExactly(0, 1, 2, 3);
});
}
@Override
protected ReactiveWebServerApplicationContext createApplicationContext(
Class<?>... config) {

@ -28,11 +28,14 @@ import org.springframework.boot.web.servlet.context.AnnotationConfigServletWebSe
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Integration tests for web endpoints exposed using Spring MVC.
*
@ -59,6 +62,18 @@ public class MvcWebEndpointIntegrationTests extends
.valueEquals("Access-Control-Allow-Methods", "GET,POST"));
}
@Test
public void readOperationsThatReturnAResourceSupportRangeRequests() {
load(ResourceEndpointConfiguration.class, (client) -> {
byte[] responseBody = client.get().uri("/resource")
.header("Range", "bytes=0-3").exchange().expectStatus()
.isEqualTo(HttpStatus.PARTIAL_CONTENT).expectHeader()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.returnResult(byte[].class).getResponseBodyContent();
assertThat(responseBody).containsExactly(0, 1, 2, 3);
});
}
@Override
protected AnnotationConfigServletWebServerApplicationContext createApplicationContext(
Class<?>... config) {

Loading…
Cancel
Save