Skip to content

Commit

Permalink
work on testing
Browse files Browse the repository at this point in the history
  • Loading branch information
claire-peters committed Sep 9, 2024
1 parent c911bc7 commit 3af4305
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 14 deletions.
44 changes: 40 additions & 4 deletions coldfront/core/project/tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import logging

from django.test import TestCase, tag
from django.test import TestCase, tag, override_settings
from django.urls import reverse

from coldfront.core.test_helpers import utils
Expand All @@ -12,7 +12,11 @@
ProjectStatusChoiceFactory,
ProjectAttributeTypeFactory,
)
from coldfront.core.project.models import Project, ProjectUserStatusChoice
from coldfront.core.project.models import (
Project, ProjectUser,
ProjectUserRoleChoice,
ProjectUserStatusChoice
)

logging.disable(logging.CRITICAL)

Expand Down Expand Up @@ -161,7 +165,6 @@ def test_project_attribute_create_post_required_values(self):

def test_project_attribute_create_value_type_match(self):
"""ProjectAttributeCreate correctly flags value-type mismatch"""

self.client.force_login(self.admin_user,
backend='django.contrib.auth.backends.ModelBackend')
# test that value must be numeric if proj_attr_type is string
Expand Down Expand Up @@ -351,7 +354,7 @@ def test_projectnotecreateview_access(self):
self.project_access_tstbase(self.url)


class ProjectAddUsersSearchView(ProjectViewTestBase):
class ProjectAddUsersSearchViewTest(ProjectViewTestBase):
"""Tests for ProjectAddUsersSearchView"""
def setUp(self):
"""set up users and project for testing"""
Expand All @@ -365,6 +368,39 @@ def test_projectadduserssearchview_access(self):
utils.test_user_cannot_access(self, self.proj_datamanager, self.url)# data manager cannot access
utils.test_user_cannot_access(self, self.proj_allocation_user, self.url)# user cannot access

class ProjectAddUsersViewTest(ProjectViewTestBase):
"""Tests for ProjectAddUsersView"""
def setUp(self):
"""set up users and project for testing"""
self.url = reverse('project-add-users', kwargs={'pk': self.project.pk})

@override_settings(PLUGIN_LDAP=True)
def test_projectaddusers_ldapsignalfail_messages(self):
"""Test the messages displayed when the add user signal fails"""
self.client.force_login(self.pi_user)

def test_add_users_form_validation(self):
"""Test that the formset and allocation form are validated correctly"""
self.client.force_login(self.proj_accessmanager)
# Prepare form data for adding a user
form_data = {
'q': 'search_user',
'search_by': 'username',
'userform-TOTAL_FORMS': '1',
'userform-INITIAL_FORMS': '0',
'userform-MIN_NUM_FORMS': '0',
'userform-MAX_NUM_FORMS': '1',
'userform-0-selected': 'on',
'userform-0-role': ProjectUserRoleChoice.objects.get(name='User').pk,
'userform-0-username': self.nonproj_allocation_user.username,
'allocationform-allocation': [self.proj_allocation.pk]
}
response = self.client.post(self.url, data=form_data)
self.assertEqual(response.url, reverse('project-detail', kwargs={'pk': self.project.pk}))
self.assertEqual(response.status_code, 302)
# Check that user was added
self.assertTrue(ProjectUser.objects.filter(project=self.project, user=self.nonproj_allocation_user).exists())


class ProjectUserDetailViewTest(ProjectViewTestBase):
"""Tests for ProjectUserDetailView"""
Expand Down
23 changes: 15 additions & 8 deletions coldfront/core/project/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -749,15 +749,20 @@ def get_users_to_remove(self, project_obj):
def get(self, request, *args, **kwargs):
pk = self.kwargs.get('pk')
project_obj = get_object_or_404(Project, pk=pk)
users_to_remove = self.get_users_to_remove(project_obj)
users_list = self.get_users_to_remove(project_obj)

# if ldap is activated, prevent selection of users with project corresponding to primary group
signal_response = project_filter_users_to_remove.send(
sender=self.__class__, users_to_remove=users_to_remove, project=project_obj
sender=self.__class__, users_to_remove=users_list, project=project_obj
)
user_categories = signal_response[0][1]
users_no_removal = user_categories[0]
users_to_remove = user_categories[1]
print('signal_response', signal_response)
if signal_response:
user_categories = signal_response[0][1]
users_no_removal = user_categories[0]
users_to_remove = user_categories[1]
else:
users_no_removal = users_list
users_to_remove = []

context = {}

Expand All @@ -781,9 +786,11 @@ def post(self, request, *args, **kwargs):
signal_response = project_filter_users_to_remove.send(
sender=self.__class__, users_to_remove=users_to_remove, project=project_obj
)
user_categories = signal_response[0][1]
users_no_removal = user_categories[0]
users_to_remove = user_categories[1]
if signal_response:
user_categories = signal_response[0][1]
users_to_remove = user_categories[1]
else:
users_to_remove = users_to_remove

formset = formset_factory(ProjectRemoveUserForm, max_num=len(users_to_remove))
formset = formset(request.POST, initial=users_to_remove, prefix='userform')
Expand Down
2 changes: 1 addition & 1 deletion coldfront/core/test_helpers/utils.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
"""utility functions for unit and integration testing"""
from bs4 import BeautifulSoup
from beautifulsoup4 import BeautifulSoup

def page_contains_for_user(test_case, user, url, text):
"""Check that page contains text for user"""
Expand Down
2 changes: 1 addition & 1 deletion coldfront/plugins/system_monitor/utils.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import re

import requests
from bs4 import BeautifulSoup
from beautifulsoup4 import BeautifulSoup

from coldfront.core.utils.common import import_from_settings

Expand Down

0 comments on commit 3af4305

Please sign in to comment.