98 lines
3.7 KiB
Python
98 lines
3.7 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('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')
|