Пример #1
0
    def setUp(self):
        super(TestEosConfigModule, self).setUp()
        self.mock_get_config = patch(
            'ansible_collections.misc.not_a_real_collection.plugins.modules.eos_config.get_config'
        )
        self.get_config = self.mock_get_config.start()

        self.mock_get_connection = patch(
            'ansible_collections.misc.not_a_real_collection.plugins.modules.eos_config.get_connection'
        )
        self.get_connection = self.mock_get_connection.start()

        self.mock_load_config = patch(
            'ansible_collections.misc.not_a_real_collection.plugins.modules.eos_config.load_config'
        )
        self.load_config = self.mock_load_config.start()
        self.mock_run_commands = patch(
            'ansible_collections.misc.not_a_real_collection.plugins.modules.eos_config.run_commands'
        )
        self.run_commands = self.mock_run_commands.start()

        self.mock_supports_sessions = patch(
            'ansible_collections.misc.not_a_real_collection.plugins.cliconf.eos.Cliconf.supports_sessions'
        )
        self.supports_sessions = self.mock_supports_sessions.start()
        self.mock_supports_sessions.return_value = True

        self.conn = self.get_connection()
        self.conn.edit_config = MagicMock()

        self.cliconf_obj = Cliconf(MagicMock())
        self.running_config = load_fixture('eos_config_config.cfg')
    def test_no_change_to_module_when_all_identical(self):
        self.set_module_state('present')
        from ansible_collections.misc.not_a_real_collection.plugins.modules import netscaler_service
        service_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        service_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=service_proxy_mock)
        service_exists_mock = Mock(side_effect=[True, True])
        service_identical_mock = Mock(side_effect=[True, True])
        monitor_bindings_identical_mock = Mock(side_effect=[True, True])

        with patch.multiple(
                'ansible_collections.misc.not_a_real_collection.plugins.modules.netscaler_service',
                ConfigProxy=m,
                service_exists=service_exists_mock,
                service_identical=service_identical_mock,
                monitor_bindings_identical=monitor_bindings_identical_mock,
                do_state_change=Mock(return_value=Mock(errorcode=0)),
        ):
            self.module = netscaler_service
            result = self.exited()
            self.assertFalse(result['changed'],
                             msg='Erroneous changed status update')
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException
        m = MagicMock()
        cls.servicegroup_mock = MagicMock()
        cls.servicegroup_mock.__class__ = MagicMock()
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup.servicegroup':
            cls.servicegroup_mock,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_servicegroupmember_binding.servicegroup_servicegroupmember_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.servicegroup_lbmonitor_binding.servicegroup_lbmonitor_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_servicegroup_binding.lbmonitor_servicegroup_binding':
            m
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
Пример #4
0
    def setUpClass(cls):
        class MockException(Exception):
            pass

        cls.MockException = MockException

        m = MagicMock()
        cls.cs_vserver_mock = MagicMock()
        cls.cs_vserver_mock.__class__ = MagicMock(add=Mock())
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver.csvserver':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_cspolicy_binding.csvserver_cspolicy_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.cs.csvserver_lbvserver_binding.csvserver_lbvserver_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.ssl':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.ssl.sslvserver_sslcertkey_binding.sslvserver_sslcertkey_binding':
            m,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
    def test_update_service_when_monitor_bindings_differ(self):
        self.set_module_state('present')
        from ansible_collections.misc.not_a_real_collection.plugins.modules import netscaler_service
        service_proxy_mock = MagicMock()
        attrs = {
            'diff_object.return_value': {},
        }
        service_proxy_mock.configure_mock(**attrs)

        m = MagicMock(return_value=service_proxy_mock)
        service_exists_mock = Mock(side_effect=[True, True])
        service_identical_mock = Mock(side_effect=[True, True])
        monitor_bindings_identical_mock = Mock(side_effect=[False, True])
        all_identical_mock = Mock(side_effect=[False])
        sync_monitor_bindings_mock = Mock()

        with patch.multiple(
                'ansible_collections.misc.not_a_real_collection.plugins.modules.netscaler_service',
                ConfigProxy=m,
                service_exists=service_exists_mock,
                service_identical=service_identical_mock,
                monitor_bindings_identical=monitor_bindings_identical_mock,
                all_identical=all_identical_mock,
                sync_monitor_bindings=sync_monitor_bindings_mock,
                do_state_change=Mock(return_value=Mock(errorcode=0)),
        ):
            self.module = netscaler_service
            result = self.exited()
        # poor man's assert_called_once since python3.5 does not implement that mock method
        self.assertEqual(len(sync_monitor_bindings_mock.mock_calls),
                         1,
                         msg='sync monitor bindings not called once')
        self.assertTrue(result['changed'], msg='Change not recorded')
def test_run_with_simple_auth_and_search_base(monkeypatch, laps_password):
    def get_laps_password(conn, cn, search_base):
        return "CN=%s,%s" % (cn, search_base)

    mock_ldap = MagicMock()
    monkeypatch.setattr("ldap.initialize", mock_ldap)

    mock_get_laps_password = MagicMock(side_effect=get_laps_password)
    monkeypatch.setattr(laps_password, "get_laps_password", mock_get_laps_password)

    actual = lookup_loader.get('laps_password').run(["host1", "host2"], domain="dc01", auth="simple", username="******",
                                                    password="******", allow_plaintext=True,
                                                    search_base="OU=Workstations,DC=domain,DC=com")
    assert actual == ["CN=host1,OU=Workstations,DC=domain,DC=com", "CN=host2,OU=Workstations,DC=domain,DC=com"]

    # Verify the call count to get_laps_password
    assert mock_get_laps_password.call_count == 2

    # Verify the initialize() method call
    assert mock_ldap.call_count == 1
    assert mock_ldap.call_args[0] == ("ldap://dc01:389",)
    assert mock_ldap.call_args[1] == {"bytes_mode": False}

    # Verify the number of calls made to the mocked LDAP object
    assert mock_ldap.mock_calls[1][0] == "().set_option"
    assert mock_ldap.mock_calls[1][1] == (FakeLdap.OPT_PROTOCOL_VERSION, 3)

    assert mock_ldap.mock_calls[2][0] == "().set_option"
    assert mock_ldap.mock_calls[2][1] == (FakeLdap.OPT_REFERRALS, 0)

    assert mock_ldap.mock_calls[3][0] == '().bind_s'
    assert mock_ldap.mock_calls[3][1] == (u"user", u"pass")

    assert mock_ldap.mock_calls[4][0] == "().unbind_s"
    assert mock_ldap.mock_calls[4][1] == ()
    def test_servicegroup_monitor_bindings_sanity(self):
        self.set_module_state('present')
        from ansible_collections.misc.not_a_real_collection.plugins.modules 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_collections.misc.not_a_real_collection.plugins.modules.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 setUpClass(cls):
        m = MagicMock()
        cls.service_mock = MagicMock()
        cls.service_mock.__class__ = MagicMock()
        cls.service_lbmonitor_binding_mock = MagicMock()
        cls.lbmonitor_service_binding_mock = MagicMock()
        nssrc_modules_mock = {
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service.service':
            cls.service_mock,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding':
            cls.service_lbmonitor_binding_mock,
            'nssrc.com.citrix.netscaler.nitro.resource.config.basic.service_lbmonitor_binding.service_lbmonitor_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding':
            m,
            'nssrc.com.citrix.netscaler.nitro.resource.config.lb.lbmonitor_service_binding.lbmonitor_service_binding':
            cls.lbmonitor_service_binding_mock,
        }

        cls.nitro_specific_patcher = patch.dict(sys.modules,
                                                nssrc_modules_mock)
        cls.nitro_base_patcher = nitro_base_patcher
Пример #9
0
 def test_update_called_when_traffic_type_exists(self):
     set_module_args(base_module_args)
     module = setup_module_object()
     actt = AnsibleCloudStackTrafficType(module)
     actt.get_traffic_type = MagicMock(
         return_value=EXISTING_TRAFFIC_TYPES_RESPONSE['traffictype'][0])
     actt.update_traffic_type = MagicMock()
     actt.present_traffic_type()
     self.assertTrue(actt.update_traffic_type.called)
    def setUp(self):
        super(TestNiosApi, self).setUp()

        self.module = MagicMock(name='AnsibleModule')
        self.module.check_mode = False
        self.module.params = {'provider': None}

        self.mock_connector = patch('ansible_collections.misc.not_a_real_collection.plugins.module_utils.net_tools.nios.api.get_connector')
        self.mock_connector.start()
Пример #11
0
 def setUp(self):
     super(TestNiosNAPTRRecordModule, self).setUp()
     self.module = MagicMock(name='ansible_collections.misc.not_a_real_collection.plugins.modules.nios_naptr_record.WapiModule')
     self.module.check_mode = False
     self.module.params = {'provider': None}
     self.mock_wapi = patch('ansible_collections.misc.not_a_real_collection.plugins.modules.nios_naptr_record.WapiModule')
     self.exec_command = self.mock_wapi.start()
     self.mock_wapi_run = patch('ansible_collections.misc.not_a_real_collection.plugins.modules.nios_naptr_record.WapiModule.run')
     self.mock_wapi_run.start()
     self.load_config = self.mock_wapi_run.start()
Пример #12
0
 def test_update_not_called_when_traffic_type_doesnt_exist(self):
     set_module_args(base_module_args)
     module = setup_module_object()
     actt = AnsibleCloudStackTrafficType(module)
     actt.get_traffic_type = MagicMock(return_value=None)
     actt.update_traffic_type = MagicMock()
     actt.add_traffic_type = MagicMock()
     actt.present_traffic_type()
     self.assertFalse(actt.update_traffic_type.called)
     self.assertTrue(actt.add_traffic_type.called)
Пример #13
0
 def test_iosxr_config_lines_w_parents(self):
     lines = ['shutdown']
     parents = ['interface GigabitEthernet0/0']
     set_module_args(dict(lines=lines, parents=parents))
     module = MagicMock()
     module.params = {'lines': lines, 'parents': parents, 'src': None}
     candidate_config = iosxr_config.get_candidate(module)
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
         candidate_config, self.running_config))
     commands = ['interface GigabitEthernet0/0', 'shutdown']
     self.execute_module(changed=True, commands=commands)
    def test_voss_config_ipv6(self):
        lines = ['ip address 1 1.1.1.1/255.255.255.255',
                 'ipv6 interface address 2011:0:0:0:0:0:0:1/128']
        parents = ['interface loopback 1']
        set_module_args(dict(lines=lines, parents=parents))
        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = voss_config.get_candidate_config(module)

        self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config))
        self.execute_module(changed=False)
def patched_openvswitch_db(monkeypatch):
    mocked_ovs_db = MagicMock()
    mocked_ovs_db.return_value = {
        'table': 'open_vswitch',
        'record': '.',
        'col': 'other_config',
        'key': 'pmd-cpu-mask',
        'value': '0xaaa00000000'
    }
    monkeypatch.setattr(openvswitch_db, 'map_config_to_obj', mocked_ovs_db)
    return openvswitch_db
    def test_voss_config_match_exact(self):
        lines = ['name "ServerA"', 'vlacp enable', 'no shutdown']
        parents = ['interface GigabitEthernet 1/1']
        set_module_args(dict(lines=lines, parents=parents, match='exact'))

        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = voss_config.get_candidate_config(module)
        self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_match='exact', path=parents))

        commands = parents + lines
        self.execute_module(changed=True, commands=commands, sort=False)
Пример #17
0
    def test_exec_with_become_no_plugin_set_use_task(self, test_win_updates):
        set_become_mock = MagicMock()
        test_win_updates._connection.become = None
        test_win_updates._connection.set_become_plugin = set_become_mock

        with patch('ansible.plugins.action.ActionBase._execute_module',
                   new=MagicMock()):
            test_win_updates._execute_module_with_become(
                'win_updates', {}, {}, True, True)

        assert set_become_mock.call_count == 1
        assert set_become_mock.mock_calls[0][1][0] is None
def patched_openvswitch_bridge(monkeypatch):
    mocked_bridge = MagicMock()
    mocked_bridge.return_value = {
        'bridge': 'test-br2',
        'parent': 'test-br',
        'vlan': 200,
        'fail_mode': None,
        'external_ids': None,
        'set': None
    }
    monkeypatch.setattr(openvswitch_bridge, 'map_config_to_obj', mocked_bridge)
    return openvswitch_bridge
    def test_voss_config_replace_block(self):
        lines = ['name "ServerB"', 'test string']
        parents = ['interface GigabitEthernet 1/2']
        set_module_args(dict(lines=lines, replace='block', parents=parents))

        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = voss_config.get_candidate_config(module)

        self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(candidate_config, self.running_config, diff_replace='block', path=parents))

        commands = parents + lines
        self.execute_module(changed=True, commands=commands)
Пример #20
0
 def test_traffic_type_returned_if_exists(self):
     set_module_args(base_module_args)
     module = setup_module_object()
     actt = AnsibleCloudStackTrafficType(module)
     actt.get_physical_network = MagicMock(
         return_value=VALID_LIST_NETWORKS_RESPONSE['physicalnetwork'][0])
     actt.get_traffic_types = MagicMock(
         return_value=EXISTING_TRAFFIC_TYPES_RESPONSE)
     tt = actt.present_traffic_type()
     self.assertTrue(
         tt.get('kvmnetworklabel') == base_module_args['kvm_networklabel'])
     self.assertTrue(
         tt.get('traffictype') == base_module_args['traffic_type'])
Пример #21
0
    def test_icx_config_lines_w_parents(self):
        lines = ['disable']
        parents = ['interface ethernet 1/1/4']
        set_module_args(dict(lines=lines, parents=parents))
        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = icx_config.get_candidate_config(module)

        self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(
            candidate_config, self.running_config))

        commands = ['interface ethernet 1/1/4', 'disable']
        self.execute_module(changed=True, commands=commands)
class ConnectionMock(object):
    ismock = True
    _play_context = None
    # transport = 'ssh'
    transport = None
    _new_stdin = StdinMock()

    get_option = MagicMock(return_value='root')

    # my shell
    _shell = MagicMock()
    _shell.mkdtemp.return_value = 'mkdir command'
    _shell.join_path.side_effect = os.path.join
    _shell.get_option = MagicMock(return_value=['root', 'toor'])
def test_certificate_validate_with_custom_cacert(monkeypatch):
    mock_ldap_option = MagicMock()
    monkeypatch.setattr(FakeLdap, "set_option", mock_ldap_option)

    mock_ldap = MagicMock()
    monkeypatch.setattr("ldap.initialize", mock_ldap)
    monkeypatch.setattr(os.path, 'exists', lambda x: True)

    lookup_loader.get('laps_password').run([], domain="dc01", scheme="ldaps", cacert_file="cacert.pem")

    assert mock_ldap_option.mock_calls[0][1] == (FakeLdap.OPT_X_TLS_REQUIRE_CERT, FakeLdap.OPT_X_TLS_DEMAND)
    assert mock_ldap_option.mock_calls[1][1] == (FakeLdap.OPT_X_TLS_CACERTFILE, u"cacert.pem")

    assert mock_ldap.mock_calls[3][0] == "().sasl_gssapi_bind_s"
    assert mock_ldap.mock_calls[3][1] == ()
Пример #24
0
    def test_iosxr_config_match_none(self):
        lines = ['ip address 1.2.3.4 255.255.255.0', 'description test string']
        parents = ['interface GigabitEthernet0/0']
        set_module_args(dict(lines=lines, parents=parents, match='none'))
        commands = parents + lines
        module = MagicMock()
        module.params = {'lines': lines, 'parents': parents, 'src': None}
        candidate_config = iosxr_config.get_candidate(module)
        self.conn.get_diff = MagicMock(
            return_value=self.cliconf_obj.get_diff(candidate_config,
                                                   self.running_config,
                                                   diff_match='none',
                                                   path=parents))

        self.execute_module(changed=True, commands=commands, sort=False)
Пример #25
0
    def test_exec_with_become(self, test_win_updates):
        test_become = os.urandom(8)

        set_become_mock = MagicMock()
        test_win_updates._connection.become = test_become
        test_win_updates._connection.set_become_plugin = set_become_mock

        with patch('ansible.plugins.action.ActionBase._execute_module',
                   new=MagicMock()):
            test_win_updates._execute_module_with_become(
                'win_updates', {}, {}, True, False)

        # Asserts we don't override the become plugin.
        assert set_become_mock.call_count == 1
        assert set_become_mock.mock_calls[0][1][0] == test_become
    def test_kinit_error_subprocess(self, monkeypatch):
        expected_err = "kinit: krb5_parse_name: " \
                       "Configuration file does not specify default realm"

        def mock_communicate(input=None, timeout=None):
            return b"", to_bytes(expected_err)

        mock_popen = MagicMock()
        mock_popen.return_value.communicate = mock_communicate
        mock_popen.return_value.returncode = 1
        monkeypatch.setattr("subprocess.Popen", mock_popen)

        winrm.HAS_PEXPECT = False
        pc = PlayContext()
        new_stdin = StringIO()
        conn = connection_loader.get('winrm', pc, new_stdin)
        conn.set_options(var_options={"_extras": {}})
        conn._build_winrm_kwargs()

        with pytest.raises(AnsibleConnectionFailure) as err:
            conn._kerb_auth("invaliduser", "pass")

        assert str(err.value) == \
            "Kerberos auth failure for principal invaliduser with " \
            "subprocess: %s" % (expected_err)
    def test_kinit_success_pexpect(self, monkeypatch, options, expected):
        pytest.importorskip("pexpect")
        mock_pexpect = MagicMock()
        mock_pexpect.return_value.exitstatus = 0
        monkeypatch.setattr("pexpect.spawn", mock_pexpect)

        winrm.HAS_PEXPECT = True
        pc = PlayContext()
        new_stdin = StringIO()
        conn = connection_loader.get('winrm', pc, new_stdin)
        conn.set_options(var_options=options)
        conn._build_winrm_kwargs()

        conn._kerb_auth("user@domain", "pass")
        mock_calls = mock_pexpect.mock_calls
        assert mock_calls[0][1] == expected
        actual_env = mock_calls[0][2]['env']
        assert list(actual_env.keys()) == ['KRB5CCNAME']
        assert actual_env['KRB5CCNAME'].startswith("FILE:/")
        assert mock_calls[0][2]['echo'] is False
        assert mock_calls[1][0] == "().expect"
        assert mock_calls[1][1] == (".*:", )
        assert mock_calls[2][0] == "().sendline"
        assert mock_calls[2][1] == ("pass", )
        assert mock_calls[3][0] == "().read"
        assert mock_calls[4][0] == "().wait"
 def test_voss_config_src(self):
     src = load_fixture('voss_config_src.cfg')
     set_module_args(dict(src=src))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
     commands = ['prompt "VSP8K"', 'interface GigabitEthernet 1/1',
                 'name "UNUSED"', 'exit']
     self.execute_module(changed=True, commands=commands)
 def test_voss_config_src_ipv6(self):
     src = load_fixture('voss_config_ipv6.cfg')
     set_module_args(dict(src=src))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff(src, self.running_config))
     commands = ['interface loopback 1', 'ip address 1 2.2.2.2/255.255.255.255',
                 'ipv6 interface address 2011:0:0:0:0:0:0:2/128', 'exit']
     self.execute_module(changed=True, commands=commands)
 def test_voss_config_config(self):
     config = 'prompt "VSP300"'
     lines = ['prompt router']
     set_module_args(dict(lines=lines, config=config))
     self.conn.get_diff = MagicMock(return_value=self.cliconf_obj.get_diff('\n'.join(lines), config))
     commands = ['prompt router']
     self.execute_module(changed=True, commands=commands)