16
16
17
17
package org .springframework .security ;
18
18
19
+ import java .io .ByteArrayInputStream ;
20
+ import java .io .ByteArrayOutputStream ;
19
21
import java .io .File ;
20
22
import java .io .FileInputStream ;
21
23
import java .io .FileOutputStream ;
36
38
import java .util .Collection ;
37
39
import java .util .Date ;
38
40
import java .util .HashMap ;
41
+ import java .util .HashSet ;
39
42
import java .util .List ;
40
43
import java .util .Locale ;
41
44
import java .util .Map ;
42
45
import java .util .Set ;
46
+ import java .util .UUID ;
47
+ import java .util .function .Supplier ;
43
48
import java .util .stream .Stream ;
44
49
45
50
import jakarta .servlet .http .Cookie ;
51
+ import org .apache .commons .lang3 .ObjectUtils ;
46
52
import org .apereo .cas .client .validation .AssertionImpl ;
47
53
import org .instancio .Instancio ;
48
54
import org .instancio .InstancioApi ;
63
69
import org .springframework .security .access .AccessDeniedException ;
64
70
import org .springframework .security .access .AuthorizationServiceException ;
65
71
import org .springframework .security .access .SecurityConfig ;
72
+ import org .springframework .security .access .hierarchicalroles .CycleInRoleHierarchyException ;
66
73
import org .springframework .security .access .intercept .RunAsUserToken ;
67
74
import org .springframework .security .authentication .AbstractAuthenticationToken ;
68
75
import org .springframework .security .authentication .AccountExpiredException ;
94
101
import org .springframework .security .authentication .jaas .JaasAuthenticationToken ;
95
102
import org .springframework .security .authentication .jaas .event .JaasAuthenticationFailedEvent ;
96
103
import org .springframework .security .authentication .jaas .event .JaasAuthenticationSuccessEvent ;
104
+ import org .springframework .security .authentication .ott .DefaultOneTimeToken ;
97
105
import org .springframework .security .authentication .ott .InvalidOneTimeTokenException ;
98
106
import org .springframework .security .authentication .ott .OneTimeTokenAuthenticationToken ;
99
107
import org .springframework .security .authentication .password .CompromisedPasswordException ;
100
108
import org .springframework .security .authorization .AuthorityAuthorizationDecision ;
101
109
import org .springframework .security .authorization .AuthorizationDecision ;
102
110
import org .springframework .security .authorization .AuthorizationDeniedException ;
111
+ import org .springframework .security .authorization .event .AuthorizationEvent ;
112
+ import org .springframework .security .authorization .event .AuthorizationGrantedEvent ;
103
113
import org .springframework .security .cas .authentication .CasAssertionAuthenticationToken ;
104
114
import org .springframework .security .cas .authentication .CasAuthenticationToken ;
105
115
import org .springframework .security .cas .authentication .CasServiceTicketAuthenticationToken ;
116
+ import org .springframework .security .config .annotation .AlreadyBuiltException ;
106
117
import org .springframework .security .core .Authentication ;
107
118
import org .springframework .security .core .GrantedAuthority ;
108
119
import org .springframework .security .core .SpringSecurityCoreVersion ;
128
139
import org .springframework .security .oauth2 .client .authentication .OAuth2LoginAuthenticationToken ;
129
140
import org .springframework .security .oauth2 .client .authentication .TestOAuth2AuthenticationTokens ;
130
141
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 ;
131
144
import org .springframework .security .oauth2 .client .oidc .authentication .logout .OidcLogoutToken ;
132
145
import org .springframework .security .oauth2 .client .oidc .authentication .logout .TestOidcLogoutTokens ;
133
146
import org .springframework .security .oauth2 .client .oidc .session .OidcSessionInformation ;
134
147
import org .springframework .security .oauth2 .client .oidc .session .TestOidcSessionInformations ;
135
148
import org .springframework .security .oauth2 .client .registration .ClientRegistration ;
149
+ import org .springframework .security .oauth2 .client .registration .ClientRegistration .ClientSettings ;
136
150
import org .springframework .security .oauth2 .client .registration .TestClientRegistrations ;
137
151
import org .springframework .security .oauth2 .core .DefaultOAuth2AuthenticatedPrincipal ;
138
152
import org .springframework .security .oauth2 .core .OAuth2AccessToken ;
148
162
import org .springframework .security .oauth2 .core .endpoint .OAuth2AuthorizationExchange ;
149
163
import org .springframework .security .oauth2 .core .endpoint .OAuth2AuthorizationRequest ;
150
164
import org .springframework .security .oauth2 .core .endpoint .OAuth2AuthorizationResponse ;
165
+ import org .springframework .security .oauth2 .core .endpoint .TestOAuth2AccessTokenResponses ;
151
166
import org .springframework .security .oauth2 .core .endpoint .TestOAuth2AuthorizationExchanges ;
152
167
import org .springframework .security .oauth2 .core .endpoint .TestOAuth2AuthorizationRequests ;
153
168
import org .springframework .security .oauth2 .core .endpoint .TestOAuth2AuthorizationResponses ;
172
187
import org .springframework .security .oauth2 .server .resource .InvalidBearerTokenException ;
173
188
import org .springframework .security .oauth2 .server .resource .authentication .BearerTokenAuthentication ;
174
189
import org .springframework .security .oauth2 .server .resource .authentication .BearerTokenAuthenticationToken ;
190
+ import org .springframework .security .oauth2 .server .resource .authentication .DPoPAuthenticationToken ;
175
191
import org .springframework .security .oauth2 .server .resource .authentication .JwtAuthenticationToken ;
176
192
import org .springframework .security .oauth2 .server .resource .introspection .BadOpaqueTokenException ;
177
193
import org .springframework .security .oauth2 .server .resource .introspection .OAuth2IntrospectionAuthenticatedPrincipal ;
188
204
import org .springframework .security .saml2 .provider .service .authentication .Saml2RedirectAuthenticationRequest ;
189
205
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2AuthenticationTokens ;
190
206
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2Authentications ;
207
+ import org .springframework .security .saml2 .provider .service .authentication .TestSaml2LogoutRequests ;
191
208
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2PostAuthenticationRequests ;
192
209
import org .springframework .security .saml2 .provider .service .authentication .TestSaml2RedirectAuthenticationRequests ;
210
+ import org .springframework .security .saml2 .provider .service .authentication .logout .Saml2LogoutRequest ;
193
211
import org .springframework .security .saml2 .provider .service .registration .RelyingPartyRegistration ;
194
212
import org .springframework .security .saml2 .provider .service .registration .RelyingPartyRegistration .AssertingPartyDetails ;
195
213
import org .springframework .security .saml2 .provider .service .registration .TestRelyingPartyRegistrations ;
213
231
import org .springframework .security .web .savedrequest .SimpleSavedRequest ;
214
232
import org .springframework .security .web .server .firewall .ServerExchangeRejectedException ;
215
233
import org .springframework .security .web .session .HttpSessionCreatedEvent ;
234
+ import org .springframework .security .web .session .HttpSessionIdChangedEvent ;
216
235
import org .springframework .security .web .webauthn .api .AuthenticationExtensionsClientInputs ;
217
236
import org .springframework .security .web .webauthn .api .AuthenticationExtensionsClientOutputs ;
218
237
import org .springframework .security .web .webauthn .api .AuthenticatorAssertionResponse ;
234
253
import org .springframework .security .web .webauthn .api .TestBytes ;
235
254
import org .springframework .security .web .webauthn .api .TestPublicKeyCredential ;
236
255
import org .springframework .security .web .webauthn .api .TestPublicKeyCredentialRequestOptions ;
256
+ import org .springframework .security .web .webauthn .api .TestPublicKeyCredentialUserEntities ;
237
257
import org .springframework .security .web .webauthn .api .TestPublicKeyCredentialUserEntity ;
258
+ import org .springframework .security .web .webauthn .api .TestPublicKeyCredentials ;
238
259
import org .springframework .security .web .webauthn .api .UserVerificationRequirement ;
239
260
import org .springframework .security .web .webauthn .authentication .WebAuthnAuthentication ;
240
261
import org .springframework .security .web .webauthn .authentication .WebAuthnAuthenticationRequestToken ;
@@ -262,6 +283,8 @@ class SpringSecurityCoreVersionSerializableTests {
262
283
263
284
private static final Map <Class <?>, Generator <?>> generatorByClassName = new HashMap <>();
264
285
286
+ private static final Map <Class <?>, Supplier <InstancioApi <?>>> instancioByClassName = new HashMap <>();
287
+
265
288
static final long securitySerialVersionUid = SpringSecurityCoreVersion .SERIAL_VERSION_UID ;
266
289
267
290
static Path currentVersionFolder = Paths .get ("src/test/resources/serialized/" + getCurrentVersion ());
@@ -766,10 +789,18 @@ void allSerializableClassesShouldHaveSerialVersionOrSuppressWarnings() throws Ex
766
789
|| Arrays .asList (suppressWarnings .value ()).contains ("Serial" );
767
790
if (!hasSerialVersion && !hasSerialIgnore ) {
768
791
classes .add (clazz );
792
+ continue ;
793
+ }
794
+ boolean isReachable = Modifier .isPublic (clazz .getModifiers ());
795
+ boolean hasSampleSerialization = currentVersionFolder .resolve (clazz .getName () + ".serialized" )
796
+ .toFile ()
797
+ .exists ();
798
+ if (hasSerialVersion && isReachable && !hasSampleSerialization ) {
799
+ classes .add (clazz );
769
800
}
770
801
}
771
- assertThat (classes )
772
- . describedAs ( "Found Serializable classes that are either missing a serialVersionUID or a @SuppressWarnings" )
802
+ assertThat (classes ). describedAs (
803
+ "Found Serializable classes that are either missing a serialVersionUID or a @SuppressWarnings or a sample serialized file " )
773
804
.isEmpty ();
774
805
}
775
806
@@ -796,6 +827,9 @@ static Stream<Class<?>> getClassesToSerialize() throws Exception {
796
827
}
797
828
798
829
private static InstancioApi <?> instancioWithDefaults (Class <?> clazz ) {
830
+ if (instancioByClassName .containsKey (clazz )) {
831
+ return instancioByClassName .get (clazz ).get ();
832
+ }
799
833
InstancioOfClassApi <?> instancio = Instancio .of (clazz );
800
834
ResolvableType [] generics = ResolvableType .forClass (clazz ).getGenerics ();
801
835
for (ResolvableType type : generics ) {
0 commit comments