WIP: Leo/Backend/RegNo #147
@ -15,7 +15,7 @@ import java.util.Date;
|
|||||||
|
|
||||||
public class MockController {
|
public class MockController {
|
||||||
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||||
|
public final UserService userService;
|
||||||
public final UserRepository userRepo;
|
public final UserRepository userRepo;
|
||||||
public final TokenRepository tokenRepo;
|
public final TokenRepository tokenRepo;
|
||||||
public final TokenService tokenService;
|
public final TokenService tokenService;
|
||||||
@ -27,7 +27,8 @@ public class MockController {
|
|||||||
ArrayList<User> mockUsers;
|
ArrayList<User> mockUsers;
|
||||||
|
|
||||||
|
|
||||||
public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){
|
public MockController(UserService userService, UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService, InscriptionService inscriptionService){
|
||||||
|
this.userService = userService;
|
||||||
this.tokenRepo = tokenRepo;
|
this.tokenRepo = tokenRepo;
|
||||||
this.userRepo = userRepo;
|
this.userRepo = userRepo;
|
||||||
this.tokenService = tokenService;
|
this.tokenService = tokenService;
|
||||||
@ -45,21 +46,21 @@ public class MockController {
|
|||||||
|
|
||||||
@PostMapping("/mock")
|
@PostMapping("/mock")
|
||||||
public void postMock(){
|
public void postMock(){
|
||||||
|
|
||||||
// user part
|
// user part
|
||||||
|
|
||||||
|
|
||||||
User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin"));
|
User herobrine = new User("brine","hero","admin@admin.com","behind","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin"));
|
||||||
User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,passwordEncoder.encode("student"));
|
User joe = new User("Mama","Joe","student@student.com","roundabout","England",new Date(0), null,Role.Student,passwordEncoder.encode("student"));
|
||||||
User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,passwordEncoder.encode("secretary"));
|
User meh = new User("Polo","Marco","secretary@secretary.com","a Box","Monaco",new Date(0), null,Role.Secretary,passwordEncoder.encode("secretary"));
|
||||||
User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher"));
|
User joke = new User("Gaillard","Corentin","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher"));
|
||||||
User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher"));
|
User jojo = new User("Bridoux","Justin","teacher2@teacher2.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher"));
|
||||||
User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.InscriptionService,passwordEncoder.encode("inscriptionService"));
|
User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.InscriptionService,passwordEncoder.encode("inscriptionService"));
|
||||||
mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke,lena,jojo));
|
|
||||||
|
|
||||||
userRepo.saveAll(mockUsers);
|
mockUsers = new ArrayList<>(Arrays.asList(joke, herobrine, joe, meh, jojo));
|
||||||
|
userService.saveAll(mockUsers);
|
||||||
|
userService.save(lena);
|
||||||
Maxime marked this conversation as resolved
|
|||||||
|
|
||||||
// Course / Curriculum part
|
|
||||||
|
//Course / Curriculum part
|
||||||
|
|
||||||
Curriculum infoBab1 = new Curriculum(1,"info");
|
Curriculum infoBab1 = new Curriculum(1,"info");
|
||||||
Curriculum chemistryBab1 = new Curriculum(1,"chemistry");
|
Curriculum chemistryBab1 = new Curriculum(1,"chemistry");
|
||||||
|
46
backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java
Normal file
46
backend/src/main/java/ovh/herisson/Clyde/RegNoGenerator.java
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
package ovh.herisson.Clyde;
|
||||||
|
|
||||||
|
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
|
||||||
|
import org.hibernate.engine.spi.SharedSessionContractImplementor;
|
||||||
|
import org.hibernate.id.IdentifierGenerator;
|
||||||
|
|
||||||
|
import java.sql.*;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.GregorianCalendar;
|
||||||
|
|
||||||
|
public class RegNoGenerator implements IdentifierGenerator {
|
||||||
|
private static int count = 0;
|
||||||
|
@Override
|
||||||
|
public Object generate(SharedSessionContractImplementor session, Object object) {
|
||||||
|
try{
|
||||||
|
JdbcConnectionAccess jdbccon = session.getJdbcConnectionAccess();
|
||||||
|
Connection conn = jdbccon.obtainConnection();
|
||||||
|
|
||||||
|
Statement statement = conn.createStatement();
|
||||||
|
|
||||||
|
Calendar c = new GregorianCalendar();
|
||||||
|
int y = c.get(Calendar.YEAR);
|
||||||
|
String query = "select count(reg_no) + "+count+" from Users where reg_no/10000 = " + y%1000;
|
||||||
|
|
||||||
|
ResultSet set = statement.executeQuery(query);
|
||||||
|
long resp = 0;
|
||||||
|
if(set.next()){
|
||||||
|
resp = set.getLong(1)+((y%1000)*10000);
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
conn.close();
|
||||||
|
statement.close();
|
||||||
|
|
||||||
|
return resp;
|
||||||
|
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void resetCount(){
|
||||||
|
count = 0;
|
||||||
|
}
|
||||||
|
}
|
@ -5,13 +5,10 @@ import org.springframework.data.repository.CrudRepository;
|
|||||||
import ovh.herisson.Clyde.Tables.User;
|
import ovh.herisson.Clyde.Tables.User;
|
||||||
|
|
||||||
public interface UserRepository extends CrudRepository<User, Long> {
|
public interface UserRepository extends CrudRepository<User, Long> {
|
||||||
|
|
||||||
User findById(long id);
|
User findById(long id);
|
||||||
|
|
||||||
User findByEmail(String email);
|
User findByEmail(String email);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Query("select u from User u where u.role = ovh.herisson.Clyde.Tables.Role.Teacher")
|
@Query("select u from User u where u.role = ovh.herisson.Clyde.Tables.Role.Teacher")
|
||||||
Iterable<User> findAllTeachers();
|
Iterable<User> findAllTeachers();
|
||||||
|
|
||||||
|
@ -2,16 +2,17 @@ package ovh.herisson.Clyde.Services;
|
|||||||
|
|
||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import ovh.herisson.Clyde.RegNoGenerator;
|
||||||
import ovh.herisson.Clyde.Repositories.UserRepository;
|
import ovh.herisson.Clyde.Repositories.UserRepository;
|
||||||
import ovh.herisson.Clyde.Tables.Role;
|
import ovh.herisson.Clyde.Tables.Role;
|
||||||
import ovh.herisson.Clyde.Tables.User;
|
import ovh.herisson.Clyde.Tables.User;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class UserService {
|
public class UserService {
|
||||||
private final UserRepository userRepo;
|
private final UserRepository userRepo;
|
||||||
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
private final BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
|
||||||
|
|
||||||
public UserService(UserRepository userRepo){
|
public UserService(UserRepository userRepo){
|
||||||
this.userRepo = userRepo;
|
this.userRepo = userRepo;
|
||||||
}
|
}
|
||||||
@ -106,10 +107,19 @@ public class UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public User save(User user){
|
public User save(User user){
|
||||||
|
RegNoGenerator.resetCount();
|
||||||
user.setPassword(passwordEncoder.encode(user.getPassword()));
|
user.setPassword(passwordEncoder.encode(user.getPassword()));
|
||||||
return userRepo.save(user);
|
return userRepo.save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void saveAll(ArrayList<User> list){
|
||||||
|
//S'assure que le compteur est bien a 0
|
||||||
|
RegNoGenerator.resetCount();
|
||||||
|
userRepo.saveAll(list);
|
||||||
|
//Reset le compteur a zero pour les futurs ajouts
|
||||||
|
RegNoGenerator.resetCount();
|
||||||
Maxime marked this conversation as resolved
Maxime
commented
pourquoi reset après ? pourquoi reset après ?
LeoMoulin
commented
C'est vrai que ce n'est plus nécessaire je vais le retirer C'est vrai que ce n'est plus nécessaire je vais le retirer
|
|||||||
|
}
|
||||||
|
|
||||||
public Iterable<User> getAll(){
|
public Iterable<User> getAll(){
|
||||||
return userRepo.findAll();
|
return userRepo.findAll();
|
||||||
}
|
}
|
||||||
@ -131,4 +141,5 @@ public class UserService {
|
|||||||
public void delete(User user) {
|
public void delete(User user) {
|
||||||
userRepo.delete(user);
|
userRepo.delete(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package ovh.herisson.Clyde.Tables;
|
package ovh.herisson.Clyde.Tables;
|
||||||
|
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
|
import org.hibernate.annotations.GenericGenerator;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
@ -8,7 +10,8 @@ import java.util.Date;
|
|||||||
@Table(name = "Users")
|
@Table(name = "Users")
|
||||||
public class User {
|
public class User {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
@GenericGenerator(name = "userGen", type = ovh.herisson.Clyde.RegNoGenerator.class)
|
||||||
|
@GeneratedValue(generator = "userGen")
|
||||||
private Long regNo;
|
private Long regNo;
|
||||||
private String lastName;
|
private String lastName;
|
||||||
private String firstName;
|
private String firstName;
|
||||||
|
@ -1,3 +1,2 @@
|
|||||||
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
|
|
||||||
Maxime
commented
pourquoi l'avoir retiré ? pourquoi l'avoir retiré ?
LeoMoulin
commented
Aucune idée j'ai surement du faire un trop gros delete je vais le remettre Aucune idée j'ai surement du faire un trop gros delete je vais le remettre
|
@ -23,6 +23,7 @@ import ovh.herisson.Clyde.Repositories.TokenRepository;
|
|||||||
import ovh.herisson.Clyde.Repositories.UserRepository;
|
import ovh.herisson.Clyde.Repositories.UserRepository;
|
||||||
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
||||||
import ovh.herisson.Clyde.Services.TokenService;
|
import ovh.herisson.Clyde.Services.TokenService;
|
||||||
|
import ovh.herisson.Clyde.Services.UserService;
|
||||||
import ovh.herisson.Clyde.Tables.Role;
|
import ovh.herisson.Clyde.Tables.Role;
|
||||||
import ovh.herisson.Clyde.Tables.Token;
|
import ovh.herisson.Clyde.Tables.Token;
|
||||||
import ovh.herisson.Clyde.Tables.User;
|
import ovh.herisson.Clyde.Tables.User;
|
||||||
@ -47,6 +48,8 @@ public class UserControllerTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private TokenService tokenService;
|
private TokenService tokenService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserRepository userRepository;
|
private UserRepository userRepository;
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -79,12 +82,13 @@ public class UserControllerTest {
|
|||||||
tokenRepository.deleteAll();
|
tokenRepository.deleteAll();
|
||||||
userRepository.deleteAll();
|
userRepository.deleteAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
//Verifie qu'un user qui n'a pas les permissions admin ou secretaire ne peut pas post
|
//Verifie qu'un user qui n'a pas les permissions admin ou secretaire ne peut pas post
|
||||||
public void userPostTest(){
|
public void userPostTest(){
|
||||||
User god = new User("god","god","admin@admin.com","everywhere","every",new Date(0), null, Role.Admin,"goddoesntneedpassword");
|
User god = new User("god","god","admin@admin.com","everywhere","every",new Date(0), null, Role.Admin,"goddoesntneedpassword");
|
||||||
Token godToken = new Token(god, tokenService.generateNewToken(), new Date());
|
Token godToken = new Token(god, tokenService.generateNewToken(), new Date());
|
||||||
userRepository.save(god);
|
userService.save(god);
|
||||||
tokenService.saveToken(godToken);
|
tokenService.saveToken(godToken);
|
||||||
|
|
||||||
//Can god post herobrine himself ?
|
//Can god post herobrine himself ?
|
||||||
@ -97,7 +101,7 @@ public class UserControllerTest {
|
|||||||
//Can noob post herobrine without authorizations (no)
|
//Can noob post herobrine without authorizations (no)
|
||||||
User noob = new User("boon","noob","noob@student.com","everywhere","every",new Date(0), null, Role.Student,"noob");
|
User noob = new User("boon","noob","noob@student.com","everywhere","every",new Date(0), null, Role.Student,"noob");
|
||||||
Token noobToken = new Token(noob, tokenService.generateNewToken(), new Date());
|
Token noobToken = new Token(noob, tokenService.generateNewToken(), new Date());
|
||||||
userRepository.save(noob);
|
userService.save(noob);
|
||||||
tokenService.saveToken(noobToken);
|
tokenService.saveToken(noobToken);
|
||||||
|
|
||||||
with().body(herobrine).contentType(ContentType.JSON).header("Authorization", noobToken.getToken()).when().request("POST", "/user").then().statusCode(401);
|
with().body(herobrine).contentType(ContentType.JSON).header("Authorization", noobToken.getToken()).when().request("POST", "/user").then().statusCode(401);
|
||||||
|
@ -7,6 +7,7 @@ import org.junit.jupiter.api.Test;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||||
import org.springframework.test.context.TestPropertySource;
|
import org.springframework.test.context.TestPropertySource;
|
||||||
|
import ovh.herisson.Clyde.Services.UserService;
|
||||||
import ovh.herisson.Clyde.Tables.Role;
|
import ovh.herisson.Clyde.Tables.Role;
|
||||||
import ovh.herisson.Clyde.Tables.User;
|
import ovh.herisson.Clyde.Tables.User;
|
||||||
|
|
||||||
@ -24,6 +25,7 @@ public class UserRepoTest {
|
|||||||
|
|
||||||
Maxime marked this conversation as resolved
Maxime
commented
tu peux faire un test sur les regno ? tu peux faire un test sur les regno ?
|
|||||||
@BeforeEach
|
@BeforeEach
|
||||||
public void setup(){
|
public void setup(){
|
||||||
|
userRepo.deleteAll();
|
||||||
User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand", new GregorianCalendar(2005, 4, 3).getTime(), null, Role.Admin,"admin");
|
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);
|
userRepo.save(herobrine);
|
||||||
}
|
}
|
||||||
@ -34,8 +36,8 @@ public class UserRepoTest {
|
|||||||
}
|
}
|
||||||
@Test
|
@Test
|
||||||
public void usertest(){
|
public void usertest(){
|
||||||
Assert.assertEquals("brine", userRepo.findById(1).getLastName());
|
Assert.assertEquals("brine", userRepo.findByEmail("admin@admin.com").getLastName());
|
||||||
Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findById(1).getBirthDate()));
|
Assert.assertTrue(new GregorianCalendar(2005, 4, 3).getTime().equals(userRepo.findByEmail("admin@admin.com").getBirthDate()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user
pourquoi pas lena dedans ?
j'ai fait pleins de petits tests en mode save après saveAll() et inversément pour voir si tout marchait bien je vais tout remettre j'avoues que j'ai zappé