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]))
Example #6
0
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
Example #7
0
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))
Example #8
0
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)
Example #10
0
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)