test_api.py 4.4 KB

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