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