def test_userresourceprivilege_get_undo_users(self): george = self.george bikes = self.bikes alva = self.alva UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertTrue( is_equal_to_as_set( UserResourceProvenance.get_undo_users(resource=bikes, grantor=george), [alva]))
def test_userresourceprivilege_get_current_record(self): george = self.george bikes = self.bikes alva = self.alva UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) record = UserResourceProvenance.get_current_record(resource=bikes, user=alva) self.assertEqual(record.grantor, george) self.assertEqual(record.resource, bikes) self.assertEqual(record.user, alva)
def test_userresourceprivilege_update(self): george = self.george bikes = self.bikes alva = self.alva self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.CHANGE)
def test_userresourceprivilege_get_current_record(self): george = self.george bikes = self.bikes alva = self.alva UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) record = UserResourceProvenance.get_current_record( resource=bikes, user=alva) self.assertEqual(record.grantor, george) self.assertEqual(record.resource, bikes) self.assertEqual(record.user, alva)
def test_userresourceprivilege_get_undo_users(self): george = self.george bikes = self.bikes alva = self.alva UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertTrue( is_equal_to_as_set( UserResourceProvenance.get_undo_users( resource=bikes, grantor=george), [alva]))
def printUserResourceProvenance(): print("===================================") print("UserResourcePrivilege") priv = UserResourcePrivilege.objects.all().order_by( 'user__id', 'resource__id') o = None for p in priv: if o is not None and (p.user != o.user or p.resource != o.resource): print("------------------------------") print(p) o = p print("===================================") print("UserResourceProvenance") prov = UserResourceProvenance.objects.all().order_by( 'user__id', 'resource__id', 'start') o = None for p in prov: if o is not None and (p.user != o.user or p.resource != o.resource): print("------------------------------") current = UserResourceProvenance.get_current_record( resource=p.resource, user=p.user) star = '' if current == p: star = 'CURRENT' print((p, star)) o = p
def check_provenance_synchronization(self): for u in User.objects.all(): for r in BaseResource.objects.all(): prov = UserResourceProvenance.get_privilege(resource=r, user=u) priv = UserResourcePrivilege.get_privilege(resource=r, user=u) self.assertEqual( prov, priv, str.format("prov={}, priv={}, resource={}, user={}", prov, priv, r, u)) for u in User.objects.all(): for g in Group.objects.all(): prov = UserGroupProvenance.get_privilege(group=g, user=u) priv = UserGroupPrivilege.get_privilege(group=g, user=u) self.assertEqual( prov, priv, str.format("prov={}, priv={}, group={}, user={}", prov, priv, g, u)) for g in Group.objects.all(): for r in BaseResource.objects.all(): prov = GroupResourceProvenance.get_privilege(resource=r, group=g) priv = GroupResourcePrivilege.get_privilege(resource=r, group=g) self.assertEqual( prov, priv, str.format("prov={}, priv={}, group={}, resource={}", prov, priv, g, r))
def printUserResourceProvenance(): print "===================================" print "UserResourcePrivilege" priv = UserResourcePrivilege.objects.all().order_by('user__id', 'resource__id') o = None for p in priv: if o is not None and (p.user != o.user or p.resource != o.resource): print "------------------------------" print(p) o = p print "===================================" print "UserResourceProvenance" prov = UserResourceProvenance.objects.all().order_by( 'user__id', 'resource__id', 'start') o = None for p in prov: if o is not None and (p.user != o.user or p.resource != o.resource): print "------------------------------" current = UserResourceProvenance.get_current_record( resource=p.resource, user=p.user) star = '' if current == p: star = 'CURRENT' print(p, star) o = p
def test_userresourceprivilege_update(self): george = self.george bikes = self.bikes alva = self.alva self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.CHANGE)
def check_provenance_synchronization(self): for u in User.objects.all(): for r in BaseResource.objects.all(): prov = UserResourceProvenance.get_privilege(resource=r, user=u) priv = UserResourcePrivilege.get_privilege(resource=r, user=u) self.assertEqual(prov, priv, str.format("prov={}, priv={}, resource={}, user={}", prov, priv, r, u)) for u in User.objects.all(): for g in Group.objects.all(): prov = UserGroupProvenance.get_privilege(group=g, user=u) priv = UserGroupPrivilege.get_privilege(group=g, user=u) self.assertEqual(prov, priv, str.format("prov={}, priv={}, group={}, user={}", prov, priv, g, u)) for g in Group.objects.all(): for r in BaseResource.objects.all(): prov = GroupResourceProvenance.get_privilege(resource=r, group=g) priv = GroupResourcePrivilege.get_privilege(resource=r, group=g) self.assertEqual(prov, priv, str.format("prov={}, priv={}, group={}, resource={}", prov, priv, g, r))
def test_userresourceprivilege_undo_share(self): george = self.george bikes = self.bikes alva = self.alva self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.CHANGE) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.VIEW) UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.NONE) # further undo is prohibited with self.assertRaises(PermissionDenied): UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) with self.assertRaises(PermissionDenied): UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.VIEW) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.CHANGE) UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.VIEW) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update(resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege(resource=bikes, user=alva), PrivilegeCodes.CHANGE)
def test_userresourceprivilege_undo_share(self): george = self.george bikes = self.bikes alva = self.alva self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.CHANGE) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.VIEW) UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.NONE) # further undo is prohibited with self.assertRaises(PermissionDenied): UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) with self.assertRaises(PermissionDenied): UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.VIEW) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.CHANGE) UserResourceProvenance.undo_share(resource=bikes, user=alva, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.VIEW) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.NONE) UserResourceProvenance.update( resource=bikes, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserResourceProvenance.get_privilege( resource=bikes, user=alva), PrivilegeCodes.CHANGE)