Completed
Push — master ( b3f222...0c1f9d )
by Matěj
15s queued 10s
created

TestGroupFolders.test_setting_folder_permissions()   A

Complexity

Conditions 1

Size

Total Lines 26
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 26
rs 9.65
c 0
b 0
f 0
cc 1
nop 1
1
from NextCloud import Permission, QUOTA_UNLIMITED
2
3
from .base import BaseTestCase
4
5
6
class TestGroupFolders(BaseTestCase):
7
8
    def setUp(self):
9
        super(TestGroupFolders, self).setUp()
10
        self.nxc.enable_app('groupfolders')
11
12
    def test_crud_group_folder(self):
13
        # create new group folder
14
        folder_mount_point = "test_group_folders_" + self.get_random_string(length=4)
15
        res = self.nxc.create_group_folder(folder_mount_point)
16
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
17
        group_folder_id = res['ocs']['data']['id']
18
19
        # get all group folders and check if just created folder is in the list
20
        res = self.nxc.get_group_folders()
21
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
22
        group_folders = res['ocs']['data']
23
        assert str(group_folder_id) in group_folders
24
        assert group_folders[str(group_folder_id)]['mount_point'] == folder_mount_point
25
26
        # retrieve single folder
27
        res = self.nxc.get_group_folder(group_folder_id)
28
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
29
        assert res['ocs']['data']['id'] == group_folder_id
30
        assert res['ocs']['data']['mount_point'] == folder_mount_point
31
32
        # rename group folder
33
        new_folder_mount_point = folder_mount_point + '_new'
34
        res = self.nxc.rename_group_folder(group_folder_id, new_folder_mount_point)
35
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE and res['ocs']['data'] is True
36
        # check if name was changed
37
        res = self.nxc.get_group_folder(group_folder_id)
38
        assert res['ocs']['data']['mount_point'] == new_folder_mount_point
39
40
        # delete group folder
41
        res = self.nxc.delete_group_folder(group_folder_id)
42
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
43
        assert res['ocs']['data'] is True
44
        # check that deleted folder isn't retrieved
45
        res = self.nxc.get_group_folder(group_folder_id)
46
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
47
        assert res['ocs']['data'] is False
48
49
    def test_grant_revoke_access_to_group_folder(self):
50
        # create group to share with
51
        group_id = 'test_folders_' + self.get_random_string(length=4)
52
        self.nxc.add_group(group_id)
53
54
        # create new group folder
55
        folder_mount_point = "test_access_" + self.get_random_string(length=4)
56
        res = self.nxc.create_group_folder(folder_mount_point)
57
        group_folder_id = res['ocs']['data']['id']
58
59
        # assert that no groups have access to just created folder
60
        res = self.nxc.get_group_folder(group_folder_id)
61
        assert len(res['ocs']['data']['groups']) == 0
62
63
        # grant access to group
64
        res = self.nxc.grant_access_to_group_folder(group_folder_id, group_id)
65
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
66
        assert res['ocs']['data'] is True
67
68
        # check that folder has this group
69
        res = self.nxc.get_group_folder(group_folder_id)
70
        assert res['ocs']['data']['groups'] == {group_id: Permission.ALL}
71
72
        # revoke access
73
        res = self.nxc.revoke_access_to_group_folder(group_folder_id, group_id)
74
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE
75
        assert res['ocs']['data'] is True
76
77
        # check that folder has no groups again
78
        res = self.nxc.get_group_folder(group_folder_id)
79
        assert len(res['ocs']['data']['groups']) == 0
80
81
        # clear
82
        self.clear(nxc=self.nxc, group_ids=[group_id], group_folder_ids=[group_folder_id])
83
84
    def test_setting_folder_quotas(self):
85
        # create new group folder
86
        folder_mount_point = "test_folder_quotas_" + self.get_random_string(length=4)
87
        res = self.nxc.create_group_folder(folder_mount_point)
88
        group_folder_id = res['ocs']['data']['id']
89
90
        # assert quota is unlimited by default
91
        res = self.nxc.get_group_folder(group_folder_id)
92
        assert int(res['ocs']['data']['quota']) == QUOTA_UNLIMITED
93
94
        # set quota
95
        QUOTA_ONE_GB = 1024 * 1024 * 1024
96
        res = self.nxc.set_quota_of_group_folder(group_folder_id, QUOTA_ONE_GB)
97
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE and res['ocs']['data'] is True
98
        # check if quota changed
99
        res = self.nxc.get_group_folder(group_folder_id)
100
        assert res['ocs']['data']['quota'] == QUOTA_ONE_GB
101
102
        # clear
103
        self.clear(group_folder_ids=[group_folder_id])
104
105
    def test_setting_folder_permissions(self):
106
        # create group to share with
107
        group_id = 'test_folders_' + self.get_random_string(length=4)
108
        self.nxc.add_group(group_id)
109
110
        # create new group folder
111
        folder_mount_point = "test_folder_permissions_" + self.get_random_string(length=4)
112
        res = self.nxc.create_group_folder(folder_mount_point)
113
        group_folder_id = res['ocs']['data']['id']
114
115
        # add new group to folder
116
        self.nxc.grant_access_to_group_folder(group_folder_id, group_id)
117
        # assert permissions is ALL by default
118
        res = self.nxc.get_group_folder(group_folder_id)
119
        assert int(res['ocs']['data']['quota']) == QUOTA_UNLIMITED
120
121
        # set permissions
122
        new_permission = Permission.READ + Permission.CREATE
123
        res = self.nxc.set_permissions_to_group_folder(group_folder_id, group_id, new_permission)
124
        assert res['ocs']['meta']['statuscode'] == self.SUCCESS_CODE and res['ocs']['data'] is True
125
        # check if permissions changed
126
        res = self.nxc.get_group_folder(group_folder_id)
127
        assert res['ocs']['data']['groups'][group_id] == new_permission
128
129
        # clear
130
        self.clear(nxc=self.nxc, group_ids=[group_id], group_folder_ids=[group_folder_id])
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148