class TestUserGroupAccess(object): @pytest.mark.parametrize('access, permission', [ ('rw------', Permission(metadata='readwrite', data='none')), ('rw------', Permission(metadata='readwrite', data=None)), ]) def test_from_dict(self, access, permission): data = {'id': 'abc', 'access': access} uga = UserGroupAccess.from_dict(data) assert permission.to_symbol() == access assert uga.to_json() == {"id": "abc", "access": permission.to_symbol()} @pytest.mark.parametrize('access', ['ab-------', 'readwrite', 123, None]) def test_from_dict_invalid_access(self, access): data = {'id': 'abc', 'access': access} uga = UserGroupAccess.from_dict(data) assert uga.permission == Permission(None, None) assert uga.to_json() == {"id": "abc", "access": "--------"} def test_inequality(self): uga1 = UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data='readwrite')) uga2 = UserGroupAccess(uid='abc', permission=Permission(metadata='readonly', data='readwrite')) uga3 = UserGroupAccess(uid='cde', permission=Permission(metadata='readwrite', data='readwrite')) assert uga1 != uga2 assert uga1 != uga3
def test_print(self): assert str(Permission(metadata=None, data=None)) == '[metadata:none]' assert str( Permission(metadata=None, data='readwrite')) == '[metadata:none] [data:readwrite]' assert repr(Permission(metadata=None, data='readwrite')) == 'None readwrite'
def test_inequality(self): uga1 = UserGroupAccessMerge(uid='abc', permission=Permission(metadata='readwrite', data='readwrite')) uga2 = UserGroupAccessMerge(uid='cde', permission=Permission(metadata='readwrite', data='readwrite')) assert uga1 != uga2
def test_all_equal(self): p1 = Permission(metadata='readwrite', data='readonly') p2 = Permission.from_public_args([['readwrite', 'readonly']]) p3 = Permission.from_symbol('rwr-----') p4 = Permission.from_group_args(['aFilter', 'readwrite', 'readonly']) assert p1 == p2 assert p3 == p4 assert p1 == p4 assert p1.to_symbol() == p2.to_symbol() assert p3.to_symbol() == p4.to_symbol() assert p1.to_symbol() == p4.to_symbol()
def test_from_dict_invalid_access(self, access): data = {'id': 'abc', 'access': access} uga = UserGroupAccess.from_dict(data) assert uga.permission == Permission(None, None) assert uga.to_json() == {"id": "abc", "access": "--------"}
def test_permission_from_group_args(self, groups, metadata, data): p = Permission.from_group_args(groups) assert p.metadata == metadata assert p.data == data
def test_permission_from_symbol(self, symbol, metadata, data): p = Permission.from_symbol(symbol) assert p.metadata == metadata assert p.data == data
def test_permission_from_public_args(self, public_args, metadata, data, symbol): p = Permission.from_public_args(public_args) assert p.metadata == metadata assert p.data == data assert p.to_symbol() == symbol
def test_permission_init(self): p = Permission(metadata='rw', data='r-') assert p.metadata == 'rw' assert p.data == 'r-'
def test_permission_from_public_args_inherited(self): """If not specified, assume it's inherited from server definition""" assert Permission.from_public_args(None) == PUBLIC_ACCESS_INHERITED
class TestMerge(object): @pytest.mark.parametrize( 'server_uga, local_uga, expected', [ [ # user group accesses is retained { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) } ], [ # user group accesses have higher priority when supplied to what is already on the server { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data='readonly')) }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readonly', data=None)), }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readonly', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data='readonly')) } ], [ # user group accesses are not overwritten with NONE { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata=None, data=None)) }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), } ], [ # no user groups present on server {}, { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) }, { UserGroupAccess(uid='abc', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) } ], [ # no user groups present on server nor specified {}, {}, {} ], [ # ordering not important {}, { UserGroupAccess(uid='abc', permission=Permission(metadata=None, data='readwrite')), UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)) }, { UserGroupAccess(uid='def', permission=Permission(metadata='readwrite', data=None)), UserGroupAccess(uid='abc', permission=Permission(metadata=None, data='readwrite')) } ] ]) def test_merge(self, server_uga, local_uga, expected): output = merge(server_uga, local_uga) assert output == expected
def test_permission_not_equal(self): assert Permission(metadata='readwrite', data=None) != Permission( metadata=None, data=None)