69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
from rest_framework import status
|
|
|
|
from userausfall.models import User
|
|
from userausfall.rest_api.tests.userausfall import UserausfallAPITestCase
|
|
from userausfall.rest_api.tests.users import UserMixin
|
|
|
|
|
|
class AuthenticationTestCase(UserMixin, UserausfallAPITestCase):
|
|
base_url = "/api/auth"
|
|
|
|
def test_signup(self):
|
|
"""
|
|
Create a new user account (signup)
|
|
"""
|
|
url = "/register/"
|
|
username = "test"
|
|
password = "test12345"
|
|
data = {"username": username, "password": password, "passwordConfirm": password}
|
|
response = self.client.post(self.get_api_url(url), data)
|
|
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
|
|
self.assertEqual(User.objects.count(), 1)
|
|
self.assertEqual(User.objects.get().username, username)
|
|
|
|
def test_login(self) -> None:
|
|
"""
|
|
Create a session cookie (login)
|
|
"""
|
|
url = "/login/"
|
|
self.create_user()
|
|
data = {"login": self.username, "password": self.password}
|
|
response = self.client.post(self.get_api_url(url), data)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertTrue(response.wsgi_request.user.is_authenticated)
|
|
|
|
def test_logout(self) -> None:
|
|
"""
|
|
Remove the session (logout)
|
|
"""
|
|
url = "/logout/"
|
|
self.authenticate_user()
|
|
response = self.client.post(self.get_api_url(url))
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertFalse(response.wsgi_request.user.is_authenticated)
|
|
|
|
def test_retrieve_user(self) -> None:
|
|
"""
|
|
Retrieve data of authenticated user
|
|
"""
|
|
url = "/profile/"
|
|
self.create_user()
|
|
self.authenticate_user()
|
|
response = self.client.get(self.get_api_url(url))
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertDictEqual(
|
|
response.data,
|
|
{
|
|
"username": self.username,
|
|
"id": self.user.id,
|
|
},
|
|
)
|
|
|
|
def test_create_two_users(self) -> None:
|
|
"""
|
|
Create more than one user
|
|
"""
|
|
self.create_user()
|
|
self.create_user()
|
|
self.assertEqual(User.objects.count(), 2)
|