Обновление до django 3.2 ломает тесты API (response.data['details'])
Я обновляю наше приложение django с 3.0.5 до 3.2.9, и у меня возникли некоторые проблемы с тестами API. Возвращаемый ответ, очевидно, изменился, и я хотел бы знать, почему.
self.user.is_superuser = False
self.user.save()
self.assertEqual(self.user.get_all_permissions(), set())
put_url = reverse(..., kwargs={"pk": 1})
put_data = {
...
}
response = self.client.put(put_url, json.dumps(put_data), content_type="application/json")
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
self.assertEqual(response.data, {"detail": "You do not have permission to perform this action."})
Раньше это проходило, но теперь response.data
содержит
{'detail': ErrorDetail(string='Authentication credentials were not provided.', code='not_authenticated')}
и, конечно же, тесты не работают.
Странно то, что код ошибки остается 403, а не 401. Есть ли способ просто вернуть строку в деталях?
Похоже, что в 3.2 после установки self.user.is_superuser = False
бэкенд django выходит из системы, что приводит к not_authenticated
, но в ответ возвращается код ошибки 403, вместо 401.
После повторного входа пользователя в систему (каждый раз после отзыва статуса суперпользователя) все тесты проходят как и раньше на django 3.0.5.