123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655 |
- import json
- from rest_framework import status
- from rest_framework.test import APITestCase
- class SiteTest(APITestCase):
- fixtures = [
- 'dcim',
- 'ipam',
- 'extras',
- ]
- standard_fields = [
- 'id',
- 'name',
- 'slug',
- 'tenant',
- 'facility',
- 'asn',
- 'physical_address',
- 'shipping_address',
- 'comments',
- 'custom_fields',
- 'count_prefixes',
- 'count_vlans',
- 'count_racks',
- 'count_devices',
- 'count_circuits'
- ]
- nested_fields = [
- 'id',
- 'name',
- 'slug'
- ]
- rack_fields = [
- 'id',
- 'name',
- 'facility_id',
- 'display_name',
- 'site',
- 'group',
- 'tenant',
- 'role',
- 'type',
- 'width',
- 'u_height',
- 'comments',
- 'custom_fields',
- ]
- graph_fields = [
- 'name',
- 'embed_url',
- 'embed_link',
- ]
- def test_get_list(self, endpoint='/api/dcim/sites/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/sites/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- def test_get_site_list_rack(self, endpoint='/api/dcim/sites/1/racks/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in json.loads(response.content):
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.rack_fields),
- )
- # Check Nested Serializer.
- self.assertEqual(
- sorted(i.get('site').keys()),
- sorted(self.nested_fields),
- )
- def test_get_site_list_graphs(self, endpoint='/api/dcim/sites/1/graphs/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in json.loads(response.content):
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.graph_fields),
- )
- class RackTest(APITestCase):
- fixtures = [
- 'dcim',
- 'ipam'
- ]
- nested_fields = [
- 'id',
- 'name',
- 'facility_id',
- 'display_name'
- ]
- standard_fields = [
- 'id',
- 'name',
- 'facility_id',
- 'display_name',
- 'site',
- 'group',
- 'tenant',
- 'role',
- 'type',
- 'width',
- 'u_height',
- 'comments',
- 'custom_fields',
- ]
- detail_fields = [
- 'id',
- 'name',
- 'facility_id',
- 'display_name',
- 'site',
- 'group',
- 'tenant',
- 'role',
- 'type',
- 'width',
- 'u_height',
- 'comments',
- 'custom_fields',
- 'front_units',
- 'rear_units'
- ]
- def test_get_list(self, endpoint='/api/dcim/racks/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(i.get('site').keys()),
- sorted(SiteTest.nested_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/racks/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.detail_fields),
- )
- self.assertEqual(
- sorted(content.get('site').keys()),
- sorted(SiteTest.nested_fields),
- )
- class ManufacturersTest(APITestCase):
- fixtures = [
- 'dcim',
- 'ipam'
- ]
- standard_fields = [
- 'id',
- 'name',
- 'slug',
- ]
- nested_fields = standard_fields
- def test_get_list(self, endpoint='/api/dcim/manufacturers/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/manufacturers/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- class DeviceTypeTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = [
- 'id',
- 'manufacturer',
- 'model',
- 'slug',
- 'part_number',
- 'u_height',
- 'is_full_depth',
- 'is_console_server',
- 'is_pdu',
- 'is_network_device',
- ]
- nested_fields = [
- 'id',
- 'manufacturer',
- 'model',
- 'slug'
- ]
- def test_get_list(self, endpoint='/api/dcim/device-types/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- def test_detail_list(self, endpoint='/api/dcim/device-types/1/'):
- # TODO: details returns list view.
- # response = self.client.get(endpoint)
- # content = json.loads(response.content)
- # self.assertEqual(response.status_code, status.HTTP_200_OK)
- # self.assertEqual(
- # sorted(content.keys()),
- # sorted(self.standard_fields),
- # )
- # self.assertEqual(
- # sorted(content.get('manufacturer').keys()),
- # sorted(ManufacturersTest.nested_fields),
- # )
- pass
- class DeviceRolesTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = ['id', 'name', 'slug', 'color']
- nested_fields = ['id', 'name', 'slug']
- def test_get_list(self, endpoint='/api/dcim/device-roles/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/device-roles/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- class PlatformsTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = ['id', 'name', 'slug', 'rpc_client']
- nested_fields = ['id', 'name', 'slug']
- def test_get_list(self, endpoint='/api/dcim/platforms/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/platforms/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- class DeviceTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = [
- 'id',
- 'name',
- 'display_name',
- 'device_type',
- 'device_role',
- 'tenant',
- 'platform',
- 'serial',
- 'asset_tag',
- 'rack',
- 'position',
- 'face',
- 'parent_device',
- 'status',
- 'primary_ip',
- 'primary_ip4',
- 'primary_ip6',
- 'comments',
- 'custom_fields',
- ]
- nested_fields = ['id', 'name', 'display_name']
- def test_get_list(self, endpoint='/api/dcim/devices/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for device in content:
- self.assertEqual(
- sorted(device.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(device.get('device_type')),
- sorted(DeviceTypeTest.nested_fields),
- )
- self.assertEqual(
- sorted(device.get('device_role')),
- sorted(DeviceRolesTest.nested_fields),
- )
- if device.get('platform'):
- self.assertEqual(
- sorted(device.get('platform')),
- sorted(PlatformsTest.nested_fields),
- )
- self.assertEqual(
- sorted(device.get('rack')),
- sorted(RackTest.nested_fields),
- )
- def test_get_list_flat(self, endpoint='/api/dcim/devices/?format=json_flat'):
- flat_fields = [
- 'asset_tag',
- 'comments',
- 'device_role_id',
- 'device_role_name',
- 'device_role_slug',
- 'device_type_id',
- 'device_type_manufacturer_id',
- 'device_type_manufacturer_name',
- 'device_type_manufacturer_slug',
- 'device_type_model',
- 'device_type_slug',
- 'display_name',
- 'face',
- 'id',
- 'name',
- 'parent_device',
- 'platform_id',
- 'platform_name',
- 'platform_slug',
- 'position',
- 'primary_ip_address',
- 'primary_ip_family',
- 'primary_ip_id',
- 'primary_ip4_address',
- 'primary_ip4_family',
- 'primary_ip4_id',
- 'primary_ip6',
- 'rack_display_name',
- 'rack_facility_id',
- 'rack_id',
- 'rack_name',
- 'serial',
- 'status',
- 'tenant',
- ]
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- device = content[0]
- self.assertEqual(
- sorted(device.keys()),
- sorted(flat_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/devices/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- class ConsoleServerPortsTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = ['id', 'device', 'name', 'connected_console']
- nested_fields = ['id', 'device', 'name']
- def test_get_list(self, endpoint='/api/dcim/devices/9/console-server-ports/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for console_port in content:
- self.assertEqual(
- sorted(console_port.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(console_port.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- class ConsolePortsTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = ['id', 'device', 'name', 'cs_port', 'connection_status']
- nested_fields = ['id', 'device', 'name']
- def test_get_list(self, endpoint='/api/dcim/devices/1/console-ports/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for console_port in content:
- self.assertEqual(
- sorted(console_port.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(console_port.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- self.assertEqual(
- sorted(console_port.get('cs_port')),
- sorted(ConsoleServerPortsTest.nested_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/console-ports/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(content.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- class PowerPortsTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = ['id', 'device', 'name', 'power_outlet', 'connection_status']
- nested_fields = ['id', 'device', 'name']
- def test_get_list(self, endpoint='/api/dcim/devices/1/power-ports/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(i.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/power-ports/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(content.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- class PowerOutletsTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = ['id', 'device', 'name', 'connected_port']
- nested_fields = ['id', 'device', 'name']
- def test_get_list(self, endpoint='/api/dcim/devices/11/power-outlets/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(i.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- class InterfaceTest(APITestCase):
- fixtures = ['dcim', 'ipam', 'extras']
- standard_fields = [
- 'id',
- 'device',
- 'name',
- 'form_factor',
- 'mac_address',
- 'mgmt_only',
- 'description',
- 'is_connected'
- ]
- nested_fields = ['id', 'device', 'name']
- detail_fields = [
- 'id',
- 'device',
- 'name',
- 'form_factor',
- 'mac_address',
- 'mgmt_only',
- 'description',
- 'is_connected',
- 'connected_interface'
- ]
- connection_fields = [
- 'id',
- 'interface_a',
- 'interface_b',
- 'connection_status',
- ]
- def test_get_list(self, endpoint='/api/dcim/devices/1/interfaces/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(self.standard_fields),
- )
- self.assertEqual(
- sorted(i.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- def test_get_detail(self, endpoint='/api/dcim/interfaces/1/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.detail_fields),
- )
- self.assertEqual(
- sorted(content.get('device')),
- sorted(DeviceTest.nested_fields),
- )
- def test_get_graph_list(self, endpoint='/api/dcim/interfaces/1/graphs/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- for i in content:
- self.assertEqual(
- sorted(i.keys()),
- sorted(SiteTest.graph_fields),
- )
- def test_get_interface_connections(self, endpoint='/api/dcim/interface-connections/4/'):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.connection_fields),
- )
- class RelatedConnectionsTest(APITestCase):
- fixtures = ['dcim', 'ipam']
- standard_fields = [
- 'device',
- 'console-ports',
- 'power-ports',
- 'interfaces',
- ]
- def test_get_list(self, endpoint=(
- '/api/dcim/related-connections/'
- '?peer-device=test1-edge1&peer-interface=xe-0/0/3')):
- response = self.client.get(endpoint)
- content = json.loads(response.content)
- self.assertEqual(response.status_code, status.HTTP_200_OK)
- self.assertEqual(
- sorted(content.keys()),
- sorted(self.standard_fields),
- )
|