test_views.py 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. import datetime
  2. from django.test import override_settings
  3. from django.urls import reverse
  4. from circuits.choices import *
  5. from circuits.models import *
  6. from dcim.models import Cable, Interface, Site
  7. from utilities.testing import ViewTestCases, create_tags, create_test_device
  8. class ProviderTestCase(ViewTestCases.PrimaryObjectViewTestCase):
  9. model = Provider
  10. @classmethod
  11. def setUpTestData(cls):
  12. Provider.objects.bulk_create([
  13. Provider(name='Provider 1', slug='provider-1', asn=65001),
  14. Provider(name='Provider 2', slug='provider-2', asn=65002),
  15. Provider(name='Provider 3', slug='provider-3', asn=65003),
  16. ])
  17. tags = create_tags('Alpha', 'Bravo', 'Charlie')
  18. cls.form_data = {
  19. 'name': 'Provider X',
  20. 'slug': 'provider-x',
  21. 'asn': 65123,
  22. 'account': '1234',
  23. 'portal_url': 'http://example.com/portal',
  24. 'noc_contact': 'noc@example.com',
  25. 'admin_contact': 'admin@example.com',
  26. 'comments': 'Another provider',
  27. 'tags': [t.pk for t in tags],
  28. }
  29. cls.csv_data = (
  30. "name,slug",
  31. "Provider 4,provider-4",
  32. "Provider 5,provider-5",
  33. "Provider 6,provider-6",
  34. )
  35. cls.bulk_edit_data = {
  36. 'asn': 65009,
  37. 'account': '5678',
  38. 'portal_url': 'http://example.com/portal2',
  39. 'noc_contact': 'noc2@example.com',
  40. 'admin_contact': 'admin2@example.com',
  41. 'comments': 'New comments',
  42. }
  43. class CircuitTypeTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
  44. model = CircuitType
  45. @classmethod
  46. def setUpTestData(cls):
  47. CircuitType.objects.bulk_create([
  48. CircuitType(name='Circuit Type 1', slug='circuit-type-1'),
  49. CircuitType(name='Circuit Type 2', slug='circuit-type-2'),
  50. CircuitType(name='Circuit Type 3', slug='circuit-type-3'),
  51. ])
  52. cls.form_data = {
  53. 'name': 'Circuit Type X',
  54. 'slug': 'circuit-type-x',
  55. 'description': 'A new circuit type',
  56. }
  57. cls.csv_data = (
  58. "name,slug",
  59. "Circuit Type 4,circuit-type-4",
  60. "Circuit Type 5,circuit-type-5",
  61. "Circuit Type 6,circuit-type-6",
  62. )
  63. cls.bulk_edit_data = {
  64. 'description': 'Foo',
  65. }
  66. class CircuitTestCase(ViewTestCases.PrimaryObjectViewTestCase):
  67. model = Circuit
  68. @classmethod
  69. def setUpTestData(cls):
  70. providers = (
  71. Provider(name='Provider 1', slug='provider-1', asn=65001),
  72. Provider(name='Provider 2', slug='provider-2', asn=65002),
  73. )
  74. Provider.objects.bulk_create(providers)
  75. circuittypes = (
  76. CircuitType(name='Circuit Type 1', slug='circuit-type-1'),
  77. CircuitType(name='Circuit Type 2', slug='circuit-type-2'),
  78. )
  79. CircuitType.objects.bulk_create(circuittypes)
  80. Circuit.objects.bulk_create([
  81. Circuit(cid='Circuit 1', provider=providers[0], type=circuittypes[0]),
  82. Circuit(cid='Circuit 2', provider=providers[0], type=circuittypes[0]),
  83. Circuit(cid='Circuit 3', provider=providers[0], type=circuittypes[0]),
  84. ])
  85. tags = create_tags('Alpha', 'Bravo', 'Charlie')
  86. cls.form_data = {
  87. 'cid': 'Circuit X',
  88. 'provider': providers[1].pk,
  89. 'type': circuittypes[1].pk,
  90. 'status': CircuitStatusChoices.STATUS_DECOMMISSIONED,
  91. 'tenant': None,
  92. 'install_date': datetime.date(2020, 1, 1),
  93. 'commit_rate': 1000,
  94. 'description': 'A new circuit',
  95. 'comments': 'Some comments',
  96. 'tags': [t.pk for t in tags],
  97. }
  98. cls.csv_data = (
  99. "cid,provider,type",
  100. "Circuit 4,Provider 1,Circuit Type 1",
  101. "Circuit 5,Provider 1,Circuit Type 1",
  102. "Circuit 6,Provider 1,Circuit Type 1",
  103. )
  104. cls.bulk_edit_data = {
  105. 'provider': providers[1].pk,
  106. 'type': circuittypes[1].pk,
  107. 'status': CircuitStatusChoices.STATUS_DECOMMISSIONED,
  108. 'tenant': None,
  109. 'commit_rate': 2000,
  110. 'description': 'New description',
  111. 'comments': 'New comments',
  112. }
  113. class ProviderNetworkTestCase(ViewTestCases.PrimaryObjectViewTestCase):
  114. model = ProviderNetwork
  115. @classmethod
  116. def setUpTestData(cls):
  117. providers = (
  118. Provider(name='Provider 1', slug='provider-1'),
  119. Provider(name='Provider 2', slug='provider-2'),
  120. )
  121. Provider.objects.bulk_create(providers)
  122. ProviderNetwork.objects.bulk_create([
  123. ProviderNetwork(name='Provider Network 1', provider=providers[0]),
  124. ProviderNetwork(name='Provider Network 2', provider=providers[0]),
  125. ProviderNetwork(name='Provider Network 3', provider=providers[0]),
  126. ])
  127. tags = create_tags('Alpha', 'Bravo', 'Charlie')
  128. cls.form_data = {
  129. 'name': 'Provider Network X',
  130. 'provider': providers[1].pk,
  131. 'description': 'A new provider network',
  132. 'comments': 'Longer description goes here',
  133. 'tags': [t.pk for t in tags],
  134. }
  135. cls.csv_data = (
  136. "name,provider,description",
  137. "Provider Network 4,Provider 1,Foo",
  138. "Provider Network 5,Provider 1,Bar",
  139. "Provider Network 6,Provider 1,Baz",
  140. )
  141. cls.bulk_edit_data = {
  142. 'provider': providers[1].pk,
  143. 'description': 'New description',
  144. 'comments': 'New comments',
  145. }
  146. class CircuitTerminationTestCase(
  147. ViewTestCases.EditObjectViewTestCase,
  148. ViewTestCases.DeleteObjectViewTestCase,
  149. ):
  150. model = CircuitTermination
  151. @classmethod
  152. def setUpTestData(cls):
  153. sites = (
  154. Site(name='Site 1', slug='site-1'),
  155. Site(name='Site 2', slug='site-2'),
  156. Site(name='Site 3', slug='site-3'),
  157. )
  158. Site.objects.bulk_create(sites)
  159. provider = Provider.objects.create(name='Provider 1', slug='provider-1')
  160. circuittype = CircuitType.objects.create(name='Circuit Type 1', slug='circuit-type-1')
  161. circuits = (
  162. Circuit(cid='Circuit 1', provider=provider, type=circuittype),
  163. Circuit(cid='Circuit 2', provider=provider, type=circuittype),
  164. Circuit(cid='Circuit 3', provider=provider, type=circuittype),
  165. )
  166. Circuit.objects.bulk_create(circuits)
  167. circuit_terminations = (
  168. CircuitTermination(circuit=circuits[0], term_side='A', site=sites[0]),
  169. CircuitTermination(circuit=circuits[0], term_side='Z', site=sites[1]),
  170. CircuitTermination(circuit=circuits[1], term_side='A', site=sites[0]),
  171. CircuitTermination(circuit=circuits[1], term_side='Z', site=sites[1]),
  172. )
  173. CircuitTermination.objects.bulk_create(circuit_terminations)
  174. cls.form_data = {
  175. 'term_side': 'A',
  176. 'site': sites[2].pk,
  177. 'description': 'New description',
  178. }
  179. @override_settings(EXEMPT_VIEW_PERMISSIONS=['*'])
  180. def test_trace(self):
  181. device = create_test_device('Device 1')
  182. circuittermination = CircuitTermination.objects.first()
  183. interface = Interface.objects.create(
  184. device=device,
  185. name='Interface 1'
  186. )
  187. Cable(termination_a=circuittermination, termination_b=interface).save()
  188. response = self.client.get(reverse('circuits:circuittermination_trace', kwargs={'pk': circuittermination.pk}))
  189. self.assertHttpStatus(response, 200)