# Copyright 2018 Intel, Inc. # All Rights Reserved. # # 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. import mock from sushy import exceptions import testtools from rsd_lib import utils as rsd_lib_utils class UtilsTestCase(testtools.TestCase): def test_get_resource_identity(self): self.assertIsNone(rsd_lib_utils.get_resource_identity(None)) self.assertIsNone(rsd_lib_utils.get_resource_identity({})) self.assertEqual( "/redfish/v1/Systems/437XR1138R2/BIOS", rsd_lib_utils.get_resource_identity( {"@odata.id": "/redfish/v1/Systems/437XR1138R2/BIOS"} ), ) def test_num_or_none(self): self.assertIsNone(rsd_lib_utils.num_or_none(None)) self.assertEqual(0, rsd_lib_utils.num_or_none("0")) self.assertEqual(1, rsd_lib_utils.num_or_none("1")) self.assertEqual(10, rsd_lib_utils.num_or_none("10.0")) self.assertEqual(12.5, rsd_lib_utils.num_or_none("12.5")) self.assertEqual(0, rsd_lib_utils.num_or_none(0)) self.assertEqual(1, rsd_lib_utils.num_or_none(1)) self.assertEqual(10, rsd_lib_utils.num_or_none(10.0)) self.assertEqual(12.5, rsd_lib_utils.num_or_none(12.5)) def test_get_sub_resource_path_list_by(self): sample = { "Links": { "PCIeDevices": [ {"@data.id": "/redfish/v1/Chassis/1/PCIeDevices/Device1"}, {"@data.id": "/redfish/v1/Chassis/1/PCIeDevices/Device2"}, ] } } mock_resource = mock.Mock() mock_resource.json = sample self.assertRaises( ValueError, rsd_lib_utils.get_sub_resource_path_list_by, mock_resource, None, ) self.assertEqual( sorted( [ "/redfish/v1/Chassis/1/PCIeDevices/Device1", "/redfish/v1/Chassis/1/PCIeDevices/Device2", ] ), sorted( rsd_lib_utils.get_sub_resource_path_list_by( mock_resource, ["Links", "PCIeDevices"] ) ), ) mock_resource.json = {"Links": {}} self.assertRaises( exceptions.MissingAttributeError, rsd_lib_utils.get_sub_resource_path_list_by, mock_resource, "Links", ) def test_camelcase_to_underscore_joined(self): input_vs_expected = [ ("GarbageCollection", "garbage_collection"), ("DD", "dd"), ("rr", "rr"), ("AABbbC", "aa_bbb_c"), ("AABbbCCCDd", "aa_bbb_ccc_dd"), ("Manager", "manager"), ("EthernetInterfaceCollection", "ethernet_interface_collection"), (" ", " "), ] for inp, exp in input_vs_expected: self.assertEqual( exp, rsd_lib_utils.camelcase_to_underscore_joined(inp) ) def test_camelcase_to_underscore_joined_fails_with_empty_string(self): self.assertRaisesRegex( ValueError, '"camelcase_str" cannot be empty', rsd_lib_utils.camelcase_to_underscore_joined, "", )