Практыкаванне па рэцэнзаванні кода · 8 хв
Праверце змену, згенераваную AI
Вывучыце кароткі endpoint. Вырашыце, якія доказы патрэбныя перад прыёмкай змены.
Сітуацыя
AI-памочнік прапануе endpoint рахункаў на аплату. Карыстальнік, які ўвайшоў у сістэму, павінен бачыць толькі рахункі сваёй арганізацыі. Вы правяраеце змену перад выпускам.
Што рабіць
- Прачытайце код і яго тлумачэнне простай мовай. Запускаць яго не трэба.
- Выберыце ўсе праверкі, патрэбныя перад прыёмкай. Праверце адказы, прачытайце прычыны і паўтарыце спробу, калі не хапае праверкі.
Вы рэцэнзуеце гэты 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);
});Што робіць код?
Endpoint бярэ з запыту ідэнтыфікатар рахунку на аплату, атрымлівае гэты рахунак, запісвае яго цалкам у журнал і вяртае. Фрагмент не паказвае, хто правярае права карыстальніка на гэты рахунак.
Аўтэнтыфікацыя правярае, хто карыстальнік. Аўтарызацыя правярае, што карыстальнік можа рабіць. Middleware — код, які апрацоўвае запыт перад гэтым endpoint. Ён можа ўтрымліваць праверкі, адсутныя ў фрагменце.
ДЛЯ ЗАВЯРШЭННЯ
Ці даказвае паспяховы запыт бяспеку endpoint рахункаў на аплату?
Параўнайце свой адказ з тлумачэннем
Не. Ён даказвае, што адзін запыт спрацаваў. Таксама патрэбныя доказы таго, што карыстальнік не можа прачытаць рахунак іншай арганізацыі. Праверце поўны шлях запыту, паводзіны пры адсутным запісе і журналяванне. Паспяховы тэст павінен ахопліваць важнае патрабаванне.
Выкарыстайце гэта ў працы
У наступнай рэцэнзіі PR дадайце адзін тэст дзеяння, якое павінна быць забаронена.
Выбраць іншае практыкаванне