summaryrefslogtreecommitdiff
path: root/ironic/tests
diff options
context:
space:
mode:
authorAija Jauntēva <aija.jaunteva@dell.com>2022-01-06 06:34:19 -0500
committerRiccardo Pittau <elfosardo@gmail.com>2022-01-17 09:03:42 +0000
commit884e290a6f919efa50dd08797d9a127ba9f61369 (patch)
tree09348e526c9307493ff5301d9f4bf7e40c781ee5 /ironic/tests
parent7799315ef45bde50ff6a3965aed58faa9c814026 (diff)
downloadironic-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.py88
-rw-r--r--ironic/tests/unit/drivers/modules/redfish/test_management.py8
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 = {