summaryrefslogtreecommitdiff
path: root/chimere/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/tests.py')
-rw-r--r--chimere/tests.py40
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))