2424import java .util .Optional ;
2525
2626import org .junit .Assert ;
27+ import org .junit .Before ;
2728import org .junit .Test ;
2829import org .junit .runner .RunWith ;
2930import org .mockito .ArgumentMatchers ;
3031import org .mockito .Mockito ;
3132import org .springframework .beans .factory .annotation .Autowired ;
33+ import org .springframework .boot .test .context .TestConfiguration ;
3234import org .springframework .context .ApplicationContext ;
35+ import org .springframework .context .annotation .Bean ;
3336import org .springframework .security .config .ObjectPostProcessor ;
3437import org .springframework .security .config .annotation .authentication .builders .AuthenticationManagerBuilder ;
3538import org .springframework .security .config .annotation .configuration .ObjectPostProcessorConfiguration ;
3841import org .springframework .security .core .Authentication ;
3942import org .springframework .security .core .authority .SimpleGrantedAuthority ;
4043import org .springframework .security .core .context .SecurityContextHolder ;
44+ import org .springframework .security .core .context .SecurityContextHolderStrategy ;
4145import org .springframework .security .core .userdetails .User ;
4246import org .springframework .security .test .context .support .WithAnonymousUser ;
4347import org .springframework .security .test .context .support .WithMockUser ;
6569import elemental .json .JsonValue ;
6670
6771@ RunWith (SpringRunner .class )
68- @ ContextConfiguration (classes = ObjectPostProcessorConfiguration .class )
72+ @ ContextConfiguration (classes = { ObjectPostProcessorConfiguration .class ,
73+ AuthenticationContextTest .AuthenticationContextTestConfiguration .class })
6974public class AuthenticationContextTest {
7075
76+ @ TestConfiguration
77+ static class AuthenticationContextTestConfiguration {
78+
79+ @ Bean
80+ SecurityContextHolderStrategy vaadinAwareSecurityContextHolderStrategy () {
81+ return new VaadinAwareSecurityContextHolderStrategy ();
82+ }
83+ }
84+
7185 @ Autowired
7286 ObjectPostProcessor <Object > postProcessor ;
7387
7488 @ Autowired
7589 ApplicationContext appCtx ;
7690
77- private final AuthenticationContext authContext = new AuthenticationContext ();
91+ @ Autowired
92+ SecurityContextHolderStrategy securityContextHolderStrategy ;
93+
94+ private AuthenticationContext authContext ;
95+
96+ @ Before
97+ public void setUp () {
98+ authContext = new AuthenticationContext (securityContextHolderStrategy );
99+ }
78100
79101 @ Test
80102 public void isAuthenticated_notAuthenticated_false () {
@@ -509,8 +531,8 @@ public void then(
509531 }
510532
511533 private SetupForLogoutTest getSetupForLogoutTest () {
512- Authentication authentication = SecurityContextHolder . getContext ()
513- .getAuthentication ();
534+ Authentication authentication = securityContextHolderStrategy
535+ .getContext (). getAuthentication ();
514536
515537 LogoutSuccessHandler successHandler = Mockito
516538 .mock (LogoutSuccessHandler .class );
@@ -555,7 +577,8 @@ public void applySecurityConfiguration_logoutHandlerConfigured()
555577 .logout (cfg -> cfg .logoutSuccessHandler (logoutSuccessHandler )
556578 .addLogoutHandler (handler1 ).addLogoutHandler (handler2 ));
557579 httpSecurity .build ();
558- AuthenticationContext authCtx = new AuthenticationContext ();
580+ AuthenticationContext authCtx = new AuthenticationContext (
581+ securityContextHolderStrategy );
559582 AuthenticationContext .applySecurityConfiguration (httpSecurity , authCtx );
560583
561584 Assert .assertNotNull (authCtx .getLogoutSuccessHandler ());
@@ -584,7 +607,8 @@ public void applySecurityConfiguration_unbuiltHttpSecurity_throws()
584607 .logout (cfg -> cfg .logoutSuccessHandler (logoutSuccessHandler )
585608 .addLogoutHandler (handler1 ).addLogoutHandler (handler2 ));
586609
587- AuthenticationContext authCtx = new AuthenticationContext ();
610+ AuthenticationContext authCtx = new AuthenticationContext (
611+ securityContextHolderStrategy );
588612
589613 IllegalStateException exception = Assert .assertThrows (
590614 IllegalStateException .class , () -> AuthenticationContext
@@ -597,7 +621,8 @@ public void applySecurityConfiguration_unbuiltHttpSecurity_throws()
597621 @ WithMockUser (authorities = { "FOO_USER" , "FOO_ADMIN" })
598622 public void supportsCustomRolePrefixes () {
599623 var prefixHolder = new VaadinRolePrefixHolder ("FOO_" );
600- var authContext = new AuthenticationContext ();
624+ var authContext = new AuthenticationContext (
625+ securityContextHolderStrategy );
601626 authContext .setRolePrefixHolder (prefixHolder );
602627 Assert .assertTrue (authContext .hasAnyRole ("USER" , "ADMIN" ));
603628 Assert .assertTrue (authContext .hasAllRoles ("USER" , "ADMIN" ));
0 commit comments