Создайте простой пароль для пользователя unittest, используя PASSWORD_HASHERS

До django 1.2.5 я мог использовать следующий код для создания пользователя для тестирования, а затем зарегистрируйте его:

class TestSomeLoginRequiredView(TestCase):
    urls = 'sonloop.tests.test_urls'

    def setUp(self):
        self.user = User.objects.create(username='testuser',password='some_password')


    def test_the_view(self):
        response = self.client.get('/test_view_url/')
        self.assertEqual(response.status_code,401)

        self.client.login(username='testuser',password='some_password')
        response = self.client.get('/test_view_url/')
        self.assertEqual(response.status_code,200)

Теперь использование того же кода с django 1.4 больше не работает:

ValueError:Неизвестный алгоритм хеширования пароля 'some_password'. Вы указать его в настройке PASSWORD_HASHERS?

Насколько я понимаю, это связано с новой системой хеширования паролей. Я не использую параметр PASSWORD_HASHERS, поэтому Django должен использовать некоторые значения по умолчанию.

В документации Django довольно мало информации о том, как реализовать что-то подобное сейчас. В разделе тестирования ничего не изменилось. И из раздела о создании паролей и о том, как их хэшировать, я мог видеть, что я, вероятно, мог бы создать такой пароль :

self.user = User.objects.create(username='testuser')
self.user.set_password('some_password')

, но это вызывает это только в первой строке (при создании пользователя, а не при назначении пароль):

ValueError:Неизвестный алгоритм хэширования пароля ''. Вы указать его в настройке PASSWORD_HASHERS?

Это какая-то проблема с тем, что django не принимает пустые пароли, поэтому я изменил это на:

self.user = User.objects.create(username='testuser',password='!')
self.user.set_password('some_password')

И затем попытался войти в систему таким образом:

login = self.client.login(username='testuser',password='some_password')
self.assertTrue(login)

Что теперь вызывает AssertionError: False is not Trueвздох -Я почти ожидал, что это...

Теперь мой вопрос :Как я могу создать пользователя с паролем и войти в систему с помощью тестового клиента django?

11
задан marue 12 April 2012 в 09:04
поделиться