Merge branch '5.3.x' into main
This commit is contained in:
@@ -253,6 +253,23 @@ public class ResourceWebHandlerTests {
|
||||
assertResponseBody(exchange, "h1 { color:red; }");
|
||||
}
|
||||
|
||||
@Test // gh-27538
|
||||
public void filterNonExistingLocations() throws Exception {
|
||||
List<Resource> inputLocations = Arrays.asList(
|
||||
new ClassPathResource("test/", getClass()),
|
||||
new ClassPathResource("testalternatepath/", getClass()),
|
||||
new ClassPathResource("nosuchpath/", getClass()));
|
||||
|
||||
ResourceWebHandler handler = new ResourceWebHandler();
|
||||
handler.setLocations(inputLocations);
|
||||
handler.afterPropertiesSet();
|
||||
|
||||
List<Resource> actual = handler.getLocations();
|
||||
assertThat(actual).hasSize(2);
|
||||
assertThat(actual.get(0).getURL().toString()).endsWith("test/");
|
||||
assertThat(actual.get(1).getURL().toString()).endsWith("testalternatepath/");
|
||||
}
|
||||
|
||||
@Test // SPR-14577
|
||||
public void getMediaTypeWithFavorPathExtensionOff() throws Exception {
|
||||
List<Resource> paths = Collections.singletonList(new ClassPathResource("test/", getClass()));
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -22,18 +22,20 @@ import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import org.assertj.core.api.Assertions.*
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.assertj.core.api.Assertions.assertThatExceptionOfType
|
||||
import org.springframework.context.ApplicationContext
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext
|
||||
import org.springframework.context.annotation.ComponentScan
|
||||
import org.springframework.context.annotation.Configuration
|
||||
import org.springframework.http.HttpHeaders
|
||||
import org.springframework.http.HttpStatus
|
||||
import org.springframework.web.testfixture.http.server.reactive.bootstrap.HttpServer
|
||||
import org.springframework.http.ResponseEntity
|
||||
import org.springframework.web.bind.annotation.GetMapping
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import org.springframework.web.client.HttpServerErrorException
|
||||
import org.springframework.web.reactive.config.EnableWebFlux
|
||||
import org.springframework.web.testfixture.http.server.reactive.bootstrap.HttpServer
|
||||
|
||||
class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
|
||||
|
||||
@@ -63,6 +65,15 @@ class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
|
||||
assertThat(entity.body).isEqualTo("foo")
|
||||
}
|
||||
|
||||
@ParameterizedHttpServerTest // gh-27292
|
||||
fun `Suspending ResponseEntity handler method`(httpServer: HttpServer) {
|
||||
startServer(httpServer)
|
||||
|
||||
val entity = performGet<String>("/suspend-response-entity", HttpHeaders.EMPTY, String::class.java)
|
||||
assertThat(entity.statusCode).isEqualTo(HttpStatus.OK)
|
||||
assertThat(entity.body).isEqualTo("{\"value\":\"foo\"}")
|
||||
}
|
||||
|
||||
@ParameterizedHttpServerTest
|
||||
fun `Handler method returning Flow`(httpServer: HttpServer) {
|
||||
startServer(httpServer)
|
||||
@@ -119,6 +130,12 @@ class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
|
||||
"foo"
|
||||
}
|
||||
|
||||
@GetMapping("/suspend-response-entity")
|
||||
suspend fun suspendingResponseEntityEndpoint(): ResponseEntity<FooContainer<String>> {
|
||||
delay(1)
|
||||
return ResponseEntity.ok(FooContainer("foo"))
|
||||
}
|
||||
|
||||
@GetMapping("/flow")
|
||||
fun flowEndpoint()= flow {
|
||||
emit("foo")
|
||||
@@ -151,4 +168,8 @@ class CoroutinesIntegrationTests : AbstractRequestMappingIntegrationTests() {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
class FooContainer<T>(val value: T)
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user