package no.niths.services; import java.util.GregorianCalendar; import java.util.UUID; import no.niths.application.rest.exception.ExpiredTokenException; import no.niths.application.rest.exception.UnvalidTokenException; import no.niths.common.config.HibernateConfig; import no.niths.common.config.TestAppConfig; import no.niths.common.constants.SecurityConstants; import no.niths.services.auth.TokenGeneratorServiceImpl; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TestAppConfig.class, HibernateConfig.class }) public class TokenGeneratorServiceTest { private static final Logger logger = LoggerFactory .getLogger(TokenGeneratorServiceTest.class); @Value("${jasypt.password}") private String password; @Autowired private TokenGeneratorServiceImpl tokenService; @Test public void testGenerateAndVerify(){ String token = tokenService.generateToken(new Long(21)); tokenService.generateToken(new Long(22)); tokenService.verifyTokenFormat(token, true); } @Test(expected=ExpiredTokenException.class) public void testExpiredoken(){ String unvalid = generateUnvalidToken(new Long(23)); tokenService.verifyTokenFormat(unvalid, true); } @Test(expected=UnvalidTokenException.class) public void testUnvalidToken(){ tokenService.verifyTokenFormat("aaaaijde876tda76fd6wafdw", true); } @Test(expected=UnvalidTokenException.class) public void testUnvalidToken2(){ tokenService.verifyTokenFormat(null, true); } @Test(expected=UnvalidTokenException.class) public void testUnvalidToken3(){ tokenService.generateToken(null); } private String generateUnvalidToken(Long userId) { long tokenIssued = new GregorianCalendar().getTimeInMillis() - (SecurityConstants.MAX_SESSION_VALID_TIME + 10); String generatedToken = UUID.randomUUID().toString().toUpperCase() + "|" + Long.toString(userId) + "|" + Long.toString(tokenIssued); // Encrypt the token StandardPBEStringEncryptor jasypt = new StandardPBEStringEncryptor(); jasypt.setPassword(password); String encryptedToked = jasypt.encrypt(generatedToken); logger.debug("Generated token before encryption: " + generatedToken); logger.debug("Generated token after encryption: " + encryptedToked); return encryptedToked; } }