summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/api
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit/api')
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_chassis.py43
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_node.py66
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_port.py68
-rw-r--r--ironic/tests/unit/api/controllers/v1/test_portgroup.py49
4 files changed, 226 insertions, 0 deletions
diff --git a/ironic/tests/unit/api/controllers/v1/test_chassis.py b/ironic/tests/unit/api/controllers/v1/test_chassis.py
index 94e278c57..d41d6e8b0 100644
--- a/ironic/tests/unit/api/controllers/v1/test_chassis.py
+++ b/ironic/tests/unit/api/controllers/v1/test_chassis.py
@@ -123,6 +123,49 @@ class TestListChassis(test_api_base.BaseApiTest):
self.assertIn('extra', data['chassis'][0])
self.assertIn('nodes', data['chassis'][0])
+ def test_detail_query(self):
+ chassis = obj_utils.create_test_chassis(self.context)
+ data = self.get_json(
+ '/chassis?detail=True',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertEqual(chassis.uuid, data['chassis'][0]["uuid"])
+ self.assertIn('extra', data['chassis'][0])
+ self.assertIn('nodes', data['chassis'][0])
+
+ def test_detail_query_false(self):
+ obj_utils.create_test_chassis(self.context)
+ data1 = self.get_json(
+ '/chassis',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ data2 = self.get_json(
+ '/chassis?detail=False',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertEqual(data1['chassis'], data2['chassis'])
+
+ def test_detail_using_query_and_fields(self):
+ obj_utils.create_test_chassis(self.context)
+ response = self.get_json(
+ '/chassis?detail=True&fields=description',
+ headers={api_base.Version.string: str(api_v1.max_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
+ def test_detail_using_query_false_and_fields(self):
+ obj_utils.create_test_chassis(self.context)
+ data = self.get_json(
+ '/chassis?detail=False&fields=description',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertIn('description', data['chassis'][0])
+ self.assertNotIn('uuid', data['chassis'][0])
+
+ def test_detail_using_query_old_version(self):
+ obj_utils.create_test_chassis(self.context)
+ response = self.get_json(
+ '/chassis?detail=True',
+ headers={api_base.Version.string: str(api_v1.min_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
def test_detail_against_single(self):
chassis = obj_utils.create_test_chassis(self.context)
response = self.get_json('/chassis/%s/detail' % chassis['uuid'],
diff --git a/ironic/tests/unit/api/controllers/v1/test_node.py b/ironic/tests/unit/api/controllers/v1/test_node.py
index 6f1a3e6db..50f8b0341 100644
--- a/ironic/tests/unit/api/controllers/v1/test_node.py
+++ b/ironic/tests/unit/api/controllers/v1/test_node.py
@@ -430,6 +430,72 @@ class TestListNodes(test_api_base.BaseApiTest):
# never expose the chassis_id
self.assertNotIn('chassis_id', data['nodes'][0])
+ def test_detail_using_query(self):
+ node = obj_utils.create_test_node(self.context,
+ chassis_id=self.chassis.id)
+ data = self.get_json(
+ '/nodes?detail=True',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertEqual(node.uuid, data['nodes'][0]["uuid"])
+ self.assertIn('name', data['nodes'][0])
+ self.assertIn('driver', data['nodes'][0])
+ self.assertIn('driver_info', data['nodes'][0])
+ self.assertIn('extra', data['nodes'][0])
+ self.assertIn('properties', data['nodes'][0])
+ self.assertIn('chassis_uuid', data['nodes'][0])
+ self.assertIn('reservation', data['nodes'][0])
+ self.assertIn('maintenance', data['nodes'][0])
+ self.assertIn('console_enabled', data['nodes'][0])
+ self.assertIn('target_power_state', data['nodes'][0])
+ self.assertIn('target_provision_state', data['nodes'][0])
+ self.assertIn('provision_updated_at', data['nodes'][0])
+ self.assertIn('inspection_finished_at', data['nodes'][0])
+ self.assertIn('inspection_started_at', data['nodes'][0])
+ self.assertIn('raid_config', data['nodes'][0])
+ self.assertIn('target_raid_config', data['nodes'][0])
+ self.assertIn('network_interface', data['nodes'][0])
+ self.assertIn('resource_class', data['nodes'][0])
+ for field in api_utils.V31_FIELDS:
+ self.assertIn(field, data['nodes'][0])
+ # never expose the chassis_id
+ self.assertNotIn('chassis_id', data['nodes'][0])
+
+ def test_detail_query_false(self):
+ obj_utils.create_test_node(self.context)
+ data1 = self.get_json(
+ '/nodes',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ data2 = self.get_json(
+ '/nodes?detail=False',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertEqual(data1['nodes'], data2['nodes'])
+
+ def test_detail_using_query_false_and_fields(self):
+ obj_utils.create_test_node(self.context)
+ data = self.get_json(
+ '/nodes?detail=False&fields=name',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertIn('name', data['nodes'][0])
+ self.assertNotIn('uuid', data['nodes'][0])
+
+ def test_detail_using_query_and_fields(self):
+ obj_utils.create_test_node(self.context,
+ chassis_id=self.chassis.id)
+ response = self.get_json(
+ '/nodes?detail=True&fields=name',
+ headers={api_base.Version.string: str(api_v1.max_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
+ def test_detail_using_query_old_version(self):
+ obj_utils.create_test_node(self.context,
+ chassis_id=self.chassis.id)
+ response = self.get_json(
+ '/nodes?detail=True',
+ headers={api_base.Version.string: str(api_v1.min_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
def test_detail_against_single(self):
node = obj_utils.create_test_node(self.context)
response = self.get_json('/nodes/%s/detail' % node.uuid,
diff --git a/ironic/tests/unit/api/controllers/v1/test_port.py b/ironic/tests/unit/api/controllers/v1/test_port.py
index 372a30bc7..eeee5b6ba 100644
--- a/ironic/tests/unit/api/controllers/v1/test_port.py
+++ b/ironic/tests/unit/api/controllers/v1/test_port.py
@@ -442,6 +442,74 @@ class TestListPorts(test_api_base.BaseApiTest):
self.assertNotIn('node_id', data['ports'][0])
self.assertNotIn('portgroup_id', data['ports'][0])
+ def test_detail_query(self):
+ llc = {'switch_info': 'switch', 'switch_id': 'aa:bb:cc:dd:ee:ff',
+ 'port_id': 'Gig0/1'}
+ portgroup = obj_utils.create_test_portgroup(self.context,
+ node_id=self.node.id)
+ port = obj_utils.create_test_port(self.context, node_id=self.node.id,
+ portgroup_id=portgroup.id,
+ pxe_enabled=False,
+ local_link_connection=llc,
+ physical_network='physnet1')
+ data = self.get_json(
+ '/ports?detail=True',
+ headers={api_base.Version.string: str(api_v1.max_version())}
+ )
+ self.assertEqual(port.uuid, data['ports'][0]["uuid"])
+ self.assertIn('extra', data['ports'][0])
+ self.assertIn('internal_info', data['ports'][0])
+ self.assertIn('node_uuid', data['ports'][0])
+ self.assertIn('pxe_enabled', data['ports'][0])
+ self.assertIn('local_link_connection', data['ports'][0])
+ self.assertIn('portgroup_uuid', data['ports'][0])
+ self.assertIn('physical_network', data['ports'][0])
+ # never expose the node_id and portgroup_id
+ self.assertNotIn('node_id', data['ports'][0])
+ self.assertNotIn('portgroup_id', data['ports'][0])
+
+ def test_detail_query_false(self):
+ obj_utils.create_test_port(self.context, node_id=self.node.id,
+ pxe_enabled=False,
+ physical_network='physnet1')
+ data1 = self.get_json(
+ '/ports',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ data2 = self.get_json(
+ '/ports?detail=False',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertEqual(data1['ports'], data2['ports'])
+
+ def test_detail_using_query_false_and_fields(self):
+ obj_utils.create_test_port(self.context, node_id=self.node.id,
+ pxe_enabled=False,
+ physical_network='physnet1')
+ data = self.get_json(
+ '/ports?detail=False&fields=internal_info',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertIn('internal_info', data['ports'][0])
+ self.assertNotIn('uuid', data['ports'][0])
+
+ def test_detail_using_query_and_fields(self):
+ obj_utils.create_test_port(self.context, node_id=self.node.id,
+ pxe_enabled=False,
+ physical_network='physnet1')
+ response = self.get_json(
+ '/ports?detail=True&fields=name',
+ headers={api_base.Version.string: str(api_v1.max_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
+ def test_detail_using_query_old_version(self):
+ obj_utils.create_test_port(self.context, node_id=self.node.id,
+ pxe_enabled=False,
+ physical_network='physnet1')
+ response = self.get_json(
+ '/ports?detail=True',
+ headers={api_base.Version.string: str(api_v1.min_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
def test_detail_against_single(self):
port = obj_utils.create_test_port(self.context, node_id=self.node.id)
response = self.get_json('/ports/%s/detail' % port.uuid,
diff --git a/ironic/tests/unit/api/controllers/v1/test_portgroup.py b/ironic/tests/unit/api/controllers/v1/test_portgroup.py
index 006d433d7..38cd447d5 100644
--- a/ironic/tests/unit/api/controllers/v1/test_portgroup.py
+++ b/ironic/tests/unit/api/controllers/v1/test_portgroup.py
@@ -201,6 +201,55 @@ class TestListPortgroups(test_api_base.BaseApiTest):
# never expose the node_id
self.assertNotIn('node_id', data['portgroups'][0])
+ def test_detail_query(self):
+ portgroup = obj_utils.create_test_portgroup(self.context,
+ node_id=self.node.id)
+ data = self.get_json('/portgroups?detail=True', headers=self.headers)
+ self.assertEqual(portgroup.uuid, data['portgroups'][0]["uuid"])
+ self.assertIn('extra', data['portgroups'][0])
+ self.assertIn('node_uuid', data['portgroups'][0])
+ self.assertIn('standalone_ports_supported', data['portgroups'][0])
+ # never expose the node_id
+ self.assertNotIn('node_id', data['portgroups'][0])
+
+ def test_detail_query_false(self):
+ obj_utils.create_test_portgroup(self.context,
+ node_id=self.node.id)
+ data1 = self.get_json(
+ '/portgroups',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ data2 = self.get_json(
+ '/portgroups?detail=False',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertEqual(data1['portgroups'], data2['portgroups'])
+
+ def test_detail_using_query_false_and_fields(self):
+ obj_utils.create_test_portgroup(self.context,
+ node_id=self.node.id)
+ data = self.get_json(
+ '/portgroups?detail=False&fields=internal_info',
+ headers={api_base.Version.string: str(api_v1.max_version())})
+ self.assertIn('internal_info', data['portgroups'][0])
+ self.assertNotIn('uuid', data['portgroups'][0])
+
+ def test_detail_using_query_and_fields(self):
+ obj_utils.create_test_portgroup(self.context,
+ node_id=self.node.id)
+ response = self.get_json(
+ '/portgroups?detail=True&fields=name',
+ headers={api_base.Version.string: str(api_v1.max_version())},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
+ def test_detail_using_query_old_version(self):
+ obj_utils.create_test_portgroup(self.context,
+ node_id=self.node.id)
+ response = self.get_json(
+ '/portgroups?detail=True',
+ headers={api_base.Version.string: '1.42'},
+ expect_errors=True)
+ self.assertEqual(http_client.BAD_REQUEST, response.status_int)
+
def test_detail_invalid_api_version(self):
response = self.get_json(
'/portgroups/detail',