1 package org.oran.pmlog.oauth2;
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertFalse;
5 import static org.junit.jupiter.api.Assertions.assertNotNull;
6 import static org.junit.jupiter.api.Assertions.assertThrows;
8 import com.fasterxml.jackson.core.JsonProcessingException;
9 import org.junit.jupiter.api.BeforeEach;
10 import org.junit.jupiter.api.Test;
11 import org.junit.jupiter.api.extension.ExtendWith;
12 import org.mockito.junit.jupiter.MockitoExtension;
13 import org.oran.pmlog.exceptions.ServiceException;
14 import org.springframework.test.context.ContextConfiguration;
16 @ContextConfiguration(classes = {OAuthBearerTokenJwtTest.class})
17 @ExtendWith(MockitoExtension.class)
18 class OAuthBearerTokenJwtTest {
20 private OAuthBearerTokenJwt token;
23 void setUp() throws ServiceException, JsonProcessingException {
24 String validJwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"; // Replace with a valid JWT token for testing
25 token = OAuthBearerTokenJwt.create(validJwt);
29 void testCreateValidToken() {
34 void testCreateInvalidToken() {
35 assertThrows(ServiceException.class, () -> OAuthBearerTokenJwt.create("invalid_token"));
39 void testTokenValue() {
40 assertEquals("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", token.value());
44 void testTokenScope() {
45 assertEquals(0, token.scope().size());
46 assertFalse(token.scope().contains(""));
50 void testTokenLifetimeMs() {
51 assertEquals(Long.MAX_VALUE, token.lifetimeMs());
55 void testTokenPrincipalName() {
56 assertEquals("1234567890", token.principalName());
60 void testTokenStartTimeMs() {
61 assertEquals(1516239022L, token.startTimeMs());
65 void testCreateTokenFromInvalidPayload() throws ServiceException {
66 // Create a JWT with an invalid payload (missing fields)
67 String invalidPayload = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9";
68 assertThrows(ServiceException.class, () -> OAuthBearerTokenJwt.create(invalidPayload));
72 void testCreateTokenWithValidPayload() throws ServiceException, JsonProcessingException {
73 // Create a JWT with a valid payload
74 String validPayload = "eyJzdWIiOiAiVGVzdCIsICJleHAiOiAxNjM1MTUwMDAwLCAiaWF0IjogMTYzNTA5NTAwMCwgInNjb3BlIjogInNjb3BlX3Rva2VuIiwgImp0aSI6ICJmb28ifQ==";
75 OAuthBearerTokenJwt jwt = OAuthBearerTokenJwt.create("header." + validPayload + ".signature");
78 assertEquals("header." + validPayload + ".signature", jwt.value());
79 assertEquals(1, jwt.scope().size());
80 assertEquals("scope_token", jwt.scope().iterator().next());
81 assertEquals("Test", jwt.principalName());
82 assertEquals(1635095000, jwt.startTimeMs());
86 void testCreateThrowsExceptionWithInvalidToken() throws ServiceException {
87 String tokenRaw = "your_mocked_token_here";
88 assertThrows(ServiceException.class, () -> OAuthBearerTokenJwt.create(tokenRaw));