113 lines
3.6 KiB
Python
113 lines
3.6 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('users:register'))
|
|
assert response.status_code == 200
|
|
|
|
def test_create_user_account(self):
|
|
response = self.client.post(
|
|
reverse('users: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('users:login')
|
|
|
|
def test_create_user_account_distinct_password(self):
|
|
response = self.client.post(
|
|
reverse('users: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('users: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('users: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('users: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
|