3939import java .util .HashMap ;
4040import java .util .HashSet ;
4141import java .util .List ;
42+ import java .util .Locale ;
4243import java .util .Map ;
4344import java .util .Set ;
4445import java .util .stream .Collectors ;
4546import java .util .stream .Stream ;
4647
48+ import jakarta .servlet .http .Cookie ;
4749import org .apache .commons .lang3 .ObjectUtils ;
4850import org .apereo .cas .client .validation .AssertionImpl ;
4951import org .instancio .Instancio ;
5860import org .springframework .beans .factory .config .BeanDefinition ;
5961import org .springframework .context .annotation .ClassPathScanningCandidateComponentProvider ;
6062import org .springframework .core .type .filter .AssignableTypeFilter ;
63+ import org .springframework .mock .web .MockHttpServletRequest ;
6164import org .springframework .mock .web .MockHttpSession ;
6265import org .springframework .security .access .AccessDeniedException ;
6366import org .springframework .security .access .AuthorizationServiceException ;
67+ import org .springframework .security .access .SecurityConfig ;
6468import org .springframework .security .access .intercept .RunAsUserToken ;
6569import org .springframework .security .authentication .AbstractAuthenticationToken ;
6670import org .springframework .security .authentication .AccountExpiredException ;
104108import org .springframework .security .core .authority .AuthorityUtils ;
105109import org .springframework .security .core .context .SecurityContext ;
106110import org .springframework .security .core .context .SecurityContextImpl ;
111+ import org .springframework .security .core .context .TransientSecurityContext ;
107112import org .springframework .security .core .session .AbstractSessionEvent ;
108113import org .springframework .security .core .session .ReactiveSessionInformation ;
109114import org .springframework .security .core .session .SessionInformation ;
110115import org .springframework .security .core .userdetails .UserDetails ;
111116import org .springframework .security .core .userdetails .UsernameNotFoundException ;
117+ import org .springframework .security .ldap .ppolicy .PasswordPolicyControl ;
112118import org .springframework .security .ldap .ppolicy .PasswordPolicyErrorStatus ;
113119import org .springframework .security .ldap .ppolicy .PasswordPolicyException ;
120+ import org .springframework .security .ldap .ppolicy .PasswordPolicyResponseControl ;
114121import org .springframework .security .ldap .userdetails .LdapAuthority ;
115122import org .springframework .security .oauth2 .client .ClientAuthorizationException ;
116123import org .springframework .security .oauth2 .client .ClientAuthorizationRequiredException ;
179186import org .springframework .security .saml2 .provider .service .authentication .TestSaml2Authentications ;
180187import org .springframework .security .saml2 .provider .service .authentication .TestSaml2PostAuthenticationRequests ;
181188import org .springframework .security .saml2 .provider .service .authentication .TestSaml2RedirectAuthenticationRequests ;
189+ import org .springframework .security .web .PortResolverImpl ;
182190import org .springframework .security .web .authentication .WebAuthenticationDetails ;
183191import org .springframework .security .web .authentication .preauth .PreAuthenticatedAuthenticationToken ;
184192import org .springframework .security .web .authentication .preauth .PreAuthenticatedCredentialsNotFoundException ;
194202import org .springframework .security .web .csrf .InvalidCsrfTokenException ;
195203import org .springframework .security .web .csrf .MissingCsrfTokenException ;
196204import org .springframework .security .web .firewall .RequestRejectedException ;
205+ import org .springframework .security .web .savedrequest .DefaultSavedRequest ;
206+ import org .springframework .security .web .savedrequest .SimpleSavedRequest ;
197207import org .springframework .security .web .server .firewall .ServerExchangeRejectedException ;
198208import org .springframework .security .web .session .HttpSessionCreatedEvent ;
199209import org .springframework .security .web .webauthn .api .Bytes ;
@@ -442,6 +452,8 @@ class SpringSecurityCoreVersionSerializableTests {
442452 generatorByClassName .put (JaasAuthenticationSuccessEvent .class ,
443453 (r ) -> new JaasAuthenticationSuccessEvent (authentication ));
444454 generatorByClassName .put (AbstractSessionEvent .class , (r ) -> new AbstractSessionEvent (securityContext ));
455+ generatorByClassName .put (SecurityConfig .class , (r ) -> new SecurityConfig ("value" ));
456+ generatorByClassName .put (TransientSecurityContext .class , (r ) -> new TransientSecurityContext (authentication ));
445457
446458 // cas
447459 generatorByClassName .put (CasServiceTicketAuthenticationToken .class , (r ) -> {
@@ -466,6 +478,11 @@ class SpringSecurityCoreVersionSerializableTests {
466478 (r ) -> new LdapAuthority ("USER" , "username" , Map .of ("attribute" , List .of ("value1" , "value2" ))));
467479 generatorByClassName .put (PasswordPolicyException .class ,
468480 (r ) -> new PasswordPolicyException (PasswordPolicyErrorStatus .INSUFFICIENT_PASSWORD_QUALITY ));
481+ generatorByClassName .put (PasswordPolicyControl .class , (r ) -> new PasswordPolicyControl (true ));
482+ generatorByClassName .put (PasswordPolicyResponseControl .class , (r ) -> {
483+ byte [] encodedResponse = { 0x30 , 0x05 , (byte ) 0xA0 , 0x03 , (byte ) 0xA0 , 0x1 , 0x21 };
484+ return new PasswordPolicyResponseControl (encodedResponse );
485+ });
469486
470487 // saml2-service-provider
471488 generatorByClassName .put (Saml2AuthenticationException .class ,
@@ -521,6 +538,20 @@ class SpringSecurityCoreVersionSerializableTests {
521538 (r ) -> new AuthenticationSwitchUserEvent (authentication , user ));
522539 generatorByClassName .put (HttpSessionCreatedEvent .class ,
523540 (r ) -> new HttpSessionCreatedEvent (new MockHttpSession ()));
541+ generatorByClassName .put (SimpleSavedRequest .class , (r ) -> {
542+ MockHttpServletRequest request = new MockHttpServletRequest ("GET" , "/uri" );
543+ request .setQueryString ("query=string" );
544+ request .setScheme ("https" );
545+ request .setServerName ("localhost" );
546+ request .setServerPort (80 );
547+ request .setRequestURI ("/uri" );
548+ request .setCookies (new Cookie ("name" , "value" ));
549+ request .addHeader ("header" , "value" );
550+ request .addParameter ("parameter" , "value" );
551+ request .setPathInfo ("/path" );
552+ request .addPreferredLocale (Locale .ENGLISH );
553+ return new SimpleSavedRequest (new DefaultSavedRequest (request , new PortResolverImpl (), "continue" ));
554+ });
524555
525556 // webauthn
526557 generatorByClassName .put (Bytes .class , (r ) -> TestBytes .get ());
0 commit comments