feat: added tests for reset password

This commit is contained in:
2025-01-17 00:09:36 +01:00
parent 80bc3797ff
commit 0909176257
5 changed files with 92 additions and 9 deletions
+79
View File
@@ -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)