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 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 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)