forked from enviPath/enviPy
[Feature] Register / Login / Logout View Testing (#126)
Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#126
This commit is contained in:
80
tests/views/test_user_views.py
Normal file
80
tests/views/test_user_views.py
Normal file
@ -0,0 +1,80 @@
|
||||
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'))
|
||||
Reference in New Issue
Block a user