Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

AutenticacaoControllerTest erro no 400, mas funciona com o 403.

Estou com um problema quando tento executar o código abaixo com o retorno de 400, porem o mesmo gera erro, mas quando faço com o 403, o mesmo retorna, alguém pode me ajudar?

package br.com.alura.forum.controller;

import java.net.URI;

import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

@RunWith(SpringRunner.class) @SpringBootTest @AutoConfigureMockMvc @ActiveProfiles("test") public class AutenticacaoControllerTest {

@Autowired
private MockMvc mockMvc; // Essa classe simula uma requisição mvc.

@Test
public void deveriaDevolver400CasoDadosDeAutenticacaoEstejamIncorretos() throws Exception {
    URI uri = new URI("/auth");
    String json = "{\"email\":\"invalido@email.com\",\"senha\":\"123465\"}";

    mockMvc
    .perform(MockMvcRequestBuilders
            .post(uri)
            .content(json)
            .contentType(MediaType.APPLICATION_JSON))
    .andExpect(MockMvcResultMatchers
            .status()
            .is(400));
}

}

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade

5 respostas

Oi Rodolfo,

Confere se suas classes SecurityConfigurations e AutenticacaoController estao com a anotacao de profile assim:

@Profile(value = {"prod", "test"})

Oi professor,

Estão colocados sim, no meu console aparece até mesmo a seguinte mensagem quando fica o erro 400.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Posso colocar meu github aqui para você dar uma olhada no código se preferir.

https://github.com/RodolfoLS96/Java-API-REST

Professor, eu conseguir resolver o problema, pelo visto ocorreu na linha

String json = "{"email":"invalido@email.com","senha":"123456"}";

Sendo que depois de ler o código e rever a aula, eu mudei o código e só mudei o final da " de lugar e retornou o erro 400, ai ficou conforme escrito abaixo.

String json = "{"email":"invalido@email.com","senha":"123456}"";

solução!

Oi Rodolfo,

Vi que o problema esta no seu metodo autenticar da classe AutenticacaoController:

try {
        Authentication authentication = authManager.authenticate(dadosLogin);    
        String token = tokenService.gerarToken(authentication);
        return ResponseEntity.ok(new TokenDto(token, "Bearer"));
} catch (AuthConfigException e) {
        return ResponseEntity.badRequest().build();
}

O problema esta no seu catch que esta capturando uma exception do H2, sendo que a correta deveria ser:

} catch (AuthenticationException e) {

E essa exception vem do pacote: import org.springframework.security.core.AuthenticationException

Fiz aqui a correção conforme dito professor, e o código executou de forma correta, muito obrigado pela ajuda.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software