코드 검토 실습 · 8 MIN
AI 생성 변경 검토하기
짧은 엔드포인트 코드를 살펴보세요. 변경을 수락하기 전에 어떤 증거가 필요한지 결정하세요.
상황
AI 어시스턴트가 청구서 엔드포인트를 제안합니다. 로그인한 사용자는 자기 조직의 청구서만 볼 수 있어야 합니다. 릴리스 전에 변경을 검토하고 있습니다.
할 일
- 코드와 쉬운 말로 쓴 설명을 읽으세요. 실행할 필요는 없습니다.
- 수락 전에 필요한 검사를 모두 선택하세요. 답을 확인하고 이유를 읽으세요. 빠진 검사가 있으면 다시 시도하세요.
이 PR을 검토합니다. 기능은 같은 조직의 인증된 사용자에게만 청구서를 반환해야 합니다. 발췌 코드는 불완전합니다.
// 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);
});코드는 무엇을 하나요?
엔드포인트는 요청에서 청구서 ID를 가져와 해당 청구서를 조회하고, 전체 청구서를 로그에 남긴 뒤 반환합니다. 누가 사용자의 해당 청구서 접근 권한을 확인하는지는 발췌에 보이지 않습니다.
인증은 사용자가 누구인지 확인합니다. 인가는 사용자가 무엇을 할 수 있는지 확인합니다. 미들웨어는 엔드포인트 전에 요청을 처리하는 코드입니다. 이 발췌에 없는 검사가 포함될 수 있습니다.
마무리
요청 한 번이 성공하면 청구서 엔드포인트가 안전하다는 증거일까요?
답을 설명과 비교하세요
아닙니다. 요청 하나가 작동했다는 증거입니다. 사용자가 다른 조직의 청구서를 읽을 수 없다는 증거도 필요합니다. 전체 요청 경로, 레코드가 없을 때의 동작, 로깅을 살펴보세요. 성공한 테스트는 중요한 요구사항을 검사해야 합니다.
업무에 적용하기
다음 PR 검토에서 거부해야 할 작업에 대한 테스트 하나를 추가하세요.
다른 실습 선택