chore: improve coverage
This commit is contained in:
@@ -3,19 +3,13 @@ from django.contrib.auth.forms import PasswordResetForm as BasePasswordResetForm
|
|||||||
from django.contrib.auth.forms import SetPasswordForm as BaseSetPasswordForm
|
from django.contrib.auth.forms import SetPasswordForm as BaseSetPasswordForm
|
||||||
from django.contrib.auth.tokens import default_token_generator
|
from django.contrib.auth.tokens import default_token_generator
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
from django.utils.text import gettext_lazy as _
|
||||||
|
|
||||||
|
|
||||||
class PasswordResetForm(BasePasswordResetForm):
|
class PasswordResetForm(BasePasswordResetForm):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def validate_token(token):
|
|
||||||
is_valid = default_token_generator.check_token(token)
|
|
||||||
|
|
||||||
if not is_valid:
|
|
||||||
raise ValidationError(_("El token no es válido o ha expirado"))
|
|
||||||
|
|
||||||
|
|
||||||
class SetPasswordForm(BaseSetPasswordForm):
|
class SetPasswordForm(BaseSetPasswordForm):
|
||||||
token = forms.CharField(
|
token = forms.CharField(
|
||||||
required=True,
|
required=True,
|
||||||
@@ -35,6 +29,6 @@ class SetPasswordForm(BaseSetPasswordForm):
|
|||||||
try:
|
try:
|
||||||
self.validate_token()
|
self.validate_token()
|
||||||
except ValidationError as e:
|
except ValidationError as e:
|
||||||
self.add_error(self.token, str(e))
|
self.add_error('token', str(e))
|
||||||
return False
|
return False
|
||||||
return super().is_valid()
|
return super().is_valid()
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
|
from django.contrib.auth.tokens import default_token_generator
|
||||||
from django.shortcuts import reverse
|
from django.shortcuts import reverse
|
||||||
from django.test import TransactionTestCase
|
from django.test import TransactionTestCase
|
||||||
from django.contrib.auth.tokens import default_token_generator
|
|
||||||
from django.utils.http import urlsafe_base64_encode
|
|
||||||
from django.utils.encoding import force_bytes
|
from django.utils.encoding import force_bytes
|
||||||
|
from django.utils.http import urlsafe_base64_encode
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ class TestResetPassword(TransactionTestCase):
|
|||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
reverse("web:reset_password"),
|
reverse("web:reset_password"),
|
||||||
{
|
{
|
||||||
"email": 'vanpiro@noesiten.com',
|
"email": "vanpiro@noesiten.com",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -53,7 +53,9 @@ class TestResetPassword(TransactionTestCase):
|
|||||||
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||||
|
|
||||||
response = self.client.get(
|
response = self.client.get(
|
||||||
reverse("web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}),
|
reverse(
|
||||||
|
"web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}
|
||||||
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
@@ -63,17 +65,58 @@ class TestResetPassword(TransactionTestCase):
|
|||||||
form_token = default_token_generator.make_token(self.user)
|
form_token = default_token_generator.make_token(self.user)
|
||||||
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||||
|
|
||||||
new_password = '89733wy29'
|
new_password = "89733wy29"
|
||||||
|
|
||||||
response = self.client.post(
|
response = self.client.post(
|
||||||
reverse("web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}), {
|
reverse(
|
||||||
|
"web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}
|
||||||
|
),
|
||||||
|
{
|
||||||
"token": form_token,
|
"token": form_token,
|
||||||
"new_password1": new_password,
|
"new_password1": new_password,
|
||||||
"new_password2": new_password,
|
"new_password2": new_password,
|
||||||
}
|
},
|
||||||
)
|
)
|
||||||
assert response.status_code == 302
|
assert response.status_code == 302
|
||||||
assert response.url == reverse('web:login')
|
assert response.url == reverse("web:login")
|
||||||
self.user.refresh_from_db()
|
self.user.refresh_from_db()
|
||||||
|
|
||||||
assert self.user.check_password(new_password)
|
assert self.user.check_password(new_password)
|
||||||
|
|
||||||
|
def test_reset_password_confirm_distinct_password(self):
|
||||||
|
token = default_token_generator.make_token(self.user)
|
||||||
|
form_token = default_token_generator.make_token(self.user)
|
||||||
|
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||||
|
|
||||||
|
new_password = "89733wy29"
|
||||||
|
|
||||||
|
response = self.client.post(
|
||||||
|
reverse(
|
||||||
|
"web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"token": form_token,
|
||||||
|
"new_password1": new_password,
|
||||||
|
"new_password2": "otherpassw13",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
def test_reset_password_confirm_invalid_token(self):
|
||||||
|
token = default_token_generator.make_token(self.user)
|
||||||
|
form_token = "invalid token"
|
||||||
|
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||||
|
|
||||||
|
new_password = "89733wy29"
|
||||||
|
|
||||||
|
response = self.client.post(
|
||||||
|
reverse(
|
||||||
|
"web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}
|
||||||
|
),
|
||||||
|
{
|
||||||
|
"token": form_token,
|
||||||
|
"new_password1": new_password,
|
||||||
|
"new_password2": new_password,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert response.status_code == 200
|
||||||
|
|||||||
Reference in New Issue
Block a user