Fix parameter bug of handler inside the filterFunction DSL

Co-authored-by: hojongs <hojong.jjh@gmail.com>
Co-authored-by: bjh970913 <bjh970913@gmail.com>

Closes gh-26838
This commit is contained in:
ShindongLee
2021-04-24 22:27:01 +09:00
committed by Sébastien Deleuze
parent 0468ef46ac
commit 07ba95739b
4 changed files with 45 additions and 4 deletions

View File

@@ -152,6 +152,16 @@ class CoRouterFunctionDslTests {
}
}
@Test
fun filtering() {
val mockRequest = get("https://example.com/filter").build()
val request = DefaultServerRequest(MockServerWebExchange.from(mockRequest), emptyList())
StepVerifier.create(sampleRouter().route(request).flatMap { it.handle(request) })
.expectNextMatches { response ->
response.headers().getFirst("foo") == "bar"
}
.verifyComplete()
}
private fun sampleRouter() = coRouter {
(GET("/foo/") or GET("/foos/")) { req -> handle(req) }
@@ -186,6 +196,18 @@ class CoRouterFunctionDslTests {
path("/baz", ::handle)
GET("/rendering") { RenderingResponse.create("index").buildAndAwait() }
add(otherRouter)
add(filterRouter)
}
private val filterRouter = coRouter {
"/filter" { request ->
ok().header("foo", request.headers().firstHeader("foo")).buildAndAwait()
}
filter { request, next ->
val newRequest = ServerRequest.from(request).apply { header("foo", "bar") }.build()
next(newRequest)
}
}
private val otherRouter = router {