diff --git a/src/test/java/com/safetypin/authentication/service/AuthenticationServiceTest.java b/src/test/java/com/safetypin/authentication/service/AuthenticationServiceTest.java
index 4576bc5de8090eaa1dae194cd8692efad16dc9b4..7199055e2cac7c7926cad40766081738821f905d 100644
--- a/src/test/java/com/safetypin/authentication/service/AuthenticationServiceTest.java
+++ b/src/test/java/com/safetypin/authentication/service/AuthenticationServiceTest.java
@@ -10,6 +10,7 @@ import com.safetypin.authentication.model.User;
 import com.safetypin.authentication.repository.UserRepository;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
 import io.jsonwebtoken.security.Keys;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -472,7 +473,7 @@ class AuthenticationServiceTest {
         UUID userId = UUID.randomUUID();
         String token = authenticationService.generateJwtToken(userId);
         assertNotNull(token);
-        
+
         // Parse the token to extract claims
         Key key = Keys.hmacShaKeyFor("5047c55bfe120155fd4e884845682bb8b8815c0048a686cc664d1ea6c8e094da".getBytes());
         Claims claims = Jwts.parserBuilder()
@@ -480,16 +481,86 @@ class AuthenticationServiceTest {
                 .build()
                 .parseClaimsJws(token)
                 .getBody();
-        
+
         // Extract the issued at and expiration times
         Date issuedAt = claims.getIssuedAt();
         Date expiration = claims.getExpiration();
         assertNotNull(issuedAt);
         assertNotNull(expiration);
-        
+
         // Calculate difference and verify it equals 86400000L (24 hours)
         long timeDifference = expiration.getTime() - issuedAt.getTime();
-        assertEquals(86400000L, timeDifference, 
+        assertEquals(86400000L, timeDifference,
                 "JWT token should expire exactly 24 hours (86400000 milliseconds) after issuance");
     }
+
+    // Tests for getUserFromJwtToken method
+
+    @Test
+    void testGetUserFromJwtToken_InvalidToken() {
+        // Test with malformed token
+        Exception exception = assertThrows(InvalidCredentialsException.class, () ->
+                authenticationService.getUserFromJwtToken("invalid.token.format")
+        );
+        assertEquals("Invalid token", exception.getMessage());
+    }
+
+    @Test
+    void testGetUserFromJwtToken_ExpiredToken() throws Exception {
+        // Create a JWT token with custom expiration (already expired)
+        UUID userId = UUID.randomUUID();
+        Key key = Keys.hmacShaKeyFor("5047c55bfe120155fd4e884845682bb8b8815c0048a686cc664d1ea6c8e094da".getBytes());
+
+        String expiredToken = Jwts.builder()
+                .setSubject(userId.toString())
+                .setIssuedAt(new Date(System.currentTimeMillis() - 200000)) // 200 seconds ago
+                .setExpiration(new Date(System.currentTimeMillis() - 100000)) // 100 seconds ago (expired)
+                .signWith(key, SignatureAlgorithm.HS256)
+                .compact();
+
+        Exception exception = assertThrows(InvalidCredentialsException.class, () ->
+                authenticationService.getUserFromJwtToken(expiredToken)
+        );
+        assertEquals("Invalid token", exception.getMessage());
+    }
+
+    @Test
+    void testGetUserFromJwtToken_UserNotFound() {
+        // Create valid token with random UUID that doesn't exist in DB
+        UUID nonExistentId = UUID.randomUUID();
+        String token = authenticationService.generateJwtToken(nonExistentId);
+
+        when(userRepository.findById(nonExistentId)).thenReturn(Optional.empty());
+
+        Exception exception = assertThrows(InvalidCredentialsException.class, () ->
+                authenticationService.getUserFromJwtToken(token)
+        );
+        assertEquals("User not found", exception.getMessage());
+    }
+
+    @Test
+    void testGetUserFromJwtToken_Success() {
+        // Create user and token for explicit testing
+        UUID userId = UUID.randomUUID();
+        User user = new User();
+        user.setId(userId);
+        user.setEmail("test@example.com");
+        user.setName("Test User");
+        user.setVerified(true);
+        user.setRole(Role.REGISTERED_USER);
+
+        // Generate a valid token
+        String token = authenticationService.generateJwtToken(userId);
+
+        when(userRepository.findById(userId)).thenReturn(Optional.of(user));
+
+        // Test successful retrieval
+        UserResponse response = authenticationService.getUserFromJwtToken(token);
+
+        assertNotNull(response);
+        assertEquals("test@example.com", response.getEmail());
+        assertEquals("Test User", response.getName());
+        assertTrue(response.isVerified());
+    }
+
 }