Skip to content

Commit 39fdcea

Browse files
committed
Add Missing Serializable Samples
Issue gh-17038
1 parent 65d53be commit 39fdcea

7 files changed

+55
-25
lines changed

config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java

Lines changed: 55 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.springframework.security;
1818

19-
import java.io.ByteArrayInputStream;
20-
import java.io.ByteArrayOutputStream;
2119
import java.io.File;
2220
import java.io.FileInputStream;
2321
import java.io.FileOutputStream;
@@ -38,7 +36,6 @@
3836
import java.util.Collection;
3937
import java.util.Date;
4038
import java.util.HashMap;
41-
import java.util.HashSet;
4239
import java.util.List;
4340
import java.util.Locale;
4441
import java.util.Map;
@@ -48,7 +45,6 @@
4845
import java.util.stream.Stream;
4946

5047
import jakarta.servlet.http.Cookie;
51-
import org.apache.commons.lang3.ObjectUtils;
5248
import org.apereo.cas.client.validation.AssertionImpl;
5349
import org.instancio.Instancio;
5450
import org.instancio.InstancioApi;
@@ -139,14 +135,11 @@
139135
import org.springframework.security.oauth2.client.authentication.OAuth2LoginAuthenticationToken;
140136
import org.springframework.security.oauth2.client.authentication.TestOAuth2AuthenticationTokens;
141137
import org.springframework.security.oauth2.client.authentication.TestOAuth2AuthorizationCodeAuthenticationTokens;
142-
import org.springframework.security.oauth2.client.event.OAuth2AuthorizedClientRefreshedEvent;
143-
import org.springframework.security.oauth2.client.oidc.authentication.event.OidcUserRefreshedEvent;
144138
import org.springframework.security.oauth2.client.oidc.authentication.logout.OidcLogoutToken;
145139
import org.springframework.security.oauth2.client.oidc.authentication.logout.TestOidcLogoutTokens;
146140
import org.springframework.security.oauth2.client.oidc.session.OidcSessionInformation;
147141
import org.springframework.security.oauth2.client.oidc.session.TestOidcSessionInformations;
148142
import org.springframework.security.oauth2.client.registration.ClientRegistration;
149-
import org.springframework.security.oauth2.client.registration.ClientRegistration.ClientSettings;
150143
import org.springframework.security.oauth2.client.registration.TestClientRegistrations;
151144
import org.springframework.security.oauth2.core.DefaultOAuth2AuthenticatedPrincipal;
152145
import org.springframework.security.oauth2.core.OAuth2AccessToken;
@@ -162,7 +155,6 @@
162155
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationExchange;
163156
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;
164157
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationResponse;
165-
import org.springframework.security.oauth2.core.endpoint.TestOAuth2AccessTokenResponses;
166158
import org.springframework.security.oauth2.core.endpoint.TestOAuth2AuthorizationExchanges;
167159
import org.springframework.security.oauth2.core.endpoint.TestOAuth2AuthorizationRequests;
168160
import org.springframework.security.oauth2.core.endpoint.TestOAuth2AuthorizationResponses;
@@ -187,7 +179,6 @@
187179
import org.springframework.security.oauth2.server.resource.InvalidBearerTokenException;
188180
import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthentication;
189181
import org.springframework.security.oauth2.server.resource.authentication.BearerTokenAuthenticationToken;
190-
import org.springframework.security.oauth2.server.resource.authentication.DPoPAuthenticationToken;
191182
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
192183
import org.springframework.security.oauth2.server.resource.introspection.BadOpaqueTokenException;
193184
import org.springframework.security.oauth2.server.resource.introspection.OAuth2IntrospectionAuthenticatedPrincipal;
@@ -253,9 +244,7 @@
253244
import org.springframework.security.web.webauthn.api.TestBytes;
254245
import org.springframework.security.web.webauthn.api.TestPublicKeyCredential;
255246
import org.springframework.security.web.webauthn.api.TestPublicKeyCredentialRequestOptions;
256-
import org.springframework.security.web.webauthn.api.TestPublicKeyCredentialUserEntities;
257247
import org.springframework.security.web.webauthn.api.TestPublicKeyCredentialUserEntity;
258-
import org.springframework.security.web.webauthn.api.TestPublicKeyCredentials;
259248
import org.springframework.security.web.webauthn.api.UserVerificationRequirement;
260249
import org.springframework.security.web.webauthn.authentication.WebAuthnAuthentication;
261250
import org.springframework.security.web.webauthn.authentication.WebAuthnAuthenticationRequestToken;
@@ -417,6 +406,9 @@ class SpringSecurityCoreVersionSerializableTests {
417406
generatorByClassName.put(OAuth2IntrospectionException.class,
418407
(r) -> new OAuth2IntrospectionException("message", new RuntimeException()));
419408

409+
// config
410+
generatorByClassName.put(AlreadyBuiltException.class, (r) -> new AlreadyBuiltException("message"));
411+
420412
// core
421413
generatorByClassName.put(RunAsUserToken.class, (r) -> {
422414
RunAsUserToken token = new RunAsUserToken("key", user, "creds", user.getAuthorities(),
@@ -508,6 +500,20 @@ class SpringSecurityCoreVersionSerializableTests {
508500
generatorByClassName.put(AuthorizationDecision.class, (r) -> new AuthorizationDecision(true));
509501
generatorByClassName.put(AuthorityAuthorizationDecision.class,
510502
(r) -> new AuthorityAuthorizationDecision(true, AuthorityUtils.createAuthorityList("ROLE_USER")));
503+
generatorByClassName.put(CycleInRoleHierarchyException.class, (r) -> new CycleInRoleHierarchyException());
504+
generatorByClassName.put(AuthorizationEvent.class,
505+
(r) -> new AuthorizationEvent(new SerializableSupplier<>(authentication), "source",
506+
new AuthorizationDecision(true)));
507+
generatorByClassName.put(AuthorizationGrantedEvent.class,
508+
(r) -> new AuthorizationGrantedEvent<>(new SerializableSupplier<>(authentication), "source",
509+
new AuthorizationDecision(true)));
510+
instancioByClassName.put(AuthorizationGrantedEvent.class, () -> {
511+
InstancioOfClassApi<?> instancio = Instancio.of(AuthorizationGrantedEvent.class);
512+
instancio.withTypeParameters(String.class);
513+
instancio.supply(Select.all(AuthorizationGrantedEvent.class),
514+
generatorByClassName.get(AuthorizationGrantedEvent.class));
515+
return instancio;
516+
});
511517

512518
// cas
513519
generatorByClassName.put(CasServiceTicketAuthenticationToken.class, (r) -> {
@@ -561,6 +567,7 @@ class SpringSecurityCoreVersionSerializableTests {
561567
token.setDetails(details);
562568
return token;
563569
});
570+
generatorByClassName.put(Saml2LogoutRequest.class, (r) -> TestSaml2LogoutRequests.create());
564571

565572
// web
566573
generatorByClassName.put(AnonymousAuthenticationToken.class, (r) -> {
@@ -616,20 +623,8 @@ class SpringSecurityCoreVersionSerializableTests {
616623
request.addPreferredLocale(Locale.ENGLISH);
617624
return new SimpleSavedRequest(new DefaultSavedRequest(request, new PortResolverImpl(), "continue"));
618625
});
619-
620-
// webauthn
621-
generatorByClassName.put(Bytes.class, (r) -> TestBytes.get());
622-
generatorByClassName.put(ImmutablePublicKeyCredentialUserEntity.class,
623-
(r) -> TestPublicKeyCredentialUserEntity.userEntity().id(TestBytes.get()).build());
624-
generatorByClassName.put(WebAuthnAuthentication.class, (r) -> {
625-
PublicKeyCredentialUserEntity userEntity = TestPublicKeyCredentialUserEntity.userEntity()
626-
.id(TestBytes.get())
627-
.build();
628-
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList("ROLE_USER");
629-
WebAuthnAuthentication webAuthnAuthentication = new WebAuthnAuthentication(userEntity, authorities);
630-
webAuthnAuthentication.setDetails(details);
631-
return webAuthnAuthentication;
632-
});
626+
generatorByClassName.put(HttpSessionIdChangedEvent.class,
627+
(r) -> new HttpSessionIdChangedEvent(new MockHttpSession(), "1"));
633628

634629
// webauthn
635630
CredProtectAuthenticationExtensionsClientInput.CredProtect credProtect = new CredProtectAuthenticationExtensionsClientInput.CredProtect(
@@ -686,6 +681,25 @@ class SpringSecurityCoreVersionSerializableTests {
686681
generatorByClassName.put(WebAuthnAuthenticationRequestToken.class, (r) -> requestToken);
687682
generatorByClassName.put(AuthenticatorAttachment.class, (r) -> AuthenticatorAttachment.PLATFORM);
688683
// @formatter:on
684+
generatorByClassName.put(ImmutablePublicKeyCredentialUserEntity.class,
685+
(r) -> TestPublicKeyCredentialUserEntity.userEntity().id(TestBytes.get()).build());
686+
generatorByClassName.put(WebAuthnAuthentication.class, (r) -> {
687+
PublicKeyCredentialUserEntity userEntity = TestPublicKeyCredentialUserEntity.userEntity()
688+
.id(TestBytes.get())
689+
.build();
690+
List<GrantedAuthority> authorities = AuthorityUtils.createAuthorityList("ROLE_USER");
691+
WebAuthnAuthentication webAuthnAuthentication = new WebAuthnAuthentication(userEntity, authorities);
692+
webAuthnAuthentication.setDetails(details);
693+
return webAuthnAuthentication;
694+
});
695+
// @formatter:on
696+
generatorByClassName.put(CredentialPropertiesOutput.ExtensionOutput.class,
697+
(r) -> new CredentialPropertiesOutput(true).getOutput());
698+
699+
// One-Time Token
700+
DefaultOneTimeToken oneTimeToken = new DefaultOneTimeToken(UUID.randomUUID().toString(), "user",
701+
Instant.now().plusSeconds(300));
702+
generatorByClassName.put(DefaultOneTimeToken.class, (t) -> oneTimeToken);
689703
}
690704

691705
@ParameterizedTest
@@ -862,4 +876,20 @@ private static String getPreviousVersion() {
862876
return String.join(".", parts);
863877
}
864878

879+
@SuppressWarnings("serial")
880+
private static final class SerializableSupplier<T> implements Supplier<T>, Serializable {
881+
882+
private final T value;
883+
884+
SerializableSupplier(T value) {
885+
this.value = value;
886+
}
887+
888+
@Override
889+
public T get() {
890+
return this.value;
891+
}
892+
893+
}
894+
865895
}

0 commit comments

Comments
 (0)