diff --git a/gracedb/api/v1/events/tests/test_access.py b/gracedb/api/v1/events/tests/test_access.py new file mode 100644 index 0000000000000000000000000000000000000000..1cd2b54c009441ca845c61be24ef888bf17051d7 --- /dev/null +++ b/gracedb/api/v1/events/tests/test_access.py @@ -0,0 +1,231 @@ +from __future__ import absolute_import + +from django.conf import settings +from django.urls import reverse + +from api.tests.utils import GraceDbApiTestBase +from events.tests.mixins import EventSetup +from ...settings import API_VERSION + + +def v_reverse(viewname, *args, **kwargs): + """Easily customizable versioned API reverse for testing""" + viewname = 'api:{version}:'.format(version=API_VERSION) + viewname + return reverse(viewname, *args, **kwargs) + + +class TestPublicAccess(EventSetup, GraceDbApiTestBase): + + def test_event_list(self): + """Unauthenticated user can't access event list""" + url = v_reverse('events:event-list') + methods = ["GET", "POST"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_detail(self): + """Unauthenticated user can't access event detail""" + url = v_reverse('events:event-detail', args=['G123456']) + methods = ["GET", "PUT"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_log_list(self): + """Unauthenticated user can't access event log list""" + url = v_reverse('events:eventlog-list', args=['G123456']) + methods = ["GET", "POST"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_log_detail(self): + """Unauthenticated user can't access event log detail""" + url = v_reverse('events:eventlog-detail', args=['G123456', 1]) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_voevent_list(self): + """Unauthenticated user can't access event VOEvent list""" + url = v_reverse('events:voevent-list', args=['G123456']) + methods = ["GET", "POST"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_voevent_detail(self): + """Unauthenticated user can't access event VOEvent detail""" + url = v_reverse('events:voevent-detail', args=['G123456', 1]) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_embbeventlog_list(self): + """Unauthenticated user can't access event EMBBEventLog list""" + url = v_reverse('events:embbeventlog-list', args=['G123456']) + methods = ["GET", "POST"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_embbeventlog_detail(self): + """Unauthenticated user can't access event EMBBEventLog detail""" + url = v_reverse('events:embbeventlog-detail', args=['G123456', 1]) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_emobservation_list(self): + """Unauthenticated user can't access event EMObservation list""" + url = v_reverse('events:emobservation-list', args=['G123456']) + methods = ["GET", "POST"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_emobservation_detail(self): + """Unauthenticated user can't access event EMObservation detail""" + url = v_reverse('events:emobservation-detail', args=['G123456', 1]) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_tag_list(self): + """Unauthenticated user can't access event tag list""" + url = v_reverse('events:eventtag-list', args=['G123456']) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_tag_detail(self): + """Unauthenticated user can't access event tag detail""" + url = v_reverse('events:eventtag-detail', args=['G123456', 'tagname']) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_log_tag_list(self): + """Unauthenticated user can't access event log tag list""" + url = v_reverse('events:eventlogtag-list', args=['G123456', 1]) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_log_tag_detail(self): + """Unauthenticated user can't access event log tag detail""" + url = v_reverse('events:eventlogtag-detail', args=['G123456', + 1, 'tagname']) + methods = ["GET", "PUT", "DELETE"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_permission_list(self): + """Unauthenticated user can't access event permission list""" + url = v_reverse('events:eventpermission-list', args=['G123456']) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_group_permission_list(self): + """Unauthenticated user can't access event group permission list""" + url = v_reverse('events:groupeventpermission-list', args=['G123456', + 'group_name']) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_group_permission_detail(self): + """Unauthenticated user can't access event group permission list""" + url = v_reverse('events:groupeventpermission-detail', args=['G123456', + 'group_name', 'perm_name']) + methods = ["GET", "PUT", "DELETE"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_files(self): + """Unauthenticated user can't access event files (list or detail)""" + url = v_reverse('events:files', args=['G123456', 'file_name']) + methods = ["GET", "PUT"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_labels(self): + """Unauthenticated user can't access event labels (list or detail)""" + url = v_reverse('events:labels', args=['G123456', 'label_name']) + methods = ["GET", "PUT", "DELETE"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_neighbors(self): + """Unauthenticated user can't access event neighbors list""" + url = v_reverse('events:labels', args=['G123456']) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) + + def test_event_signoff_list(self): + """Unauthenticated user can't access event signoff list""" + url = v_reverse('events:labels', args=['G123456']) + methods = ["GET"] + for http_method in methods: + response = self.request_as_user(url, http_method) + self.assertEqual(response.status_code, 403) + self.assertIn("Authentication credentials were not provided", + response.content) +