def test_usergroupprivilege_get_undo_users(self): george = self.george bikers = self.bikers alva = self.alva UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertTrue( is_equal_to_as_set( UserGroupProvenance.get_undo_users(group=bikers, grantor=george), [alva]))
def test_usergroupprivilege_get_current_record(self): george = self.george bikers = self.bikers alva = self.alva UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) record = UserGroupProvenance.get_current_record(group=bikers, user=alva) self.assertEqual(record.grantor, george) self.assertEqual(record.group, bikers) self.assertEqual(record.user, alva)
def test_usergroupprivilege_get_privilege(self): george = self.george bikers = self.bikers alva = self.alva self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.CHANGE)
def test_usergroupprivilege_get_current_record(self): george = self.george bikers = self.bikers alva = self.alva UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) record = UserGroupProvenance.get_current_record( group=bikers, user=alva) self.assertEqual(record.grantor, george) self.assertEqual(record.group, bikers) self.assertEqual(record.user, alva)
def test_usergroupprivilege_get_undo_users(self): george = self.george bikers = self.bikers alva = self.alva UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertTrue( is_equal_to_as_set( UserGroupProvenance.get_undo_users( group=bikers, grantor=george), [alva]))
def printUserGroupProvenance(): print("===================================") print("UserGroupPrivilege") priv = UserGroupPrivilege.objects.all().order_by('user__id', 'group__id') o = None for p in priv: if o is not None and (p.user != o.user or p.group != o.group): print("------------------------------") pprint(p) o = p print("===================================") print("UserGroupProvenance") prov = UserGroupProvenance.objects.all().order_by('user__id', 'group__id', 'start') o = None for p in prov: if o is not None and (p.user != o.user or p.group != o.group): print("------------------------------") current = UserGroupProvenance.get_current_record(group=p.group, 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 printUserGroupProvenance(): print "===================================" print "UserGroupPrivilege" priv = UserGroupPrivilege.objects.all().order_by('user__id', 'group__id') o = None for p in priv: if o is not None and (p.user != o.user or p.group != o.group): print "------------------------------" pprint(p) o = p print "===================================" print "UserGroupProvenance" prov = UserGroupProvenance.objects.all().order_by( 'user__id', 'group__id', 'start') o = None for p in prov: if o is not None and (p.user != o.user or p.group != o.group): print "------------------------------" current = UserGroupProvenance.get_current_record( group=p.group, user=p.user) star = '' if current == p: star = 'CURRENT' print(p, star) o = p
def test_usergroupprivilege_update(self): george = self.george bikers = self.bikers alva = self.alva self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, 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_usergroupprivilege_undo_share(self): george = self.george bikers = self.bikers alva = self.alva self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.CHANGE) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.VIEW) UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.NONE) # no further undo is possible. with self.assertRaises(PermissionDenied): UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) with self.assertRaises(PermissionDenied): UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.VIEW) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.CHANGE) UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.VIEW) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update(group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege(group=bikers, user=alva), PrivilegeCodes.CHANGE)
def test_usergroupprivilege_undo_share(self): george = self.george bikers = self.bikers alva = self.alva self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.CHANGE) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.VIEW) UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.NONE) # no further undo is possible. with self.assertRaises(PermissionDenied): UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) with self.assertRaises(PermissionDenied): UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.VIEW, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.VIEW) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.CHANGE) UserGroupProvenance.undo_share(group=bikers, user=alva, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.VIEW) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.NONE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.NONE) UserGroupProvenance.update( group=bikers, user=alva, privilege=PrivilegeCodes.CHANGE, grantor=george) self.assertEqual( UserGroupProvenance.get_privilege( group=bikers, user=alva), PrivilegeCodes.CHANGE)