Files
shoppy/web/tests/test_register.py
T
2025-01-16 10:34:47 +01:00

131 lines
3.8 KiB
Python

from django.contrib.auth import get_user_model
from django.shortcuts import reverse
from django.test import TransactionTestCase
User = get_user_model()
class TestRegister(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"
def test_get_register_page(self):
response = self.client.get(reverse("web:register"))
assert response.status_code == 200
def test_create_user_account(self):
response = self.client.post(
reverse("web:register"),
{
"email": self.email,
"password1": self.password,
"password2": self.password,
"first_name": self.first_name,
"last_name": self.last_name,
},
)
user = User.objects.filter(
username=self.email,
email=self.email,
first_name=self.first_name,
last_name=self.last_name,
).first()
assert user is not None
assert response.status_code == 302
assert response.url == reverse("web:login")
def test_create_user_account_distinct_password(self):
response = self.client.post(
reverse("web:register"),
{
"email": self.email,
"password1": self.password,
"password2": "otherpassword",
"first_name": self.first_name,
"last_name": self.last_name,
},
)
assert not User.objects.filter(
username=self.email,
email=self.email,
first_name=self.first_name,
last_name=self.last_name,
).exists()
assert response.status_code == 400
def test_create_user_account_no_first_name(self):
response = self.client.post(
reverse("web:register"),
{
"email": self.email,
"password1": self.password,
"password2": "otherpassword",
"first_name": "",
"last_name": self.last_name,
},
)
assert not User.objects.filter(
username=self.email,
email=self.email,
first_name="",
last_name=self.last_name,
).exists()
assert response.status_code == 400
def test_create_user_account_no_last_name(self):
response = self.client.post(
reverse("web:register"),
{
"email": self.email,
"password1": self.password,
"password2": self.password,
"first_name": self.first_name,
"last_name": "",
},
)
assert not User.objects.filter(
username=self.email,
email=self.email,
first_name=self.first_name,
last_name="",
).exists()
assert response.status_code == 400
def test_create_user_account_already_existing(self):
assert User.objects.all().count() == 0
User.objects.create_user(
email=self.email,
username=self.email,
)
response = self.client.post(
reverse("web:register"),
{
"email": self.email,
"password1": self.password,
"password2": self.password,
"first_name": self.first_name,
"last_name": self.last_name,
},
)
assert not User.objects.filter(
username=self.email,
email=self.email,
first_name=self.first_name,
last_name="",
).exists()
assert response.status_code == 400