1
resposta

[Dúvida] Erro ao rodar teste de controller sem autenticação

Boa notei, caros!

Estou fazendo o teste de controller sem autenticação para que, eu possa receber um 4xx, quando não estiver autenticado, porém, estou recebendo na stacktrace o seguinte: java.lang.NullPointerException: request.getHeader("Authorization") must not be null

Código de testeErro na stacktraceErro na stack trace

1 resposta

Olá Jadson! Tudo bem?

Pelo que entendi, você está tentando fazer um teste de controller sem autenticação, mas está recebendo um erro de NullPointerException relacionado ao cabeçalho "Authorization" estar nulo.

Esse erro ocorre porque o método getHeader("Authorization") está sendo chamado em um objeto request que está nulo. Isso pode acontecer quando o objeto request não está sendo corretamente inicializado ou quando não está sendo passado para o método de teste.

Uma possível solução para esse problema é garantir que o objeto request seja corretamente inicializado antes de chamar o método getHeader("Authorization"). Você pode fazer isso utilizando bibliotecas de testes como o Mockito, por exemplo, para simular o objeto request e passá-lo para o método de teste.

Aqui está um exemplo de como você pode fazer isso utilizando o Mockito:

import org.mockito.Mockito;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;

// ...

@Test
public void testControllerWithoutAuthentication() throws Exception {
    MockHttpServletRequest request = MockMvcRequestBuilders.get("/your-endpoint")
            .header("Authorization", null)
            .buildRequest(MockMvcBuilders.standaloneSetup(yourController))
            .getRequest();

    // Resto do seu código de teste
}

Dessa forma, você está criando um objeto request simulado utilizando o Mockito, passando um cabeçalho "Authorization" nulo para simular a ausência de autenticação.

Espero que essa solução te ajude a resolver o problema! Se tiver mais alguma dúvida, é só me dizer.

Espero ter ajudado e bons estudos!