Improve Test coverage of InfluxLogger
[nonrtric/plt/ranpm.git] / influxlogger / src / test / java / org / oran / pmlog / oauth2 / OAuthBearerTokenJwtTest.java
1 package org.oran.pmlog.oauth2;
2
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;
7
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;
15
16 @ContextConfiguration(classes = {OAuthBearerTokenJwtTest.class})
17 @ExtendWith(MockitoExtension.class)
18 class OAuthBearerTokenJwtTest {
19
20     private OAuthBearerTokenJwt token;
21
22     @BeforeEach
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);
26     }
27
28     @Test
29     void testCreateValidToken() {
30         assertNotNull(token);
31     }
32
33     @Test
34     void testCreateInvalidToken() {
35         assertThrows(ServiceException.class, () -> OAuthBearerTokenJwt.create("invalid_token"));
36     }
37
38     @Test
39     void testTokenValue() {
40         assertEquals("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", token.value());
41     }
42
43     @Test
44     void testTokenScope() {
45         assertEquals(0, token.scope().size());
46         assertFalse(token.scope().contains(""));
47     }
48
49     @Test
50     void testTokenLifetimeMs() {
51         assertEquals(Long.MAX_VALUE, token.lifetimeMs());
52     }
53
54     @Test
55     void testTokenPrincipalName() {
56         assertEquals("1234567890", token.principalName());
57     }
58
59     @Test
60     void testTokenStartTimeMs() {
61         assertEquals(1516239022L, token.startTimeMs());
62     }
63
64     @Test
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));
69     }
70
71     @Test
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");
76
77         assertNotNull(jwt);
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());
83     }
84
85     @Test
86     void testCreateThrowsExceptionWithInvalidToken() throws ServiceException {
87         String tokenRaw = "your_mocked_token_here";
88         assertThrows(ServiceException.class, () -> OAuthBearerTokenJwt.create(tokenRaw));
89     }
90 }
91