From a6e6586f48dec6570bb1165f3ac9c6fdad341a29 Mon Sep 17 00:00:00 2001 From: Branson Stephens <branson.stephens@ligo.org> Date: Thu, 9 Oct 2014 14:48:36 -0500 Subject: [PATCH] Changes to test fixtures/cases for the new event creation perms. --- gracedb/fixtures/test_perms/auth_user.json | 20 ++--- .../fixtures/test_perms/gracedb_event.json | 36 ++++---- .../fixtures/test_perms/gracedb_pipeline.json | 86 +++++++++++++++++++ .../fixtures/test_perms/gracedb_search.json | 34 ++++++++ .../commands/create_test_perms_fixtures.py | 7 +- gracedb/test/test_perms.py | 32 ++++++- 6 files changed, 181 insertions(+), 34 deletions(-) create mode 100644 gracedb/fixtures/test_perms/gracedb_pipeline.json create mode 100644 gracedb/fixtures/test_perms/gracedb_search.json diff --git a/gracedb/fixtures/test_perms/auth_user.json b/gracedb/fixtures/test_perms/auth_user.json index ae865bd9b..f722b3ce9 100644 --- a/gracedb/fixtures/test_perms/auth_user.json +++ b/gracedb/fixtures/test_perms/auth_user.json @@ -62,7 +62,7 @@ }, { "fields": { - "date_joined": "2014-09-19T15:41:22", + "date_joined": "2014-10-09T14:19:39", "email": "john.q.public@example.com", "first_name": "John", "groups": [ @@ -71,7 +71,7 @@ "is_active": true, "is_staff": false, "is_superuser": false, - "last_login": "2014-09-19T15:41:22", + "last_login": "2014-10-09T14:19:39", "last_name": "Public", "password": "X", "user_permissions": [], @@ -82,7 +82,7 @@ }, { "fields": { - "date_joined": "2014-09-19T15:41:22", + "date_joined": "2014-10-09T14:19:39", "email": "claudius.ptolemy@alexu.edu.eg", "first_name": "Claudius", "groups": [ @@ -91,7 +91,7 @@ "is_active": true, "is_staff": false, "is_superuser": false, - "last_login": "2014-09-19T15:41:22", + "last_login": "2014-10-09T14:19:39", "last_name": "Ptolemy", "password": "X", "user_permissions": [], @@ -102,7 +102,7 @@ }, { "fields": { - "date_joined": "2014-09-19T15:41:22", + "date_joined": "2014-10-09T14:19:39", "email": "albert.einstein@ligo.org", "first_name": "Albert", "groups": [ @@ -112,7 +112,7 @@ "is_active": true, "is_staff": false, "is_superuser": false, - "last_login": "2014-09-19T15:41:22", + "last_login": "2014-10-09T14:19:39", "last_name": "Einstein", "password": "X", "user_permissions": [], @@ -123,7 +123,7 @@ }, { "fields": { - "date_joined": "2014-09-19T15:41:22", + "date_joined": "2014-10-09T14:19:39", "email": "spokesy.mcspokesperson@ligo.org", "first_name": "Spokesy", "groups": [ @@ -133,7 +133,7 @@ "is_active": true, "is_staff": false, "is_superuser": false, - "last_login": "2014-09-19T15:41:22", + "last_login": "2014-10-09T14:19:39", "last_name": "McSpokesperson", "password": "X", "user_permissions": [], @@ -144,7 +144,7 @@ }, { "fields": { - "date_joined": "2014-09-19T15:41:22", + "date_joined": "2014-10-09T14:19:39", "email": "gracedb.maintainer@ligo.org", "first_name": "Gracedb", "groups": [ @@ -154,7 +154,7 @@ "is_active": true, "is_staff": true, "is_superuser": true, - "last_login": "2014-09-19T15:41:22", + "last_login": "2014-10-09T14:19:39", "last_name": "Maintainer", "password": "X", "user_permissions": [], diff --git a/gracedb/fixtures/test_perms/gracedb_event.json b/gracedb/fixtures/test_perms/gracedb_event.json index 4b0f25cf7..122995f4f 100644 --- a/gracedb/fixtures/test_perms/gracedb_event.json +++ b/gracedb/fixtures/test_perms/gracedb_event.json @@ -4,15 +4,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1078505718, + "pipeline": 3, "group": 5, - "uid": "", "created": "2014-03-10T11:55:49", "far": 9.99754187903519e-06, "instruments": "H1,L1", + "search": 2, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": 2, "submitter": 465, - "analysisType": "LM", "likelihood": 34871.9041575029 } }, @@ -21,15 +21,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1078673637, + "pipeline": 3, "group": 5, - "uid": "", "created": "2014-03-12T10:34:21", "far": 2.7348245243325e-12, "instruments": "H1,V1", + "search": 2, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": 2, "submitter": 465, - "analysisType": "LM", "likelihood": 6.09169459963097e+26 } }, @@ -38,15 +38,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1078873849, + "pipeline": 3, "group": 5, - "uid": "", "created": "2014-03-14T18:11:13", "far": 4.06806937667425e-05, "instruments": "H1,V1", + "search": 2, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": 2, "submitter": 465, - "analysisType": "LM", "likelihood": 2395.53466670113 } }, @@ -55,15 +55,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1087536143, + "pipeline": 10, "group": 6, - "uid": "", "created": "2014-06-23T00:22:05", "far": null, "instruments": "", + "search": 4, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": null, "submitter": 460, - "analysisType": "GRB", "likelihood": null } }, @@ -72,15 +72,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1087593277, + "pipeline": 10, "group": 6, - "uid": "", "created": "2014-06-23T16:15:17", "far": null, "instruments": "", + "search": 4, "perms": "[]", "nevents": null, "submitter": 460, - "analysisType": "GRB", "likelihood": null } }, @@ -89,15 +89,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1087628477, + "pipeline": 10, "group": 6, - "uid": "", "created": "2014-06-24T02:00:58", "far": null, "instruments": "", + "search": 4, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": null, "submitter": 460, - "analysisType": "GRB", "likelihood": null } }, @@ -106,15 +106,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1042312876, + "pipeline": 12, "group": 5, - "uid": "", "created": "2014-08-07T17:02:44", "far": 0.0, "instruments": "H1,L1,V1", + "search": 1, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": null, "submitter": 2404, - "analysisType": "CWB", "likelihood": 7934.0 } }, @@ -123,15 +123,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1042312876, + "pipeline": 12, "group": 5, - "uid": "", "created": "2014-08-07T17:04:32", "far": 0.0, "instruments": "H1,L1,V1", + "search": 1, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": null, "submitter": 2404, - "analysisType": "CWB", "likelihood": 7934.0 } }, @@ -140,15 +140,15 @@ "model": "gracedb.event", "fields": { "gpstime": 1042312876, + "pipeline": 12, "group": 5, - "uid": "", "created": "2014-08-07T17:13:29", "far": 0.0, "instruments": "H1,L1,V1", + "search": 1, "perms": "[\"executives_can_change\", \"executives_can_view\", \"Communities:LSCVirgoLIGOGroupMembers_can_change\", \"Communities:LSCVirgoLIGOGroupMembers_can_view\"]", "nevents": null, "submitter": 2404, - "analysisType": "CWB", "likelihood": 7934.0 } } diff --git a/gracedb/fixtures/test_perms/gracedb_pipeline.json b/gracedb/fixtures/test_perms/gracedb_pipeline.json new file mode 100644 index 000000000..bd9c0adf5 --- /dev/null +++ b/gracedb/fixtures/test_perms/gracedb_pipeline.json @@ -0,0 +1,86 @@ +[ +{ + "pk": 1, + "model": "gracedb.pipeline", + "fields": { + "name": "MBTAOnline" + } +}, +{ + "pk": 2, + "model": "gracedb.pipeline", + "fields": { + "name": "CWB2G" + } +}, +{ + "pk": 3, + "model": "gracedb.pipeline", + "fields": { + "name": "gstlal" + } +}, +{ + "pk": 4, + "model": "gracedb.pipeline", + "fields": { + "name": "gstlal-spiir" + } +}, +{ + "pk": 5, + "model": "gracedb.pipeline", + "fields": { + "name": "HardwareInjection" + } +}, +{ + "pk": 6, + "model": "gracedb.pipeline", + "fields": { + "name": "X" + } +}, +{ + "pk": 7, + "model": "gracedb.pipeline", + "fields": { + "name": "Q" + } +}, +{ + "pk": 8, + "model": "gracedb.pipeline", + "fields": { + "name": "Omega" + } +}, +{ + "pk": 9, + "model": "gracedb.pipeline", + "fields": { + "name": "Ringdown" + } +}, +{ + "pk": 10, + "model": "gracedb.pipeline", + "fields": { + "name": "Fermi" + } +}, +{ + "pk": 11, + "model": "gracedb.pipeline", + "fields": { + "name": "Swift" + } +}, +{ + "pk": 12, + "model": "gracedb.pipeline", + "fields": { + "name": "CWB" + } +} +] diff --git a/gracedb/fixtures/test_perms/gracedb_search.json b/gracedb/fixtures/test_perms/gracedb_search.json new file mode 100644 index 000000000..33e37d1e4 --- /dev/null +++ b/gracedb/fixtures/test_perms/gracedb_search.json @@ -0,0 +1,34 @@ +[ +{ + "pk": 1, + "model": "gracedb.search", + "fields": { + "name": "AllSky", + "description": "all-sky burst online" + } +}, +{ + "pk": 2, + "model": "gracedb.search", + "fields": { + "name": "LowMass", + "description": "" + } +}, +{ + "pk": 3, + "model": "gracedb.search", + "fields": { + "name": "HighMass", + "description": "" + } +}, +{ + "pk": 4, + "model": "gracedb.search", + "fields": { + "name": "GRB", + "description": "" + } +} +] diff --git a/gracedb/management/commands/create_test_perms_fixtures.py b/gracedb/management/commands/create_test_perms_fixtures.py index f142adfb4..06c2ead20 100644 --- a/gracedb/management/commands/create_test_perms_fixtures.py +++ b/gracedb/management/commands/create_test_perms_fixtures.py @@ -4,7 +4,8 @@ from StringIO import StringIO from datetime import datetime from gracedb.models import GrbEvent, Tag, Event -from gracedb.models import MultiBurstEvent +from gracedb.models import MultiBurstEvent +from django.contrib.auth.models import Group #from gracedb.models import CoincInspiralEvent from gracedb.models import EventLog, Labelling, SingleInspiral @@ -23,6 +24,8 @@ OUTPUT_DIR = os.path.join(settings.ROOT_PATH, 'gracedb/fixtures/test_perms') DUMP_ALL_ROWS_LIST = [ 'auth.Group', 'gracedb.Group', + 'gracedb.Pipeline', + 'gracedb.Search', 'gracedb.Label', ] @@ -136,7 +139,7 @@ def get_user_field_dicts(user_info): # Transform the 'groups' field into a list of pks. group_pks = [g.id for g in Group.objects.filter(name__in=group_names)] user_dict['groups'] = group_pks - + user_dict['user_permissions'] = [] user_dict['password'] = 'X' now = datetime.now().isoformat().split('.')[0] diff --git a/gracedb/test/test_perms.py b/gracedb/test/test_perms.py index 55bfa1692..90f0534ee 100644 --- a/gracedb/test/test_perms.py +++ b/gracedb/test/test_perms.py @@ -3,9 +3,9 @@ from django.test.utils import override_settings from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import Permission, Group, User -from guardian.models import GroupObjectPermission +from guardian.models import GroupObjectPermission, UserObjectPermission from gracedb.models import Event, GrbEvent, CoincInspiralEvent -from gracedb.models import MultiBurstEvent +from gracedb.models import MultiBurstEvent, Pipeline from django.conf import settings @@ -81,11 +81,18 @@ def request_event_creation(client, username, test=False): input_dict = { 'group' : group, 'pipeline' : 'gstlal', - 'search' : 'LM', + 'search' : 'LowMass', 'eventFile' : event_file, } return client.post(url, input_dict, REMOTE_USER=username) +# A map between test users and pipelines. +PIPELINE_USER_MAP = { + 'gstlal': ['gst',], + 'Fermi': ['gdb',], + 'Swift': ['gdb',], +} + #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Test Perms Class @@ -98,6 +105,8 @@ class TestPerms(TestCase): 'test_perms/auth_user.json', 'test_perms/auth_group.json', 'test_perms/gracedb_group.json', + 'test_perms/gracedb_pipeline.json', + 'test_perms/gracedb_search.json', 'test_perms/gracedb_label.json', 'test_perms/gracedb_event.json', 'test_perms/gracedb_grbevent.json', @@ -115,6 +124,10 @@ class TestPerms(TestCase): name = 'Can view %s' % model.__name__.lower() codename = 'view_%s' % model.__name__.lower() Permission.objects.create(codename=codename, name=name, content_type=content_type) + + content_type = ContentType.objects.get(app_label='gracedb', model='pipeline') + Permission.objects.create(codename="populate_pipeline", name="Can populate pipeline", + content_type=content_type) # Find the content type and permissions for the parent Event class. Event_ctype = ContentType.objects.get(model='Event') @@ -191,6 +204,17 @@ class TestPerms(TestCase): for e in Event.objects.all(): e.refresh_perms() + # Create user object permissions for pipeline population + content_type = ContentType.objects.get(app_label='gracedb',model='pipeline') + populate = Permission.objects.get(codename='populate_pipeline') + + for p in Pipeline.objects.all(): + if p.name in PIPELINE_USER_MAP.keys(): + for username in PIPELINE_USER_MAP[p.name]: + user = User.objects.get(username=username) + UserObjectPermission.objects.create(permission=populate, user=user, + object_pk=p.id, content_type=content_type) + # Lastly, let's create a temporary data dir. if not os.path.isdir(TMP_DATA_DIR): os.mkdir(TMP_DATA_DIR) @@ -393,7 +417,7 @@ class TestPerms(TestCase): gstlal_submitter = get_user('gstlal_submitter') for user in User.objects.all(): response = request_event_creation(self.client, user.username) - if user.id==gstlal_submitter.id: + if user.id==gstlal_submitter.id or user.is_superuser: self.assertEqual(response.status_code, 302) else: self.assertEqual(response.status_code, 403) -- GitLab