def idrac_mock(self, mocker): omsdk_mock = MagicMock() idrac_obj = MagicMock() omsdk_mock.config_mgr = idrac_obj type(idrac_obj).LCStatus = PropertyMock(return_value="lcstatus") type(idrac_obj).LCReady = PropertyMock(return_value="lcready") return idrac_obj
def test_run_idrac_eventing_config_success_case05(self, idrac_connection_configure_eventing_mock, idrac_file_manager_config_eventing_mock, idrac_default_args): idrac_default_args.update({"share_name": "sharename", "share_mnt": "mountname", "share_user": "******", "share_password": "******", "destination_number": None, "destination": None, "snmp_v3_username": None, "snmp_trap_state": None, "alert_number": None, "email_alert_state": None, "address": None, "custom_message": None, "enable_alerts": None, "authentication": None, "smtp_ip_address": None, "smtp_port": None, "username": None, "password": None}) message = {"changes_applicable": False, "Message": "No changes were applied", "changed": False, "Status": "Success"} obj = MagicMock() idrac_connection_configure_eventing_mock.config_mgr = obj type(obj).configure_snmp_trap_destination = PropertyMock(return_value=message) type(obj).configure_email_alerts = PropertyMock(return_value=message) type(obj).configure_idrac_alerts = PropertyMock(return_value=message) type(obj).configure_smtp_server_settings = PropertyMock(return_value=message) idrac_connection_configure_eventing_mock.config_mgr.apply_changes.return_value = message f_module = self.get_module_mock(params=idrac_default_args) f_module.check_mode = False msg, err = self.module.run_idrac_eventing_config(idrac_connection_configure_eventing_mock, f_module) assert msg == {'msg': {'Status': 'Success', 'Message': 'No changes were applied', 'changed': False, 'changes_applicable': False}, 'failed': False, 'changed': False} assert msg['changed'] is False assert msg['failed'] is False
def test_main_get_lcstatus_failed_case01(self, idrac_connection_lcstatus_mock, idrac_default_args): error_msg = "Error in Runtime" obj2 = MagicMock() idrac_connection_lcstatus_mock.config_mgr = obj2 type(obj2).LCStatus = PropertyMock(side_effect=Exception(error_msg)) type(obj2).LCReady = PropertyMock(side_effect=Exception(error_msg)) msg = self._run_module_with_fail_json(idrac_default_args) assert msg['failed'] is True assert msg['msg'] == "Error: {0}".format(error_msg)
def test_run_get_lcstatus_failed_case01(self, idrac_connection_lcstatus_mock, idrac_default_args): f_module = self.get_module_mock(params=idrac_default_args) error_msg = "Error in Runtime" obj2 = MagicMock() idrac_connection_lcstatus_mock.config_mgr = obj2 type(obj2).LCStatus = PropertyMock(side_effect=Exception(error_msg)) type(obj2).LCReady = PropertyMock(side_effect=Exception(error_msg)) msg, err = self.module.run_get_lc_status(idrac_connection_lcstatus_mock, f_module) assert msg['failed'] is True assert msg['msg'] == "Error: {0}".format(error_msg) assert err is True
def test_run_get_lcstatus_success_case01(self, idrac_connection_lcstatus_mock, idrac_default_args): obj2 = MagicMock() idrac_connection_lcstatus_mock.config_mgr = obj2 type(obj2).LCStatus =PropertyMock(return_value="lcstatus") type(obj2).LCReady = PropertyMock(return_value="lcready") f_module = self.get_module_mock(params=idrac_default_args) msg, err = self.module.run_get_lc_status(idrac_connection_lcstatus_mock, f_module) assert msg['msg']['LCReady'] == "lcready" assert msg['msg']['LCStatus'] == "lcstatus" assert msg['failed'] is False assert err is False
def test_main_configure_eventing_failure_case(self, idrac_connection_configure_eventing_mock, idrac_default_args, idrac_file_manager_config_eventing_mock): idrac_default_args.update({"share_name": "sharename"}) error_msg = "Error in Runtime" obj2 = MagicMock() idrac_connection_configure_eventing_mock.file_share_manager = obj2 idrac_connection_configure_eventing_mock.config_mgr = obj2 type(obj2).create_share_obj = PropertyMock(side_effect=Exception(error_msg)) type(obj2).set_liason_share = PropertyMock(side_effect=Exception(error_msg)) msg = self._run_module_with_fail_json(idrac_default_args) assert msg['failed'] is True assert msg['msg'] == "Error: {0}".format(error_msg)
def test_run_bios_config_status_success_changed_false_case02( self, idrac_connection_configure_bios_mock, mocker, idrac_default_args, idrac_file_manager_config_bios_mock): idrac_default_args.update({ "share_name": "sharename", "share_mnt": "mountname", "share_user": "******", "share_password": "******", "boot_sources": None, "boot_mode": "Bios", "nvme_mode": "NonRaid", "secure_boot_mode": "AuditMode", "onetime_boot_mode": "OneTimeBootSeq", "attributes": [""], "boot_sequence": None }) message = { "Status": "Success", "Message": "No changes found to apply." } f_module = self.get_module_mock(params=idrac_default_args) f_module.deprecate.return_value = "boot_mode, nvme_mode, secure_boot_mode, onetime_boot_mode and " \ "boot_sequence options have been deprecated, and will be removed. ' \ 'Please use the attributes option for Bios attributes configuration instead." f_module.check_mode = False obj = MagicMock() obj1 = MagicMock() obj2 = MagicMock() obj3 = MagicMock() idrac_connection_configure_bios_mock.config_mgr.configure_boot_mode = obj type(obj).BootModeTypes = PropertyMock(return_value="Bios") idrac_connection_configure_bios_mock.config_mgr.configure_nvme_mode = obj1 type(obj).NvmeModeTypes = PropertyMock(return_value="NonRaid") idrac_connection_configure_bios_mock.config_mgr.configure_secure_boot_mode = obj2 type(obj).SecureBootModeTypes = PropertyMock(return_value="AuditMode") idrac_connection_configure_bios_mock.config_mgr.configure_onetime_boot_mode = obj3 type(obj).OneTimeBootModeTypes = PropertyMock( return_value="OneTimeBootSeq") idrac_connection_configure_bios_mock.config_mgr.configure_bios.return_value = message idrac_connection_configure_bios_mock.config_mgr.apply_changes.return_value = message msg, err = self.module.run_server_bios_config( idrac_connection_configure_bios_mock, f_module) assert msg == { 'msg': { 'Status': 'Success', "Message": "No changes found to apply." }, 'failed': False, 'changed': False } assert err is False assert msg['changed'] is False
def test_multiple_failures(self, monkeypatch): monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False) monkeypatch.setattr(C, 'ANSIBLE_SSH_RETRIES', 9) monkeypatch.setattr('time.sleep', lambda x: None) self.mock_popen_res.stdout.read.side_effect = [b""] * 10 self.mock_popen_res.stderr.read.side_effect = [b""] * 10 type(self.mock_popen_res).returncode = PropertyMock(side_effect=[255] * 30) self.mock_selector.select.side_effect = [ [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)], [], ] * 10 self.mock_selector.get_map.side_effect = lambda: True self.conn._build_command = MagicMock() self.conn._build_command.return_value = 'ssh' self.conn.get_option = MagicMock() self.conn.get_option.return_value = True pytest.raises(AnsibleConnectionFailure, self.conn.exec_command, 'ssh', 'some data') assert self.mock_popen.call_count == 10
def test_incorrect_password(self, monkeypatch): monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False) monkeypatch.setattr(C, 'ASSIBLE_SSH_RETRIES', 5) monkeypatch.setattr('time.sleep', lambda x: None) self.mock_popen_res.stdout.read.side_effect = [b''] self.mock_popen_res.stderr.read.side_effect = [b'Permission denied, please try again.\r\n'] type(self.mock_popen_res).returncode = PropertyMock(side_effect=[5] * 4) self.mock_selector.select.side_effect = [ [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)], [], ] self.mock_selector.get_map.side_effect = lambda: True self.conn._build_command = MagicMock() self.conn._build_command.return_value = [b'sshpass', b'-d41', b'ssh', b'-C'] self.conn.get_option = MagicMock() self.conn.get_option.return_value = True exception_info = pytest.raises(AssibleAuthenticationFailure, self.conn.exec_command, 'sshpass', 'some data') assert exception_info.value.message == ('Invalid/incorrect username/password. Skipping remaining 5 retries to prevent account lockout: ' 'Permission denied, please try again.') assert self.mock_popen.call_count == 1
def test_retry_then_success(self, monkeypatch): monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False) monkeypatch.setattr(C, 'ASSIBLE_SSH_RETRIES', 3) monkeypatch.setattr('time.sleep', lambda x: None) self.mock_popen_res.stdout.read.side_effect = [b"", b"my_stdout\n", b"second_line"] self.mock_popen_res.stderr.read.side_effect = [b"", b"my_stderr"] type(self.mock_popen_res).returncode = PropertyMock(side_effect=[255] * 3 + [0] * 4) self.mock_selector.select.side_effect = [ [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)], [], [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)], [] ] self.mock_selector.get_map.side_effect = lambda: True self.conn._build_command = MagicMock() self.conn._build_command.return_value = 'ssh' self.conn.get_option = MagicMock() self.conn.get_option.return_value = True return_code, b_stdout, b_stderr = self.conn.exec_command('ssh', 'some data') assert return_code == 0 assert b_stdout == b'my_stdout\nsecond_line' assert b_stderr == b'my_stderr'
def idrac_change_powerstate_mock(self, mocker): omsdk_mock = MagicMock() idrac_obj = MagicMock() omsdk_mock.config_mgr.ComputerSystemResetTypesEnum = idrac_obj type(idrac_obj).change_power = PropertyMock( return_value="change_power") return idrac_obj
def test_fetch_file_retries(self, monkeypatch): monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False) monkeypatch.setattr(C, 'ASSIBLE_SSH_RETRIES', 3) monkeypatch.setattr('time.sleep', lambda x: None) monkeypatch.setattr('assible.plugins.connection.ssh.os.path.exists', lambda x: True) self.mock_popen_res.stdout.read.side_effect = [b"", b"my_stdout\n", b"second_line"] self.mock_popen_res.stderr.read.side_effect = [b"", b"my_stderr"] type(self.mock_popen_res).returncode = PropertyMock(side_effect=[255] * 4 + [0] * 4) self.mock_selector.select.side_effect = [ [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)], [], [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)], [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)], [] ] self.mock_selector.get_map.side_effect = lambda: True self.conn._build_command = MagicMock() self.conn._build_command.return_value = 'sftp' return_code, b_stdout, b_stderr = self.conn.fetch_file('/path/to/in/file', '/path/to/dest/file') assert return_code == 0 assert b_stdout == b"my_stdout\nsecond_line" assert b_stderr == b"my_stderr" assert self.mock_popen.call_count == 2
def test_run_change_powerstate_success_case01( self, idrac_change_power_state_connection_mock, idrac_default_args, mocker): idrac_default_args.update({"change_power": "GracefulRestart"}) message = { 'Status': 'Success', 'Message': 'Changes found to commit!', 'changes_applicable': True } obj2 = MagicMock() idrac_change_power_state_connection_mock.config_mgr = obj2 type(obj2).change_power = PropertyMock(return_value=message) f_module = self.get_module_mock(params=idrac_default_args, check_mode=True) result = self.module.run_change_power_state( idrac_change_power_state_connection_mock, f_module) assert result == ({ 'changed': True, 'failed': False, 'msg': { 'Message': 'Changes found to commit!', 'Status': 'Success', 'changes_applicable': True } }, False)
def test_main_idrac_get_firmware_inventory_faild_case01( self, idrac_get_firmware_inventory_connection_mock, idrac_default_args): error_msg = "Error occurs" obj2 = MagicMock() idrac_get_firmware_inventory_connection_mock.update_mgr = obj2 type(obj2).InstalledFirmware = PropertyMock( side_effect=Exception(error_msg)) result = self._run_module_with_fail_json(idrac_default_args) assert result['failed'] is True assert result['msg'] == "Error: {0}".format(error_msg)
def test_run_change_powerstate_failed_case02( self, idrac_change_power_state_connection_mock, idrac_default_args): idrac_default_args.update({"change_power": "GracefulRestart"}) error_msg = "Error in Runtime" obj2 = MagicMock() idrac_change_power_state_connection_mock.config_mgr = obj2 type(obj2).change_power = PropertyMock( side_effect=Exception(error_msg)) msg = self._run_module_with_fail_json(idrac_default_args) assert msg['failed'] is True assert msg['msg'] == "Error: {0}".format(error_msg)
def test_main_get_lc_job_status_failed_case01( self, idrac_get_lc_job_status_connection_mock, idrac_default_args): idrac_default_args.update({"job_id": "job_id"}) error_msg = "Error occurs" obj2 = MagicMock() idrac_get_lc_job_status_connection_mock.job_mgr = obj2 type(obj2).get_job_status = PropertyMock( side_effect=Exception(error_msg)) result = self._run_module_with_fail_json(idrac_default_args) assert result['changed'] is False assert result['failed'] is True assert result['msg'] == "Error: {0}".format(error_msg)
def test_run_get_firmware_inventory_failed_case01( self, idrac_get_firmware_inventory_connection_mock, idrac_default_args): f_module = self.get_module_mock(params=idrac_default_args) error_msg = "Error in Runtime" obj2 = MagicMock() idrac_get_firmware_inventory_connection_mock.update_mgr = obj2 type(obj2).InstalledFirmware = PropertyMock( side_effect=Exception(error_msg)) msg, err = self.module.run_get_firmware_inventory( idrac_get_firmware_inventory_connection_mock, f_module) assert msg['failed'] is True assert msg['msg'] == "Error: {0}".format(error_msg) assert err is True
def test_run_delete_lc_job_failed_case01( self, idrac_connection_delete_lc_job_mock, idrac_default_args): idrac_default_args.update({"job_id": "job_id"}) f_module = self.get_module_mock(params=idrac_default_args, check_mode=True) idrac_connection_delete_lc_job_mock.job_mgr.get_job_status.return_value = { "status": "Fault" } obj2 = MagicMock() idrac_connection_delete_lc_job_mock.job_mgr = obj2 type(obj2).get_job_status = PropertyMock(side_effect=Exception()) msg, err = self.module.run_delete_lc_job( idrac_connection_delete_lc_job_mock, f_module) assert msg['failed'] is True assert err is True
def test_netconf_exec_command(self): pc = PlayContext() conn = connection_loader.get('netconf', pc, '/dev/null') conn._connected = True mock_reply = MagicMock(name='reply') type(mock_reply).data_xml = PropertyMock(return_value='<test/>') mock_manager = MagicMock(name='self._manager') mock_manager.rpc.return_value = mock_reply conn._manager = mock_manager out = conn.exec_command('<test/>') self.assertEqual('<test/>', out)
def test_run_get_lc_job_status_success_case01( self, idrac_get_lc_job_status_connection_mock, idrac_default_args): idrac_default_args.update({"job_id": "job_id"}) obj2 = MagicMock() idrac_get_lc_job_status_connection_mock = obj2 type(obj2).get_job_status = PropertyMock(return_value="job_id") f_module = self.get_module_mock(params=idrac_default_args) msg, err = self.module.run_get_lc_job_status( idrac_get_lc_job_status_connection_mock, f_module) assert msg == { 'changed': False, 'failed': False, 'msg': idrac_get_lc_job_status_connection_mock.job_mgr.get_job_status() } assert msg['failed'] is False assert err is False
def test_run_get_firmware_inventory_success_case01( self, idrac_get_firmware_inventory_connection_mock, idrac_default_args): obj2 = MagicMock() idrac_get_firmware_inventory_connection_mock.update_mgr = obj2 type(obj2).InstalledFirmware = PropertyMock(return_value="msg") f_module = self.get_module_mock(params=idrac_default_args) msg, err = self.module.run_get_firmware_inventory( idrac_get_firmware_inventory_connection_mock, f_module) assert msg == { 'failed': False, 'msg': idrac_get_firmware_inventory_connection_mock.update_mgr. InstalledFirmware } assert msg['failed'] is False assert err is False
def test_run_get_firmware_inventory_failed_case02( self, idrac_get_firmware_inventory_connection_mock, idrac_default_args): message = {'Status': "Failed", "Message": "Fetched..."} obj2 = MagicMock() idrac_get_firmware_inventory_connection_mock.update_mgr = obj2 type(obj2).InstalledFirmware = PropertyMock(return_value=message) f_module = self.get_module_mock(params=idrac_default_args) result = self.module.run_get_firmware_inventory( idrac_get_firmware_inventory_connection_mock, f_module) assert result == ({ 'msg': { 'Status': 'Failed', 'Message': 'Fetched...' }, 'failed': True }, False) if "Status" in result[0]['msg']: if not result[0]['msg']['Status'] == "Success": assert result[0]['failed'] is True
def idrac_mock(self, mocker): omsdk_mock = MagicMock() idrac_obj = MagicMock() omsdk_mock.job_mgr = idrac_obj type(idrac_obj).get_job_status = PropertyMock(return_value="job_id") return idrac_obj
def idrac_firmware_mock(self, mocker): omsdk_mock = MagicMock() idrac_obj = MagicMock() omsdk_mock.update_mgr = idrac_obj type(idrac_obj).InstalledFirmware = PropertyMock(return_value="msg") return idrac_obj
def idrac_lc_job_mock(self, mocker): omsdk_mock = MagicMock() idrac_obj = MagicMock() omsdk_mock.job_mgr = idrac_obj type(idrac_obj).delete_job = PropertyMock(return_value="msg") return idrac_obj