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.