Setup unit tests and implements test for the token limit and trivial tests for userRepository
This commit is contained in:
		@ -16,7 +16,6 @@ public class UserService {
 | 
			
		||||
        this.userRepo = userRepo;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public User getUser(String identifier){
 | 
			
		||||
        if (identifier == null) return null;
 | 
			
		||||
        try {
 | 
			
		||||
 | 
			
		||||
@ -1,2 +1,3 @@
 | 
			
		||||
spring.jpa.hibernate.ddl-auto=create-drop
 | 
			
		||||
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
 | 
			
		||||
spring.sql.init.mode=always
 | 
			
		||||
@ -8,6 +8,7 @@ class ClydeApplicationTests {
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	void contextLoads() {
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,39 @@
 | 
			
		||||
package ovh.herisson.Clyde.Repositories;
 | 
			
		||||
 | 
			
		||||
import org.junit.Assert;
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 | 
			
		||||
import org.springframework.test.context.TestPropertySource;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.GregorianCalendar;
 | 
			
		||||
 | 
			
		||||
@DataJpaTest
 | 
			
		||||
@TestPropertySource(properties = {
 | 
			
		||||
        "spring.test.database.replace=none",
 | 
			
		||||
        "spring.datasource.url=jdbc:tc:postgresql:16-alpine:///db"
 | 
			
		||||
})
 | 
			
		||||
public class UserRepoTest {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    UserRepository userRepo;
 | 
			
		||||
 | 
			
		||||
    @BeforeEach
 | 
			
		||||
    public void setup(){
 | 
			
		||||
        if (userRepo.findById(1) == null){
 | 
			
		||||
            User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand", new GregorianCalendar(2005, 4, 3).getTime(), null, Role.Admin,"admin");
 | 
			
		||||
            userRepo.save(herobrine);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void usertest(){
 | 
			
		||||
        Assert.assertEquals("brine", userRepo.findById(1).getLastName());
 | 
			
		||||
        Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findById(1).getBirthDate()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,85 @@
 | 
			
		||||
package ovh.herisson.Clyde.Services;
 | 
			
		||||
 | 
			
		||||
import org.junit.Assert;
 | 
			
		||||
import org.junit.Before;
 | 
			
		||||
import org.junit.jupiter.api.BeforeAll;
 | 
			
		||||
import org.junit.jupiter.api.BeforeEach;
 | 
			
		||||
import org.junit.jupiter.api.Test;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 | 
			
		||||
import org.springframework.test.context.TestPropertySource;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.TokenRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Repositories.UserRepository;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Role;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.Token;
 | 
			
		||||
import ovh.herisson.Clyde.Tables.User;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Calendar;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.GregorianCalendar;
 | 
			
		||||
 | 
			
		||||
import static org.junit.jupiter.api.Assertions.*;
 | 
			
		||||
 | 
			
		||||
@DataJpaTest
 | 
			
		||||
@TestPropertySource(properties = {
 | 
			
		||||
        "spring.test.database.replace=none",
 | 
			
		||||
        "spring.datasource.url=jdbc:tc:postgresql:16-alpine:///db"
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
class TokenServiceTest {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    TokenRepository tokenRepository;
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    UserRepository userRepository;
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void saveToken() {
 | 
			
		||||
        User herobrine = userRepository.findById(1);
 | 
			
		||||
 | 
			
		||||
        User herobrinenul = new User("brine","heronul","pasadmin@student.com","in your WalLs","ShadowsLand", new GregorianCalendar(2005, 4, 3).getTime(), null, Role.Admin,"admin");
 | 
			
		||||
 | 
			
		||||
        TokenService tokenService = new TokenService(tokenRepository);
 | 
			
		||||
        Token testToken = new Token(herobrine, tokenService.generateNewToken(), new Date());
 | 
			
		||||
        tokenService.saveToken(testToken);
 | 
			
		||||
 | 
			
		||||
        Iterable<Token> t = tokenService.getAllTokens();
 | 
			
		||||
        Token tok = t.iterator().next();
 | 
			
		||||
 | 
			
		||||
        Assert.assertEquals(herobrine, tok.getUser());
 | 
			
		||||
        Assert.assertNotEquals(herobrinenul, tok.getUser());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    void saveTokenLimit(){
 | 
			
		||||
        TokenService tokenService = new TokenService(tokenRepository);
 | 
			
		||||
 | 
			
		||||
        //On va stocker les token qu'on va sauvegarder au préalable dans une liste pour tester que les tokens remplacés sont bien ceux avec la date d'expi la plus jeune
 | 
			
		||||
        //A la fin il ne devrait donc rester que les 5 derniers tokens de tokenList
 | 
			
		||||
 | 
			
		||||
        ArrayList<Token> tokenList = new ArrayList<>();
 | 
			
		||||
        GregorianCalendar gc = new GregorianCalendar();
 | 
			
		||||
 | 
			
		||||
        User malveillant = new User("mechant", "veutdestoken", "donnezmoidestoken@mail.com", "secret", "secret", null, null, null, "secret");
 | 
			
		||||
        userRepository.save(malveillant);
 | 
			
		||||
 | 
			
		||||
        for (int i = 0; i < 20; i++){
 | 
			
		||||
            gc.add(Calendar.DAY_OF_WEEK, 1);
 | 
			
		||||
 | 
			
		||||
            Token t = new Token(malveillant, tokenService.generateNewToken(), gc.getTime());
 | 
			
		||||
            tokenList.add(t);
 | 
			
		||||
 | 
			
		||||
            tokenService.saveToken(t);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //Testons les tokens
 | 
			
		||||
        ArrayList <Token> resp = tokenRepository.getByUserOrderByExpirationDate(malveillant);
 | 
			
		||||
        Assert.assertTrue(resp.size() == 5);
 | 
			
		||||
 | 
			
		||||
        for (int i = 1; i <= resp.size(); i++){
 | 
			
		||||
            Assert.assertEquals(tokenList.get(tokenList.size()-i), resp.get(resp.size()-i));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										3
									
								
								backend/src/test/resources/application.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								backend/src/test/resources/application.properties
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver
 | 
			
		||||
spring.jpa.hibernate.ddl-auto=create-drop
 | 
			
		||||
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
 | 
			
		||||
		Reference in New Issue
	
	Block a user