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; |         this.userRepo = userRepo; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|     public User getUser(String identifier){ |     public User getUser(String identifier){ | ||||||
|         if (identifier == null) return null; |         if (identifier == null) return null; | ||||||
|         try { |         try { | ||||||
|  | |||||||
| @ -1,2 +1,3 @@ | |||||||
| spring.jpa.hibernate.ddl-auto=create-drop | spring.jpa.hibernate.ddl-auto=create-drop | ||||||
| spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect | spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect | ||||||
|  | spring.sql.init.mode=always | ||||||
| @ -8,6 +8,7 @@ class ClydeApplicationTests { | |||||||
|  |  | ||||||
| 	@Test | 	@Test | ||||||
| 	void contextLoads() { | 	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