Passed
Push — master ( 0e3ad4...9ffed3 )
by Matěj
01:17
created

tests.test_ldap   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 55
dl 0
loc 78
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A TestUserLDAP.setUp() 0 3 1
A TestUserLDAP.test_ldap_setters_getters() 0 26 3
A TestUserLDAP.test_crud_ldap_config() 0 34 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
    SUCCESS_CODE = 200
12
13
    def setUp(self):
14
        super(TestUserLDAP, self).setUp()
15
        self.nxc.enable_app('user_ldap')
16
17
    def test_crud_ldap_config(self):
18
        res = self.nxc.create_ldap_config()
19
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
20
        config_id = res['ocs']['data']['configID']
21
22
        # test get config by id
23
        res = self.nxc.get_ldap_config(config_id)
24
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
25
        config_data = res['ocs']['data']
26
27
        # test edit config
28
        param_to_change = "ldapPagingSize"
29
        old_param_value = config_data[param_to_change]
30
        new_param_value = 777
31
        assert old_param_value != new_param_value
32
        res = self.nxc.edit_ldap_config(config_id, data={param_to_change: new_param_value})
33
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
34
        new_config_data = self.nxc.get_ldap_config(config_id)['ocs']['data']
35
        assert str(new_config_data[param_to_change]) == str(new_param_value)
36
37
        # test showPassword param
38
        ldap_password_param = "ldapAgentPassword"
39
        ldap_password_value = "test_password"
40
        self.nxc.edit_ldap_config(config_id, {ldap_password_param: ldap_password_value})
41
        config_data_without_password = self.nxc.get_ldap_config(config_id)['ocs']['data']
42
        assert config_data_without_password[ldap_password_param] == "***"
43
        config_data_with_password = self.nxc.get_ldap_config(config_id, show_password=1)['ocs']['data']
44
        assert config_data_with_password[ldap_password_param] == ldap_password_value
45
46
        # test delete config
47
        res = self.nxc.delete_ldap_config(config_id)
48
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
49
        res = self.nxc.get_ldap_config(config_id)
50
        assert res['ocs']['meta']['statuscode'] == self.NOT_FOUND_CODE
51
52
    def test_ldap_setters_getters(self):
53
        res = self.nxc.create_ldap_config()
54
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
55
        config_id = res['ocs']['data']['configID']
56
57
        for ldap_key in UserLDAP.CONFIG_KEYS:
58
            key_name = re.sub('ldap', '', ldap_key)
59
            key_name = re.sub('([a-z0-9])([A-Z])', r'\1_\2', key_name).lower()
60
61
            getter_name = "get_ldap_{}".format(key_name)
62
            setter_name = "set_ldap_{}".format(key_name)
63
            # test if method exist
64
            assert hasattr(self.nxc, setter_name)
65
            assert hasattr(self.nxc, getter_name)
66
67
            # test getter
68
            getter_value = getattr(self.nxc, getter_name)(config_id)
69
            config_value = self.nxc.get_ldap_config(config_id)['ocs']['data'][ldap_key]
70
            assert getter_value == config_value
71
72
            # test setter
73
            value = 1
74
            with patch.object(UserLDAP, 'edit_ldap_config', return_value=1) as mock_method:
75
                setter_method = getattr(self.nxc, setter_name)
76
                setter_method(config_id, value)
77
                mock_method.assert_called_with(config_id, data={ldap_key: value})
78