test_api.py 5.6 KB

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