def test_config_view_with_multiple_ios_neighbor(self): """ Create a test IOS router, with 100 ipv4 and ipv6 neighbors then check the config view. """ test_router = create_router('ios') test_asn = create_aut_num('65001') neighbor_count = 100 for i in range(1, neighbor_count): create_neighbor(test_router, test_asn, '1.1.' + str(i) + '.1') create_neighbor(test_router, test_asn, '2001:db8:' + str(i) + '::1') url = reverse( 'op_webgui:router_config', kwargs={'router_id': test_router.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200) for i in range(1, neighbor_count): v4_text = 'neighbor 1.1.' + str(i) + '.1 remote-as 65001' v6_text = 'neighbor 2001:db8:' + str(i) + '::1 remote-as 65001' self.assertContains(response, v4_text) self.assertContains(response, v6_text)
def test_config_view_with_multiple_ios_address(self): """ Create a test IOS router, then add 100 ipv4 and ipv6 addresses, confirm they are in the final template. """ test_router = create_router('ios') test_interface = create_interface(test_router) address_count = 100 for i in range(1, address_count): create_v4_address(test_interface, '1.1.' + str(i) + '.1') create_v6_address(test_interface, '2600:' + str(i) + '::1') url = reverse( 'op_webgui:router_config', kwargs={'router_id': test_router.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200) for i in range(1, address_count): self.assertContains( response, 'ip address 1.1.' + str(i) + '.1 255.255.255.0') self.assertContains(response, 'ipv6 address 2600:' + str(i) + '::1/64')
def test_create_router_and_view_detail(self): test_router = create_router('junos') url = reverse('api:routers_detail', kwargs={'pk': test_router.pk}) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(router.objects.count(), 1) self.assertEqual(router.objects.get().hostname, 'test-router')
def test_create_ipv4_static_route_form_view(self): """ Create a router, then test that the create a static route page view is displayed correctly. """ test_router = create_router('junos') response = self.client.get( reverse('op_webgui:ipv4_static_create', kwargs={'router_id': test_router.id})) self.assertEqual(response.status_code, 200)
def test_index_view_with_routers(self): """ Create a router, then check that the view reflects this. """ test_router = create_router('ios') response = self.client.get(reverse('op_webgui:router_list')) self.assertQuerysetEqual( response.context['router_list'], ['<router: test-router>'] )
def test_router_with_no_intefaces(self): """ Show no results if there are no interfaces. """ one_router = create_router('junos') response = self.client.get(reverse('op_webgui:router_detail', kwargs={'router_id': one_router.id}) ) self.assertEqual(response.status_code, 200) self.assertQuerysetEqual(response.context['router'].interface_set.all(), [])
def test_edit_ipv4_static_route_form_view(self): """ Create a router, and static route, then check that the edit form view is displayed correctly. """ test_router = create_router('junos') static_route = create_v4_static(test_router, '192.0.2.0') response = self.client.get( reverse('op_webgui:ipv4_static_edit', kwargs={'ipv4_static_id': static_route.id})) self.assertEqual(response.status_code, 200)
def test_create_neighbor_form_view(self): """ Create a test router, and then test the form view of create display. """ test_router = create_router('junos') url = reverse( 'op_webgui:neighbor_create', kwargs={'router_id': test_router.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200)
def test_config_view_with_multiple_junos_neighbor(self): """ Create a test IOS router, with 100 ipv4 and ipv6 neighbors then check the config view. """ test_router = create_router('junos') test_asn_one = create_aut_num('65001') test_asn_two = create_aut_num('65002') neighbor_count = 50 asn_one_config = ' group test-asn {\n' asn_one_config += ' type external;\n' asn_two_config = asn_one_config asn_two_config += ' peer-as 65002; \n' asn_one_config += ' peer-as 65001; \n' for i in range(1, neighbor_count): create_neighbor(test_router, test_asn_one, '1.1.' + str(i) + '.1') asn_one_config += ' neighbor 1.1.' + str(i) + '.1; \n' create_neighbor(test_router, test_asn_two, '2.2.' + str(i) + '.1') asn_two_config += ' neighbor 2.2.' + str(i) + '.1; \n' for i in range(1, neighbor_count): create_neighbor(test_router, test_asn_one, '2001:db8:' + str(i) + '::1') asn_one_config += ' neighbor 2001:db8:' asn_one_config += str(i) + '::1; \n' create_neighbor(test_router, test_asn_two, '2001:db8:' + str(i) + ':2::1') asn_two_config += ' neighbor 2001:db8:' asn_two_config += str(i) + ':2::1; \n' asn_one_config += ' }' asn_two_config += ' }' url = reverse( 'op_webgui:router_config', kwargs={'router_id': test_router.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertContains(response, asn_one_config) self.assertContains(response, asn_two_config)
def test_config_view_with_junos_static_route(self): """ Create a JunOS router, interface, and IP addresses, then check the configuration template output. """ test_router = create_router('junos') test_v4_route = create_v4_static(test_router, '10.0.0.0') test_v6_route = create_v6_static(test_router, '2001:db8:100::') response = self.client.get( reverse('op_webgui:router_config', kwargs={'router_id': test_router.id})) self.assertEqual(response.status_code, 200) self.assertContains(response, 'route 10.0.0.0/16 next-hop 172.16.0.1') self.assertContains(response, 'route 2001:db8:100::/48 next-hop 2001:db8::1')
def test_create_interface_and_view_detail(self): """ Create an interface object, then view the detailed api call. """ test_router = create_router('junos') test_interface = interface.objects.create(router=test_router, name='ge-0/0/0', description='test-interface') url = reverse('api:interfaces_detail', kwargs={'pk': test_interface.pk}) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(interface.objects.count(), 1) self.assertEqual(interface.objects.get(name='ge-0/0/0'), test_interface)
def test_edit_neighbor_form_view(self): """ Create a test router, and neighbor, then test the form view of neighbor edit is displayed correctly. """ test_router = create_router('junos') test_asn_one = create_aut_num('65001') test_neighbor = create_neighbor(test_router, test_asn_one, '2001:db8:1::1') url = reverse( 'op_webgui:neighbor_edit', kwargs={'neighbor_id': test_neighbor.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200)
def test_create_logical_interface_and_view_detail(self): """ Create a logical_interface object, then view the detailed api call. """ test_router = create_router('junos') test_interface = create_interface(test_router) url = reverse( 'api:logical_interfaces_detail', kwargs={'pk': test_interface.pk}, ) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(logical_interface.objects.count(), 1) self.assertEqual(logical_interface.objects.get(name='10'), test_interface)
def test_ipv4_address_create_form_view(self): """ Create a test router and interface, then test the form view of ipv4_address_create is displayed correctly. """ test_router = create_router('junos') test_interface = create_interface(test_router) url = reverse( 'op_webgui:ipv4_address_create', kwargs={'logical_interface_id': test_interface.id}, ) response = self.client.get(url) test_text = 'test-router ge-0/0/0.10 (A logical test description.)' self.assertEqual(response.status_code, 200) self.assertContains(response, test_text)
def test_create_ipv4_static(self): """ Create an ipv4_static object, with an api call. """ test_router = create_router('junos') data = { "router": test_router.pk, "network": '192.0.2.0', "next_hop": '192.0.2.1', } url = reverse('api:ipv4_static') response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(ipv4_static.objects.count(), 1) self.assertEqual(str(ipv4_static.objects.get().network), '192.0.2.0')
def test_create_interface(self): """ Create an interface object, then view it in the api. """ test_router = create_router('junos') data = { "router": test_router.pk, "name": 'ge-0/0/0', "description": 'test-interface', } url = reverse('api:interfaces') response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(interface.objects.count(), 1) self.assertEqual(str(interface.objects.get().name), 'ge-0/0/0')
def test_create_bgp_neighbor(self): """ Create a bgp neighbor object, then check if it exists. """ test_router = create_router('junos') data = { "router": test_router.pk, "aut_num": test_router.local_aut_num.pk, "peer_ip": '192.0.2.1', } url = reverse('api:bgp_neighbor') response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(neighbor.objects.count(), 1) self.assertEqual(str(neighbor.objects.get().peer_ip), '192.0.2.1')
def test_create_ipv4_address(self): """ Create an ipv4_address object, then view it in the api. """ test_router = create_router('junos') test_interface = create_interface(test_router) data = { "interface": test_interface.pk, "host": '192.0.2.1', "cidr": '24', } url = reverse('api:ipv4_address') response = self.client.post(url, data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) self.assertEqual(ipv4_address.objects.count(), 1) self.assertEqual(str(ipv4_address.objects.get().host), '192.0.2.1')
def test_config_view_with_one_junos_address(self): """ Create a test JunOS router, with one ipv4 and one ipv6 address then check config view. """ test_router = create_router('junos') test_interface = create_interface(test_router) test_v4_address = create_v4_address(test_interface, '1.1.1.1') test_v6_address = create_v6_address(test_interface, '2600::1') url = reverse( 'op_webgui:router_config', kwargs={'router_id': test_router.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertContains(response, 'address 1.1.1.1/24') self.assertContains(response, 'address 2600::1/64')
def test_config_view_with_one_ios_neighbor(self): """ Create a test IOS router, with one ipv4 and one ipv6 neighbors then check config view. """ test_router = create_router('ios') test_asn = create_aut_num('65001') test_v4_neighbor = create_neighbor(test_router, test_asn, '1.1.1.1') test_v6_neighbor = create_neighbor(test_router, test_asn, '2001:db8::1') url = reverse( 'op_webgui:router_config', kwargs={'router_id': test_router.id}, ) response = self.client.get(url) self.assertEqual(response.status_code, 200) self.assertContains(response, 'neighbor 1.1.1.1 remote-as 65001') self.assertContains(response, 'neighbor 2001:db8::1 remote-as 65001')
def test_create_bgp_neighbor_and_view_detail(self): """ Create a bgp neighbor, then test the detailed api view. """ test_router = create_router('junos') test_asn = test_router.local_aut_num test_neighbor = neighbor.objects.create( router=test_router, aut_num=test_asn, peer_ip='192.0.2.1', ) url = reverse( 'api:bgp_neighbor_detail', kwargs={'pk': test_neighbor.pk}, ) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(neighbor.objects.count(), 1) self.assertEqual(neighbor.objects.get().peer_ip, test_neighbor.peer_ip)
def test_create_ipv4_address_and_view_detail(self): """ Create an ipv4_address object, then view the detailed api call. """ test_router = create_router('junos') test_interface = create_interface(test_router) test_address = ipv4_address.objects.create( interface=test_interface, host='192.0.2.1', cidr=24, ) url = reverse( 'api:ipv4_address_detail', kwargs={'pk': test_address.pk}, ) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(ipv4_address.objects.count(), 1) self.assertEqual(ipv4_address.objects.get(host='192.0.2.1'), test_address)
def test_config_view_with_multiple_junos_static_route(self): """ Create 100 static routes, and ensure they are templated properly. """ test_router = create_router('junos') route_count = 100 for i in range(1, route_count): create_v4_static(test_router, '10.' + str(i) + '.0.0') create_v6_static(test_router, '2001:db8:' + str(i) + '::') response = self.client.get( reverse('op_webgui:router_config', kwargs={'router_id': test_router.id})) self.assertEqual(response.status_code, 200) for i in range(1, route_count): self.assertContains( response, 'route 10.' + str(i) + '.0.0/16 next-hop 172.16.0.1') self.assertContains( response, 'route 2001:db8:' + str(i) + '::/48 next-hop 2001:db8::1')
def test_ipv4_address_edit_form_view(self): """ Create a test router, interface and address, then test the form view of ipv4_address_edit is displayed correctly. """ test_router = create_router('junos') test_interface = create_interface(test_router) test_address = create_v4_address(test_interface, '192.0.2.1') url = reverse( 'op_webgui:ipv4_address_edit', kwargs={'ipv4_address_id': test_address.id}, ) response = self.client.get(url) test_text = ''.join([ '<input type="text" name="host" value="192.0.2.1" ', 'title="" required id="id_host" placeholder="Host" ', 'class="form-control" />', ]) self.assertEqual(response.status_code, 200) self.assertContains(response, test_text)
def test_create_ipv4_static_and_view_detail(self): """ Create an ipv4 static object, then check the detailed api view. """ test_router = create_router('junos') test_route = ipv4_static.objects.create( router=test_router, network='192.0.2.0', next_hop='192.0.2.1', ) url = reverse( 'api:ipv4_static_detail', kwargs={'pk': test_route.pk}, ) response = self.client.get(url, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) self.assertEqual(ipv4_static.objects.count(), 1) self.assertEqual( ipv4_static.objects.get(network='192.0.2.0'), test_route, )