From ef025e41b58b17d7e9827092ca07598ad87cf59b Mon Sep 17 00:00:00 2001 From: Branson Stephens <branson.stephens@ligo.org> Date: Tue, 4 Nov 2014 15:12:43 -0600 Subject: [PATCH] Added tests of eel creation for public, lvem, and internal users. EEL access is based on event access. --- .../fixtures/test_perms/gracedb_emgroup.json | 163 ++++++++++++++++++ .../commands/create_test_perms_fixtures.py | 1 + gracedb/test/test_perms.py | 68 +++++++- 3 files changed, 231 insertions(+), 1 deletion(-) create mode 100644 gracedb/fixtures/test_perms/gracedb_emgroup.json diff --git a/gracedb/fixtures/test_perms/gracedb_emgroup.json b/gracedb/fixtures/test_perms/gracedb_emgroup.json new file mode 100644 index 000000000..bb879b7a5 --- /dev/null +++ b/gracedb/fixtures/test_perms/gracedb_emgroup.json @@ -0,0 +1,163 @@ +[ +{ + "pk": 1, + "model": "gracedb.emgroup", + "fields": { + "name": "Apertif-EVN" + } +}, +{ + "pk": 2, + "model": "gracedb.emgroup", + "fields": { + "name": "ARI LJMU" + } +}, +{ + "pk": 3, + "model": "gracedb.emgroup", + "fields": { + "name": "ATLAS" + } +}, +{ + "pk": 4, + "model": "gracedb.emgroup", + "fields": { + "name": "CRTS" + } +}, +{ + "pk": 5, + "model": "gracedb.emgroup", + "fields": { + "name": "FIGARO" + } +}, +{ + "pk": 6, + "model": "gracedb.emgroup", + "fields": { + "name": "FRBSG" + } +}, +{ + "pk": 7, + "model": "gracedb.emgroup", + "fields": { + "name": "GOTO" + } +}, +{ + "pk": 8, + "model": "gracedb.emgroup", + "fields": { + "name": "GWU LSC Group" + } +}, +{ + "pk": 9, + "model": "gracedb.emgroup", + "fields": { + "name": "H.E.S.S." + } +}, +{ + "pk": 10, + "model": "gracedb.emgroup", + "fields": { + "name": "HXMT" + } +}, +{ + "pk": 11, + "model": "gracedb.emgroup", + "fields": { + "name": "INAF" + } +}, +{ + "pk": 12, + "model": "gracedb.emgroup", + "fields": { + "name": "IUCAA" + } +}, +{ + "pk": 13, + "model": "gracedb.emgroup", + "fields": { + "name": "LCOGT" + } +}, +{ + "pk": 14, + "model": "gracedb.emgroup", + "fields": { + "name": "LV-EM Followup" + } +}, +{ + "pk": 15, + "model": "gracedb.emgroup", + "fields": { + "name": "MAGIC" + } +}, +{ + "pk": 16, + "model": "gracedb.emgroup", + "fields": { + "name": "Pan-STARRS" + } +}, +{ + "pk": 17, + "model": "gracedb.emgroup", + "fields": { + "name": "PIRATE" + } +}, +{ + "pk": 18, + "model": "gracedb.emgroup", + "fields": { + "name": "RoboPol" + } +}, +{ + "pk": 19, + "model": "gracedb.emgroup", + "fields": { + "name": "Swift" + } +}, +{ + "pk": 20, + "model": "gracedb.emgroup", + "fields": { + "name": "TOROS" + } +}, +{ + "pk": 21, + "model": "gracedb.emgroup", + "fields": { + "name": "VERITAS" + } +}, +{ + "pk": 22, + "model": "gracedb.emgroup", + "fields": { + "name": "ZTF" + } +}, +{ + "pk": 23, + "model": "gracedb.emgroup", + "fields": { + "name": "Test" + } +} +] diff --git a/gracedb/management/commands/create_test_perms_fixtures.py b/gracedb/management/commands/create_test_perms_fixtures.py index 06c2ead20..08f6ef283 100644 --- a/gracedb/management/commands/create_test_perms_fixtures.py +++ b/gracedb/management/commands/create_test_perms_fixtures.py @@ -27,6 +27,7 @@ DUMP_ALL_ROWS_LIST = [ 'gracedb.Pipeline', 'gracedb.Search', 'gracedb.Label', + 'gracedb.EMGroup', ] # Our illustrious test users: diff --git a/gracedb/test/test_perms.py b/gracedb/test/test_perms.py index 0ef3eced9..d9493a651 100644 --- a/gracedb/test/test_perms.py +++ b/gracedb/test/test_perms.py @@ -108,6 +108,7 @@ class TestPerms(TestCase): 'test_perms/gracedb_pipeline.json', 'test_perms/gracedb_search.json', 'test_perms/gracedb_label.json', + 'test_perms/gracedb_emgroup.json', 'test_perms/gracedb_event.json', 'test_perms/gracedb_grbevent.json', 'test_perms/gracedb_multiburstevent.json', @@ -336,7 +337,8 @@ class TestPerms(TestCase): # POST dict keys: displayName # test DELETE? # - Labelling - # no way to do this through the web interface + # but no way to do this through the web interface + # - EEL creation # Test annotation of events user. def test_public_log_creation(self): @@ -361,6 +363,23 @@ class TestPerms(TestCase): REMOTE_USER=get_user('public').username) self.assertEqual(response.status_code, 403) + def test_public_eel_creation(self): + # Choose any event. The public coinc one will do. + event = get_public_coinc_event() + url = '/events/%s/embblog/' % event.graceid() + # Test, em.gamma, FO, TE, instrument='Test', comment='Test' + input_dict = { + 'group' : 'Test', + 'waveband' : 'em.gamma', + 'eel_status' : 'FO', + 'obs_status' : 'TE', + 'comment' : 'Test', + 'instrument' : 'Test', + } + response = self.client.post(url,input_dict, + REMOTE_USER=get_user('public').username) + self.assertEqual(response.status_code, 403) + # Test annotation of events by LV-EM users def test_lvem_log_creation(self): # Should be able to annotate the public event, but no others @@ -392,6 +411,25 @@ class TestPerms(TestCase): else: self.assertEqual(response.status_code, 403) + def test_lvem_eel_creation(self): + public_coinc_event = get_public_coinc_event() + for e in CoincInspiralEvent.objects.all(): + url = '/events/%s/embblog/' % e.graceid() + input_dict = { + 'group' : 'Test', + 'waveband' : 'em.gamma', + 'eel_status' : 'FO', + 'obs_status' : 'TE', + 'comment' : 'Test', + 'instrument' : 'Test', + } + response = self.client.post(url,input_dict, + REMOTE_USER=get_user('lvem').username) + if e.id==public_coinc_event.id: + self.assertEqual(response.status_code, 302) + else: + self.assertEqual(response.status_code, 403) + # Test annotation of events by LIGO users def test_internal_log_creation(self): for e in CoincInspiralEvent.objects.all(): @@ -413,6 +451,21 @@ class TestPerms(TestCase): REMOTE_USER=get_user('internal').username) self.assertEqual(response.status_code, 302) + def test_internal_eel_creation(self): + for e in CoincInspiralEvent.objects.all(): + url = '/events/%s/embblog/' % e.graceid() + input_dict = { + 'group' : 'Test', + 'waveband' : 'em.gamma', + 'eel_status' : 'FO', + 'obs_status' : 'TE', + 'comment' : 'Test', + 'instrument' : 'Test', + } + response = self.client.post(url,input_dict, + REMOTE_USER=get_user('internal').username) + self.assertEqual(response.status_code, 302) + #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Tests of event creation/replacement @@ -436,6 +489,19 @@ class TestPerms(TestCase): response = request_event_creation(self.client, user.username, test=True) self.assertEqual(response.status_code, 302) + # We want a test of the availability of a newly created event via search. + @override_settings(GRACEDB_DATA_DIR=TMP_DATA_DIR) + def test_search_on_new_event(self): + gstlal_submitter = get_user('gstlal_submitter') + response = request_event_creation(self.client, gstlal_submitter.username) + redirect_url = response['Location'] + graceid = redirect_url.split('/')[-1] + url = '/events/search/flex?%s' % urlencode({'query': graceid}) + response = self.client.get(url, REMOTE_USER=get_user('internal').username) + res = json.loads(response.content) + # You should get exactly one record. + self.assertEqual(res['records'],1) + # # Actually, you can only replace an event that you yourself created. # # Thus, not sure if we really need this. # def test_event_replacement(self): -- GitLab