TestUserGroups.test_create_retrieve_delete_subadmin()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 13
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 10
dl 0
loc 13
rs 9.9
c 0
b 0
f 0
cc 1
nop 1
1
from .base import BaseTestCase
2
3
4
class TestUsers(BaseTestCase):
5
6
    def test_get_users(self):
7
        res = self.nxc.get_users()
8
        assert res.is_ok
9
        assert len(res.data['users']) > 0
10
        # test search argument
11
        res = self.nxc.get_users(search=self.username)
12
        users = res.data['users']
13
        assert all([self.username in user for user in users])
14
        # test limit argument
15
        res = self.nxc.get_users(limit=0)
16
        assert len(res.data['users']) == 0
17
18
    def test_get_user(self):
19
        res = self.nxc.get_user(self.username)
20
        assert res.is_ok
21
        user = res.data
22
        assert user['id'] == self.username
23
        assert user['enabled']
24
25
    def test_add_user(self):
26
        new_user_username = self.get_random_string(length=4) + "test_add"
27
        res = self.nxc.add_user(new_user_username, self.get_random_string(length=8))
28
        assert res.is_ok
29
        added_user = self.nxc.get_user(new_user_username).data
30
        assert added_user['id'] == new_user_username and added_user['enabled']
31
        # adding same user will fail
32
        res = self.nxc.add_user(new_user_username, "test_password_123")
33
        assert res.status_code == self.USERNAME_ALREADY_EXISTS_CODE
34
35
    def test_disable_enable_user(self):
36
        new_user_username = self.get_random_string(length=4) + "test_enable"
37
        self.nxc.add_user(new_user_username, self.get_random_string(length=8))
38
        user = self.nxc.get_user(new_user_username).data
39
        assert user['enabled']
40
        self.nxc.disable_user(new_user_username)
41
        user = self.nxc.get_user(new_user_username).data
42
        assert not user['enabled']
43
        self.nxc.enable_user(new_user_username)
44
        user = self.nxc.get_user(new_user_username).data
45
        assert user['enabled']
46
47
    def test_delete_user(self):
48
        new_user_username = self.get_random_string(length=4) + "test_enable"
49
        self.nxc.add_user(new_user_username, self.get_random_string(length=8))
50
        res = self.nxc.delete_user(new_user_username)
51
        assert res.is_ok
52
        user_res = self.nxc.get_user(new_user_username)
53
        assert user_res.status_code == self.NOT_FOUND_CODE
54
55
    def test_edit_user(self):
56
        new_user_username = self.create_new_user("edit_user")
57
        new_user_values = {
58
            "email": "[email protected]",
59
            # "quota": "100MB", FIXME: only admins (of a group?) can edit quota
60
            "phone": "+380999999999",
61
            "address": "World!",
62
            "website": "example.com",
63
            "twitter": "@twitter_account",
64
            "displayname": "test user!",
65
            "password": self.get_random_string(length=10)
66
        }
67
        for key, value in new_user_values.items():
68
            res = self.nxc.edit_user(new_user_username, key, value)
69
            assert res.is_ok
70
71
    def test_resend_welcome_mail(self):
72
        # TODO: add mock of SMTP data to test this method
73
        pass
74
75
76
class TestUserGroups(BaseTestCase):
77
78
    def setUp(self):
79
        super(TestUserGroups, self).setUp()
80
        self.user_username = self.create_new_user('user_group_')
81
        # create group
82
        self.group_name = self.get_random_string(length=4) + "_user_groups"
83
        self.nxc.add_group(self.group_name)
84
85
    def tearDown(self):
86
        self.delete_user(self.user_username)
87
        self.nxc.delete_group(self.group_name)
88
89
    def test_add_remove_user_from_group(self):
90
        # add to group
91
        res = self.nxc.add_to_group(self.user_username, self.group_name)
92
        assert res.is_ok
93
        group_members = self.nxc.get_group(self.group_name).data['users']
94
        assert self.user_username in group_members
95
        # remove from group
96
        res = self.nxc.remove_from_group(self.user_username, self.group_name)
97
        assert res.is_ok
98
        group_members = self.nxc.get_group(self.group_name).data['users']
99
        assert self.user_username not in group_members
100
101
    def test_create_retrieve_delete_subadmin(self):
102
        # promote to subadmin
103
        res = self.nxc.create_subadmin(self.user_username, self.group_name)
104
        assert res.is_ok
105
        # get subadmin groups
106
        subadmin_groups = self.nxc.get_subadmin_groups(self.user_username)
107
        assert subadmin_groups.is_ok
108
        assert self.group_name in subadmin_groups.data
109
        # demote from subadmin
110
        res = self.nxc.remove_subadmin(self.user_username, self.group_name)
111
        assert res.is_ok
112
        subadmin_groups = self.nxc.get_subadmin_groups(self.user_username).data
113
        assert self.group_name not in subadmin_groups
114