diff options
Diffstat (limited to 'ironic/tests/unit/api')
-rw-r--r-- | ironic/tests/unit/api/controllers/v1/test_chassis.py | 43 | ||||
-rw-r--r-- | ironic/tests/unit/api/controllers/v1/test_node.py | 66 | ||||
-rw-r--r-- | ironic/tests/unit/api/controllers/v1/test_port.py | 68 | ||||
-rw-r--r-- | ironic/tests/unit/api/controllers/v1/test_portgroup.py | 49 |
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', |