Olá pessoal, venho compartilhar meu caso que está me deixando biruta
Estou realizando testes de integração sem mockagem no front, justamente para testar em tempo real a api, utilizo banco de testes e subo o back na minha máquina, e o front também, ambos possuo acesso através de features nesses projetos do github. O backend é feito em nestjs e node, e o front em nextjs (usando axios).
Ao renderizar um componente navbar da aplicação com o usuario logado, deve renderizar os pontos acumulados deste usuário. Este é o meu teste onde uso o jsdom como environment:
beforeAll(async () => {
await act(async () => {
const credentials = {documento: process.env.CREDENTIAL_USER || "", senha: process.env.CREDENTIAL_PASS || ""}
await authService.login(credentials)
});
})
beforeEach(() => [
render(
<NavBar/>
)
])
describe('Navbar',() => {
it('should get success request to api and render the poins on navbar', async () => {
const displayPontos = await screen.findByTestId('display-pontos')
await act(async () => {
const getPontos = await ApiClient().get('ponto/total/user')
expect(displayPontos).toHaveTextContent(`${getPontos.data.total}`)
})
})
})
ao rodar este teste acontece a falha do componente em receber o valor vindo da api:
Navbar › should get success request to api and render the poins on navbar
expect(element).toHaveTextContent()
Expected element to have text content:
737178
Received:
0
43 | await act(async () => {
44 | const getPontos = await ApiClient().get('ponto/total/user')
> 45 | expect(displayPontos).toHaveTextContent(`${getPontos.data.total}`)
| ^
46 | })
47 | })
48 |
e o erro de preflight vem junto, este erro descobri que tem relação com a configuração do CORS:
Error: Response for preflight has invalid HTTP status code 404.
Meu arquivo next.config.js possui esta configuração:
...(process.env.NODE_ENV === "development" && {async headers() {
return [
{
// matching all API routes
source: "/api/:path*",
headers: [
{ key: "Access-Control-Allow-Credentials", value: "true" },
{ key: "Access-Control-Allow-Origin", value: "*" },
{ key: "Access-Control-Allow-Methods", value: "GET, DELETE, PATCH, POST, PUT, OPTIONS" },
{ key: "Access-Control-Allow-Headers", value: "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version, Connection, Keep-Alive, Authorization, Vary" },
]
}
]
}})
E no main.ts do meu back possui esta configuração do CORS:
app.enableCors({
origin: '*',
methods: 'GET, DELETE, PATCH, POST, PUT, OPTIONS',
allowedHeaders: [
'X-CSRF-Token',
'X-Requested-With',
'Accept',
'Accept-Version',
'Content-Length',
'Content-MD5',
'Content-Type',
'Date',
'X-Api-Version',
'Connection',
'Keep-Alive',
'Authorization',
'vary',
'access-control-allow-credentials',
],
credentials: true,
});
Alguém consegue me dar uma luz no que posso estar fazendo de errado? Estou esquecendo de algo? Agradeço desde já.