Package expedient :: Package clearinghouse :: Package permissionmgmt :: Module tests
[hide private]
[frames] | no frames]

Source Code for Module expedient.clearinghouse.permissionmgmt.tests

 1  ''' 
 2  Created on Jul 29, 2010 
 3   
 4  @author: jnaous 
 5  ''' 
 6  from django.test import TestCase 
 7  from django.contrib.auth.models import User 
 8  from expedient.common.permissions.shortcuts import create_permission,\ 
 9      give_permission_to, has_permission 
10  from expedient.common.permissions.models import PermissionRequest,\ 
11      Permittee, ObjectPermission 
12  from django.core.urlresolvers import reverse 
13  from expedient.common.tests.client import test_get_and_post_form 
14   
15 -class RequestsTests(TestCase):
16 - def setUp(self):
17 """ 18 Create some permissions and users. 19 """ 20 self.u1 = User.objects.create_user("user1", "user@user.com", "password") 21 self.u2 = User.objects.create_user("user2", "user@user.com", "password") 22 23 create_permission("permission1", description="Permission 1 description.") 24 give_permission_to("permission1", self.u1, self.u1, can_delegate=True) 25 give_permission_to("permission1", self.u2, self.u1, can_delegate=True)
26
27 - def test_req_process(self):
28 """ 29 Test that when a request is made for a user, it shows up in the 30 dashboard. 31 """ 32 self.client.login(username="user1", password="password") 33 resp = self.client.get(reverse("permissionmgmt_dashboard")) 34 35 # "permission1" should not be mentioned anywhere on the page 36 self.assertContains(resp, "permission1", 0) 37 38 obj_perm1=ObjectPermission.objects.get_or_create_for_object_or_class( 39 "permission1", self.u1, 40 )[0] 41 obj_perm2=ObjectPermission.objects.get_or_create_for_object_or_class( 42 "permission1", self.u2, 43 )[0] 44 req1 = PermissionRequest.objects.create( 45 requesting_user=self.u2, 46 permittee=Permittee.objects.get_or_create_from_instance(self.u2)[0], 47 permission_owner=self.u1, 48 requested_permission=obj_perm1, 49 ) 50 req2 = PermissionRequest.objects.create( 51 requesting_user=self.u2, 52 permittee=Permittee.objects.get_or_create_from_instance(self.u2)[0], 53 permission_owner=self.u1, 54 requested_permission=obj_perm2, 55 ) 56 57 resp = self.client.get(reverse("permissionmgmt_dashboard")) 58 59 # "permission1" should be mentioned twice: once in each request 60 self.assertContains(resp, "permission1", 2) 61 62 resp = test_get_and_post_form( 63 self.client, reverse("permissionmgmt_dashboard"), 64 dict( 65 approved=[str(req2.id)], 66 denied=[str(req1.id)], 67 ) 68 ) 69 70 self.assertRedirects(resp, reverse("permissionmgmt_confirm_req")) 71 72 resp = test_get_and_post_form( 73 self.client, reverse("permissionmgmt_confirm_req"), 74 dict( 75 post="yes", 76 ) 77 ) 78 79 self.assertRedirects(resp, reverse("home")) 80 81 self.assertEqual(PermissionRequest.objects.count(), 0) 82 83 self.assertTrue(has_permission(self.u2, self.u2, "permission1")) 84 self.assertFalse(has_permission(self.u2, self.u1, "permission1"))
85