diff options
Diffstat (limited to 'chimere/tests.py')
-rw-r--r-- | chimere/tests.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/chimere/tests.py b/chimere/tests.py index d5096b4..89c6ee3 100644 --- a/chimere/tests.py +++ b/chimere/tests.py @@ -559,3 +559,43 @@ class RouteTest(TestCase): route='SRID=4326;LINESTRING (30 10, 10 30, 40 40)', has_associated_marker=False) self.assertEqual(Marker.objects.filter(route=route_2).count(), 0) + +class PermissionTest(TestCase): + def setUp(self): + self.maps = map_setup() + self.users, self.groups = users_setup() + MapUsers.objects.create(map=self.maps[2], user=self.users[1], read=True, + propose=False, write=False) + MapGroups.objects.create(map=self.maps[2], group=self.groups[0], + read=True, propose=True, write=True) + + def test_rights(self): + self.client.login(username=self.users[0].username, password='pass') + for urn, can_view, can_propose in [('map-1', True, True), + ('map-2', True, False), + ('map-3', False, False)]: + self.check_right(urn, can_view, can_propose, self.users[0].username) + self.client.login(username=self.users[1].username, password='pass') + for urn, can_view, can_propose in [('map-1', True, True), + ('map-2', True, False), + ('map-3', True, False)]: + self.check_right(urn, can_view, can_propose, self.users[1].username) + self.client.login(username=self.users[2].username, password='pass') + for urn, can_view, can_propose in [('map-1', True, True), + ('map-2', True, False), + ('map-3', True, True)]: + self.check_right(urn, can_view, can_propose, self.users[2].username) + + def check_right(self, urn, can_view, can_propose, username): + url = reverse('chimere:index', args=[urn]) + response = self.client.get(url) + status_code = 200 if can_view else 302 + self.assertEqual(status_code, response.status_code, + msg='index for %s, %s: %s got where %s is attended' % ( + username, urn, response.status_code, status_code)) + url = reverse('chimere:edit', args=[urn+'/']) + status_code = 200 if can_propose else 302 + response = self.client.get(url) + self.assertEqual(status_code, response.status_code, + msg='edit for %s, %s: %s got where %s is attended' % ( + username, urn, response.status_code, status_code)) |