# -*- encoding: utf-8 -*- # # This file is a part of the CaosDB Project. # # Copyright (C) 2022 Indiscale GmbH <info@indiscale.com> # Copyright (C) 2022 Timm Fitschen <f.fitschen@indiscale.com> # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as # published by the Free Software Foundation, either version 3 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <https://www.gnu.org/licenses/>. # import caosdb as db from lxml import etree def test_parse_xml(): # @review Florian Spreckelsen 2022-03-17 xml_str = """ <EntityACL> <Grant priority="False" role="role1"> <Permission name="RETRIEVE:ENTITY"/> </Grant> <Deny priority="False" role="role1"> <Permission name="RETRIEVE:ENTITY"/> </Deny> <Grant priority="True" role="role1"> <Permission name="RETRIEVE:ENTITY"/> </Grant> <Deny priority="True" role="role1"> <Permission name="RETRIEVE:ENTITY"/> </Deny> </EntityACL>""" xml = etree.fromstring(xml_str) left_acl = db.ACL(xml) right_acl = db.ACL() right_acl.grant(role="role1", permission="RETRIEVE:ENTITY", revoke_denial=False) right_acl.deny(role="role1", permission="RETRIEVE:ENTITY", revoke_grant=False) right_acl.grant(role="role1", permission="RETRIEVE:ENTITY", priority=True, revoke_denial=False) right_acl.deny(role="role1", permission="RETRIEVE:ENTITY", priority=True, revoke_grant=False) assert left_acl == right_acl