Support for MediaType mappings in ResourceWebHandler
Closes gh-26170
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package org.springframework.web.reactive.config;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@@ -28,6 +29,7 @@ import reactor.test.StepVerifier;
|
||||
import org.springframework.cache.concurrent.ConcurrentMapCache;
|
||||
import org.springframework.context.support.GenericApplicationContext;
|
||||
import org.springframework.http.CacheControl;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.server.PathContainer;
|
||||
import org.springframework.web.reactive.HandlerMapping;
|
||||
import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping;
|
||||
@@ -99,6 +101,16 @@ public class ResourceHandlerRegistryTests {
|
||||
.isEqualTo(CacheControl.noCache().cachePrivate().getHeaderValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void mediaTypes() {
|
||||
MediaType mediaType = MediaType.parseMediaType("foo/bar");
|
||||
this.registration.setMediaTypes(Collections.singletonMap("bar", mediaType));
|
||||
ResourceWebHandler requestHandler = this.registration.getRequestHandler();
|
||||
|
||||
assertThat(requestHandler.getMediaTypes()).size().isEqualTo(1);
|
||||
assertThat(requestHandler.getMediaTypes()).containsEntry("bar", mediaType);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void order() {
|
||||
assertThat(this.registry.getHandlerMapping().getOrder()).isEqualTo(Integer.MAX_VALUE -1);
|
||||
|
||||
@@ -214,6 +214,24 @@ public class ResourceWebHandlerTests {
|
||||
assertResponseBody(exchange, "function foo() { console.log(\"hello world\"); }");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getResourceWithRegisteredMediaType() throws Exception {
|
||||
MediaType mediaType = new MediaType("foo", "bar");
|
||||
|
||||
ResourceWebHandler handler = new ResourceWebHandler();
|
||||
handler.setLocations(Collections.singletonList(new ClassPathResource("test/", getClass())));
|
||||
handler.setMediaTypes(Collections.singletonMap("bar", mediaType));
|
||||
handler.afterPropertiesSet();
|
||||
|
||||
MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get(""));
|
||||
setPathWithinHandlerMapping(exchange, "foo.bar");
|
||||
handler.handle(exchange).block(TIMEOUT);
|
||||
|
||||
HttpHeaders headers = exchange.getResponse().getHeaders();
|
||||
assertThat(headers.getContentType()).isEqualTo(mediaType);
|
||||
assertResponseBody(exchange, "foo bar foo bar foo bar");
|
||||
}
|
||||
|
||||
@Test // SPR-14577
|
||||
public void getMediaTypeWithFavorPathExtensionOff() throws Exception {
|
||||
List<Resource> paths = Collections.singletonList(new ClassPathResource("test/", getClass()));
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
foo bar foo bar foo bar
|
||||
Reference in New Issue
Block a user