|
4 | 4 | import tableauserverclient as TSC |
5 | 5 |
|
6 | 6 | from tableauserverclient.datetime_helpers import format_datetime |
| 7 | +from tableauserverclient import UserItem, GroupItem, PermissionsRule |
7 | 8 |
|
8 | 9 | TEST_ASSET_DIR = os.path.join(os.path.dirname(__file__), 'assets') |
9 | 10 |
|
|
13 | 14 | POPULATE_PREVIEW_IMAGE = os.path.join(TEST_ASSET_DIR, 'Sample View Image.png') |
14 | 15 | POPULATE_PDF = os.path.join(TEST_ASSET_DIR, 'populate_pdf.pdf') |
15 | 16 | POPULATE_CSV = os.path.join(TEST_ASSET_DIR, 'populate_csv.csv') |
| 17 | +POPULATE_PERMISSIONS_XML = os.path.join(TEST_ASSET_DIR, 'view_populate_permissions.xml') |
| 18 | +UPDATE_PERMISSIONS = os.path.join(TEST_ASSET_DIR, 'view_update_permissions.xml') |
16 | 19 | UPDATE_XML = os.path.join(TEST_ASSET_DIR, 'workbook_update.xml') |
17 | 20 |
|
18 | 21 |
|
19 | 22 | class ViewTests(unittest.TestCase): |
20 | 23 | def setUp(self): |
21 | 24 | self.server = TSC.Server('http://test') |
22 | | - self.server.version = '2.7' |
| 25 | + self.server.version = '3.2' |
23 | 26 |
|
24 | 27 | # Fake sign in |
25 | 28 | self.server._site_id = 'dad65087-b08b-4603-af4e-2887b8aafc67' |
@@ -170,6 +173,59 @@ def test_populate_image_missing_id(self): |
170 | 173 | single_view._id = None |
171 | 174 | self.assertRaises(TSC.MissingRequiredFieldError, self.server.views.populate_image, single_view) |
172 | 175 |
|
| 176 | + def test_populate_permissions(self): |
| 177 | + with open(POPULATE_PERMISSIONS_XML, 'rb') as f: |
| 178 | + response_xml = f.read().decode('utf-8') |
| 179 | + with requests_mock.mock() as m: |
| 180 | + m.get(self.baseurl + "/e490bec4-2652-4fda-8c4e-f087db6fa328/permissions", text=response_xml) |
| 181 | + single_view = TSC.ViewItem() |
| 182 | + single_view._id = "e490bec4-2652-4fda-8c4e-f087db6fa328" |
| 183 | + |
| 184 | + self.server.views.populate_permissions(single_view) |
| 185 | + permissions = single_view.permissions |
| 186 | + |
| 187 | + self.assertEqual(permissions[0].grantee.tag_name, 'group') |
| 188 | + self.assertEqual(permissions[0].grantee.id, 'c8f2773a-c83a-11e8-8c8f-33e6d787b506') |
| 189 | + self.assertDictEqual(permissions[0].capabilities, { |
| 190 | + TSC.Permission.Capability.ViewComments: TSC.Permission.Mode.Allow, |
| 191 | + TSC.Permission.Capability.Read: TSC.Permission.Mode.Allow, |
| 192 | + TSC.Permission.Capability.AddComment: TSC.Permission.Mode.Allow, |
| 193 | + TSC.Permission.Capability.ExportData: TSC.Permission.Mode.Allow, |
| 194 | + TSC.Permission.Capability.ExportImage: TSC.Permission.Mode.Allow, |
| 195 | + |
| 196 | + }) |
| 197 | + |
| 198 | + def test_add_permissions(self): |
| 199 | + with open(UPDATE_PERMISSIONS, 'rb') as f: |
| 200 | + response_xml = f.read().decode('utf-8') |
| 201 | + |
| 202 | + single_view = TSC.ViewItem() |
| 203 | + single_view._id = '21778de4-b7b9-44bc-a599-1506a2639ace' |
| 204 | + |
| 205 | + bob = UserItem.as_reference("7c37ee24-c4b1-42b6-a154-eaeab7ee330a") |
| 206 | + group_of_people = GroupItem.as_reference("5e5e1978-71fa-11e4-87dd-7382f5c437af") |
| 207 | + |
| 208 | + new_permissions = [ |
| 209 | + PermissionsRule(bob, {'Write': 'Allow'}), |
| 210 | + PermissionsRule(group_of_people, {'Read': 'Deny'}) |
| 211 | + ] |
| 212 | + |
| 213 | + with requests_mock.mock() as m: |
| 214 | + m.put(self.baseurl + "/21778de4-b7b9-44bc-a599-1506a2639ace/permissions", text=response_xml) |
| 215 | + permissions = self.server.views.update_permissions(single_view, new_permissions) |
| 216 | + |
| 217 | + self.assertEqual(permissions[0].grantee.tag_name, 'group') |
| 218 | + self.assertEqual(permissions[0].grantee.id, '5e5e1978-71fa-11e4-87dd-7382f5c437af') |
| 219 | + self.assertDictEqual(permissions[0].capabilities, { |
| 220 | + TSC.Permission.Capability.Read: TSC.Permission.Mode.Deny |
| 221 | + }) |
| 222 | + |
| 223 | + self.assertEqual(permissions[1].grantee.tag_name, 'user') |
| 224 | + self.assertEqual(permissions[1].grantee.id, '7c37ee24-c4b1-42b6-a154-eaeab7ee330a') |
| 225 | + self.assertDictEqual(permissions[1].capabilities, { |
| 226 | + TSC.Permission.Capability.Write: TSC.Permission.Mode.Allow |
| 227 | + }) |
| 228 | + |
173 | 229 | def test_update_tags(self): |
174 | 230 | with open(ADD_TAGS_XML, 'rb') as f: |
175 | 231 | add_tags_xml = f.read().decode('utf-8') |
|
0 commit comments