from django.test import TestCase
from django.urls import reverse
from rest_framework import status
from tests.users.factories import UserFactory # type: ignore
[docs]
class UserURLsTestCase(TestCase):
[docs]
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.user = UserFactory.create()
[docs]
def test_user_urls_get(self):
# Testing UsersAuthorizedViewSet related URLs
user_url = reverse("users:user")
url_string = "/api/users/"
response = self.client.get(user_url)
self.assertNotIn(response.status_code, [status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(user_url, url_string)
[docs]
def test_user_urls_patch(self):
# Testing UsersAuthorizedViewSet related URLs
user_url = reverse("users:user")
url_string = "/api/users/"
response = self.client.patch(user_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(user_url, url_string)
[docs]
def test_user_urls_put(self):
# Testing UsersAuthorizedViewSet related URLs
user_url = reverse("users:user")
url_string = "/api/users/"
response = self.client.put(user_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(user_url, url_string)
[docs]
def test_user_urls_delete(self):
# Testing UsersAuthorizedViewSet related URLs
user_url = reverse("users:user")
url_string = "/api/users/"
response = self.client.delete(user_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(user_url, url_string)
[docs]
def test_user_urls_retrieve(self):
# Testing UsersAuthorizedViewSet retrieve
user_detail_url = reverse("users:user", args=[self.user.pk])
url_string = f"/api/users/{self.user.pk}/"
response = self.client.get(user_detail_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(user_detail_url, url_string)
[docs]
def test_categories_urls_list(self):
# Testing InterestsListAPIView
url_string = "/api/users/categories/"
interests_url = reverse("users:categories-list")
response = self.client.get(interests_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(interests_url, url_string)
[docs]
def test_user_unuauthorized_urls_list(self):
# Testing UsersUnauthorizedViewSet related URLs
url_string = "/api/users/signup/"
signup_url = reverse("users:signup")
response = self.client.post(signup_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(signup_url, url_string)
[docs]
def test_user_unuauthorized_urls_resend_activation_code(self):
# Testing UsersUnauthorizedViewSet related URLs
url_string = "/api/users/resend-activation-code/"
resend_url = reverse("users:resend-activation-code")
response = self.client.post(resend_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(resend_url, url_string)
[docs]
def test_user_password_change(self):
# Testing UsersUnauthorizedViewSet related URLs
url_string = "/api/users/password-change/"
resend_url = reverse("users:password-change")
response = self.client.post(resend_url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(resend_url, url_string)
[docs]
def test_followers_list_url(self):
url = reverse("users:followers_list")
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, "/api/users/followers/")
[docs]
def test_user_followers_list_url(self):
url = reverse("users:user_followers_list", args=[self.user.pk])
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, f"/api/users/followers/{self.user.pk}/")
[docs]
def test_following_list_url(self):
url = reverse("users:following_list")
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, "/api/users/following/")
[docs]
def test_user_following_list_url(self):
url = reverse("users:user_following_list", args=[self.user.pk])
response = self.client.get(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, f"/api/users/following/{self.user.pk}/")
[docs]
def test_follow_url(self):
url = reverse("users:follow", args=[self.user.pk])
response = self.client.post(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, f"/api/users/follow/{self.user.pk}/")
[docs]
def test_unfollow_url(self):
url = reverse("users:unfollow", args=[self.user.pk])
response = self.client.post(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, f"/api/users/unfollow/{self.user.pk}/")
[docs]
def test_export_data_url(self):
url = reverse("users:export_data")
response = self.client.post(url)
self.assertNotIn(response.status_code, [status.HTTP_404_NOT_FOUND, status.HTTP_405_METHOD_NOT_ALLOWED])
self.assertEqual(url, "/api/users/export-data/")