From cb86571ba26782e4927cc2b08e657d6a2faf4aee Mon Sep 17 00:00:00 2001 From: Debayan Ray Date: Mon, 31 Jul 2017 05:37:19 -0400 Subject: [PATCH] Add client tests for redfish calls Add client tests for redfish calls Change-Id: I4b699098bb0d7518425e28a8c815628fe9e893de --- proliantutils/ilo/client.py | 2 +- proliantutils/tests/ilo/test_client.py | 49 ++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/proliantutils/ilo/client.py b/proliantutils/ilo/client.py index 6e9be0b2..53c247ac 100644 --- a/proliantutils/ilo/client.py +++ b/proliantutils/ilo/client.py @@ -70,7 +70,7 @@ SUPPORTED_REDFISH_METHODS = [ 'activate_license', 'eject_virtual_media', 'insert_virtual_media', - 'set_vm_status' + 'set_vm_status', 'update_firmware', 'get_persistent_boot_device', 'set_one_time_boot', diff --git a/proliantutils/tests/ilo/test_client.py b/proliantutils/tests/ilo/test_client.py index d3326acf..856c710d 100644 --- a/proliantutils/tests/ilo/test_client.py +++ b/proliantutils/tests/ilo/test_client.py @@ -986,3 +986,52 @@ class IloClientTestCase(testtools.TestCase): self.client.get_essential_properties) call_mock.assert_called_once_with('get_essential_properties') self.assertFalse(snmp_mock.called) + + +class IloRedfishClientTestCase(testtools.TestCase): + + @mock.patch.object(redfish, 'RedfishOperations', + spec_set=True, autospec=True) + @mock.patch.object(ribcl.RIBCLOperations, 'get_product_name') + def setUp(self, product_mock, redfish_mock): + super(IloRedfishClientTestCase, self).setUp() + self.redfish_mock = redfish_mock + product_mock.return_value = 'Gen10' + self.client = client.IloClient("1.2.3.4", "Admin", "admin") + + def test_calling_redfish_operations_gen10(self): + self.client.model = 'Gen10' + + def validate_method_calls(methods, method_args, missed_ops): + for redfish_method_name in methods: + try: + if method_args: + eval('self.client.' + redfish_method_name)( + *method_args) + else: + eval('self.client.' + redfish_method_name)() + + self.assertTrue(eval( + 'self.redfish_mock.return_value.' + + redfish_method_name).called) + validate_method_calls.no_test_cases += 1 + except TypeError: + missed_ops.append(redfish_method_name) + + validate_method_calls.no_test_cases = 0 + missed_operations = [] + validate_method_calls( + client.SUPPORTED_REDFISH_METHODS, (), missed_operations) + + more_missed_operations = [] + validate_method_calls( + missed_operations, ('arg',), more_missed_operations) + + even_more_missed_operations = [] + validate_method_calls( + more_missed_operations, ('arg1', 'arg2'), + even_more_missed_operations) + + self.assertEqual(0, len(even_more_missed_operations)) + self.assertEqual(len(client.SUPPORTED_REDFISH_METHODS), + validate_method_calls.no_test_cases)