test_api.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. from rest_framework import status
  2. from rest_framework.test import APITestCase
  3. from django.contrib.auth.models import User
  4. from django.urls import reverse
  5. from tenancy.models import Tenant, TenantGroup
  6. from users.models import Token
  7. class TenantGroupTest(APITestCase):
  8. def setUp(self):
  9. user = User.objects.create(username='testuser', is_superuser=True)
  10. token = Token.objects.create(user=user)
  11. self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
  12. self.tenantgroup1 = TenantGroup.objects.create(name='Test Tenant Group 1', slug='test-tenant-group-1')
  13. self.tenantgroup2 = TenantGroup.objects.create(name='Test Tenant Group 2', slug='test-tenant-group-2')
  14. self.tenantgroup3 = TenantGroup.objects.create(name='Test Tenant Group 3', slug='test-tenant-group-3')
  15. def test_get_tenantgroup(self):
  16. url = reverse('tenancy-api:tenantgroup-detail', kwargs={'pk': self.tenantgroup1.pk})
  17. response = self.client.get(url, **self.header)
  18. self.assertEqual(response.data['name'], self.tenantgroup1.name)
  19. def test_list_tenantgroups(self):
  20. url = reverse('tenancy-api:tenantgroup-list')
  21. response = self.client.get(url, **self.header)
  22. self.assertEqual(response.data['count'], 3)
  23. def test_create_tenantgroup(self):
  24. data = {
  25. 'name': 'Test Tenant Group 4',
  26. 'slug': 'test-tenant-group-4',
  27. }
  28. url = reverse('tenancy-api:tenantgroup-list')
  29. response = self.client.post(url, data, **self.header)
  30. self.assertEqual(response.status_code, status.HTTP_201_CREATED)
  31. self.assertEqual(TenantGroup.objects.count(), 4)
  32. def test_update_tenantgroup(self):
  33. data = {
  34. 'name': 'Test Tenant Group X',
  35. 'slug': 'test-tenant-group-x',
  36. }
  37. url = reverse('tenancy-api:tenantgroup-detail', kwargs={'pk': self.tenantgroup1.pk})
  38. response = self.client.put(url, data, **self.header)
  39. self.assertEqual(response.status_code, status.HTTP_200_OK)
  40. self.assertEqual(TenantGroup.objects.count(), 3)
  41. self.assertEqual(TenantGroup.objects.get(pk=self.tenantgroup1.pk).name, data['name'])
  42. self.assertEqual(TenantGroup.objects.get(pk=self.tenantgroup1.pk).slug, data['slug'])
  43. def test_delete_tenantgroup(self):
  44. url = reverse('tenancy-api:tenantgroup-detail', kwargs={'pk': self.tenantgroup1.pk})
  45. response = self.client.delete(url, **self.header)
  46. self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
  47. self.assertEqual(TenantGroup.objects.count(), 2)
  48. class TenantTest(APITestCase):
  49. def setUp(self):
  50. user = User.objects.create(username='testuser', is_superuser=True)
  51. token = Token.objects.create(user=user)
  52. self.header = {'HTTP_AUTHORIZATION': 'Token {}'.format(token.key)}
  53. self.tenant1 = Tenant.objects.create(name='Test Tenant 1', slug='test-tenant-1')
  54. self.tenant2 = Tenant.objects.create(name='Test Tenant 2', slug='test-tenant-2')
  55. self.tenant3 = Tenant.objects.create(name='Test Tenant 3', slug='test-tenant-3')
  56. def test_get_tenant(self):
  57. url = reverse('tenancy-api:tenant-detail', kwargs={'pk': self.tenant1.pk})
  58. response = self.client.get(url, **self.header)
  59. self.assertEqual(response.data['name'], self.tenant1.name)
  60. def test_list_tenants(self):
  61. url = reverse('tenancy-api:tenant-list')
  62. response = self.client.get(url, **self.header)
  63. self.assertEqual(response.data['count'], 3)
  64. def test_create_tenant(self):
  65. data = {
  66. 'name': 'Test Tenant 4',
  67. 'slug': 'test-tenant-4',
  68. }
  69. url = reverse('tenancy-api:tenant-list')
  70. response = self.client.post(url, data, **self.header)
  71. self.assertEqual(response.status_code, status.HTTP_201_CREATED)
  72. self.assertEqual(Tenant.objects.count(), 4)
  73. def test_update_tenant(self):
  74. data = {
  75. 'name': 'Test Tenant X',
  76. 'slug': 'test-tenant-x',
  77. }
  78. url = reverse('tenancy-api:tenant-detail', kwargs={'pk': self.tenant1.pk})
  79. response = self.client.put(url, data, **self.header)
  80. self.assertEqual(response.status_code, status.HTTP_200_OK)
  81. self.assertEqual(Tenant.objects.count(), 3)
  82. self.assertEqual(Tenant.objects.get(pk=self.tenant1.pk).name, data['name'])
  83. self.assertEqual(Tenant.objects.get(pk=self.tenant1.pk).slug, data['slug'])
  84. def test_delete_tenant(self):
  85. url = reverse('tenancy-api:tenant-detail', kwargs={'pk': self.tenant1.pk})
  86. response = self.client.delete(url, **self.header)
  87. self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
  88. self.assertEqual(Tenant.objects.count(), 2)