class BasicGroupTest(TestCase): """ Tests for group permissions on models with no inheritance. """ def setUp(self): self.fido = BasicAnimal(name="fido") self.fido.save() self.user1 = User.objects.create_user('testme', '*****@*****.**', 'testingpw') self.user1.save() self.user2 = User.objects.create_user('testme2', '*****@*****.**', 'testingpw') self.user2.save() self.group = Group(name='testgroup') self.group.save() def test_basic_group_permissions(self): self.assertFalse(self.user1.has_perm('pet', self.fido)) self.group.set_perm('pet', self.fido) self.assertFalse(self.user1.has_perm('pet', self.fido)) self.user1.groups.add(self.group) self.assertTrue(self.user1.has_perm('pet', self.fido)) self.assertFalse(self.user2.has_perm('pet', self.fido)) self.user2.groups.add(self.group) self.assertTrue(self.user2.has_perm('pet', self.fido)) self.assertTrue(self.group.has_perm('pet', self.fido)) def test_group_class_permissions(self): self.assertFalse(self.user1.has_perm('pet', self.fido)) self.assertFalse(self.user2.has_perm('pet', self.fido)) self.group.set_perm('pet', self.fido.__class__) self.assertFalse(self.user1.has_perm('pet', self.fido)) self.assertFalse(self.user1.has_perm('pet', self.fido.__class__)) self.user1.groups.add(self.group) self.assertTrue(self.user1.has_perm('pet', self.fido)) self.assertTrue(self.user1.has_perm('pet', self.fido.__class__)) self.assertFalse(self.user2.has_perm('pet', self.fido)) self.assertFalse(self.user2.has_perm('pet', self.fido.__class__)) # test behavior of perm only defined on class self.assertFalse(self.user1.has_perm('eat', self.fido)) self.assertFalse(self.user1.has_perm('eat', self.fido.__class__)) self.assertFalse(self.user2.has_perm('eat', self.fido)) self.assertFalse(self.user2.has_perm('eat', self.fido.__class__)) self.group.set_perm('eat', self.fido.__class__) self.assertTrue(self.user1.has_perm('eat', self.fido)) self.assertTrue(self.user1.has_perm('eat', self.fido.__class__)) self.assertFalse(self.user2.has_perm('eat', self.fido)) self.assertFalse(self.user2.has_perm('eat', self.fido.__class__))