test_api.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. from django.urls import reverse
  2. from dcim.choices import InterfaceTypeChoices
  3. from dcim.models import Interface
  4. from tenancy.models import Tenant
  5. from utilities.testing import APITestCase, APIViewTestCases, create_test_device
  6. from wireless.choices import *
  7. from wireless.models import *
  8. class AppTest(APITestCase):
  9. def test_root(self):
  10. url = reverse('wireless-api:api-root')
  11. response = self.client.get('{}?format=api'.format(url), **self.header)
  12. self.assertEqual(response.status_code, 200)
  13. class WirelessLANGroupTest(APIViewTestCases.APIViewTestCase):
  14. model = WirelessLANGroup
  15. brief_fields = ['_depth', 'description', 'display', 'id', 'name', 'slug', 'url', 'wirelesslan_count']
  16. create_data = [
  17. {
  18. 'name': 'Wireless LAN Group 4',
  19. 'slug': 'wireless-lan-group-4',
  20. },
  21. {
  22. 'name': 'Wireless LAN Group 5',
  23. 'slug': 'wireless-lan-group-5',
  24. },
  25. {
  26. 'name': 'Wireless LAN Group 6',
  27. 'slug': 'wireless-lan-group-6',
  28. },
  29. ]
  30. bulk_update_data = {
  31. 'description': 'New description',
  32. }
  33. @classmethod
  34. def setUpTestData(cls):
  35. WirelessLANGroup.objects.create(name='Wireless LAN Group 1', slug='wireless-lan-group-1')
  36. WirelessLANGroup.objects.create(name='Wireless LAN Group 2', slug='wireless-lan-group-2')
  37. WirelessLANGroup.objects.create(name='Wireless LAN Group 3', slug='wireless-lan-group-3')
  38. class WirelessLANTest(APIViewTestCases.APIViewTestCase):
  39. model = WirelessLAN
  40. brief_fields = ['description', 'display', 'id', 'ssid', 'url']
  41. @classmethod
  42. def setUpTestData(cls):
  43. tenants = (
  44. Tenant(name='Tenant 1', slug='tenant-1'),
  45. Tenant(name='Tenant 2', slug='tenant-2'),
  46. )
  47. Tenant.objects.bulk_create(tenants)
  48. groups = (
  49. WirelessLANGroup(name='Group 1', slug='group-1'),
  50. WirelessLANGroup(name='Group 2', slug='group-2'),
  51. WirelessLANGroup(name='Group 3', slug='group-3'),
  52. )
  53. for group in groups:
  54. group.save()
  55. wireless_lans = (
  56. WirelessLAN(ssid='WLAN1', status=WirelessLANStatusChoices.STATUS_ACTIVE),
  57. WirelessLAN(ssid='WLAN2', status=WirelessLANStatusChoices.STATUS_ACTIVE),
  58. WirelessLAN(ssid='WLAN3', status=WirelessLANStatusChoices.STATUS_ACTIVE),
  59. )
  60. WirelessLAN.objects.bulk_create(wireless_lans)
  61. cls.create_data = [
  62. {
  63. 'ssid': 'WLAN4',
  64. 'group': groups[0].pk,
  65. 'status': WirelessLANStatusChoices.STATUS_DISABLED,
  66. 'tenant': tenants[0].pk,
  67. 'auth_type': WirelessAuthTypeChoices.TYPE_OPEN,
  68. },
  69. {
  70. 'ssid': 'WLAN5',
  71. 'group': groups[1].pk,
  72. 'status': WirelessLANStatusChoices.STATUS_DISABLED,
  73. 'tenant': tenants[0].pk,
  74. 'auth_type': WirelessAuthTypeChoices.TYPE_WPA_PERSONAL,
  75. },
  76. {
  77. 'ssid': 'WLAN6',
  78. 'status': WirelessLANStatusChoices.STATUS_DISABLED,
  79. 'tenant': tenants[0].pk,
  80. 'auth_type': WirelessAuthTypeChoices.TYPE_WPA_ENTERPRISE,
  81. },
  82. ]
  83. cls.bulk_update_data = {
  84. 'status': WirelessLANStatusChoices.STATUS_DEPRECATED,
  85. 'group': groups[2].pk,
  86. 'tenant': tenants[1].pk,
  87. 'description': 'New description',
  88. 'auth_type': WirelessAuthTypeChoices.TYPE_WPA_PERSONAL,
  89. 'auth_cipher': WirelessAuthCipherChoices.CIPHER_AES,
  90. 'auth_psk': 'abc123def456',
  91. }
  92. class WirelessLinkTest(APIViewTestCases.APIViewTestCase):
  93. model = WirelessLink
  94. brief_fields = ['description', 'display', 'id', 'ssid', 'url']
  95. bulk_update_data = {
  96. 'status': 'planned',
  97. 'distance': 100,
  98. 'distance_unit': 'm',
  99. }
  100. @classmethod
  101. def setUpTestData(cls):
  102. device = create_test_device('test-device')
  103. interfaces = [
  104. Interface(
  105. device=device,
  106. name=f'radio{i}',
  107. type=InterfaceTypeChoices.TYPE_80211AC,
  108. rf_channel=WirelessChannelChoices.CHANNEL_5G_32,
  109. rf_channel_frequency=5160,
  110. rf_channel_width=20
  111. ) for i in range(12)
  112. ]
  113. Interface.objects.bulk_create(interfaces)
  114. tenants = (
  115. Tenant(name='Tenant 1', slug='tenant-1'),
  116. Tenant(name='Tenant 2', slug='tenant-2'),
  117. )
  118. Tenant.objects.bulk_create(tenants)
  119. wireless_links = (
  120. WirelessLink(ssid='LINK1', interface_a=interfaces[0], interface_b=interfaces[1], tenant=tenants[0]),
  121. WirelessLink(ssid='LINK2', interface_a=interfaces[2], interface_b=interfaces[3], tenant=tenants[0]),
  122. WirelessLink(ssid='LINK3', interface_a=interfaces[4], interface_b=interfaces[5], tenant=tenants[0]),
  123. )
  124. WirelessLink.objects.bulk_create(wireless_links)
  125. cls.create_data = [
  126. {
  127. 'interface_a': interfaces[6].pk,
  128. 'interface_b': interfaces[7].pk,
  129. 'ssid': 'LINK4',
  130. 'tenant': tenants[1].pk,
  131. },
  132. {
  133. 'interface_a': interfaces[8].pk,
  134. 'interface_b': interfaces[9].pk,
  135. 'ssid': 'LINK5',
  136. 'tenant': tenants[1].pk,
  137. },
  138. {
  139. 'interface_a': interfaces[10].pk,
  140. 'interface_b': interfaces[11].pk,
  141. 'ssid': 'LINK6',
  142. 'tenant': tenants[1].pk,
  143. },
  144. ]