Вход в Django с неверными учетными данными возвращает 200, а не 401
Это довольно прямое испытание, но я не могу понять, как оно правильно.
Я хочу проверить, какие пользователи могут входить в систему и выполнять какие-либо действия (это часть большого набора тестов), но самый первый шаг вызывает некоторые проблемы.
class SuperUserTest(TestCase):
def setUp(self):
self.client = Client()
self.su = User.objects.create_superuser('super','','the_correct_password')
def test_su_can_login(self):
response = self.client.post(reverse('django.contrib.auth.views.login'),
{'username': 'super', 'password': 'the_wrong_password'})
self.assertEqual(response.status_code,401)
# Success redirects to the homepage, so its 302 not 200
response = self.client.post(reverse('django.contrib.auth.views.login'),
{'username': 'super', 'password': 'the_correct_password'})
self.assertEqual(response.status_code,302)
Когда я запускаю тест, я получаю:
(my_app)00:20 ~/my_app (master)$ ./manage.py test my_app.SuperUserTest
Creating test database for alias 'default'...
F
======================================================================
FAIL: test_su_can_login (my_app.SuperUserTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "./my_app/tests.py", line 341, in test_su_can_login
self.assertEqual(response.status_code,401)
AssertionError: 200 != 401
----------------------------------------------------------------------
Ran 1 test in 1.180s
FAILED (failures=1)
Destroying test database for alias 'default'...
Почему Django возвращает HTTP-код200
когда я неправильно авторизируюсь?
Для дополнительного контекста, вот как я управляю URL для входа / выхода:
urlpatterns = patterns('',
# Examples:
url(r'^accounts/login/?, 'django.contrib.auth.views.login'),
url(r'^accounts/logout/?, 'django.contrib.auth.views.logout',
{'next_page': '/'}),