Exercício de revisão de código · 8 MIN
Revise uma alteração gerada por IA
Inspecione um endpoint curto. Decida de quais evidências precisa antes de aceitar a alteração.
A situação
Um assistente de IA propõe um endpoint de faturas. Um usuário autenticado só deve ver faturas da própria organização. Você revisa a alteração antes que possa ser disponibilizada.
O que fazer
- Leia o código e sua explicação em linguagem simples. Não é necessário executá-lo.
- Selecione todas as verificações necessárias antes da aceitação. Confira as respostas, leia os motivos e tente novamente se faltar alguma verificação.
Você revisa este PR. A funcionalidade deve retornar uma fatura apenas a um usuário autenticado da mesma organização. O trecho está incompleto.
// Fictional, incomplete example. Do not deploy.
app.get('/invoices/:id', async (req, res) => {
const invoice = await db.invoice.findUnique({
where: { id: req.params.id }
});
console.log('Invoice response', invoice);
return res.json(invoice);
});O que o código faz?
O endpoint recebe um ID de fatura da requisição, busca a fatura, registra-a inteira em logs e a retorna. O trecho não mostra quem verifica o direito do usuário a essa fatura.
A autenticação verifica quem é o usuário. A autorização verifica o que ele pode fazer. Middleware é o código que processa a requisição antes deste endpoint. Pode conter verificações ausentes deste trecho.
PARA CONCLUIR
Uma requisição bem-sucedida prova que o endpoint de faturas é seguro?
Compare sua resposta com a explicação
Não. Prova que uma requisição funcionou. Você também precisa de evidência de que um usuário não consegue ler a fatura de outra organização. Inspecione o caminho completo da requisição, o comportamento para registro ausente e os logs. Um teste bem-sucedido precisa cobrir o requisito importante.
Use no trabalho
Na próxima revisão de PR, acrescente um teste para uma ação que deve ser negada.
Escolher outro exercício