25
25
import org .springframework .security .authentication .TestAuthentication ;
26
26
import org .springframework .security .core .context .SecurityContext ;
27
27
import org .springframework .security .core .context .SecurityContextHolder ;
28
+ import org .springframework .security .core .context .SecurityContextHolderStrategy ;
28
29
import org .springframework .security .core .context .SecurityContextImpl ;
29
30
30
31
import static org .assertj .core .api .Assertions .assertThat ;
32
+ import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
33
+ import static org .mockito .BDDMockito .given ;
34
+ import static org .mockito .Mockito .mock ;
35
+ import static org .mockito .Mockito .verify ;
36
+ import static org .mockito .Mockito .verifyNoMoreInteractions ;
31
37
32
38
/**
33
39
* @author Rob Winch
@@ -42,6 +48,15 @@ class RequestAttributeSecurityContextRepositoryTests {
42
48
43
49
private SecurityContext expectedSecurityContext = new SecurityContextImpl (TestAuthentication .authenticatedUser ());
44
50
51
+ @ Test
52
+ void setSecurityContextHolderStrategyWhenNullThenThrowsIllegalArgumentException () {
53
+ // @formatter:off
54
+ assertThatIllegalArgumentException ()
55
+ .isThrownBy (() -> this .repository .setSecurityContextHolderStrategy (null ))
56
+ .withMessage ("securityContextHolderStrategy cannot be null" );
57
+ // @formatter:on
58
+ }
59
+
45
60
@ Test
46
61
void saveContextAndLoadContextThenFound () {
47
62
this .repository .saveContext (this .expectedSecurityContext , this .request , this .response );
@@ -82,4 +97,16 @@ void loadContextWhenNotPresentThenEmptyContext() {
82
97
assertThat (context ).isEqualTo (SecurityContextHolder .createEmptyContext ());
83
98
}
84
99
100
+ @ Test
101
+ void loadContextWhenCustomSecurityContextHolderStrategySetThenUsed () {
102
+ SecurityContextHolderStrategy securityContextHolderStrategy = mock (SecurityContextHolderStrategy .class );
103
+ given (securityContextHolderStrategy .createEmptyContext ()).willReturn (new SecurityContextImpl ());
104
+ this .repository .setSecurityContextHolderStrategy (securityContextHolderStrategy );
105
+
106
+ Supplier <SecurityContext > deferredContext = this .repository .loadContext (this .request );
107
+ assertThat (deferredContext .get ()).isNotNull ();
108
+ verify (securityContextHolderStrategy ).createEmptyContext ();
109
+ verifyNoMoreInteractions (securityContextHolderStrategy );
110
+ }
111
+
85
112
}
0 commit comments