diff --git a/src/authority/fixtures/tests.json b/src/authority/fixtures/tests.json new file mode 100644 index 0000000..ff53116 --- /dev/null +++ b/src/authority/fixtures/tests.json @@ -0,0 +1,20 @@ +[ + { + "pk": 1, + "model": "auth.user", + "fields": { + "username": "jezdez", + "first_name": "", + "last_name": "", + "is_active": true, + "is_superuser": false, + "is_staff": false, + "last_login": "2009-11-02 03:06:19", + "groups": [], + "user_permissions": [], + "password": "", + "email": "", + "date_joined": "2009-11-02 03:06:19" + } + } +] diff --git a/src/authority/tests.py b/src/authority/tests.py new file mode 100644 index 0000000..72c07fc --- /dev/null +++ b/src/authority/tests.py @@ -0,0 +1,54 @@ +from django.test import TestCase +from django.contrib.auth.models import User +from django.contrib.auth.models import Permission as DjangoPermission + +import authority +from authority import permissions +from authority.models import Permission + +class UserPermission(permissions.BasePermission): + checks = ('browse',) + label = 'user_permission' +authority.register(User, UserPermission) + +class BehaviourTest(TestCase): + ''' + self.user will be given: + - django permission add_user (test_add) + - authority to delete_user which is him (test_delete) + + This permissions are given in the test case and not in the fixture, for + later reference. + ''' + + fixtures = ['tests.json',] + + def setUp(self): + self.user = User.objects.get(username='jezdez') + self.check = UserPermission(self.user) + + def test_no_permission(self): + self.assertFalse(self.check.add_user()) + self.assertFalse(self.check.delete_user()) + self.assertFalse(self.check.delete_user(self.user)) + + def test_add(self): + # setup + perm = DjangoPermission.objects.get(codename='add_user') + self.user.user_permissions.add(perm) + + # test + self.assertTrue(self.check.add_user()) + + def test_delete(self): + perm = Permission( + user=self.user, + content_object=self.user, + codename='user_permission.delete_user', + approved=True + ) + perm.save() + + # test + self.assertFalse(self.check.delete_user()) + self.assertTrue(self.check.delete_user(self.user))