test_views.py 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. from netaddr import IPNetwork
  2. import urllib.parse
  3. from django.test import Client, TestCase
  4. from django.urls import reverse
  5. from dcim.models import Device, DeviceRole, DeviceType, Manufacturer, Site
  6. from ipam.constants import IP_PROTOCOL_TCP
  7. from ipam.models import Aggregate, IPAddress, Prefix, RIR, Role, Service, VLAN, VLANGroup, VRF
  8. from utilities.testing import create_test_user
  9. class VRFTestCase(TestCase):
  10. def setUp(self):
  11. user = create_test_user(permissions=['ipam.view_vrf'])
  12. self.client = Client()
  13. self.client.force_login(user)
  14. VRF.objects.bulk_create([
  15. VRF(name='VRF 1', rd='65000:1'),
  16. VRF(name='VRF 2', rd='65000:2'),
  17. VRF(name='VRF 3', rd='65000:3'),
  18. ])
  19. def test_vrf_list(self):
  20. url = reverse('ipam:vrf_list')
  21. params = {
  22. "q": "65000",
  23. }
  24. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  25. self.assertEqual(response.status_code, 200)
  26. def test_configcontext(self):
  27. vrf = VRF.objects.first()
  28. response = self.client.get(vrf.get_absolute_url())
  29. self.assertEqual(response.status_code, 200)
  30. class RIRTestCase(TestCase):
  31. def setUp(self):
  32. user = create_test_user(permissions=['ipam.view_rir'])
  33. self.client = Client()
  34. self.client.force_login(user)
  35. RIR.objects.bulk_create([
  36. RIR(name='RIR 1', slug='rir-1'),
  37. RIR(name='RIR 2', slug='rir-2'),
  38. RIR(name='RIR 3', slug='rir-3'),
  39. ])
  40. def test_rir_list(self):
  41. url = reverse('ipam:rir_list')
  42. response = self.client.get(url)
  43. self.assertEqual(response.status_code, 200)
  44. class AggregateTestCase(TestCase):
  45. def setUp(self):
  46. user = create_test_user(permissions=['ipam.view_aggregate'])
  47. self.client = Client()
  48. self.client.force_login(user)
  49. rir = RIR(name='RIR 1', slug='rir-1')
  50. rir.save()
  51. Aggregate.objects.bulk_create([
  52. Aggregate(family=4, prefix=IPNetwork('10.1.0.0/16'), rir=rir),
  53. Aggregate(family=4, prefix=IPNetwork('10.2.0.0/16'), rir=rir),
  54. Aggregate(family=4, prefix=IPNetwork('10.3.0.0/16'), rir=rir),
  55. ])
  56. def test_aggregate_list(self):
  57. url = reverse('ipam:aggregate_list')
  58. params = {
  59. "rir": RIR.objects.first().slug,
  60. }
  61. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  62. self.assertEqual(response.status_code, 200)
  63. def test_aggregate(self):
  64. aggregate = Aggregate.objects.first()
  65. response = self.client.get(aggregate.get_absolute_url())
  66. self.assertEqual(response.status_code, 200)
  67. class RoleTestCase(TestCase):
  68. def setUp(self):
  69. user = create_test_user(permissions=['ipam.view_role'])
  70. self.client = Client()
  71. self.client.force_login(user)
  72. Role.objects.bulk_create([
  73. Role(name='Role 1', slug='role-1'),
  74. Role(name='Role 2', slug='role-2'),
  75. Role(name='Role 3', slug='role-3'),
  76. ])
  77. def test_role_list(self):
  78. url = reverse('ipam:role_list')
  79. response = self.client.get(url)
  80. self.assertEqual(response.status_code, 200)
  81. class PrefixTestCase(TestCase):
  82. def setUp(self):
  83. user = create_test_user(permissions=['ipam.view_prefix'])
  84. self.client = Client()
  85. self.client.force_login(user)
  86. site = Site(name='Site 1', slug='site-1')
  87. site.save()
  88. Prefix.objects.bulk_create([
  89. Prefix(family=4, prefix=IPNetwork('10.1.0.0/16'), site=site),
  90. Prefix(family=4, prefix=IPNetwork('10.2.0.0/16'), site=site),
  91. Prefix(family=4, prefix=IPNetwork('10.3.0.0/16'), site=site),
  92. ])
  93. def test_prefix_list(self):
  94. url = reverse('ipam:prefix_list')
  95. params = {
  96. "site": Site.objects.first().slug,
  97. }
  98. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  99. self.assertEqual(response.status_code, 200)
  100. def test_prefix(self):
  101. prefix = Prefix.objects.first()
  102. response = self.client.get(prefix.get_absolute_url())
  103. self.assertEqual(response.status_code, 200)
  104. class IPAddressTestCase(TestCase):
  105. def setUp(self):
  106. user = create_test_user(permissions=['ipam.view_ipaddress'])
  107. self.client = Client()
  108. self.client.force_login(user)
  109. vrf = VRF(name='VRF 1', rd='65000:1')
  110. vrf.save()
  111. IPAddress.objects.bulk_create([
  112. IPAddress(family=4, address=IPNetwork('10.1.0.0/16'), vrf=vrf),
  113. IPAddress(family=4, address=IPNetwork('10.2.0.0/16'), vrf=vrf),
  114. IPAddress(family=4, address=IPNetwork('10.3.0.0/16'), vrf=vrf),
  115. ])
  116. def test_ipaddress_list(self):
  117. url = reverse('ipam:ipaddress_list')
  118. params = {
  119. "vrf": VRF.objects.first().rd,
  120. }
  121. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  122. self.assertEqual(response.status_code, 200)
  123. def test_ipaddress(self):
  124. ipaddress = IPAddress.objects.first()
  125. response = self.client.get(ipaddress.get_absolute_url())
  126. self.assertEqual(response.status_code, 200)
  127. class VLANGroupTestCase(TestCase):
  128. def setUp(self):
  129. user = create_test_user(permissions=['ipam.view_vlangroup'])
  130. self.client = Client()
  131. self.client.force_login(user)
  132. site = Site(name='Site 1', slug='site-1')
  133. site.save()
  134. VLANGroup.objects.bulk_create([
  135. VLANGroup(name='VLAN Group 1', slug='vlan-group-1', site=site),
  136. VLANGroup(name='VLAN Group 2', slug='vlan-group-2', site=site),
  137. VLANGroup(name='VLAN Group 3', slug='vlan-group-3', site=site),
  138. ])
  139. def test_vlangroup_list(self):
  140. url = reverse('ipam:vlangroup_list')
  141. params = {
  142. "site": Site.objects.first().slug,
  143. }
  144. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  145. self.assertEqual(response.status_code, 200)
  146. class VLANTestCase(TestCase):
  147. def setUp(self):
  148. user = create_test_user(permissions=['ipam.view_vlan'])
  149. self.client = Client()
  150. self.client.force_login(user)
  151. vlangroup = VLANGroup(name='VLAN Group 1', slug='vlan-group-1')
  152. vlangroup.save()
  153. VLAN.objects.bulk_create([
  154. VLAN(group=vlangroup, vid=101, name='VLAN101'),
  155. VLAN(group=vlangroup, vid=102, name='VLAN102'),
  156. VLAN(group=vlangroup, vid=103, name='VLAN103'),
  157. ])
  158. def test_vlan_list(self):
  159. url = reverse('ipam:vlan_list')
  160. params = {
  161. "group": VLANGroup.objects.first().slug,
  162. }
  163. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  164. self.assertEqual(response.status_code, 200)
  165. def test_vlan(self):
  166. vlan = VLAN.objects.first()
  167. response = self.client.get(vlan.get_absolute_url())
  168. self.assertEqual(response.status_code, 200)
  169. class ServiceTestCase(TestCase):
  170. def setUp(self):
  171. user = create_test_user(permissions=['ipam.view_service'])
  172. self.client = Client()
  173. self.client.force_login(user)
  174. site = Site(name='Site 1', slug='site-1')
  175. site.save()
  176. manufacturer = Manufacturer(name='Manufacturer 1', slug='manufacturer-1')
  177. manufacturer.save()
  178. devicetype = DeviceType(manufacturer=manufacturer, model='Device Type 1')
  179. devicetype.save()
  180. devicerole = DeviceRole(name='Device Role 1', slug='device-role-1')
  181. devicerole.save()
  182. device = Device(name='Device 1', site=site, device_type=devicetype, device_role=devicerole)
  183. device.save()
  184. Service.objects.bulk_create([
  185. Service(device=device, name='Service 1', protocol=IP_PROTOCOL_TCP, port=101),
  186. Service(device=device, name='Service 2', protocol=IP_PROTOCOL_TCP, port=102),
  187. Service(device=device, name='Service 3', protocol=IP_PROTOCOL_TCP, port=103),
  188. ])
  189. def test_service_list(self):
  190. url = reverse('ipam:service_list')
  191. params = {
  192. "device_id": Device.objects.first(),
  193. }
  194. response = self.client.get('{}?{}'.format(url, urllib.parse.urlencode(params)))
  195. self.assertEqual(response.status_code, 200)
  196. def test_service(self):
  197. service = Service.objects.first()
  198. response = self.client.get(service.get_absolute_url())
  199. self.assertEqual(response.status_code, 200)