Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

import jakarta.persistence.EntityNotFoundException;


import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContextHolder;

Expand All @@ -38,58 +37,34 @@ public class StudentServiceTest {
private UserRepository userRepository;

@Autowired
private StudentService studentService;

@Test
public void deveCriarEstudanteComSucesso() {
// cria e salva o usuário
User user = new User(
"user@test.com",
"password123",
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.fullName = "João Silva";
dto.birthDate = LocalDate.of(2000, 1, 1);
dto.cpf = "12345678900";
dto.phone = "9999999999";
dto.course = "Ciência da Computação";
dto.currentPeriod = 4;
dto.academicSummary = "Bom aluno";
dto.userId = savedUser.getId();

// executa service
StudentResponseDTO response = studentService.create(dto);

// validações
assertNotNull(response);
assertEquals("João Silva", response.fullName);
assertEquals("12345678900", response.cpf);

// verifica persistência no banco
assertTrue(studentRepository.existsByCpf("12345678900"));
}

private StudentService studentService;

@Test
public void deveLancarExcecaoQuandoUsuarioNaoExistir() {
public void deveCriarEstudanteComSucesso() {
// cria e salva o usuário
User user = new User(
"user@test.com",
"password123",
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.fullName = "Carlos Souza";
dto.birthDate = LocalDate.of(2002, 3, 3);
dto.cpf = "98765432100";
dto.phone = "6666666668";
dto.course = "Medicina";
dto.currentPeriod = 1;
dto.academicSummary = "Resumo";
dto.userId = 999L; // ID inexistente
dto.setFullName("João Silva");
dto.setBirthDate(LocalDate.of(2000, 1, 1));
dto.setCpf("12345678900");
dto.setPhone("9999999999");
dto.setCourse("Ciência da Computação");
dto.setCurrentPeriod(4);
dto.setAcademicSummary("Bom aluno");
dto.setUserId(savedUser.getId());

// executa service
StudentResponseDTO response = studentService.create(dto);

// validações - USANDO GETTERS
// validações
assertNotNull(response);
assertEquals("João Silva", response.getFullName());
assertEquals("12345678900", response.getCpf());
Expand All @@ -104,7 +79,7 @@ public void deveLancarExcecaoQuandoUsuarioNaoExistir() {
dto.setFullName("Carlos Souza");
dto.setBirthDate(LocalDate.of(2002, 3, 3));
dto.setCpf("98765432100");
dto.setPhone("666666666");
dto.setPhone("6666666668");
dto.setCourse("Medicina");
dto.setCurrentPeriod(1);
dto.setAcademicSummary("Resumo");
Expand All @@ -113,28 +88,27 @@ public void deveLancarExcecaoQuandoUsuarioNaoExistir() {
assertThrows(EntityNotFoundException.class, () -> studentService.create(dto));
}


@Test
public void deletarEstudanteComSucesso() {
// cria e salva o usuário
User user = new User(
"user@test2.com",
"password123",
UserRole.ADMIN, // admin consegue deletar qualquer estudante
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.fullName = "João Silva";
dto.birthDate = LocalDate.of(2000, 1, 1);
dto.cpf = "12345678880";
dto.phone = "9999999999";
dto.course = "Ciência da Computação";
dto.currentPeriod = 4;
dto.academicSummary = "Bom aluno";
dto.userId = savedUser.getId();
// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.setFullName("João Silva");
dto.setBirthDate(LocalDate.of(2000, 1, 1));
dto.setCpf("12345678880");
dto.setPhone("9999999999");
dto.setCourse("Ciência da Computação");
dto.setCurrentPeriod(4);
dto.setAcademicSummary("Bom aluno");
dto.setUserId(savedUser.getId());

StudentResponseDTO response = studentService.create(dto);

Expand All @@ -147,59 +121,55 @@ public void deletarEstudanteComSucesso() {
SecurityContextHolder.getContext().setAuthentication(auth);

String cpf = response.getCpf();

assertTrue(studentRepository.existsByCpf(cpf));

// deleta o estudante
studentService.delete(response.getId());

// verifica se foi deletado
assertTrue(!studentRepository.existsByCpf(cpf));

}

@Test
public void pegarEstudantePorIdComSucesso() {
// cria e salva o usuário
User user = new User(
"user@test6.com",
"password123",
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.fullName = "João Silva";
dto.birthDate = LocalDate.of(2000, 1, 1);
dto.cpf = "12345600880";
dto.phone = "9999999999";
dto.course = "Ciência da Computação";
dto.currentPeriod = 4;
dto.academicSummary = "Bom aluno";
dto.userId = savedUser.getId();

StudentResponseDTO response = studentService.create(dto);

assertNotNull(response);
assertEquals("João Silva", response.fullName);

// busca o estudante por ID
StudentResponseDTO found = studentService.findById(response.id);
assertNotNull(found);
assertEquals(response.id, found.id);
assertEquals(response.fullName, found.fullName);
assertEquals(response.cpf, found.cpf);
// cria e salva o usuário
User user = new User(
"user@test6.com",
"password123",
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.setFullName("João Silva");
dto.setBirthDate(LocalDate.of(2000, 1, 1));
dto.setCpf("12345600880");
dto.setPhone("9999999999");
dto.setCourse("Ciência da Computação");
dto.setCurrentPeriod(4);
dto.setAcademicSummary("Bom aluno");
dto.setUserId(savedUser.getId());

StudentResponseDTO response = studentService.create(dto);

assertNotNull(response);
assertEquals("João Silva", response.getFullName());

// busca o estudante por ID
StudentResponseDTO found = studentService.findById(response.getId());
assertNotNull(found);
assertEquals(response.getId(), found.getId());
assertEquals(response.getFullName(), found.getFullName());
assertEquals(response.getCpf(), found.getCpf());
}


@Test // <<-- Faltava esta anotação
@Test
public void atualizarEstudanteComSucesso() {
// cria e salva o usuário
User user = new User(
"user@test7.com", // Email diferente para evitar conflito
"user@test7.com",
"password123",
UserRole.ADMIN,
"João de Teste"
Expand All @@ -208,14 +178,14 @@ public void atualizarEstudanteComSucesso() {

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.fullName = "João Silva";
dto.birthDate = LocalDate.of(2000, 1, 1);
dto.cpf = "12345678955";
dto.phone = "9999999990";
dto.course = "Ciência da Computação";
dto.currentPeriod = 4;
dto.academicSummary = "Bom aluno";
dto.userId = savedUser.getId();
dto.setFullName("João Silva");
dto.setBirthDate(LocalDate.of(2000, 1, 1));
dto.setCpf("12345678955");
dto.setPhone("9999999990");
dto.setCourse("Ciência da Computação");
dto.setCurrentPeriod(4);
dto.setAcademicSummary("Bom aluno");
dto.setUserId(savedUser.getId());

StudentResponseDTO response = studentService.create(dto);

Expand All @@ -237,39 +207,35 @@ public void atualizarEstudanteComSucesso() {
assertEquals("Letras", updatedResponse.getCourse());
}

@Test
public void naoDevePermitirDeletarEstudanteSemAutenticacao() {
// cria e salva o usuário
User user = new User(
"user@test3.com",
"password123",
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.fullName = "Maria Silva";
dto.birthDate = LocalDate.of(2001, 2, 2);
dto.cpf = "12312312399";
dto.phone = "9998887077";
dto.course = "Engenharia";
dto.currentPeriod = 3;
dto.academicSummary = "Resumo";
dto.userId = savedUser.getId();

StudentResponseDTO response = studentService.create(dto);

// 🔑 NÃO setamos o SecurityContextHolder aqui → simula usuário não autenticado

// espera AccessDeniedException
assertThrows(
org.springframework.security.access.AccessDeniedException.class,
() -> studentService.delete(response.id)
);
}
@Test
public void naoDevePermitirDeletarEstudanteSemAutenticacao() {
// cria e salva o usuário
User user = new User(
"user@test3.com",
"password123",
UserRole.ADMIN,
"João de Teste"
);
User savedUser = userRepository.save(user);

// cria DTO do estudante
StudentRequestDTO dto = new StudentRequestDTO();
dto.setFullName("Maria Silva");
dto.setBirthDate(LocalDate.of(2001, 2, 2));
dto.setCpf("12312312399");
dto.setPhone("9998887077");
dto.setCourse("Engenharia");
dto.setCurrentPeriod(3);
dto.setAcademicSummary("Resumo");
dto.setUserId(savedUser.getId());

}
StudentResponseDTO response = studentService.create(dto);

// 🔑 NÃO setamos o SecurityContextHolder aqui → simula usuário não autenticado

assertThrows(
org.springframework.security.access.AccessDeniedException.class,
() -> studentService.delete(response.getId())
);
}
}