tests.test_ldap.TestUserLDAP.setUp()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
nop 1
1
import re
2
from unittest.mock import patch
3
4
from .base import BaseTestCase
5
6
from nextcloud.api_wrappers.user_ldap import UserLDAP
7
8
9
class TestUserLDAP(BaseTestCase):
10
11
    def setUp(self):
12
        super(TestUserLDAP, self).setUp()
13
        self.nxc.enable_app('user_ldap')
14
15
    def test_crud_ldap_config(self):
16
        res = self.nxc.create_ldap_config()
17
        assert res.is_ok
18
        config_id = res.data['configID']
19
20
        # We assume that the ID has format s{number}
21
        config_number = int(config_id[1:])
22
        inferred_config_id = self.nxc.get_ldap_lowest_existing_config_id(
23
                config_number - 2, config_number + 2)
24
        res = self.nxc.get_ldap_config(inferred_config_id)
25
        assert res.is_ok
26
27
        self.nxc.ldap_cache_flush(config_id)
28
29
        # test get config by id
30
        res = self.nxc.get_ldap_config(config_id)
31
        assert res.is_ok
32
        config_data = res.data
33
34
        # test edit config
35
        param_to_change = "ldapPagingSize"
36
        old_param_value = config_data[param_to_change]
37
        new_param_value = 777
38
        assert old_param_value != new_param_value
39
        res = self.nxc.edit_ldap_config(config_id, data={param_to_change: new_param_value})
40
        assert res.is_ok
41
        new_config_data = self.nxc.get_ldap_config(config_id).data
42
        assert str(new_config_data[param_to_change]) == str(new_param_value)
43
44
        # test showPassword param
45
        ldap_password_param = "ldapAgentPassword"
46
        ldap_password_value = "test_password"
47
        self.nxc.edit_ldap_config(config_id, {ldap_password_param: ldap_password_value})
48
        config_data_without_password = self.nxc.get_ldap_config(config_id).data
49
        assert config_data_without_password[ldap_password_param] == "***"
50
        config_data_with_password = self.nxc.get_ldap_config(config_id, show_password=1).data
51
        assert config_data_with_password[ldap_password_param] == ldap_password_value
52
53
        # test delete config
54
        res = self.nxc.delete_ldap_config(config_id)
55
        assert res.is_ok
56
        res = self.nxc.get_ldap_config(config_id)
57
        assert res.status_code == self.NOT_FOUND_CODE
58
59
    def test_ldap_setters_getters(self):
60
        res = self.nxc.create_ldap_config()
61
        assert res.is_ok
62
        assert res.status_code == 200
63
        config_id = res.data['configID']
64
65
        for ldap_key in UserLDAP.CONFIG_KEYS:
66
            key_name = re.sub('ldap', '', ldap_key)
67
            key_name = re.sub('([a-z0-9])([A-Z])', r'\1_\2', key_name).lower()
68
69
            getter_name = "get_ldap_{}".format(key_name)
70
            setter_name = "set_ldap_{}".format(key_name)
71
            # test if method exist
72
            assert hasattr(self.nxc, setter_name)
73
            assert hasattr(self.nxc, getter_name)
74
75
            # test getter
76
            getter_value = getattr(self.nxc, getter_name)(config_id)
77
            config_value = self.nxc.get_ldap_config(config_id).data[ldap_key]
78
            assert getter_value == config_value
79
80
            # test setter
81
            value = 1
82
            with patch.object(UserLDAP, 'edit_ldap_config', return_value=1) as mock_method:
83
                setter_method = getattr(self.nxc, setter_name)
84
                setter_method(config_id, value)
85
                mock_method.assert_called_with(config_id, data={ldap_key: value})
86