def test_can_undo_share_resource_with_group(self):
        george = self.george
        bikes = self.bikes
        bikers = self.bikers
        alva = self.alva
        self.assertFalse(
            george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(
            alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.NONE)
        george.uaccess.share_resource_with_group(bikes, bikers,
                                                 PrivilegeCodes.CHANGE)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.CHANGE)
        self.assertTrue(
            george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(
            alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        george.uaccess.undo_share_resource_with_group(bikes, bikers)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.NONE)
        self.assertFalse(
            george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertTrue(
            GroupResourceProvenance.get_current_record(resource=bikes,
                                                       group=bikers).undone)

        self.assertFalse(
            alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))

        george.uaccess.share_resource_with_group(bikes, bikers,
                                                 PrivilegeCodes.VIEW)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.VIEW)
        self.assertTrue(
            george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(
            GroupResourceProvenance.get_current_record(resource=bikes,
                                                       group=bikers).undone)
        self.assertFalse(
            alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        george.uaccess.undo_share_resource_with_group(bikes, bikers)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.NONE)
        self.assertFalse(
            george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(
            alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
 def test_groupresourceprivilege_get_current_record(self):
     george = self.george
     bikes = self.bikes
     bikers = self.bikers
     GroupResourceProvenance.update(resource=bikes,
                                    group=bikers,
                                    privilege=PrivilegeCodes.CHANGE,
                                    grantor=george)
     record = GroupResourceProvenance.get_current_record(resource=bikes,
                                                         group=bikers)
     self.assertEqual(record.grantor, george)
     self.assertEqual(record.resource, bikes)
     self.assertEqual(record.group, bikers)
 def test_groupresourceprivilege_get_undo_groups(self):
     george = self.george
     bikes = self.bikes
     bikers = self.bikers
     GroupResourceProvenance.update(resource=bikes,
                                    group=bikers,
                                    privilege=PrivilegeCodes.CHANGE,
                                    grantor=george)
     self.assertTrue(
         is_equal_to_as_set(
             GroupResourceProvenance.get_undo_groups(resource=bikes,
                                                     grantor=george),
             [bikers]))
 def test_groupresourceprivilege_get_current_record(self):
     george = self.george
     bikes = self.bikes
     bikers = self.bikers
     GroupResourceProvenance.update(
         resource=bikes,
         group=bikers,
         privilege=PrivilegeCodes.CHANGE,
         grantor=george)
     record = GroupResourceProvenance.get_current_record(
         resource=bikes, group=bikers)
     self.assertEqual(record.grantor, george)
     self.assertEqual(record.resource, bikes)
     self.assertEqual(record.group, bikers)
 def test_groupresourceprivilege_get_undo_groups(self):
     george = self.george
     bikes = self.bikes
     bikers = self.bikers
     GroupResourceProvenance.update(
         resource=bikes,
         group=bikers,
         privilege=PrivilegeCodes.CHANGE,
         grantor=george)
     self.assertTrue(
         is_equal_to_as_set(
             GroupResourceProvenance.get_undo_groups(
                 resource=bikes,
                 grantor=george),
             [bikers]))
 def test_groupresourceprivilege_get_privilege(self):
     george = self.george
     bikes = self.bikes
     bikers = self.bikers
     self.assertEqual(
         GroupResourceProvenance.get_privilege(resource=bikes,
                                               group=bikers),
         PrivilegeCodes.NONE)
     GroupResourceProvenance.update(resource=bikes,
                                    group=bikers,
                                    privilege=PrivilegeCodes.CHANGE,
                                    grantor=george)
     self.assertEqual(
         GroupResourceProvenance.get_privilege(resource=bikes,
                                               group=bikers),
         PrivilegeCodes.CHANGE)
예제 #7
0
def printGroupResourceProvenance():
    print("===================================")
    print("GroupResourcePrivilege")
    priv = GroupResourcePrivilege.objects.all().order_by(
        'group__id', 'resource__id')
    o = None
    for p in priv:
        if o is not None and (p.group != o.group or p.resource != o.resource):
            print("------------------------------")
        print(p)
        o = p
    print("===================================")
    print("GroupResourceProvenance")
    prov = GroupResourceProvenance.objects.all().order_by(
        'group__id', 'resource__id', 'start')
    o = None
    for p in prov:
        if o is not None and (p.group != o.group or p.resource != o.resource):
            print("------------------------------")
        current = GroupResourceProvenance.get_current_record(
            resource=p.resource, group=p.group)
        star = ''
        if current == p:
            star = 'CURRENT'
        print((p, star))
        o = p
예제 #8
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))
예제 #9
0
def printGroupResourceProvenance():
    print "==================================="
    print "GroupResourcePrivilege"
    priv = GroupResourcePrivilege.objects.all().order_by('group__id', 'resource__id')
    o = None
    for p in priv:
        if o is not None and (p.group != o.group or p.resource != o.resource):
            print "------------------------------"
        print(p)
        o = p
    print "==================================="
    print "GroupResourceProvenance"
    prov = GroupResourceProvenance.objects.all().order_by(
        'group__id', 'resource__id', 'start')
    o = None
    for p in prov:
        if o is not None and (p.group != o.group or p.resource != o.resource):
            print "------------------------------"
        current = GroupResourceProvenance.get_current_record(
            resource=p.resource, group=p.group)
        star = ''
        if current == p:
            star = 'CURRENT'
        print(p, star)
        o = p
예제 #10
0
 def test_groupresourceprivilege_get_privilege(self):
     george = self.george
     bikes = self.bikes
     bikers = self.bikers
     self.assertEqual(
         GroupResourceProvenance.get_privilege(
             resource=bikes,
             group=bikers),
         PrivilegeCodes.NONE)
     GroupResourceProvenance.update(
         resource=bikes,
         group=bikers,
         privilege=PrivilegeCodes.CHANGE,
         grantor=george)
     self.assertEqual(
         GroupResourceProvenance.get_privilege(
             resource=bikes,
             group=bikers),
         PrivilegeCodes.CHANGE)
예제 #11
0
    def test_can_undo_share_resource_with_group(self):
        george = self.george
        bikes = self.bikes
        bikers = self.bikers
        alva = self.alva
        self.assertFalse(george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.NONE)
        george.uaccess.share_resource_with_group(bikes, bikers, PrivilegeCodes.CHANGE)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.CHANGE)
        self.assertTrue(george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        george.uaccess.undo_share_resource_with_group(bikes, bikers)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.NONE)
        self.assertFalse(george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertTrue(
            GroupResourceProvenance.get_current_record(resource=bikes, group=bikers).undone)

        self.assertFalse(alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))

        george.uaccess.share_resource_with_group(bikes, bikers, PrivilegeCodes.VIEW)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.VIEW)
        self.assertTrue(george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(
            GroupResourceProvenance.get_current_record(resource=bikes, group=bikers).undone)
        self.assertFalse(alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        george.uaccess.undo_share_resource_with_group(bikes, bikers)
        self.assertEqual(
            GroupResourcePrivilege.get_privilege(resource=bikes, group=bikers),
            PrivilegeCodes.NONE)
        self.assertFalse(george.uaccess.can_undo_share_resource_with_group(bikes, bikers))
        self.assertFalse(alva.uaccess.can_undo_share_resource_with_group(bikes, bikers))
예제 #12
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_groupresourceprivilege_undo_share(self):
        george = self.george
        bikes = self.bikes
        bikers = self.bikers
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.NONE)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.CHANGE,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.CHANGE)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.NONE,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.NONE)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.VIEW,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.VIEW)
        GroupResourceProvenance.undo_share(resource=bikes,
                                           group=bikers,
                                           grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.NONE)

        # further undos are prohibited
        with self.assertRaises(PermissionDenied):
            GroupResourceProvenance.undo_share(resource=bikes,
                                               group=bikers,
                                               grantor=george)
        with self.assertRaises(PermissionDenied):
            GroupResourceProvenance.undo_share(resource=bikes,
                                               group=bikers,
                                               grantor=george)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.VIEW,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.VIEW)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.CHANGE,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.CHANGE)
        GroupResourceProvenance.undo_share(resource=bikes,
                                           group=bikers,
                                           grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.VIEW)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.NONE,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.NONE)
        GroupResourceProvenance.update(resource=bikes,
                                       group=bikers,
                                       privilege=PrivilegeCodes.CHANGE,
                                       grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(resource=bikes,
                                                  group=bikers),
            PrivilegeCodes.CHANGE)
예제 #14
0
    def test_groupresourceprivilege_undo_share(self):
        george = self.george
        bikes = self.bikes
        bikers = self.bikers
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.NONE)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.CHANGE,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.CHANGE)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.NONE,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.NONE)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.VIEW,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.VIEW)
        GroupResourceProvenance.undo_share(resource=bikes, group=bikers, grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.NONE)

        # further undos are prohibited
        with self.assertRaises(PermissionDenied):
            GroupResourceProvenance.undo_share(resource=bikes, group=bikers, grantor=george)
        with self.assertRaises(PermissionDenied):
            GroupResourceProvenance.undo_share(resource=bikes, group=bikers, grantor=george)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.VIEW,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.VIEW)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.CHANGE,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.CHANGE)
        GroupResourceProvenance.undo_share(resource=bikes, group=bikers, grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.VIEW)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.NONE,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.NONE)
        GroupResourceProvenance.update(
            resource=bikes,
            group=bikers,
            privilege=PrivilegeCodes.CHANGE,
            grantor=george)
        self.assertEqual(
            GroupResourceProvenance.get_privilege(
                resource=bikes,
                group=bikers),
            PrivilegeCodes.CHANGE)