|
16 | 16 | POPULATE_PERMISSIONS_XML = "project_populate_permissions.xml"
|
17 | 17 | POPULATE_WORKBOOK_DEFAULT_PERMISSIONS_XML = "project_populate_workbook_default_permissions.xml"
|
18 | 18 | UPDATE_DATASOURCE_DEFAULT_PERMISSIONS_XML = "project_update_datasource_default_permissions.xml"
|
| 19 | +POPULATE_VIRTUALCONNECTION_DEFAULT_PERMISSIONS_XML = "project_populate_virtualconnection_default_permissions.xml" |
| 20 | +UPDATE_VIRTUALCONNECTION_DEFAULT_PERMISSIONS_XML = "project_update_virtualconnection_default_permissions.xml" |
19 | 21 |
|
20 | 22 |
|
21 | 23 | class ProjectTests(unittest.TestCase):
|
@@ -303,3 +305,108 @@ def test_delete_workbook_default_permission(self) -> None:
|
303 | 305 | m.delete(f"{self.baseurl}/{endpoint}/Delete/Deny", status_code=204)
|
304 | 306 | m.delete(f"{self.baseurl}/{endpoint}/ChangePermissions/Allow", status_code=204)
|
305 | 307 | self.server.projects.delete_workbook_default_permissions(item=single_project, rule=rules)
|
| 308 | + |
| 309 | + def test_populate_virtualconnection_default_permissions(self): |
| 310 | + response_xml = read_xml_asset(POPULATE_VIRTUALCONNECTION_DEFAULT_PERMISSIONS_XML) |
| 311 | + |
| 312 | + self.server.version = "3.23" |
| 313 | + base_url = self.server.projects.baseurl |
| 314 | + |
| 315 | + with requests_mock.mock() as m: |
| 316 | + m.get( |
| 317 | + base_url + "/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/default-permissions/virtualConnections", |
| 318 | + text=response_xml, |
| 319 | + ) |
| 320 | + project = TSC.ProjectItem("test", "1d0304cd-3796-429f-b815-7258370b9b74") |
| 321 | + project._id = "9dbd2263-16b5-46e1-9c43-a76bb8ab65fb" |
| 322 | + |
| 323 | + self.server.projects.populate_virtualconnection_default_permissions(project) |
| 324 | + permissions = project.default_virtualconnection_permissions |
| 325 | + |
| 326 | + rule = permissions.pop() |
| 327 | + |
| 328 | + self.assertEqual("c8f2773a-c83a-11e8-8c8f-33e6d787b506", rule.grantee.id) |
| 329 | + self.assertEqual("group", rule.grantee.tag_name) |
| 330 | + self.assertDictEqual( |
| 331 | + rule.capabilities, |
| 332 | + { |
| 333 | + TSC.Permission.Capability.Read: TSC.Permission.Mode.Allow, |
| 334 | + TSC.Permission.Capability.Connect: TSC.Permission.Mode.Allow, |
| 335 | + TSC.Permission.Capability.ChangeHierarchy: TSC.Permission.Mode.Deny, |
| 336 | + TSC.Permission.Capability.Delete: TSC.Permission.Mode.Deny, |
| 337 | + TSC.Permission.Capability.ChangePermissions: TSC.Permission.Mode.Deny, |
| 338 | + }, |
| 339 | + ) |
| 340 | + |
| 341 | + def test_update_virtualconnection_default_permissions(self): |
| 342 | + response_xml = read_xml_asset(UPDATE_VIRTUALCONNECTION_DEFAULT_PERMISSIONS_XML) |
| 343 | + |
| 344 | + self.server.version = "3.23" |
| 345 | + base_url = self.server.projects.baseurl |
| 346 | + |
| 347 | + with requests_mock.mock() as m: |
| 348 | + m.put( |
| 349 | + base_url + "/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/default-permissions/virtualConnections", |
| 350 | + text=response_xml, |
| 351 | + ) |
| 352 | + project = TSC.ProjectItem("test", "1d0304cd-3796-429f-b815-7258370b9b74") |
| 353 | + project._id = "9dbd2263-16b5-46e1-9c43-a76bb8ab65fb" |
| 354 | + |
| 355 | + group = TSC.GroupItem("test-group") |
| 356 | + group._id = "c8f2773a-c83a-11e8-8c8f-33e6d787b506" |
| 357 | + |
| 358 | + capabilities = { |
| 359 | + TSC.Permission.Capability.ChangeHierarchy: TSC.Permission.Mode.Allow, |
| 360 | + TSC.Permission.Capability.Delete: TSC.Permission.Mode.Allow, |
| 361 | + TSC.Permission.Capability.Read: TSC.Permission.Mode.Deny, |
| 362 | + } |
| 363 | + |
| 364 | + rules = [TSC.PermissionsRule(GroupItem.as_reference(group.id), capabilities)] |
| 365 | + new_rules = self.server.projects.update_virtualconnection_default_permissions(project, rules) |
| 366 | + |
| 367 | + rule = new_rules.pop() |
| 368 | + |
| 369 | + self.assertEqual(group.id, rule.grantee.id) |
| 370 | + self.assertEqual("group", rule.grantee.tag_name) |
| 371 | + self.assertDictEqual( |
| 372 | + rule.capabilities, |
| 373 | + { |
| 374 | + TSC.Permission.Capability.ChangeHierarchy: TSC.Permission.Mode.Allow, |
| 375 | + TSC.Permission.Capability.Delete: TSC.Permission.Mode.Allow, |
| 376 | + TSC.Permission.Capability.Read: TSC.Permission.Mode.Deny, |
| 377 | + }, |
| 378 | + ) |
| 379 | + |
| 380 | + def test_delete_virtualconnection_default_permimssions(self): |
| 381 | + response_xml = read_xml_asset(POPULATE_VIRTUALCONNECTION_DEFAULT_PERMISSIONS_XML) |
| 382 | + |
| 383 | + self.server.version = "3.23" |
| 384 | + base_url = self.server.projects.baseurl |
| 385 | + |
| 386 | + with requests_mock.mock() as m: |
| 387 | + m.get( |
| 388 | + base_url + "/9dbd2263-16b5-46e1-9c43-a76bb8ab65fb/default-permissions/virtualConnections", |
| 389 | + text=response_xml, |
| 390 | + ) |
| 391 | + |
| 392 | + project = TSC.ProjectItem("test", "1d0304cd-3796-429f-b815-7258370b9b74") |
| 393 | + project._id = "9dbd2263-16b5-46e1-9c43-a76bb8ab65fb" |
| 394 | + |
| 395 | + group = TSC.GroupItem("test-group") |
| 396 | + group._id = "c8f2773a-c83a-11e8-8c8f-33e6d787b506" |
| 397 | + |
| 398 | + self.server.projects.populate_virtualconnection_default_permissions(project) |
| 399 | + permissions = project.default_virtualconnection_permissions |
| 400 | + |
| 401 | + del_caps = { |
| 402 | + TSC.Permission.Capability.ChangeHierarchy: TSC.Permission.Mode.Deny, |
| 403 | + TSC.Permission.Capability.Connect: TSC.Permission.Mode.Allow, |
| 404 | + } |
| 405 | + |
| 406 | + rule = TSC.PermissionsRule(GroupItem.as_reference(group.id), del_caps) |
| 407 | + |
| 408 | + endpoint = f"{project.id}/default-permissions/virtualConnections/groups/{group.id}" |
| 409 | + m.delete(f"{base_url}/{endpoint}/ChangeHierarchy/Deny", status_code=204) |
| 410 | + m.delete(f"{base_url}/{endpoint}/Connect/Allow", status_code=204) |
| 411 | + |
| 412 | + self.server.projects.delete_virtualconnection_default_permissions(project, rule) |
0 commit comments