From 201b7d9d800ba2bedeb76e071fd5050839feb7dd Mon Sep 17 00:00:00 2001 From: cid Date: Thu, 21 Mar 2024 20:08:54 +0100 Subject: [PATCH] Patch to enforce json extension works in existing API behaviour of giving .json extensions a specially treatment. This is me testing the tempest waters... Change-Id: I613e596e8cf52f36b9c7caac30bdb3ff0d3bf821 --- .../tests/api/admin/test_nodes.py | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/ironic_tempest_plugin/tests/api/admin/test_nodes.py b/ironic_tempest_plugin/tests/api/admin/test_nodes.py index d6d18337..7f2b7e91 100644 --- a/ironic_tempest_plugin/tests/api/admin/test_nodes.py +++ b/ironic_tempest_plugin/tests/api/admin/test_nodes.py @@ -53,6 +53,17 @@ class TestNodes(base.BaseBaremetalTest): _, body = self.create_node(self.chassis['uuid'], **params) self._assertExpected(params, body['properties']) + @decorators.idempotent_id('f1ff399b-244f-42b6-8f72-30a12128de53') + def test_create_node_with_json_in_name(self): + params = {'cpu_arch': 'x86_64', + 'cpus': '12', + 'local_gb': '10', + 'memory_mb': '1024', + 'name': 'node.json'} + + _, body = self.create_node(chassis_id=self.chassis['uuid'], **params) + self.assertIn('node.json', body['properties']) + @decorators.idempotent_id('9ade60a4-505e-4259-9ec4-71352cbbaf47') def test_delete_node(self): _, node = self.create_node(self.chassis['uuid']) @@ -62,11 +73,71 @@ class TestNodes(base.BaseBaremetalTest): self.assertRaises(lib_exc.NotFound, self.client.show_node, node['uuid']) + @decorators.idempotent_id('75209190-6942-4a29-9996-33e4d9398456') + def test_delete_node_with_json(self): + _, node = self.create_node(self.chassis['uuid']) + + node_name = '%s.json' % node['uuid'] + self.delete_node(node_name) + + self.assertRaises(lib_exc.NotFound, self.client.show_node, + node['uuid']) + + @decorators.idempotent_id('d8cfcc21-50e9-4909-b407-ae16bce59598') + def test_delete_node_with_json_in_name(self): + _, node = self.create_node(name='node.json', + chassis_id=self.chassis['uuid']) + + self.delete_node(node['uuid']) + + self.assertRaises(lib_exc.NotFound, self.client.show_node, + node['uuid']) + + @decorators.idempotent_id('75209190-6942-4a29-9996-33e4d9398456') + def test_delete_node_with_double_json(self): + _, node = self.create_node(name='node.json', + chassis_id=self.chassis['uuid']) + + node_name = '%s.json' % node['uuid'] + self.delete_node(node_name) + + self.assertRaises(lib_exc.NotFound, self.client.show_node, + node['uuid']) + @decorators.idempotent_id('55451300-057c-4ecf-8255-ba42a83d3a03') def test_show_node(self): _, loaded_node = self.client.show_node(self.node['uuid']) self._assertExpected(self.node, loaded_node) + @decorators.idempotent_id('5eec6c1d-5a1a-4916-9c48-7c573f32957e') + def test_show_node_with_json(self): + node_name = '%s.json' % self.node['uuid'] + _, loaded_node = self.client.show_node(node_name) + self._assertExpected(self.node, loaded_node) + + @decorators.idempotent_id('5d1f973f-aa9d-4e3c-80b8-2f86f1acda05') + def test_show_node_with_json_in_name(self): + _, node = self.create_node(name='node.json', + chassis_id=self.chassis['uuid']) + _, loaded_node = self.client.show_node(node['uuid']) + self.assertIn('node.json', loaded_node) + + @decorators.idempotent_id('dd0acdca-c3b8-4544-8a9a-af7a9f077532') + def test_show_node_with_double_json(self): + _, node = self.create_node(name='node.json', + chassis_id=self.chassis['uuid']) + + node_name = '%s.json' % node['uuid'] + _, loaded_node = self.client.show_node(node_name) + self.assertIn('node.json', loaded_node) + + @decorators.idempotent_id('3e3cd729-cf16-4bdd-bdc7-c6cf252df533') + def test_show_node_with_suffix(self): + _, node = self.create_node(name='node.1', + chassis_id=self.chassis['uuid']) + _, loaded_node = self.client.show_node(node['uuid']) + self.assertIn('node.1', loaded_node) + @decorators.idempotent_id('4ca123c4-160d-4d8d-a3f7-15feda812263') def test_list_nodes(self): _, body = self.client.list_nodes() @@ -119,6 +190,44 @@ class TestNodes(base.BaseBaremetalTest): _, node = self.client.show_node(node['uuid']) self._assertExpected(new_p, node['properties']) + @decorators.idempotent_id('2ffec2ec-3dca-4e4f-ac6c-dee7c44cdef5') + def test_update_node_with_json(self): + props = {'cpu_arch': 'x86_64', + 'cpus': '12', + 'local_gb': '10', + 'memory_mb': '128'} + + _, node = self.create_node(self.chassis['uuid'], **props) + + new_p = {'cpu_arch': 'arm64', + 'cpus': '1', + 'local_gb': '10000', + 'memory_mb': '12300'} + + node_name = '%s.json' % node['uuid'] + _, body = self.client.update_node(node_name, properties=new_p) + _, node = self.client.show_node(node['uuid']) + self._assertExpected(new_p, node['properties']) + + @decorators.idempotent_id('b19497d2-4425-499f-8957-3b973ea35ad4') + def test_update_node_with_json_in_name(self): + props = {'cpu_arch': 'x86_64', + 'cpus': '12', + 'local_gb': '10', + 'memory_mb': '128'} + + _, node = self.create_node(chassis_id=self.chassis['uuid'], **props) + + new_p = {'cpu_arch': 'arm64', + 'cpus': '1', + 'local_gb': '10000', + 'memory_mb': '12300', + 'name': 'node.json'} + + _, body = self.client.update_node(node['uuid'], properties=new_p) + _, node = self.client.show_node(node['uuid']) + self.assertIn('node.json', node['properties']) + @decorators.idempotent_id('cbf1f515-5f4b-4e49-945c-86bcaccfeb1d') def test_validate_driver_interface(self): _, body = self.client.validate_driver_interface(self.node['uuid'])