|
| 1 | +from django.contrib.auth.models import User |
| 2 | +from django.test import TestCase |
| 3 | +from django.urls import reverse |
| 4 | +from rest_framework import status |
| 5 | +from rest_framework.test import APIClient, APITestCase |
| 6 | + |
| 7 | + |
| 8 | +from users.models import Token |
| 9 | + |
| 10 | +from netbox_bgp.models import ASN, Community |
| 11 | + |
| 12 | + |
| 13 | +class BaseTestCase(TestCase): |
| 14 | + def setUp(self): |
| 15 | + self.user = User.objects.create(username='testuser', is_superuser=True) |
| 16 | + self.token = Token.objects.create(user=self.user) |
| 17 | + self.client = APIClient() |
| 18 | + self.client.credentials(HTTP_AUTHORIZATION=f'Token {self.token.key}') |
| 19 | + |
| 20 | + |
| 21 | +class ASNTestCase(BaseTestCase): |
| 22 | + def setUp(self): |
| 23 | + super().setUp() |
| 24 | + self.base_url_lookup = 'plugins-api:netbox_bgp-api:asn' |
| 25 | + self.asn1 = ASN.objects.create(number=65000, description='test_asn1') |
| 26 | + self.asn2 = ASN.objects.create(number=65001, description='test_asn2') |
| 27 | + |
| 28 | + def test_list_asn(self): |
| 29 | + url = reverse(f'{self.base_url_lookup}-list') |
| 30 | + response = self.client.get(url) |
| 31 | + self.assertEqual(response.status_code, status.HTTP_200_OK) |
| 32 | + self.assertEqual(response.data['count'], 2) |
| 33 | + |
| 34 | + def test_get_asn(self): |
| 35 | + url = reverse(f'{self.base_url_lookup}-detail', kwargs={'pk': self.asn1.pk}) |
| 36 | + response = self.client.get(url) |
| 37 | + self.assertEqual(response.status_code, status.HTTP_200_OK) |
| 38 | + self.assertEqual(response.data['number'], self.asn1.number) |
| 39 | + self.assertEqual(response.data['description'], self.asn1.description) |
| 40 | + |
| 41 | + def test_create_asn(self): |
| 42 | + url = reverse(f'{self.base_url_lookup}-list') |
| 43 | + data = {'number': 65002, 'description': 'test_asn3'} |
| 44 | + |
| 45 | + response = self.client.post(url, data, format='json') |
| 46 | + self.assertEqual(response.status_code, status.HTTP_201_CREATED) |
| 47 | + for key, value in data.items(): |
| 48 | + self.assertEqual(response.data[key], value) |
| 49 | + |
| 50 | + asn = ASN.objects.get(pk=response.data['id']) |
| 51 | + self.assertEqual(asn.number, data['number']) |
| 52 | + self.assertEqual(asn.description, data['description']) |
| 53 | + |
| 54 | + def test_update_asn(self): |
| 55 | + url = reverse(f'{self.base_url_lookup}-detail', kwargs={'pk': self.asn1.pk}) |
| 56 | + |
| 57 | + response = self.client.patch(url, {'number': 65004}, format='json') |
| 58 | + self.assertEqual(response.status_code, status.HTTP_200_OK) |
| 59 | + asn = ASN.objects.get(pk=self.asn1.pk) |
| 60 | + self.assertEqual(asn.number, 65004) |
| 61 | + |
| 62 | + response = self.client.patch(url, {'number': 65005}, format='json') |
| 63 | + self.assertEqual(response.status_code, status.HTTP_200_OK) |
| 64 | + asn = ASN.objects.get(pk=self.asn1.pk) |
| 65 | + self.assertEqual(asn.number, 65005) |
| 66 | + |
| 67 | + def test_delete_task(self): |
| 68 | + url = reverse(f'{self.base_url_lookup}-detail', kwargs={'pk': self.asn1.pk}) |
| 69 | + |
| 70 | + response = self.client.delete(url) |
| 71 | + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) |
| 72 | + with self.assertRaises(ASN.DoesNotExist): |
| 73 | + ASN.objects.get(pk=self.asn1.pk) |
| 74 | + |
| 75 | + |
| 76 | +class CommunityTestCase(BaseTestCase): |
| 77 | + def setUp(self): |
| 78 | + super().setUp() |
| 79 | + self.base_url_lookup = 'plugins-api:netbox_bgp-api:community' |
| 80 | + self.community1 = Community.objects.create(value='65000:65000', description='test_community') |
| 81 | + |
| 82 | + def test_list_community(self): |
| 83 | + url = reverse(f'{self.base_url_lookup}-list') |
| 84 | + response = self.client.get(url) |
| 85 | + self.assertEqual(response.status_code, status.HTTP_200_OK) |
| 86 | + self.assertEqual(response.data['count'], 1) |
| 87 | + |
| 88 | + def test_get_asn(self): |
| 89 | + url = reverse(f'{self.base_url_lookup}-detail', kwargs={'pk': self.community1.pk}) |
| 90 | + response = self.client.get(url) |
| 91 | + self.assertEqual(response.status_code, status.HTTP_200_OK) |
| 92 | + self.assertEqual(response.data['value'], self.community1.value) |
| 93 | + self.assertEqual(response.data['description'], self.community1.description) |
| 94 | + |
| 95 | + def test_create_community(self): |
| 96 | + url = reverse(f'{self.base_url_lookup}-list') |
| 97 | + data = {'value': '65001:65001', 'description': 'test_community1'} |
| 98 | + response = self.client.post(url, data, format='json') |
| 99 | + self.assertEqual(response.status_code, status.HTTP_201_CREATED) |
| 100 | + self.assertEqual(Community.objects.get(pk=response.data['id']).value, '65001:65001') |
| 101 | + self.assertEqual(Community.objects.get(pk=response.data['id']).description, 'test_community1') |
| 102 | + |
| 103 | + def test_update_community(self): |
| 104 | + pass |
| 105 | + |
| 106 | + def test_delete_community(self): |
| 107 | + pass |
0 commit comments