Files
enviPy-bayer/tests/views/test_user_views.py
jebus afeb56622c [Chore] Linted Files (#150)
Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#150
2025-10-09 07:25:13 +13:00

92 lines
3.0 KiB
Python

from django.test import TestCase
from epdb.logic import PackageManager
from epdb.models import Package, User
from django.urls import reverse
class UserViewTest(TestCase):
fixtures = ["test_fixtures.jsonl.gz"]
@classmethod
def setUpClass(cls):
super(UserViewTest, cls).setUpClass()
cls.user = User.objects.get(username="anonymous")
cls.package = PackageManager.create_package(cls.user, "Anon Test Package", "No Desc")
cls.BBD_SUBSET = Package.objects.get(name="Fixtures")
def test_login_with_valid_credentials(self):
response = self.client.post(
reverse("login"),
{
"username": "user0",
"password": "SuperSafe",
},
)
self.assertRedirects(response, reverse("index"))
self.assertTrue(response.wsgi_request.user.is_authenticated)
def test_login_with_invalid_credentials(self):
response = self.client.post(
reverse("login"),
{
"username": "user0",
"password": "wrongpassword",
},
)
self.assertEqual(response.status_code, 200)
self.assertFalse(response.wsgi_request.user.is_authenticated)
def test_register(self):
response = self.client.post(
reverse("register"),
{
"username": "user1",
"email": "user1@envipath.com",
"password": "SuperSafe",
"rpassword": "SuperSafe",
},
)
self.assertEqual(response.status_code, 200)
# TODO currently fails as the fixture does not provide a global setting...
self.assertContains(response, "Registration failed!")
def test_register_password_mismatch(self):
response = self.client.post(
reverse("register"),
{
"username": "user1",
"email": "user1@envipath.com",
"password": "SuperSafe",
"rpassword": "SuperSaf3",
},
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Registration failed, provided passwords differ")
def test_logout(self):
response = self.client.post(
reverse("login"), {"username": "user0", "password": "SuperSafe", "login": "true"}
)
self.assertTrue(response.wsgi_request.user.is_authenticated)
response = self.client.post(
reverse("logout"),
{
"logout": "true",
},
)
self.assertFalse(response.wsgi_request.user.is_authenticated)
def test_next_param_properly_handled(self):
response = self.client.get(reverse("packages"))
self.assertRedirects(response, f"{reverse('login')}/?next=/package")
response = self.client.post(
reverse("login"),
{"username": "user0", "password": "SuperSafe", "login": "true", "next": "/package"},
)
self.assertRedirects(response, reverse("packages"))