mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-08-11 13:48:37 +02:00
Create ApiKeyAuthenticationTokenTest.java
This commit is contained in:
parent
076c9393ea
commit
bf364938eb
@ -0,0 +1,84 @@
|
||||
package stirling.software.proprietary.security.model;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
||||
|
||||
class ApiKeyAuthenticationTokenTest {
|
||||
|
||||
@Test
|
||||
void ctor_apiKeyOnly_isUnauthenticated_andStoresApiKey() {
|
||||
String apiKey = "abc-123";
|
||||
ApiKeyAuthenticationToken token = new ApiKeyAuthenticationToken(apiKey);
|
||||
|
||||
assertFalse(token.isAuthenticated(), "should be unauthenticated");
|
||||
assertNull(token.getPrincipal(), "principal should be null for unauthenticated ctor");
|
||||
assertEquals(apiKey, token.getCredentials(), "credentials should store api key");
|
||||
// Authorities: do not check version-dependent behavior (can be null or empty depending on
|
||||
// Spring Security)
|
||||
}
|
||||
|
||||
@Test
|
||||
void ctor_withPrincipalAndAuthorities_isAuthenticated_andStoresAll() {
|
||||
String apiKey = "xyz-999";
|
||||
Object principal = new Object();
|
||||
var authorities = List.of(new SimpleGrantedAuthority("ROLE_API"));
|
||||
|
||||
ApiKeyAuthenticationToken token =
|
||||
new ApiKeyAuthenticationToken(principal, apiKey, authorities);
|
||||
|
||||
assertTrue(token.isAuthenticated(), "should be authenticated");
|
||||
assertSame(principal, token.getPrincipal(), "principal should be set");
|
||||
assertEquals(apiKey, token.getCredentials(), "credentials should store api key");
|
||||
assertNotNull(token.getAuthorities());
|
||||
assertEquals(1, token.getAuthorities().size());
|
||||
assertEquals("ROLE_API", token.getAuthorities().iterator().next().getAuthority());
|
||||
}
|
||||
|
||||
@Test
|
||||
void setAuthenticated_true_throwsIllegalArgumentException() {
|
||||
ApiKeyAuthenticationToken token = new ApiKeyAuthenticationToken("k");
|
||||
|
||||
IllegalArgumentException ex =
|
||||
assertThrows(IllegalArgumentException.class, () -> token.setAuthenticated(true));
|
||||
assertTrue(
|
||||
ex.getMessage().toLowerCase().contains("trusted"),
|
||||
"message should explain to use the constructor with authorities");
|
||||
}
|
||||
|
||||
@Test
|
||||
void setAuthenticated_false_isAllowed_andUnsetsFlag() {
|
||||
Object principal = new Object();
|
||||
ApiKeyAuthenticationToken token =
|
||||
new ApiKeyAuthenticationToken(
|
||||
principal, "k", List.of(new SimpleGrantedAuthority("ROLE_API")));
|
||||
|
||||
assertTrue(token.isAuthenticated());
|
||||
|
||||
// allowed to set to false (via the override method)
|
||||
token.setAuthenticated(false);
|
||||
|
||||
assertFalse(token.isAuthenticated());
|
||||
assertSame(principal, token.getPrincipal(), "principal remains");
|
||||
assertEquals("k", token.getCredentials(), "credentials remain until erased");
|
||||
}
|
||||
|
||||
@Test
|
||||
void eraseCredentials_setsCredentialsNull_butKeepsPrincipal() {
|
||||
Object principal = new Object();
|
||||
ApiKeyAuthenticationToken token =
|
||||
new ApiKeyAuthenticationToken(
|
||||
principal, "top-secret", List.of(new SimpleGrantedAuthority("ROLE_API")));
|
||||
|
||||
assertEquals("top-secret", token.getCredentials());
|
||||
assertSame(principal, token.getPrincipal());
|
||||
|
||||
token.eraseCredentials();
|
||||
|
||||
assertNull(token.getCredentials(), "credentials should be nulled after erase");
|
||||
assertSame(principal, token.getPrincipal(), "principal should remain");
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user