Add addFilterAfter and addFilterBefore to Kotlin DSL

Fixes gh-8316
This commit is contained in:
Markus Engelbrecht
2020-04-03 18:04:03 +02:00
committed by GitHub
parent 1de0cf5057
commit dc6b8ce470
2 changed files with 101 additions and 3 deletions

View File

@@ -225,7 +225,7 @@ class HttpSecurityDslTests {
val filters: List<Filter> = filterChain.getFilters("/")
assertThat(filters).hasSize(1)
assertThat(filters[0]).isExactlyInstanceOf(CustomFilterConfig.CustomFilter::class.java)
assertThat(filters[0]).isExactlyInstanceOf(CustomFilter::class.java)
}
@EnableWebSecurity
@@ -236,7 +236,55 @@ class HttpSecurityDslTests {
addFilterAt(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
}
}
class CustomFilter : UsernamePasswordAuthenticationFilter()
}
@Test
fun `HTTP security when custom filter configured then custom filter added after specific filter to filter chain`() {
this.spring.register(CustomFilterAfterConfig::class.java).autowire()
val filterChain = spring.context.getBean(FilterChainProxy::class.java)
val filters: List<Class<out Filter>> = filterChain.getFilters("/").map { it.javaClass }
assertThat(filters).containsSubsequence(
UsernamePasswordAuthenticationFilter::class.java,
CustomFilter::class.java
)
}
@EnableWebSecurity
@EnableWebMvc
open class CustomFilterAfterConfig : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http {
addFilterAfter(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
formLogin {}
}
}
}
@Test
fun `HTTP security when custom filter configured then custom filter added before specific filter to filter chain`() {
this.spring.register(CustomFilterBeforeConfig::class.java).autowire()
val filterChain = spring.context.getBean(FilterChainProxy::class.java)
val filters: List<Class<out Filter>> = filterChain.getFilters("/").map { it.javaClass }
assertThat(filters).containsSubsequence(
CustomFilter::class.java,
UsernamePasswordAuthenticationFilter::class.java
)
}
@EnableWebSecurity
@EnableWebMvc
open class CustomFilterBeforeConfig : WebSecurityConfigurerAdapter() {
override fun configure(http: HttpSecurity) {
http {
addFilterBefore(CustomFilter(), UsernamePasswordAuthenticationFilter::class.java)
formLogin {}
}
}
}
class CustomFilter : UsernamePasswordAuthenticationFilter()
}