Changed from JWT token to public/privat key

This commit is contained in:
Andreas Dahm committed 2026-05-12 08:56:51 +02:00
1 parent 4859e74d45
commit 9114eb096b
5 files changed
+161 -132

No files matched your search

@@ -1,109 +1,109 @@
package auth_service.configuration.security;
import auth_service.shared.test.AbstractUnitTest;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.when;
/**
* Tests for JwtService.
*/
class JwtServiceTest extends AbstractUnitTest {
@Mock
private JwtConfig jwtConfig;
private JwtService jwtService;
@BeforeEach
void setUp() {
when(jwtConfig.getSecret()).thenReturn("verysecretkeythatmustbeatleast32characterslongforhmacsha");
jwtService = new JwtService(jwtConfig);
}
@Test
void generateToken_Success() {
// Arrange
var userId = "0815";
var email = "test@example.com";
// Act
var token = jwtService.generateToken(userId, email, null);
// Assert
assertNotNull(token);
assertFalse(token.isEmpty());
}
@Test
void extractEmail_Success() {
// Arrange
var userId = "0815";
var email = "test@example.com";
var token = jwtService.generateToken(userId, email, null);
// Act
var extractedEmail = jwtService.extractEmail(token);
// Assert
assertEquals(email, extractedEmail);
}
@Test
void extractUserId_Success() {
// Arrange
var userId = "0815";
var email = "test@example.com";
var token = jwtService.generateToken(userId, email, null);
// Act
var extractedUserId = jwtService.extractUserId(token);
// Assert
assertEquals(userId, extractedUserId);
}
@Test
void extractSteamId_Success() {
// Arrange
var userId = "0815";
var email = "test@example.com";
var steamId = 123456789L;
var token = jwtService.generateToken(userId, email, steamId);
// Act
var extractedSteamId = jwtService.extractSteamId(token);
// Assert
assertEquals(steamId, extractedSteamId);
}
@Test
void isTokenValid_Success() {
// Arrange
var userId = "0815";
var email = "test@example.com";
var token = jwtService.generateToken(userId, email, null);
// Act
var isValid = jwtService.isTokenValid(token);
// Assert
assertTrue(isValid);
}
@Test
void isTokenValid_Failure() {
// Arrange
var invalidToken = "invalid-token";
// Act
var isValid = jwtService.isTokenValid(invalidToken);
// Assert
assertFalse(isValid);
}
}
package auth_service.configuration.security;
import auth_service.shared.test.AbstractUnitTest;
import io.jsonwebtoken.Jwts;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.lenient;
/**
* Tests for JwtService (EdDSA / Ed25519).
*/
class JwtServiceTest extends AbstractUnitTest {
private static final String KID = "test-key-1";
@Mock
private JwtConfig jwtConfig;
private JwtService jwtService;
private PublicKey publicKey;
@BeforeEach
void setUp() throws Exception {
KeyPair keyPair = KeyPairGenerator.getInstance("Ed25519").generateKeyPair();
String privateB64 = Base64.getEncoder().encodeToString(keyPair.getPrivate().getEncoded());
String publicB64 = Base64.getEncoder().encodeToString(keyPair.getPublic().getEncoded());
lenient().when(jwtConfig.getPrivateKey()).thenReturn(privateB64);
lenient().when(jwtConfig.getPublicKey()).thenReturn(publicB64);
lenient().when(jwtConfig.getKid()).thenReturn(KID);
publicKey = KeyFactory.getInstance("Ed25519")
.generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(publicB64)));
jwtService = new JwtService(jwtConfig);
jwtService.init();
}
@Test
void generateToken_Success() {
var token = jwtService.generateToken("0815", "test@example.com", null);
assertNotNull(token);
assertFalse(token.isEmpty());
}
@Test
void generateToken_setsKidHeader() {
var token = jwtService.generateToken("0815", "test@example.com", null);
var header = Jwts.parser()
.verifyWith(publicKey)
.build()
.parseSignedClaims(token)
.getHeader();
assertEquals(KID, header.getKeyId());
assertEquals("EdDSA", header.getAlgorithm());
}
@Test
void extractEmail_Success() {
var email = "test@example.com";
var token = jwtService.generateToken("0815", email, null);
assertEquals(email, jwtService.extractEmail(token));
}
@Test
void extractUserId_Success() {
var userId = "0815";
var token = jwtService.generateToken(userId, "test@example.com", null);
assertEquals(userId, jwtService.extractUserId(token));
}
@Test
void extractSteamId_Success() {
var steamId = 123456789L;
var token = jwtService.generateToken("0815", "test@example.com", steamId);
assertEquals(steamId, jwtService.extractSteamId(token));
}
@Test
void isTokenValid_Success() {
var token = jwtService.generateToken("0815", "test@example.com", null);
assertTrue(jwtService.isTokenValid(token));
}
@Test
void isTokenValid_Failure() {
assertFalse(jwtService.isTokenValid("invalid-token"));
}
}