def test_lsblk_uuid_no_lsblk(self): module = Mock() module.get_bin_path = Mock(return_value=None) lh = linux.LinuxHardware(module=module, load_on_init=False) lsblk_uuids = lh._lsblk_uuid() self.assertIsInstance(lsblk_uuids, dict) self.assertEqual(len(lsblk_uuids), 0)
def test_blkid_uuid(self): module = Mock() module.run_command = Mock(return_value=(0, BLKID_OUTPUT, '')) # (rc, out, err) lh = linux.LinuxHardware(module=module, load_on_init=False) blkid_uuid = lh._blkid_uuid('mock_device') self.assertEqual(blkid_uuid, '57b1a3e7-9019-4747-9809-7ec52bba9179')
def idrac_configure_services_mock(self, mocker): omsdk_mock = MagicMock() idrac_obj = MagicMock() omsdk_mock.file_share_manager = idrac_obj omsdk_mock.config_mgr = idrac_obj type(idrac_obj).create_share_obj = Mock(return_value="servicesstatus") type(idrac_obj).set_liason_share = Mock(return_value="servicestatus") return idrac_obj
def test_find_bind_mounts_no_findmnts(self): module = Mock() module.get_bin_path = Mock(return_value=None) lh = hardware.linux.LinuxHardware(module=module, load_on_init=False) bind_mounts = lh._find_bind_mounts() self.assertIsInstance(bind_mounts, set) self.assertEqual(len(bind_mounts), 0)
def _mock_module(self): mock_module = Mock() mock_module.params = {'gather_subset': self.gather_subset, 'gather_timeout': 10, 'filter': '*'} mock_module.get_bin_path = Mock(return_value='/usr/sbin/capsh') mock_module.run_command = Mock(return_value=(0, 'Current: =ep', '')) return mock_module
def _mock_module(self): mock_module = Mock() mock_module.params = { 'gather_subset': self.gather_subset, 'gather_timeout': 5, 'filter': '*' } mock_module.get_bin_path = Mock(return_value=None) return mock_module
def mock_module(): mock_module = Mock() mock_module.params = { 'gather_subset': ['all'], 'gather_timeout': 5, 'filter': '*' } mock_module.get_bin_path = Mock(return_value=None) return mock_module
def get_port_mock_object(self): """ Helper method to return an na_ontap_port object """ port_obj = port_module() port_obj.asup_log_for_cserver = Mock(return_value=None) port_obj.server = Mock() port_obj.server.invoke_successfully = Mock() return port_obj
def test_disable_server_graceful(self): set_module_args( dict(nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', disabled=True, graceful=True)) from ansible.modules.network.netscaler import netscaler_server client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_mock = Mock() d = { 'graceful': True, 'delay': 20, } with patch.multiple( 'ansible.modules.network.netscaler.netscaler_server', nitro_exception=self.MockException, get_nitro_client=m, diff_list=Mock(return_value=d), get_immutables_intersection=Mock(return_value=[]), server_exists=Mock(side_effect=[True, True]), ConfigProxy=Mock(return_value=server_proxy_mock), do_state_change=Mock(return_value=Mock(errorcode=0))): self.module = netscaler_server result = self.exited() self.assertEqual( d, {}, 'Graceful disable options were not discarded from the diff_list with the actual object' )
def test_absent_cs_vserver_noop_flow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_cs_vserver client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_attrs = { 'diff_object.return_value': {}, } cs_vserver_proxy_mock = Mock() cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_vserver', get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), cs_vserver_exists=Mock(side_effect=[False, False]), cs_vserver_identical=Mock(side_effect=[False, False]), ensure_feature_is_enabled=Mock(return_value=True), ConfigProxy=config_proxy_mock, ): self.module = netscaler_cs_vserver self.exited() cs_vserver_proxy_mock.assert_not_called()
def test_new_cs_vserver_execution_flow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', )) from ansible.modules.network.netscaler import netscaler_cs_vserver client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_attrs = { 'diff_object.return_value': {}, } cs_vserver_proxy_mock = Mock() cs_vserver_proxy_mock.configure_mock(**server_proxy_attrs) config_proxy_mock = Mock(return_value=cs_vserver_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_vserver', get_nitro_client=m, cs_vserver_exists=Mock(side_effect=[False, True]), cs_vserver_identical=Mock(side_effect=[True]), ensure_feature_is_enabled=Mock(return_value=True), ConfigProxy=config_proxy_mock, nitro_exception=self.MockException, do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_cs_vserver self.exited() cs_vserver_proxy_mock.assert_has_calls([call.add()])
def test_save_config_not_called_on_state_present(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_gslb_vserver client_mock = Mock() m = Mock(return_value=client_mock) gslb_service_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_vserver', get_nitro_client=m, gslb_vserver_exists=Mock(side_effect=[False, True]), gslb_vserver_identical=Mock(side_effect=[True]), nitro_exception=self.MockException, do_state_change=Mock(return_value=Mock(errorcode=0)), ensure_feature_is_enabled=Mock(), ConfigProxy=Mock(return_value=gslb_service_proxy_mock), ): self.module = netscaler_gslb_vserver self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_absent_gslb_site_failed_delete(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_gslb_site client_mock = Mock() m = Mock(return_value=client_mock) glsb_site_proxy_attrs = { 'diff_object.return_value': {}, } gslb_site_proxy_mock = Mock() gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_site', nitro_exception=self.MockException, get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), gslb_site_exists=Mock(side_effect=[True, True]), gslb_site_identical=Mock(side_effect=[False, False]), ensure_feature_is_enabled=Mock(), ConfigProxy=config_proxy_mock, ): self.module = netscaler_gslb_site result = self.failed() self.assertEqual(result['msg'], 'GSLB site still exists') self.assertTrue(result['failed'])
def test_disabled_state_change_called(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', )) from ansible.modules.network.netscaler import netscaler_cs_vserver cs_vserver_proxy_mock = Mock() do_state_change_mock = Mock(return_value=Mock(errorcode=0)) client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_vserver', get_nitro_client=Mock(return_value=client_mock), ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), cs_vserver_exists=Mock(side_effect=[True, True]), cs_vserver_identical=Mock(side_effect=[True, True]), nitro_exception=self.MockException, do_state_change=do_state_change_mock, ): self.module = netscaler_cs_vserver self.exited() self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change')
def test_present_gslb_site_identical_flow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', )) from ansible.modules.network.netscaler import netscaler_gslb_site client_mock = Mock() m = Mock(return_value=client_mock) glsb_site_proxy_attrs = { 'diff_object.return_value': {}, } gslb_site_proxy_mock = Mock() gslb_site_proxy_mock.configure_mock(**glsb_site_proxy_attrs) config_proxy_mock = Mock(return_value=gslb_site_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_site', get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), gslb_site_exists=Mock(side_effect=[True, True]), gslb_site_identical=Mock(side_effect=[True, True]), nitro_exception=self.MockException, ensure_feature_is_enabled=Mock(), ConfigProxy=config_proxy_mock, ): self.module = netscaler_gslb_site self.exited() gslb_site_proxy_mock.assert_not_called()
def _mock_module(self): mock_module = Mock() mock_module.params = { 'gather_subset': self.gather_subset, 'gather_timeout': 10, 'filter': '*' } mock_module.get_bin_path = Mock(return_value='/not/actually/facter') mock_module.run_command = Mock(return_value=(0, facter_json_output, '')) return mock_module
def _mock_module(self): mock_module = Mock() mock_module.params = { 'gather_subset': self.gather_subset, 'gather_timeout': 10, 'filter': '*' } mock_module.get_bin_path = Mock(return_value='/usr/bin/lsb_release') mock_module.run_command = Mock( return_value=(0, lsb_release_a_fedora_output, '')) return mock_module
def mock_module(gather_subset=None, filter=None): if gather_subset is None: gather_subset = ['all', '!facter', '!ohai'] if filter is None: filter = '*' mock_module = Mock() mock_module.params = {'gather_subset': gather_subset, 'gather_timeout': 5, 'filter': filter} mock_module.get_bin_path = Mock(return_value=None) return mock_module
def test_values_copied_to_actual(self): actual = Mock() client = Mock() values = { 'some_key': 'some_value', } ConfigProxy(actual=actual, client=client, attribute_values_dict=values, readwrite_attrs=['some_key']) self.assertEqual(actual.some_key, values['some_key'], msg='Failed to pass correct value from values dict')
def test_missing_from_values_dict_not_copied_to_actual(self): actual = Mock() client = Mock() values = { 'irrelevant_key': 'irrelevant_value', } print('value %s' % actual.key_for_none) ConfigProxy(actual=actual, client=client, attribute_values_dict=values, readwrite_attrs=['key_for_none']) print('none %s' % getattr(actual, 'key_for_none')) self.assertIsInstance(actual.key_for_none, Mock)
def test_main_configure_users_failure_case( self, idrac_connection_configure_users_mock, idrac_default_args, idrac_file_manager_config_users_mock): idrac_default_args.update({"share_name": "sharename"}) error_msg = "Error in Runtime" obj2 = MagicMock() idrac_connection_configure_users_mock.file_share_manager = obj2 idrac_connection_configure_users_mock.config_mgr = obj2 type(obj2).create_share_obj = Mock(side_effect=Exception(error_msg)) type(obj2).set_liason_share = Mock(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_ensure_feature_is_enabled_called(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_monitor client_mock = Mock() lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) feature_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_monitor', get_nitro_client=Mock(return_value=client_mock), lbmonitor_exists=Mock(side_effect=[True, True]), lbmonitor_identical=Mock(side_effect=[True, True]), ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), ensure_feature_is_enabled=feature_mock, ): self.module = netscaler_lb_monitor self.exited() feature_mock.assert_called_with(client_mock, 'LB')
def test_present_server_failed_create(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', )) from ansible.modules.network.netscaler import netscaler_ssl_certkey client_mock = Mock() m = Mock(return_value=client_mock) ssl_certkey_proxy_attrs = { 'diff_object.return_value': {}, } ssl_certkey_proxy_mock = Mock() ssl_certkey_proxy_mock.configure_mock(**ssl_certkey_proxy_attrs) config_proxy_mock = Mock(return_value=ssl_certkey_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_ssl_certkey', nitro_exception=self.MockException, get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), key_exists=Mock(side_effect=[False, False]), key_identical=Mock(side_effect=[False, False]), ConfigProxy=config_proxy_mock, ): self.module = netscaler_ssl_certkey result = self.failed() self.assertEqual(result['msg'], 'SSL certkey does not exist') self.assertTrue(result['failed'])
def test_servicegroup_monitor_bindings_sanity(self): self.set_module_state('present') from ansible.modules.network.netscaler import netscaler_servicegroup servicegroup_proxy_mock = MagicMock() attrs = { 'diff_object.return_value': {}, } servicegroup_proxy_mock.configure_mock(**attrs) m = MagicMock(return_value=servicegroup_proxy_mock) sync_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_servicegroup', ConfigProxy=m, servicegroup_exists=Mock(side_effect=[True, True]), servicegroup_identical=Mock(side_effect=[True, True]), monitor_bindings_identical=Mock(side_effect=[False, False]), sync_monitor_bindings=Mock(), servicemembers_identical=Mock(side_effect=[True, True]), nitro_exception=self.MockException, sync_service_members=sync_mock, do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_servicegroup result = self.failed() self.assertEqual(result['msg'], 'Monitor bindings are not identical')
def test_create_new_lb_monitor_workflow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_monitor lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_monitor', get_nitro_client=Mock(return_value=Mock()), lbmonitor_exists=Mock(side_effect=[False, True]), lbmonitor_identical=Mock(side_effect=[True]), ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), ): self.module = netscaler_lb_monitor result = self.exited() lb_monitor_proxy_mock.assert_has_calls([call.add()]) self.assertTrue(result['changed'])
def test_update_servicegroup_when_service_members_differ(self): self.set_module_state('present') from ansible.modules.network.netscaler import netscaler_servicegroup servicegroup_proxy_mock = MagicMock() attrs = { 'diff_object.return_value': {}, } servicegroup_proxy_mock.configure_mock(**attrs) m = MagicMock(return_value=servicegroup_proxy_mock) sync_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_servicegroup', ConfigProxy=m, servicegroup_exists=Mock(side_effect=[True, True]), servicegroup_identical=Mock(side_effect=[True, True]), monitor_bindings_identical=Mock(side_effect=[True, True]), sync_monitor_bindings=Mock(), servicemembers_identical=Mock(side_effect=[False, True]), sync_service_members=sync_mock, do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_servicegroup result = self.exited() # poor man's assert_called_once since python3.5 does not implement that mock method self.assertEqual(len(sync_mock.mock_calls), 1, msg='sync monitor bindings not called once') self.assertTrue(result['changed'], msg='Change not recorded')
def test_lb_monitor_exists_sanity_check(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_monitor lb_monitor_proxy_mock = Mock(diff_object=Mock(return_value={})) client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_monitor', get_nitro_client=Mock(return_value=client_mock), lbmonitor_exists=Mock(side_effect=[False, False]), lbmonitor_identical=Mock(side_effect=[False, True]), ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), nitro_exception=self.MockException, ): self.module = netscaler_lb_monitor result = self.failed() self.assertEqual(result['msg'], 'lb monitor does not exist')
def test_raw_test_environment_is_None(self): task = MagicMock(Task) task.async_val = False task.args = {'_raw_params': 'Args1'} task.environment = None self.play_context.check_mode = False self.mock_am = ActionModule(task, self.connection, self.play_context, loader=None, templar=None, shared_loader_obj=None) self.mock_am._low_level_execute_command = Mock(return_value={}) self.mock_am.display = Mock() self.assertEqual(task.environment, None)
def test_save_config_not_called_on_state_present(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_server client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_server', get_nitro_client=m, server_exists=Mock(side_effect=[False, True]), ConfigProxy=Mock(return_value=server_proxy_mock), diff_list=Mock(return_value={}), do_state_change=Mock(return_value=Mock(errorcode=0))): self.module = netscaler_server self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_do_state_change_fail(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='192.0.2.1', state='present', )) from ansible.modules.network.netscaler import netscaler_server client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_server', nitro_exception=self.MockException, get_nitro_client=m, server_exists=Mock(side_effect=[True, False]), ConfigProxy=Mock(return_value=server_proxy_mock), diff_list=Mock(return_value={}), do_state_change=Mock(return_value=Mock( errorcode=1, message='Failed on purpose'))): self.module = netscaler_server result = self.failed() self.assertEqual( result['msg'], 'Error when setting disabled state. errorcode: 1 message: Failed on purpose' )