From a1b8582cc8b4a01ae40de5768733299643e33787 Mon Sep 17 00:00:00 2001 From: Tanner Prestegard <tanner.prestegard@ligo.org> Date: Fri, 10 May 2019 13:39:26 -0500 Subject: [PATCH] Add unit tests for pipeline manage/enable/disable views --- gracedb/events/tests/test_views.py | 79 ++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 gracedb/events/tests/test_views.py diff --git a/gracedb/events/tests/test_views.py b/gracedb/events/tests/test_views.py new file mode 100644 index 000000000..fb8b6a373 --- /dev/null +++ b/gracedb/events/tests/test_views.py @@ -0,0 +1,79 @@ +try: + from unittest import mock +except ImportError: # python < 3 + import mock +import pytest + +from django.urls import reverse + +from events.models import Pipeline +from events.views import PipelineManageView + + +@pytest.mark.django_db +def test_pipeline_manage_view(standard_user, client): + """Test pipeline manage view as various classes of non-advocate user""" + if not standard_user.is_anonymous: + client.force_login(standard_user) + response = client.get(reverse('manage-pipelines')) + + # Expected response code by user + response_dict = { + 'internal.user': 200, + '': 403, + } + assert response.status_code == response_dict[standard_user.username] + + # Check context + if response == 200: + assert response.context['user_can_manage'] == False + + +def test_pipeline_manage_view_as_advocate(em_advocate_user, client): + """Test pipeline manage view as EM advocate""" + client.force_login(em_advocate_user) + response = client.get(reverse('manage-pipelines')) + + # Expected response code + assert response.status_code == 200 + + # Check context + assert response.context['user_can_manage'] == True + + +@pytest.mark.parametrize("view", ['enable-pipeline', 'disable-pipeline']) +@pytest.mark.django_db +def test_pipeline_change_views(view, standard_user, client): + """ + Test pipeline enable/disable views as various classes of non-advocate user + """ + if not standard_user.is_anonymous: + client.force_login(standard_user) + + # Create a pipeline + p, _ = Pipeline.objects.get_or_create(name='fake_pipeline') + + # NOTE: get() is wired to post() in the view + response = client.get(reverse(view, args=[p.pk])) + + assert response.status_code == 403 + + +@pytest.mark.parametrize("view", ['enable-pipeline', 'disable-pipeline']) +@pytest.mark.django_db +def test_pipeline_change_views_as_advocate(view, em_advocate_user, client): + """ + Test pipeline enable/disable views as various classes of non-advocate user + """ + client.force_login(em_advocate_user) + + # Create a pipeline + p, _ = Pipeline.objects.get_or_create(name='fake_pipeline') + + # NOTE: get() is wired to post() in the view + with mock.patch('events.views.PIPELINE_LIST', new_callable=list) \ + as mock_pipeline_list: + mock_pipeline_list.append(p.name) + response = client.get(reverse(view, args=[p.pk])) + + assert response.status_code == 302 -- GitLab