Skip to content
Snippets Groups Projects
Commit ce189e95 authored by Tanner Prestegard's avatar Tanner Prestegard Committed by GraceDB
Browse files

Add unit test utilities for handling events and event logs

Base test class for event permission testing where we create
events which are available to internal and LV-EM users. Also added
a utility mixin for exposing event logs to LV-EM, since
unfortunately, it's handled differently than for superevents for
the time being.
parent 1e960441
No related branches found
No related tags found
No related merge requests found
from __future__ import absolute_import
import os
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group as AuthGroup, Permission
from django.contrib.contenttypes.models import ContentType
from ..models import Event, Group, Pipeline, Search
from core.tests.utils import GraceDbTestBase
from ..models import Event, Group, Pipeline, Search, Tag
from ..permission_utils import assign_default_event_perms
from ..views import update_event_perms_for_group
UserModel = get_user_model()
......@@ -14,7 +20,6 @@ class EventCreateMixin(object):
def create_event(group_name, pipeline_name, search_name=None,
user=None):
"""
"""
# Create group, pipeline, and optionally, user
......@@ -44,3 +49,43 @@ class EventCreateMixin(object):
os.makedirs(event.datadir)
return event
class EventSetup(GraceDbTestBase, EventCreateMixin):
"""
A base test class which creates events with specific
view permissions.
"""
@classmethod
def setUpTestData(cls):
super(EventSetup, cls).setUpTestData()
# Create a few events
cls.internal_event = cls.create_event('EVENTGROUP', 'EVENTPIPELINE')
cls.lvem_event = cls.create_event('EVENTGROUP', 'EVENTPIPELINE')
# We need to make sure that the view_event permission exists
# I guess since it's part of a data migration and not actually listed
# in the 'Meta' class for the model, it's not preserved.
ct = ContentType.objects.get_for_model(Event)
p, _ = Permission.objects.get_or_create(codename='view_event',
name='Can view event', content_type=ct)
# Assign default permissions for internal group (also have to create
# executives group because this perm assign code is TERRIBLE)
execs, _ = AuthGroup.objects.get_or_create(name='executives')
assign_default_event_perms(cls.internal_event)
assign_default_event_perms(cls.lvem_event)
# Expose one to LV-EM
lvem_group = AuthGroup.objects.get(name=settings.LVEM_OBSERVERS_GROUP)
update_event_perms_for_group(cls.lvem_event, lvem_group, 'expose')
class ExposeLogMixin(object):
@classmethod
def expose_log_to_lvem(cls, log):
lvem_tag, _ = Tag.objects.get_or_create(name='lvem')
log.tags.add(lvem_tag)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment