feat: added tests for reset password
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.shortcuts import reverse
|
||||
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
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class TestResetPassword(TransactionTestCase):
|
||||
def setUp(self) -> None:
|
||||
self.password = "theonering"
|
||||
self.email = "sauron@mordor.middleearth"
|
||||
self.first_name = "Sauron"
|
||||
self.last_name = "The Lord of the Rings"
|
||||
|
||||
self.user = User.objects.create_user(
|
||||
username=self.email,
|
||||
password=self.password,
|
||||
first_name=self.first_name,
|
||||
last_name=self.last_name,
|
||||
)
|
||||
|
||||
def test_get_reset_password_page(self):
|
||||
response = self.client.get(reverse("web:reset_password"))
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_reset_password(self):
|
||||
response = self.client.post(
|
||||
reverse("web:reset_password"),
|
||||
{
|
||||
"email": self.email,
|
||||
},
|
||||
)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse("web:reset_password_email_sent")
|
||||
|
||||
def test_reset_password_not_existing_user(self):
|
||||
response = self.client.post(
|
||||
reverse("web:reset_password"),
|
||||
{
|
||||
"email": 'vanpiro@noesiten.com',
|
||||
},
|
||||
)
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse("web:reset_password_email_sent")
|
||||
|
||||
def test_reset_password_confirm_get(self):
|
||||
token = default_token_generator.make_token(self.user)
|
||||
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||
|
||||
response = self.client.get(
|
||||
reverse("web:reset_password_confirm", kwargs={"uidb64": uidb64, "token": token}),
|
||||
)
|
||||
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_reset_password_confirm(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": new_password,
|
||||
}
|
||||
)
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:login')
|
||||
self.user.refresh_from_db()
|
||||
|
||||
assert self.user.check_password(new_password)
|
||||
+1
-1
@@ -50,7 +50,7 @@ i18n_resolvers = i18n_patterns(
|
||||
path(_("register/"), register, name="register"),
|
||||
path(_("reset-password/"), reset_password, name="reset_password"),
|
||||
path(
|
||||
_("reset/<uidb64>/<token>/"),
|
||||
_("reset-password/<uidb64>/<token>/"),
|
||||
reset_password_confirm,
|
||||
name="reset_password_confirm",
|
||||
),
|
||||
|
||||
+1
-1
@@ -210,7 +210,7 @@ class ResetPasswordConfirmView(TemplateView):
|
||||
return {
|
||||
"title": WebSettings.load().web_title,
|
||||
"description": _("Establecer nueva contraseña"),
|
||||
"form": self.form_class(user, {'token': new_token}),
|
||||
"form": self.form_class(user, {"token": new_token}),
|
||||
"valid_token": valid_token,
|
||||
"new_token": new_token,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user