Olá Rodrigo,
Sei que pra testar o AutenticacaoController com retorno 200 devo antes inserir um usuário, por conta do profile test, mas qual seria a forma de injetar o TestEntityManager nesta classe de teste?
Da forma que foi feita no teste de Repository com o @DataJpaTest acaba dando um conflito, acredito que seja com @SpringBootTest. Dei uma pesquisada e vi exemplos de pessoas usando a própria interface UsuarioRepository para a inserção durante os testes, esta seria a "melhor forma"?
Existe algum modo de injetar o TestEntityManager sem gerar conflito?
De qualquer forma o código a seguir satisfaz o teste.
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
public class AutenticacaoControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private UsuarioRepository repository;
@Test
public void deveDevolver200CasoDadosDeAutenticacaoValidos() throws Exception {
Usuario usuario = new Usuario();
usuario.setNome("Aluno");
usuario.setEmail("aluno@email.com");
usuario.setSenha("$2a$10$iv.5VotDUkAjyukxPJ33OeuH0Pi5fpg2OJw8v1CHauFnzc/8mhGEO");
repository.save(usuario);
URI uri = new URI("/auth");
JSONObject jsonObj = new JSONObject();
jsonObj.put("email", "aluno@email.com");
jsonObj.put("senha", "123456");
String json = jsonObj.toString();
mockMvc.perform(MockMvcRequestBuilders
.post(uri)
.content(json)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(MockMvcResultMatchers
.status()
.isOk());
}
@Test
public void deveDevolver400CasoDadosDeAutenticacaoInvalidos() throws Exception {
// implementacao da aula
}
}