parent
558bb161c5
commit
7dc4364f43
|
@ -18,6 +18,7 @@ package org.springframework.security.config.annotation.web
|
||||||
|
|
||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
|
import io.mockk.mockkObject
|
||||||
import io.mockk.spyk
|
import io.mockk.spyk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import org.assertj.core.api.Assertions.assertThat
|
import org.assertj.core.api.Assertions.assertThat
|
||||||
|
@ -51,43 +52,15 @@ class SecurityContextDslTests {
|
||||||
@Autowired
|
@Autowired
|
||||||
lateinit var mvc: MockMvc
|
lateinit var mvc: MockMvc
|
||||||
|
|
||||||
@Test
|
|
||||||
fun `configure when registering object post processor then invoked on security context persistence filter`() {
|
|
||||||
spring.register(ObjectPostProcessorConfig::class.java).autowire()
|
|
||||||
verify { ObjectPostProcessorConfig.objectPostProcessor.postProcess(any<SecurityContextPersistenceFilter>()) }
|
|
||||||
}
|
|
||||||
|
|
||||||
@EnableWebSecurity
|
|
||||||
open class ObjectPostProcessorConfig : WebSecurityConfigurerAdapter() {
|
|
||||||
override fun configure(http: HttpSecurity) {
|
|
||||||
// @formatter:off
|
|
||||||
http {
|
|
||||||
securityContext { }
|
|
||||||
}
|
|
||||||
// @formatter:on
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
open fun objectPostProcessor(): ObjectPostProcessor<Any> = objectPostProcessor
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
var objectPostProcessor: ObjectPostProcessor<Any> = spyk(ReflectingObjectPostProcessor())
|
|
||||||
|
|
||||||
class ReflectingObjectPostProcessor : ObjectPostProcessor<Any> {
|
|
||||||
override fun <O> postProcess(`object`: O): O = `object`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `security context when invoked twice then uses original security context repository`() {
|
fun `security context when invoked twice then uses original security context repository`() {
|
||||||
spring.register(DuplicateDoesNotOverrideConfig::class.java).autowire()
|
spring.register(DuplicateDoesNotOverrideConfig::class.java).autowire()
|
||||||
|
mockkObject(DuplicateDoesNotOverrideConfig.SECURITY_CONTEXT_REPOSITORY)
|
||||||
every { DuplicateDoesNotOverrideConfig.SECURITY_CONTEXT_REPOSITORY.loadContext(any<HttpRequestResponseHolder>()) } returns mockk<SecurityContext>(relaxed = true)
|
every { DuplicateDoesNotOverrideConfig.SECURITY_CONTEXT_REPOSITORY.loadContext(any<HttpRequestResponseHolder>()) } returns mockk<SecurityContext>(relaxed = true)
|
||||||
mvc.perform(get("/"))
|
mvc.perform(get("/"))
|
||||||
verify(exactly = 1) { DuplicateDoesNotOverrideConfig.SECURITY_CONTEXT_REPOSITORY.loadContext(any<HttpRequestResponseHolder>()) }
|
verify(exactly = 1) { DuplicateDoesNotOverrideConfig.SECURITY_CONTEXT_REPOSITORY.loadContext(any<HttpRequestResponseHolder>()) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@EnableWebSecurity
|
@EnableWebSecurity
|
||||||
open class DuplicateDoesNotOverrideConfig : WebSecurityConfigurerAdapter() {
|
open class DuplicateDoesNotOverrideConfig : WebSecurityConfigurerAdapter() {
|
||||||
override fun configure(http: HttpSecurity) {
|
override fun configure(http: HttpSecurity) {
|
||||||
|
@ -102,7 +75,7 @@ class SecurityContextDslTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
var SECURITY_CONTEXT_REPOSITORY = mockk<SecurityContextRepository>(relaxed = true)
|
val SECURITY_CONTEXT_REPOSITORY = NullSecurityContextRepository()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue