Files
shoppy/users/tests/test_login.py
T
2026-03-19 17:33:24 +01:00

123 lines
4.0 KiB
Python

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('users:logout'))
assert response.status_code == 302
assert response.url == reverse('web:index')
def test_logout_already_logged_out(self):
response = self.client.post(reverse('users: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('users: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('users:my_account'))
assert response.status_code == 200
def test_login_redirection_to_my_account(self):
url = f'{reverse("users:login")}?next={reverse("users: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("users:my_account")}'
response = self.client.get(response.url)
assert response.status_code == 302
assert response.url == reverse('users: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')