diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/service/TokenServiceTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/TokenServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9401989e4d49381a3c1877fe7590a80aa7d45313 --- /dev/null +++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/service/TokenServiceTest.java @@ -0,0 +1,61 @@ +package ntnu.idatt2016.v233.SmartMat.service; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.oauth2.jwt.Jwt; +import org.springframework.security.oauth2.jwt.JwtEncoder; +import org.springframework.security.oauth2.jwt.JwtEncoderParameters; + +import java.time.Instant; +import java.util.Arrays; +import java.util.Collection; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class TokenServiceTest { + + private TokenService tokenService; + private JwtEncoder jwtEncoder; + + @BeforeEach + void setUp() { + jwtEncoder = mock(JwtEncoder.class); + tokenService = new TokenService(jwtEncoder); + } + + @Test + void testGenerateToken() { + // Given + Collection<SimpleGrantedAuthority> authorities = Arrays.asList( + new SimpleGrantedAuthority("ROLE_ADMIN"), + new SimpleGrantedAuthority("ROLE_USER") + ); + Authentication authentication = new UsernamePasswordAuthenticationToken("user", "password", authorities); + + Instant now = Instant.now(); + Jwt jwt = Jwt.withTokenValue("test-token") + .header("alg", "none") + .claim("iss", "self") + .claim("issuedAt", now) + .claim("expiresAt", now) + .claim("sub", "user") + .claim("scope", "ROLE_ADMIN ROLE_USER") + .build(); + + when(jwtEncoder.encode(any(JwtEncoderParameters.class))).thenReturn(jwt); + + // When + String token = tokenService.generateToken(authentication); + + // Then + assertNotNull(token); + assertEquals("test-token", token); + } +}