2025-11-18 18:30:10 +00:00
|
|
|
from django.test import TestCase
|
2025-11-19 12:55:15 +00:00
|
|
|
from django.contrib.auth import get_user_model
|
|
|
|
|
from django.urls import reverse
|
|
|
|
|
from rest_framework.test import APIClient
|
|
|
|
|
from rest_framework import status
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserModelTests(TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
self.user_data = {
|
|
|
|
|
'email_address': 'Test@Example.com',
|
|
|
|
|
'username': 'TestUser',
|
|
|
|
|
'first_name': 'Test',
|
|
|
|
|
'last_name': 'User',
|
|
|
|
|
'date_of_birth': '1990-01-01',
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def test_create_user_and_properties(self):
|
|
|
|
|
user = User.objects.create_user(password='pass1234', **self.user_data)
|
|
|
|
|
self.assertIsNotNone(user.pk)
|
|
|
|
|
# email should be normalized by the manager
|
|
|
|
|
self.assertEqual(user.email_address.lower(), 'test@example.com')
|
|
|
|
|
# username should be saved lowercase by model.save()
|
|
|
|
|
self.assertEqual(user.username, 'testuser')
|
|
|
|
|
# full_name property
|
|
|
|
|
self.assertEqual(user.full_name, 'Test User')
|
|
|
|
|
|
|
|
|
|
def test_create_superuser(self):
|
|
|
|
|
su = User.objects.create_superuser(password='adminpass', **self.user_data)
|
|
|
|
|
self.assertTrue(su.is_staff)
|
|
|
|
|
self.assertTrue(su.pk)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserAPITests(TestCase):
|
|
|
|
|
def setUp(self):
|
|
|
|
|
self.client = APIClient()
|
|
|
|
|
self.user = User.objects.create_user(
|
|
|
|
|
password='pass1234',
|
|
|
|
|
email_address='apiuser@example.com',
|
|
|
|
|
username='apiuser',
|
|
|
|
|
first_name='API',
|
|
|
|
|
last_name='User',
|
|
|
|
|
date_of_birth='1995-05-05',
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def test_list_users(self):
|
|
|
|
|
url = '/api/users/'
|
|
|
|
|
resp = self.client.get(url)
|
|
|
|
|
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
|
|
|
|
# Should contain at least the created user
|
|
|
|
|
usernames = [u.get('username') for u in resp.json()]
|
|
|
|
|
self.assertIn(self.user.username, usernames)
|
2025-11-18 18:30:10 +00:00
|
|
|
|