def test_fetch_shared_objects_sets_shared_ids_if_empty(self): request = DummyRequest() context = RouteFactory(request) request.registry.permission.get_accessible_objects.return_value = {} context.fetch_shared_objects("read", ["userid"], None) self.assertEqual(context.shared_ids, [])
def test_fetch_shared_objects_sets_shared_ids_from_results(self): request = DummyRequest() context = RouteFactory(request) request.registry.permission.get_accessible_objects.return_value = { "/obj/1": ["read", "write"], "/obj/3": ["obj:create"], } context.fetch_shared_objects("read", ["userid"], None) self.assertEqual(sorted(context.shared_ids), ["1", "3"])
def test_fetch_shared_objects_uses_pattern_if_on_plural_endpoint(self): request = DummyRequest() request.route_path.return_value = "/v1/buckets/%2A" service = mock.MagicMock() service.type = "plural" with mock.patch("kinto.core.authorization.utils.current_service") as m: m.return_value = service context = RouteFactory(request) self.assertTrue(context.on_plural_endpoint) context.fetch_shared_objects("read", ["userid"], None) request.registry.permission.get_accessible_objects.assert_called_with( ["userid"], [("/buckets/*", "read")], with_children=False)
def test_fetch_shared_objects_uses_get_bound_permission_callback(self): request = DummyRequest() service = mock.MagicMock() request.route_path.return_value = "/v1/buckets/%2A" service.type = "plural" with mock.patch("kinto.core.authorization.utils.current_service") as m: m.return_value = service context = RouteFactory(request) self.assertTrue(context.on_plural_endpoint) # Define a callback where write means read: def get_bound_perms(obj_id, perm): return [(obj_id, "write"), (obj_id, "read")] context.fetch_shared_objects("read", ["userid"], get_bound_perms) request.registry.permission.get_accessible_objects.assert_called_with( ["userid"], [("/buckets/*", "write"), ("/buckets/*", "read")], with_children=False)