diff options
author | Aija Jauntēva <aija.jaunteva@dell.com> | 2022-01-06 06:34:19 -0500 |
---|---|---|
committer | Riccardo Pittau <elfosardo@gmail.com> | 2022-01-17 09:03:42 +0000 |
commit | 884e290a6f919efa50dd08797d9a127ba9f61369 (patch) | |
tree | 09348e526c9307493ff5301d9f4bf7e40c781ee5 /ironic/tests | |
parent | 7799315ef45bde50ff6a3965aed58faa9c814026 (diff) | |
download | ironic-884e290a6f919efa50dd08797d9a127ba9f61369.tar.gz |
Fix validating input for redfish update_firmware
Story: 2009772
Task: 44249
Change-Id: I8e559b3c7e833c361e12d01d744510ac5c8d8cf6
(cherry picked from commit b824ea7fa8874e63cfe11bc82ce0dc049680344f)
Diffstat (limited to 'ironic/tests')
-rw-r--r-- | ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py | 88 | ||||
-rw-r--r-- | ironic/tests/unit/drivers/modules/redfish/test_management.py | 8 |
2 files changed, 96 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py b/ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py new file mode 100644 index 000000000..60c66c024 --- /dev/null +++ b/ironic/tests/unit/drivers/modules/redfish/test_firmware_utils.py @@ -0,0 +1,88 @@ +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. + +from ironic.common import exception +from ironic.drivers.modules.redfish import firmware_utils +from ironic.tests import base + + +class FirmwareUtilsTestCase(base.TestCase): + + def test_validate_update_firmware_args(self): + firmware_images = [ + { + "url": "http://192.0.2.10/BMC_4_22_00_00.EXE", + "wait": 300 + }, + { + "url": "https://192.0.2.10/NIC_19.0.12_A00.EXE" + } + ] + firmware_utils.validate_update_firmware_args(firmware_images) + + def test_validate_update_firmware_args_not_list(self): + firmware_images = { + "url": "http://192.0.2.10/BMC_4_22_00_00.EXE", + "wait": 300 + } + self.assertRaisesRegex( + exception.InvalidParameterValue, "is not of type 'array'", + firmware_utils.validate_update_firmware_args, firmware_images) + + def test_validate_update_firmware_args_unknown_key(self): + firmware_images = [ + { + "url": "http://192.0.2.10/BMC_4_22_00_00.EXE", + "wait": 300, + }, + { + "url": "https://192.0.2.10/NIC_19.0.12_A00.EXE", + "something": "unknown" + } + ] + self.assertRaisesRegex( + exception.InvalidParameterValue, "'something' was unexpected", + firmware_utils.validate_update_firmware_args, firmware_images) + + def test_validate_update_firmware_args_url_missing(self): + firmware_images = [ + { + "url": "http://192.0.2.10/BMC_4_22_00_00.EXE", + "wait": 300, + }, + { + "wait": 300 + } + ] + self.assertRaisesRegex( + exception.InvalidParameterValue, + "'url' is a required property", + firmware_utils.validate_update_firmware_args, firmware_images) + + def test_validate_update_firmware_args_url_not_string(self): + firmware_images = [{ + "url": 123, + "wait": 300 + }] + self.assertRaisesRegex( + exception.InvalidParameterValue, "123 is not of type 'string'", + firmware_utils.validate_update_firmware_args, firmware_images) + + def test_validate_update_firmware_args_wait_not_int(self): + firmware_images = [{ + "url": "http://192.0.2.10/BMC_4_22_00_00.EXE", + "wait": 'abc' + }] + self.assertRaisesRegex( + exception.InvalidParameterValue, "'abc' is not of type 'integer'", + firmware_utils.validate_update_firmware_args, firmware_images) diff --git a/ironic/tests/unit/drivers/modules/redfish/test_management.py b/ironic/tests/unit/drivers/modules/redfish/test_management.py index 72a355072..d6d532327 100644 --- a/ironic/tests/unit/drivers/modules/redfish/test_management.py +++ b/ironic/tests/unit/drivers/modules/redfish/test_management.py @@ -856,6 +856,14 @@ class RedfishManagementTestCase(db_base.DbTestCase): task.node) mock_node_power_action.assert_called_once_with(task, states.REBOOT) + def test_update_firmware_invalid_args(self): + with task_manager.acquire(self.context, self.node.uuid, + shared=False) as task: + self.assertRaises( + exception.InvalidParameterValue, + task.driver.management.update_firmware, + task, [{'urlX': 'test1'}, {'url': 'test2'}]) + @mock.patch.object(task_manager, 'acquire', autospec=True) def test__query_firmware_update_failed(self, mock_acquire): driver_internal_info = { |