Optimize InMemoryOAuth2AuthorizationService

Closes gh-654
This commit is contained in:
Joe Grandja
2022-03-22 06:17:21 -04:00
parent c3402b0b12
commit 5b7d900424
3 changed files with 99 additions and 7 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2020-2021 the original author or authors.
* Copyright 2020-2022 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -132,6 +132,43 @@ public class InMemoryOAuth2AuthorizationServiceTests {
assertThat(authorization).isNotEqualTo(originalAuthorization);
}
@Test
public void saveWhenInitializedAuthorizationsReachMaxThenOldestRemoved() {
int maxInitializedAuthorizations = 5;
InMemoryOAuth2AuthorizationService authorizationService =
new InMemoryOAuth2AuthorizationService(maxInitializedAuthorizations);
OAuth2Authorization initialAuthorization = OAuth2Authorization.withRegisteredClient(REGISTERED_CLIENT)
.id(ID + "-initial")
.principalName(PRINCIPAL_NAME)
.authorizationGrantType(AUTHORIZATION_GRANT_TYPE)
.attribute(OAuth2ParameterNames.STATE, "state-initial")
.build();
authorizationService.save(initialAuthorization);
OAuth2Authorization authorization = authorizationService.findById(initialAuthorization.getId());
assertThat(authorization).isEqualTo(initialAuthorization);
authorization = authorizationService.findByToken(
initialAuthorization.getAttribute(OAuth2ParameterNames.STATE), STATE_TOKEN_TYPE);
assertThat(authorization).isEqualTo(initialAuthorization);
for (int i = 0; i < maxInitializedAuthorizations; i++) {
authorization = OAuth2Authorization.withRegisteredClient(REGISTERED_CLIENT)
.id(ID + "-" + i)
.principalName(PRINCIPAL_NAME)
.authorizationGrantType(AUTHORIZATION_GRANT_TYPE)
.attribute(OAuth2ParameterNames.STATE, "state-" + i)
.build();
authorizationService.save(authorization);
}
authorization = authorizationService.findById(initialAuthorization.getId());
assertThat(authorization).isNull();
authorization = authorizationService.findByToken(
initialAuthorization.getAttribute(OAuth2ParameterNames.STATE), STATE_TOKEN_TYPE);
assertThat(authorization).isNull();
}
@Test
public void removeWhenAuthorizationNullThenThrowIllegalArgumentException() {
assertThatThrownBy(() -> this.authorizationService.remove(null))