@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2022 the original author or authors .
* Copyright 2002 - 2023 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 .
@ -141,4 +141,64 @@ public class DelegatingSecurityContextRepositoryTests {
@@ -141,4 +141,64 @@ public class DelegatingSecurityContextRepositoryTests {
verifyNoInteractions ( delegates . get ( 2 ) ) ;
}
// gh-12314
@Test
public void loadContextWhenSecondDelegateReturnsThenContextFromSecondDelegate ( ) {
SecurityContextRepository delegate1 = mock ( SecurityContextRepository . class ) ;
SecurityContextRepository delegate2 = mock ( SecurityContextRepository . class ) ;
HttpRequestResponseHolder holder = new HttpRequestResponseHolder ( this . request , this . response ) ;
SecurityContext securityContext1 = mock ( SecurityContext . class ) ;
SecurityContext securityContext2 = mock ( SecurityContext . class ) ;
given ( delegate1 . loadContext ( holder ) ) . willReturn ( securityContext1 ) ;
given ( delegate1 . containsContext ( holder . getRequest ( ) ) ) . willReturn ( false ) ;
given ( delegate2 . loadContext ( holder ) ) . willReturn ( securityContext2 ) ;
given ( delegate2 . containsContext ( holder . getRequest ( ) ) ) . willReturn ( true ) ;
DelegatingSecurityContextRepository repository = new DelegatingSecurityContextRepository ( delegate1 , delegate2 ) ;
SecurityContext returnedSecurityContext = repository . loadContext ( holder ) ;
assertThat ( returnedSecurityContext ) . isSameAs ( securityContext2 ) ;
}
// gh-12314
@Test
public void loadContextWhenBothDelegateReturnsThenContextFromSecondDelegate ( ) {
SecurityContextRepository delegate1 = mock ( SecurityContextRepository . class ) ;
SecurityContextRepository delegate2 = mock ( SecurityContextRepository . class ) ;
HttpRequestResponseHolder holder = new HttpRequestResponseHolder ( this . request , this . response ) ;
SecurityContext securityContext1 = mock ( SecurityContext . class ) ;
SecurityContext securityContext2 = mock ( SecurityContext . class ) ;
given ( delegate1 . loadContext ( holder ) ) . willReturn ( securityContext1 ) ;
given ( delegate1 . containsContext ( holder . getRequest ( ) ) ) . willReturn ( true ) ;
given ( delegate2 . loadContext ( holder ) ) . willReturn ( securityContext2 ) ;
given ( delegate2 . containsContext ( holder . getRequest ( ) ) ) . willReturn ( true ) ;
DelegatingSecurityContextRepository repository = new DelegatingSecurityContextRepository ( delegate1 , delegate2 ) ;
SecurityContext returnedSecurityContext = repository . loadContext ( holder ) ;
assertThat ( returnedSecurityContext ) . isSameAs ( securityContext2 ) ;
}
// gh-12314
@Test
public void loadContextWhenFirstDelegateReturnsThenContextFromFirstDelegate ( ) {
SecurityContextRepository delegate1 = mock ( SecurityContextRepository . class ) ;
SecurityContextRepository delegate2 = mock ( SecurityContextRepository . class ) ;
HttpRequestResponseHolder holder = new HttpRequestResponseHolder ( this . request , this . response ) ;
SecurityContext securityContext1 = mock ( SecurityContext . class ) ;
SecurityContext securityContext2 = mock ( SecurityContext . class ) ;
given ( delegate1 . loadContext ( holder ) ) . willReturn ( securityContext1 ) ;
given ( delegate1 . containsContext ( holder . getRequest ( ) ) ) . willReturn ( true ) ;
given ( delegate2 . loadContext ( holder ) ) . willReturn ( securityContext2 ) ;
given ( delegate2 . containsContext ( holder . getRequest ( ) ) ) . willReturn ( false ) ;
DelegatingSecurityContextRepository repository = new DelegatingSecurityContextRepository ( delegate1 , delegate2 ) ;
SecurityContext returnedSecurityContext = repository . loadContext ( holder ) ;
assertThat ( returnedSecurityContext ) . isSameAs ( securityContext1 ) ;
}
}