def test_save_config_called_on_state_present(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_cs_vserver client_mock = Mock() m = Mock(return_value=client_mock) cs_vserver_proxy_mock = 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), diff_list=Mock(return_value={}), nitro_exception=self.MockException, do_state_change=Mock(return_value=Mock(errorcode=0)), ConfigProxy=Mock(return_value=cs_vserver_proxy_mock), ): self.module = netscaler_cs_vserver self.exited() self.assertIn(call.save_config(), client_mock.mock_calls)
def test_graceful_nitro_error_on_login(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_monitor class MockException(Exception): def __init__(self, *args, **kwargs): self.errorcode = 0 self.message = '' client_mock = Mock() client_mock.login = Mock(side_effect=MockException) m = Mock(return_value=client_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_monitor', get_nitro_client=m, nitro_exception=MockException, ): self.module = netscaler_lb_monitor result = self.failed() self.assertTrue( result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
def test_absent_cs_vserver_failed_delete(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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', nitro_exception=self.MockException, get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), cs_vserver_exists=Mock(side_effect=[True, True]), 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 result = self.failed() self.assertEqual(result['msg'], 'CS vserver still exists') self.assertTrue(result['failed'])
def test_absent_state_sanity_check(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) 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), ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), lbmonitor_exists=Mock(side_effect=[True, True]), nitro_exception=self.MockException, ): self.module = netscaler_lb_monitor result = self.failed() lb_monitor_proxy_mock.assert_has_calls([call.delete()]) self.assertEqual(result['msg'], 'lb monitor still exists')
def test_graceful_nitro_error_on_login(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_monitor class MockException(Exception): def __init__(self, *args, **kwargs): self.errorcode = 0 self.message = '' client_mock = Mock() client_mock.login = Mock(side_effect=MockException) m = Mock(return_value=client_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_monitor', get_nitro_client=m, nitro_exception=MockException, ): self.module = netscaler_lb_monitor result = self.failed() self.assertTrue(result['msg'].startswith('nitro exception'), msg='nitro exception during login not handled properly')
def setUp(self): self.module = rhn_channel self.module.HAS_UP2DATE_CLIENT = True self.mock_exit_fail = patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) self.mock_exit_fail.start() self.addCleanup(self.mock_exit_fail.stop)
def test_ensure_feature_is_enabled_called(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver client_mock = Mock() lb_vserver_proxy_mock = Mock() feature_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[True, True]), servicegroup_bindings_identical=Mock(side_effect=[True, True]), service_bindings_identical=Mock(side_effect=[True, True]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=feature_mock, do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_lb_vserver self.exited() feature_mock.assert_called_with(client_mock, 'LB')
def test_graceful_login_error(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver if sys.version_info[:2] == (2, 6): self.skipTest('requests library not available under python2.6') client_mock = Mock() attrs = {'login.side_effect': requests.exceptions.SSLError} client_mock.configure_mock(**attrs) m = Mock(return_value=client_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=m, nitro_exception=self.MockException, do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_lb_vserver result = self.failed() self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
def test_save_config_not_called_on_state_absent(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver client_mock = Mock() m = Mock(return_value=client_mock) lb_vserver_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=m, lb_vserver_exists=Mock(side_effect=[True, False]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_lb_vserver self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_unregister(self, mock_unlink): """Unregister an host, check that result is changed""" mock_unlink.return_value = True set_module_args({ 'activationkey': 'key', 'username': '******', 'password': '******', 'state': 'absent', }) responses = [ ('auth.login', ['X' * 43]), ('system.deleteSystems', [1]), ('auth.logout', [1]), ] with patch.object(basic.AnsibleModule, 'run_command') as run_command: run_command.return_value = 0, '', '' # successful execution, no output mock_is_registered = PropertyMock(return_value=True) mock_systemid = PropertyMock(return_value=12345) with patch.multiple(rhn_register.Rhn, systemid=mock_systemid, is_registered=mock_is_registered): with mock_request(responses, self.module.__name__): with self.assertRaises(AnsibleExitJson) as result: self.module.main() self.assertTrue(result.exception.args[0]['changed']) self.assertFalse( responses) # all responses should have been consumed self.assertEqual(mock_systemid.call_count, 1) self.assertEqual(mock_is_registered.call_count, 1) self.assertFalse(run_command.called) self.assertEqual(mock_unlink.call_count, 1)
def test_create_trap_non_network(self, *args): set_module_args(dict( name='foo', snmp_version='1', community='public', destination='10.10.10.10', port=1000, password='******', server='localhost', user='******' )) client = AnsibleF5Client( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode, f5_product_name=self.spec.f5_product_name ) # Override methods to force specific logic in the module to happen mm = ModuleManager(client) mm.is_version_non_networked = Mock(return_value=True) patches = dict( create_on_device=DEFAULT, exists=DEFAULT ) with patch.multiple(NonNetworkedManager, **patches) as mo: mo['create_on_device'].side_effect = Mock(return_value=True) mo['exists'].side_effect = Mock(return_value=False) results = mm.exec_module() assert results['changed'] is True assert results['port'] == 1000 assert results['snmp_version'] == '1'
def test_servicegroup_bindings_sanity_check(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock( side_effect=[False, False]), service_bindings_identical=Mock(side_effect=[True, True]), ssl_certkey_bindings_identical=Mock( side_effect=[False, False]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=(Mock(return_value=[])), nitro_exception=self.MockException, ): self.module = netscaler_lb_vserver result = self.failed() self.assertEqual(result['msg'], 'servicegroup bindings are not identical')
def test_update_cs_policy_when_cs_policy_differs(self): self.set_module_state('present') from ansible.modules.network.netscaler import netscaler_cs_policy cs_policy_mock = MagicMock() attrs = { 'diff_object.return_value': {}, } cs_policy_mock.configure_mock(**attrs) m = MagicMock(return_value=cs_policy_mock) policy_exists_mock = Mock(side_effect=[True, True]) policy_identical_mock = Mock(side_effect=[False, True]) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_policy', ConfigProxy=m, policy_exists=policy_exists_mock, policy_identical=policy_identical_mock, ensure_feature_is_enabled=Mock(), nitro_exception=self.MockException, ): self.module = netscaler_cs_policy result = self.exited() cs_policy_mock.assert_has_calls([call.update()]) self.assertTrue(result['changed'], msg='Change not recorded')
def test_save_config_not_called_on_state_present(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_cs_action client_mock = Mock() m = Mock(return_value=client_mock) cs_action_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_action', get_nitro_client=m, action_exists=Mock(side_effect=[False, True]), diff_list=Mock(return_value={}), ensure_feature_is_enabled=Mock(return_value=True), ConfigProxy=Mock(return_value=cs_action_proxy_mock), ): self.module = netscaler_cs_action self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_absent_cs_action_noop_flow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_cs_action client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_attrs = { 'diff_object.return_value': {}, } cs_action_proxy_mock = Mock() cs_action_proxy_mock.configure_mock(**server_proxy_attrs) config_proxy_mock = Mock(return_value=cs_action_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_action', get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), action_exists=Mock(side_effect=[False, False]), action_identical=Mock(side_effect=[False, False]), ensure_feature_is_enabled=Mock(return_value=True), ConfigProxy=config_proxy_mock, ): self.module = netscaler_cs_action self.exited() cs_action_proxy_mock.assert_not_called()
def test_disabled_state_change_called(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_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_lb_vserver', get_nitro_client=Mock(return_value=client_mock), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), lb_vserver_exists=Mock(side_effect=[True, True]), nitro_exception=self.MockException, do_state_change=do_state_change_mock, ): self.module = netscaler_lb_vserver self.exited() self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change')
def test_get_immutables_failure(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() client_mock = Mock() m = Mock(return_value=['some']) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False]), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=m, nitro_exception=self.MockException, ): self.module = netscaler_lb_vserver result = self.failed() self.assertTrue( result['msg'].startswith('Cannot update immutable attributes'), msg='Did not handle immutables error correctly', )
def test_absent_gslb_vserver_execution_flow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_gslb_vserver client_mock = Mock() m = Mock(return_value=client_mock) glsb_service_proxy_attrs = { 'diff_object.return_value': {}, } gslb_service_proxy_mock = Mock() gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) config_proxy_mock = Mock(return_value=gslb_service_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_vserver', get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), gslb_vserver_exists=Mock(side_effect=[True, False]), gslb_vserver_identical=Mock(side_effect=[False, True]), ensure_feature_is_enabled=Mock(), ConfigProxy=config_proxy_mock, ): self.module = netscaler_gslb_vserver self.exited() gslb_service_proxy_mock.assert_has_calls([call.delete()])
def test_new_gslb_vserver_execution_flow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_gslb_vserver client_mock = Mock() m = Mock(return_value=client_mock) glsb_service_proxy_attrs = { 'diff_object.return_value': {}, } gslb_service_proxy_mock = Mock() gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) config_proxy_mock = Mock(return_value=gslb_service_proxy_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=config_proxy_mock, ): self.module = netscaler_gslb_vserver self.exited() gslb_service_proxy_mock.assert_has_calls([call.add()])
def test_save_config_called_on_state_absent(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) 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=[True, False]), nitro_exception=self.MockException, ensure_feature_is_enabled=Mock(), ConfigProxy=Mock(return_value=gslb_service_proxy_mock), ): self.module = netscaler_gslb_vserver self.exited() self.assertIn(call.save_config(), client_mock.mock_calls)
def test_update_lb_vserver_workflow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=Mock()), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock(side_effect=[True, True]), service_bindings_identical=Mock(side_effect=[True, True]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=Mock(return_value=[]), ): self.module = netscaler_lb_vserver result = self.exited() lb_vserver_proxy_mock.assert_has_calls([call.update()]) self.assertTrue(result['changed'])
def test_graceful_nitro_exception_state_absent(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_cs_action class MockException(Exception): def __init__(self, *args, **kwargs): self.errorcode = 0 self.message = '' m = Mock(side_effect=MockException) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_action', action_exists=m, ensure_feature_is_enabled=Mock(return_value=True), nitro_exception=MockException): self.module = netscaler_cs_action result = self.failed() self.assertTrue( result['msg'].startswith('nitro exception'), msg='Nitro exception not caught on operation absent')
def test_ssl_bindings_not_called_for_non_ssl_service(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, servicetype='HTTP', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() ssl_sync_mock = Mock() client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock(side_effect=[True, True]), service_bindings_identical=Mock(side_effect=[True, True]), ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), ssl_certkey_bindings_sync=ssl_sync_mock, ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=(Mock(return_value=[])), ): self.module = netscaler_lb_vserver result = self.exited() ssl_sync_mock.assert_not_called() self.assertTrue(result['changed'])
def test_new_gslb_vserver_execution_flow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_gslb_vserver client_mock = Mock() m = Mock(return_value=client_mock) glsb_service_proxy_attrs = { 'diff_object.return_value': {}, } gslb_service_proxy_mock = Mock() gslb_service_proxy_mock.configure_mock(**glsb_service_proxy_attrs) config_proxy_mock = Mock(return_value=gslb_service_proxy_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=config_proxy_mock, ): self.module = netscaler_gslb_vserver self.exited() gslb_service_proxy_mock.assert_has_calls([call.add()])
def test_create_new_lb_monitor_workflow(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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_present_server_update_immutable_attribute(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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=['domain']), key_exists=Mock(side_effect=[True, True]), key_identical=Mock(side_effect=[False, False]), ConfigProxy=config_proxy_mock, ): self.module = netscaler_ssl_certkey result = self.failed() self.assertEqual(result['msg'], 'Cannot update immutable attributes [\'domain\']') self.assertTrue(result['failed'])
def test_ensure_feature_is_enabled_called(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_gslb_site gslb_site_proxy_mock = Mock() ensure_feature_is_enabled_mock = Mock() client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_site', get_nitro_client=Mock(return_value=client_mock), gslb_site_exists=Mock(side_effect=[False, True]), gslb_site_identical=Mock(side_effect=[True]), nitro_exception=self.MockException, ensure_feature_is_enabled=ensure_feature_is_enabled_mock, ConfigProxy=Mock(return_value=gslb_site_proxy_mock), ): self.module = netscaler_gslb_site self.exited() ensure_feature_is_enabled_mock.assert_called_with(client_mock, 'GSLB')
def test_create_trap_non_network(self, *args): set_module_args(dict( name='foo', snmp_version='1', community='public', destination='10.10.10.10', port=1000, password='******', server='localhost', user='******' )) module = AnsibleModule( argument_spec=self.spec.argument_spec, supports_check_mode=self.spec.supports_check_mode ) # Override methods to force specific logic in the module to happen m0 = ModuleManager(module=module) m0.is_version_without_network = Mock(return_value=True) patches = dict( create_on_device=DEFAULT, exists=DEFAULT ) with patch.multiple(V1Manager, **patches) as mo: mo['create_on_device'].side_effect = Mock(return_value=True) mo['exists'].side_effect = Mock(return_value=False) results = m0.exec_module() assert results['changed'] is True assert results['port'] == 1000 assert results['snmp_version'] == '1'
def test_new_ssl_certkey_execution_flow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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', get_nitro_client=m, key_exists=Mock(side_effect=[False, True]), key_identical=Mock(side_effect=[True]), ConfigProxy=config_proxy_mock, ): self.module = netscaler_ssl_certkey self.exited() ssl_certkey_proxy_mock.assert_has_calls([call.add()])
def test_server_servicegroup_bindings_sanity_check(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock(side_effect=[False, False]), service_bindings_identical=Mock(side_effect=[True, True]), ssl_certkey_bindings_identical=Mock(side_effect=[False, False]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=(Mock(return_value=[])), nitro_exception=self.MockException, ): self.module = netscaler_lb_vserver result = self.failed() self.assertEqual(result['msg'], 'servicegroup bindings are not identical')
def test_get_immutables_failure(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() client_mock = Mock() m = Mock(return_value=['some']) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False]), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=m, nitro_exception=self.MockException, ): self.module = netscaler_lb_vserver result = self.failed() self.assertTrue( result['msg'].startswith('Cannot update immutable attributes'), msg='Did not handle immutables error correctly', )
def test_save_config_called_on_state_present(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) 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]), do_state_change=Mock(return_value=Mock(errorcode=0)), nitro_exception=self.MockException, ensure_feature_is_enabled=Mock(), ConfigProxy=Mock(return_value=gslb_service_proxy_mock), ): self.module = netscaler_gslb_vserver self.exited() self.assertIn(call.save_config(), client_mock.mock_calls)
def test_save_config_not_called_on_state_absent(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', save_config=False, )) from ansible.modules.network.netscaler import netscaler_gslb_site client_mock = Mock() m = Mock(return_value=client_mock) gslb_site_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_site', get_nitro_client=m, gslb_site_exists=Mock(side_effect=[True, False]), nitro_exception=self.MockException, ensure_feature_is_enabled=Mock(), ConfigProxy=Mock(return_value=gslb_site_proxy_mock), ): self.module = netscaler_gslb_site self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_lb_monitor_identical_sanity_check(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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=[True, True]), lbmonitor_identical=Mock(side_effect=[False, False]), ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), get_immutables_intersection=(Mock(return_value=[])), nitro_exception=self.MockException, diff_list=Mock(return_value={}), ): self.module = netscaler_lb_monitor result = self.failed() self.assertEqual(result['msg'], 'lb monitor is not configured correctly')
def setUp(self): self.mock_module_helper = patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json, get_bin_path=get_bin_path) self.mock_module_helper.start() self.addCleanup(self.mock_module_helper.stop)
def test_lb_monitor_identical_sanity_check(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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=[True, True]), lbmonitor_identical=Mock(side_effect=[False, False]), ConfigProxy=Mock(return_value=lb_monitor_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), get_immutables_intersection=(Mock(return_value=[])), nitro_exception=self.MockException, diff_list=Mock(return_value={}), ): self.module = netscaler_lb_monitor result = self.failed() self.assertEqual(result['msg'], 'lb monitor is not configured correctly')
def test_absent_gslb_site_failed_delete(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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_graceful_nitro_exception_state_absent(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_gslb_site class MockException(Exception): def __init__(self, *args, **kwargs): self.errorcode = 0 self.message = '' m = Mock(side_effect=MockException) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_site', gslb_site_exists=m, ensure_feature_is_enabled=Mock(), nitro_exception=MockException ): self.module = netscaler_gslb_site result = self.failed() self.assertTrue( result['msg'].startswith('nitro exception'), msg='Nitro exception not caught on operation absent' )
def test_save_config_not_called_on_state_absent(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver client_mock = Mock() m = Mock(return_value=client_mock) lb_vserver_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=m, lb_vserver_exists=Mock(side_effect=[True, False]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_lb_vserver self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_ensure_feature_is_enabled_called(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_gslb_vserver gslb_service_proxy_mock = Mock() ensure_feature_is_enabled_mock = Mock() client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_vserver', get_nitro_client=Mock(return_value=client_mock), gslb_vserver_exists=Mock(side_effect=[False, True]), gslb_vserver_identical=Mock(side_effect=[True]), nitro_exception=self.MockException, ensure_feature_is_enabled=ensure_feature_is_enabled_mock, do_state_change=Mock(return_value=Mock(errorcode=0)), ConfigProxy=Mock(return_value=gslb_service_proxy_mock), ): self.module = netscaler_gslb_vserver self.exited() ensure_feature_is_enabled_mock.assert_called_with( client_mock, 'GSLB')
def test_ensure_feature_is_enabled_called(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver client_mock = Mock() lb_vserver_proxy_mock = Mock() feature_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[True, True]), servicegroup_bindings_identical=Mock(side_effect=[True, True]), service_bindings_identical=Mock(side_effect=[True, True]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=feature_mock, do_state_change=Mock(return_value=Mock(errorcode=0)), ): self.module = netscaler_lb_vserver self.exited() feature_mock.assert_called_with(client_mock, 'LB')
def test_present_gslb_site_identical_flow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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 test_ssl_bindings_not_called_for_non_ssl_service(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, servicetype='HTTP', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() ssl_sync_mock = Mock() client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock(side_effect=[True, True]), service_bindings_identical=Mock(side_effect=[True, True]), ssl_certkey_bindings_identical=Mock(side_effect=[False, True]), ssl_certkey_bindings_sync=ssl_sync_mock, ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=(Mock(return_value=[])), ): self.module = netscaler_lb_vserver result = self.exited() ssl_sync_mock.assert_not_called() self.assertTrue(result['changed'])
def test_save_config_called_on_state_present(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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', 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.assertIn(call.save_config(), client_mock.mock_calls)
def test_disabled_state_change_called(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_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_lb_vserver', get_nitro_client=Mock(return_value=client_mock), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), lb_vserver_exists=Mock(side_effect=[True, True]), nitro_exception=self.MockException, do_state_change=do_state_change_mock, ): self.module = netscaler_lb_vserver self.exited() self.assertTrue(len(do_state_change_mock.mock_calls) > 0, msg='Did not call state change')
def test_do_state_change_fail(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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')
def test_update_cs_policy_when_cs_policy_differs(self): self.set_module_state('present') from ansible.modules.network.netscaler import netscaler_cs_policy cs_policy_mock = MagicMock() attrs = { 'diff_object.return_value': {}, } cs_policy_mock.configure_mock(**attrs) m = MagicMock(return_value=cs_policy_mock) policy_exists_mock = Mock(side_effect=[True, True]) policy_identical_mock = Mock(side_effect=[False, True]) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_cs_policy', ConfigProxy=m, policy_exists=policy_exists_mock, policy_identical=policy_identical_mock, ensure_feature_is_enabled=Mock(), nitro_exception=self.MockException, ): self.module = netscaler_cs_policy result = self.exited() cs_policy_mock.assert_has_calls([call.update()]) self.assertTrue(result['changed'], msg='Change not recorded')
def test_disable_server_graceful(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.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_save_config_not_called_on_state_absent(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', save_config=False, )) from ansible.modules.network.netscaler import netscaler_ssl_certkey client_mock = Mock() m = Mock(return_value=client_mock) ssl_certkey_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_ssl_certkey', get_nitro_client=m, key_exists=Mock(side_effect=[True, False]), ConfigProxy=Mock(return_value=ssl_certkey_proxy_mock), ): self.module = netscaler_ssl_certkey self.exited() self.assertNotIn(call.save_config(), client_mock.mock_calls)
def test_present_server_identical_flow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_server client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_attrs = { 'diff_object.return_value': {}, } server_proxy_mock = Mock() server_proxy_mock.configure_mock(**server_proxy_attrs) config_proxy_mock = Mock(return_value=server_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_server', get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), server_exists=Mock(side_effect=[True, True]), server_identical=Mock(side_effect=[True, True]), ConfigProxy=config_proxy_mock, do_state_change=Mock(return_value=Mock(errorcode=0)) ): self.module = netscaler_server self.exited() server_proxy_mock.assert_not_called()
def test_absent_server_noop_flow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) 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', 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 self.exited() ssl_certkey_proxy_mock.assert_not_called()
def test_absent_server_failed_delete(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='absent', )) from ansible.modules.network.netscaler import netscaler_server client_mock = Mock() m = Mock(return_value=client_mock) server_proxy_attrs = { 'diff_object.return_value': {}, } server_proxy_mock = Mock() server_proxy_mock.configure_mock(**server_proxy_attrs) config_proxy_mock = Mock(return_value=server_proxy_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_server', nitro_exception=self.MockException, get_nitro_client=m, diff_list=Mock(return_value={}), get_immutables_intersection=Mock(return_value=[]), server_exists=Mock(side_effect=[True, True]), server_identical=Mock(side_effect=[False, False]), ConfigProxy=config_proxy_mock, do_state_change=Mock(return_value=Mock(errorcode=0)) ): self.module = netscaler_server result = self.failed() self.assertEqual(result['msg'], 'Server seems to be present') self.assertTrue(result['failed'])
def test_graceful_login_error(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', )) from ansible.modules.network.netscaler import netscaler_gslb_site if sys.version_info[:2] == (2, 6): self.skipTest('requests library not available under python2.6') class MockException(Exception): pass client_mock = Mock() attrs = {'login.side_effect': requests.exceptions.SSLError} client_mock.configure_mock(**attrs) m = Mock(return_value=client_mock) with patch.multiple( 'ansible.modules.network.netscaler.netscaler_gslb_site', get_nitro_client=m, nitro_exception=MockException, ): self.module = netscaler_gslb_site result = self.failed() self.assertTrue(result['msg'].startswith('SSL Error'), msg='SSL Error was not handled gracefully')
def test_update_lb_vserver_workflow(self): set_module_args(dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=Mock()), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock(side_effect=[True, True]), service_bindings_identical=Mock(side_effect=[True, True]), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=Mock(return_value=[]), ): self.module = netscaler_lb_vserver result = self.exited() lb_vserver_proxy_mock.assert_has_calls([call.update()]) self.assertTrue(result['changed'])
def setUp(self): self.mock_module_helper = patch.multiple( basic.AnsibleModule, exit_json=modiles.exit_json, fail_json=modiles.fail_json, get_bin_path=modiles.get_bin_path) self.mock_module_helper.start() self.addCleanup(self.mock_module_helper.stop)
def setUp(self): self.module = circonus_annotation self.mock_exit_fail = patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) self.mock_exit_fail.start() self.addCleanup(self.mock_exit_fail.stop)
def setUp(self): self.mock_module_helper = patch.multiple( basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json, tmpdir='/tmp', ) self.mock_module_helper.start() self.addCleanup(self.mock_module_helper.stop)
def setUp(self): self.module = rhn_channel self.module.HAS_UP2DATE_CLIENT = True self.mock_exit_fail = patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) self.mock_exit_fail.start() self.addCleanup(self.mock_exit_fail.stop)
def setUp(self): self.module = mysql_query self.mock_exit_fail = patch.multiple(basic.AnsibleModule, exit_json=exit_json, fail_json=fail_json) self.mock_exit_fail.start() self.addCleanup(self.mock_exit_fail.stop) self.f = Fixture() self.f.create_database()
def test_servicegroup_bindings_handling(self): set_module_args( dict( nitro_user='******', nitro_pass='******', nsip='1.1.1.1', state='present', save_config=False, )) from ansible.modules.network.netscaler import netscaler_lb_vserver lb_vserver_proxy_mock = Mock() configured_dict = { 'first': Mock(), 'second': Mock(has_equal_attributes=Mock(return_value=False)), } actual_dict = { 'second': Mock(), 'third': Mock(), } client_mock = Mock() with patch.multiple( 'ansible.modules.network.netscaler.netscaler_lb_vserver', get_nitro_client=Mock(return_value=client_mock), lb_vserver_exists=Mock(side_effect=[True, True]), lb_vserver_identical=Mock(side_effect=[False, True]), servicegroup_bindings_identical=Mock( side_effect=[False, True]), service_bindings_identical=Mock(side_effect=[True, True]), get_configured_servicegroup_bindings=Mock( return_value=configured_dict), get_actual_servicegroup_bindings=Mock( return_value=actual_dict), ConfigProxy=Mock(return_value=lb_vserver_proxy_mock), ensure_feature_is_enabled=Mock(return_value=True), do_state_change=Mock(return_value=Mock(errorcode=0)), get_immutables_intersection=(Mock(return_value=[])), ): self.module = netscaler_lb_vserver result = self.exited() configured_dict['first'].assert_has_calls([call.add()]) configured_dict['second'].assert_has_calls( [call.has_equal_attributes(actual_dict['second']), call.add()]) actual_dict['second'].assert_has_calls( [call.delete(client_mock, actual_dict['second'])]) actual_dict['third'].assert_has_calls( [call.delete(client_mock, actual_dict['third'])]) self.assertTrue(result['changed'])