fix: huge refactor
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TestCase
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
|
||||
class TestLogin(TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.password = 'theonering'
|
||||
self.user = User.objects.create(username='sauron', email='sauron@mordor.middleearth')
|
||||
|
||||
self.user.set_password(self.password)
|
||||
self.user.save()
|
||||
|
||||
def test_login(self):
|
||||
response = self.client.post(reverse('users:login'), {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
def test_login_get(self):
|
||||
response = self.client.get(reverse('users:login'))
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_login_already_logged_in(self):
|
||||
response = self.client.post(reverse('users:login'), {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
response = self.client.get(reverse('users:login'))
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
def test_login_failed(self):
|
||||
response = self.client.post(
|
||||
reverse('users:login'), {'username': self.user.username, 'password': 'wrongpassword'}
|
||||
)
|
||||
|
||||
assert response.status_code == 400
|
||||
|
||||
def test_login_then_logout(self):
|
||||
response = self.client.post(reverse('users:login'), {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
response = self.client.post(reverse('web:logout'))
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
def test_logout_already_logged_out(self):
|
||||
response = self.client.post(reverse('web:logout'))
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
def test_login_then_get_logout(self):
|
||||
response = self.client.post(reverse('users:login'), {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
response = self.client.get(reverse('web:logout'))
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
def test_login_then_get_my_account(self):
|
||||
response = self.client.post(reverse('users:login'), {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:index')
|
||||
|
||||
response = self.client.get(reverse('web:my_account'))
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_login_redirection_to_my_account(self):
|
||||
url = f'{reverse("users:login")}?next={reverse("web:my_account")}'
|
||||
response = self.client.post(url, {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == f'{reverse("web:index")}?next={reverse("web:my_account")}'
|
||||
|
||||
response = self.client.get(response.url)
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:my_account')
|
||||
|
||||
def test_login_redirection_to_my_orders(self):
|
||||
url = f'{reverse("users:login")}?next={reverse("web:orders")}'
|
||||
response = self.client.post(url, {'username': self.user.username, 'password': self.password})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == f'{reverse("web:index")}?next={reverse("web:orders")}'
|
||||
|
||||
response = self.client.get(response.url)
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('web:orders')
|
||||
@@ -0,0 +1,112 @@
|
||||
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
|
||||
@@ -0,0 +1,87 @@
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.tokens import default_token_generator
|
||||
from django.shortcuts import reverse
|
||||
from django.test import TransactionTestCase
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.http import urlsafe_base64_encode
|
||||
|
||||
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('users:reset_password'))
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_reset_password(self):
|
||||
response = self.client.post(reverse('users:reset_password'), {'email': self.email})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('users:reset_password_email_sent')
|
||||
|
||||
def test_reset_password_not_existing_user(self):
|
||||
response = self.client.post(reverse('users:reset_password'), {'email': 'vanpiro@noesiten.com'})
|
||||
|
||||
assert response.status_code == 302
|
||||
assert response.url == reverse('users: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('users: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('users: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('users:login')
|
||||
self.user.refresh_from_db()
|
||||
|
||||
assert self.user.check_password(new_password)
|
||||
|
||||
def test_reset_password_confirm_distinct_password(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('users:reset_password_confirm', kwargs={'uidb64': uidb64, 'token': token}),
|
||||
{'token': form_token, 'new_password1': new_password, 'new_password2': 'otherpassw13'},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
|
||||
def test_reset_password_confirm_invalid_token(self):
|
||||
token = default_token_generator.make_token(self.user)
|
||||
form_token = 'invalid token'
|
||||
uidb64 = urlsafe_base64_encode(force_bytes(self.user.pk))
|
||||
|
||||
new_password = '89733wy29'
|
||||
|
||||
response = self.client.post(
|
||||
reverse('users:reset_password_confirm', kwargs={'uidb64': uidb64, 'token': token}),
|
||||
{'token': form_token, 'new_password1': new_password, 'new_password2': new_password},
|
||||
)
|
||||
assert response.status_code == 200
|
||||
Reference in New Issue
Block a user