unittest unitarias the test pruebas permission got form error creating create python django passwords python-unittest

python - unitarias - testcase client django



Django User.check_password no pasará la verificación de contraseña (1)

Intentando escribir una prueba unitaria que debería verificar si el usuario ingresó la contraseña correcta.

Usando la función de autenticación nativa user.check_password de user.check_password para esto.

El problema es que check_password no aceptará la contraseña del objeto del usuario por algún motivo. Por ejemplo, esto genera un error:

assert user.check_password(user.password), "Password doesn''t match"

user.password devuelve cadena MD5 unicode.

¿Alguien sabe por qué esto no pasa el cheque y cómo se puede pasar el cheque?


Esto está sucediendo porque check_password acepta una cadena sin check_password y le está pasando un hash.

assert user.check_password(user.password) # False because passing hash assert user.check_password(''my_password'') # True because accepts a raw string

user.password es un hash y metadata sobre la password .

De acuerdo con los documentos ,

check_password (raw_password)
Devuelve True si la cadena cruda dada es la contraseña correcta para el usuario. (Esto se ocupa del hashing de la contraseña al hacer la comparación).

Por lo tanto, solo pase la contraseña real de la cadena sin user.check_password() a user.check_password() y pasará la user.check_password() unittest.