mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-16 18:36:18 +00:00
256 lines
9.9 KiB
Python
256 lines
9.9 KiB
Python
"""
|
|
web admin test user management file
|
|
"""
|
|
# django imports
|
|
from django.contrib.auth import get_user_model
|
|
from rest_framework import status
|
|
|
|
# local imports
|
|
from base.constants import GUARDIAN, JUNIOR
|
|
from web_admin.tests.test_set_up import UserManagementSetUp
|
|
|
|
# user model
|
|
User = get_user_model()
|
|
|
|
|
|
class UserManagementViewSetTestCase(UserManagementSetUp):
|
|
"""
|
|
test cases for user management
|
|
"""
|
|
def setUp(self) -> None:
|
|
super(UserManagementViewSetTestCase, self).setUp()
|
|
|
|
self.update_data = {
|
|
'email': 'user5@yopmail.com',
|
|
'country_code': 93,
|
|
'phone': '8765454235'
|
|
}
|
|
self.user_management_endpoint = "/api/v1/user-management"
|
|
|
|
def test_user_management_list_all_users(self):
|
|
"""
|
|
test user management list all users
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/"
|
|
response = self.client.get(url, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
# Assuming four user exists in the database
|
|
self.assertEqual(len(response.data['data']), 4)
|
|
|
|
def test_user_management_list_guardians(self):
|
|
"""
|
|
test user management list guardians
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/?user_type={GUARDIAN}"
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
# Assuming two guardians exists in the database
|
|
self.assertEqual(len(response.data['data']), 2)
|
|
|
|
def test_user_management_list_juniors(self):
|
|
"""
|
|
test user management list juniors
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/?user_type={JUNIOR}"
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
# Assuming two juniors exists in the database
|
|
self.assertEqual(len(response.data['data']), 2)
|
|
|
|
def test_user_management_list_with_unauthorised_user(self):
|
|
"""
|
|
test user management list with unauthorised user
|
|
:return:
|
|
"""
|
|
# user unauthorised access
|
|
self.client.force_authenticate(user=self.user)
|
|
url = f"{self.user_management_endpoint}/"
|
|
response = self.client.get(url, format='json')
|
|
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
|
|
|
def test_user_management_retrieve_guardian(self):
|
|
"""
|
|
test user management retrieve guardian
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/?user_type={GUARDIAN}"
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(len(response.data['data']), 1)
|
|
|
|
def test_user_management_retrieve_junior(self):
|
|
"""
|
|
test user management retrieve junior
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user_3.id}/?user_type={JUNIOR}"
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(len(response.data['data']), 1)
|
|
|
|
def test_user_management_retrieve_without_user_type(self):
|
|
"""
|
|
test user management retrieve without user type
|
|
user status is mandatory
|
|
API will throw error
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/"
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
|
|
def test_user_management_update_guardian(self):
|
|
"""
|
|
test user management update guardian
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/?user_type={GUARDIAN}"
|
|
response = self.client.patch(url, self.update_data, format='json',)
|
|
self.user.refresh_from_db()
|
|
self.guardian.refresh_from_db()
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(self.user.email, self.update_data['email'])
|
|
self.assertEqual(self.guardian.country_code, self.update_data['country_code'])
|
|
self.assertEqual(self.guardian.phone, self.update_data['phone'])
|
|
|
|
def test_user_management_update_guardian_with_existing_email(self):
|
|
"""
|
|
test user management update guardian with existing email
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/?user_type={GUARDIAN}"
|
|
data = {
|
|
'email': self.user_email_2
|
|
}
|
|
response = self.client.patch(url, data, format='json',)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
|
|
def test_user_management_update_guardian_with_existing_phone(self):
|
|
"""
|
|
test user management update guardian with existing phone
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/?user_type={GUARDIAN}"
|
|
data = {
|
|
'phone': self.guardian_2.phone
|
|
}
|
|
response = self.client.patch(url, data, format='json',)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
|
|
def test_user_management_update_junior(self):
|
|
"""
|
|
test user management update junior
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user_3.id}/?user_type={JUNIOR}"
|
|
response = self.client.patch(url, self.update_data, format='json',)
|
|
self.user_3.refresh_from_db()
|
|
self.junior.refresh_from_db()
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(self.user_3.email, self.update_data['email'])
|
|
self.assertEqual(self.junior.country_code, self.update_data['country_code'])
|
|
self.assertEqual(self.junior.phone, self.update_data['phone'])
|
|
|
|
def test_user_management_update_junior_with_existing_email(self):
|
|
"""
|
|
test user management update guardian with existing phone
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user_3.id}/?user_type={JUNIOR}"
|
|
data = {
|
|
'email': self.user_email_4
|
|
}
|
|
response = self.client.patch(url, data, format='json',)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
|
|
def test_user_management_update_junior_with_existing_phone(self):
|
|
"""
|
|
test user management update junior with existing phone
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user_3.id}/?user_type={JUNIOR}"
|
|
data = {
|
|
'phone': self.junior_2.phone
|
|
}
|
|
response = self.client.patch(url, data, format='json',)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
|
|
def test_user_management_update_without_user_type(self):
|
|
"""
|
|
test user management update without user type
|
|
user status is mandatory
|
|
API will throw error
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user_3.id}/"
|
|
response = self.client.patch(url, self.update_data, format='json',)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|
|
|
|
def test_user_management_change_status_guardian(self):
|
|
"""
|
|
test user management change status guardian
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/change-status/?user_type={GUARDIAN}"
|
|
response = self.client.get(url)
|
|
self.guardian.refresh_from_db()
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(self.guardian.is_active, False)
|
|
|
|
def test_user_management_change_status_junior(self):
|
|
"""
|
|
test user management change status junior
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user_3.id}/change-status/?user_type={JUNIOR}"
|
|
response = self.client.get(url)
|
|
self.junior.refresh_from_db()
|
|
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
|
self.assertEqual(self.junior.is_active, False)
|
|
|
|
def test_user_management_change_status_without_user_type(self):
|
|
"""
|
|
test user management change status without user type
|
|
user status is mandatory
|
|
API will throw error
|
|
:return:
|
|
"""
|
|
# admin user authentication
|
|
self.client.force_authenticate(user=self.admin_user)
|
|
url = f"{self.user_management_endpoint}/{self.user.id}/"
|
|
response = self.client.get(url)
|
|
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
|