Hasta Django 1.2.5 i podría utilizar el siguiente código para crear un usuario para realizar pruebas e inicie sesión en:Crear una contraseña simple para el usuario unittest usando PASSWORD_HASHERS
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)
Ahora, utilizando el mismo código con Django 1.4 no funciona más:
ValueError: Unknown password hashing algorithm 'some_password'. Did you specify it in the PASSWORD_HASHERS setting?
Entiendo que esto tiene que ver con el nuevo sistema hashing de contraseñas. No utilizo la configuración PASSWORD_HASHERS, por lo que Django debería usar algunos valores predeterminados.
Los documentos de Django son bastante escasos sobre cómo implementar algo así ahora. En la sección de prueba, nada ha cambiado. Y a partir de la sección sobre la creación de contraseñas y la forma de hash de ellos, pude ver que probablemente podría crear una contraseña de esta manera:
self.user = User.objects.create(username='testuser')
self.user.set_password('some_password')
Pero eso sólo aumenta esta eception en la primera línea (al crear el usuario, no al asignar la contraseña):
ValueError: Unknown password hashing algorithm ''. Did you specify it in the PASSWORD_HASHERS setting?
Este es un problema con Django no aceptar contraseñas vacías, así que cambió a que:
self.user = User.objects.create(username='testuser',password='!')
self.user.set_password('some_password')
y luego tratar de registrar la U Ser en el estilo:
login = self.client.login(username='testuser',password='some_password')
self.assertTrue(login)
Que ahora plantea una AssertionError: False is not True
suspiro - Casi esperaba que ...
Mi pregunta ahora es: ¿Cómo puedo crear un usuario con una contraseña, y registrar este usuario en con el cliente de prueba django?
Por supuesto. guardar ... Gracias, tan obvio. La segunda solución es más elegante, probablemente use esto. En caso de que esté interesado, mientras tanto, encontré una tercera solución que voy a publicar en este momento. – marue
¿Te refieres a esta? Probablemente también puedas encontrar el interés de la mina ...;) – marue