Раздел 43 · Автотестирование с нуля

Авторизация в API-тестах: токены, роли и вход один раз

middle~30 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Вера Ланская · лид QA, #qa-antrakt

Пришёл отчёт аудита безопасности. Первый пункт: «Зритель, вошедший в приложение, может открыть чужой заказ, подставив номер в GET /orders/{id}. Номера идут подряд». Тимур говорит, что проверка владельца там есть. Я посмотрела набор: все 41 тест Глеба ходят под админом, а админу можно всё. Набор вообще не знает, что существуют зрители. Сделай так, чтобы знал.

В прошлом уроке мы собрали запросы в одного клиента с таймаутом. Токен в этот клиент по-прежнему кладёт фикстура admin_token, и под этим токеном живёт весь набор. Проблема в том, что тест под админом проверяет только то, что видит админ. Права зрителя, организатора и человека без входа остаются непроверенными. В этом уроке научимся входить под нужной ролью, держать вход в фикстуре и ловить классическую дыру API: доступ к чужому объекту.

Браслет на фестивале

На входе на фестиваль охрана проверяет билет и надевает браслет. Это ответ на вопрос «кто ты»: зритель, участник, техник. Дальше браслет показывают у каждой двери. Зелёный пускает в зал, жёлтый ещё и за сцену, красный везде. Охранник у двери не проверяет билет заново, он смотрит на браслет.

Тест под админом это проверка охраны человеком с красным браслетом. Он пройдёт в любую дверь и решит, что двери работают. А проверить надо, что зелёный браслет не пускает за сцену. И что без браслета не пускают никуда.

урок из курса

Урок из курса «Автотестирование с нуля». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.