mirror of
https://gitea.mueller.network/extern/django-helpdesk.git
synced 2024-12-28 01:28:51 +01:00
Merge pull request #779 from auto-mat/fix-tests
develop branch: Fix most tests
This commit is contained in:
commit
ccf4692449
@ -26,6 +26,10 @@ def get_user(username='helpdesk.staff',
|
|||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
def get_staff_user():
|
||||||
|
return get_user(is_staff=True)
|
||||||
|
|
||||||
|
|
||||||
def reload_urlconf(urlconf=None):
|
def reload_urlconf(urlconf=None):
|
||||||
|
|
||||||
from importlib import reload
|
from importlib import reload
|
||||||
|
@ -25,7 +25,7 @@ class KBDisabledTestCase(TestCase):
|
|||||||
"""Test proper rendering of navigation.html by accessing the dashboard"""
|
"""Test proper rendering of navigation.html by accessing the dashboard"""
|
||||||
from django.urls import NoReverseMatch
|
from django.urls import NoReverseMatch
|
||||||
|
|
||||||
self.client.login(username=get_user(is_staff=True).get_username(), password='password')
|
self.client.login(username=get_staff_user().get_username(), password='password')
|
||||||
self.assertRaises(NoReverseMatch, reverse, 'helpdesk:kb_index')
|
self.assertRaises(NoReverseMatch, reverse, 'helpdesk:kb_index')
|
||||||
try:
|
try:
|
||||||
response = self.client.get(reverse('helpdesk:dashboard'))
|
response = self.client.get(reverse('helpdesk:dashboard'))
|
||||||
|
@ -6,6 +6,8 @@ from django.test.client import Client
|
|||||||
|
|
||||||
from helpdesk.models import Queue, Ticket
|
from helpdesk.models import Queue, Ticket
|
||||||
from helpdesk import settings
|
from helpdesk import settings
|
||||||
|
from helpdesk.query import get_query
|
||||||
|
from helpdesk.user import HelpdeskUser
|
||||||
|
|
||||||
|
|
||||||
class PerQueueStaffMembershipTestCase(TestCase):
|
class PerQueueStaffMembershipTestCase(TestCase):
|
||||||
@ -14,8 +16,8 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
"""
|
"""
|
||||||
Create user_1 with access to queue_1 containing 1 ticket
|
Create user_1 with access to queue_1 containing 2 ticket
|
||||||
and user_2 with access to queue_2 containing 2 tickets
|
and user_2 with access to queue_2 containing 4 tickets
|
||||||
and superuser who should be able to access both queues
|
and superuser who should be able to access both queues
|
||||||
"""
|
"""
|
||||||
self.HELPDESK_ENABLE_PER_QUEUE_STAFF_PERMISSION = settings.HELPDESK_ENABLE_PER_QUEUE_STAFF_PERMISSION
|
self.HELPDESK_ENABLE_PER_QUEUE_STAFF_PERMISSION = settings.HELPDESK_ENABLE_PER_QUEUE_STAFF_PERMISSION
|
||||||
@ -31,6 +33,8 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
self.superuser.set_password('superuser')
|
self.superuser.set_password('superuser')
|
||||||
self.superuser.save()
|
self.superuser.save()
|
||||||
|
|
||||||
|
self.identifier_users = {}
|
||||||
|
|
||||||
for identifier in self.IDENTIFIERS:
|
for identifier in self.IDENTIFIERS:
|
||||||
queue = self.__dict__['queue_%d' % identifier] = Queue.objects.create(
|
queue = self.__dict__['queue_%d' % identifier] = Queue.objects.create(
|
||||||
title='Queue %d' % identifier,
|
title='Queue %d' % identifier,
|
||||||
@ -40,9 +44,11 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
user = self.__dict__['user_%d' % identifier] = User.objects.create(
|
user = self.__dict__['user_%d' % identifier] = User.objects.create(
|
||||||
username='User_%d' % identifier,
|
username='User_%d' % identifier,
|
||||||
is_staff=True,
|
is_staff=True,
|
||||||
|
email="foo%s@example.com" % identifier
|
||||||
)
|
)
|
||||||
user.set_password(str(identifier))
|
user.set_password(str(identifier))
|
||||||
user.save()
|
user.save()
|
||||||
|
self.identifier_users[identifier] = user
|
||||||
|
|
||||||
# The prefix 'helpdesk.' must be trimmed
|
# The prefix 'helpdesk.' must be trimmed
|
||||||
p = Permission.objects.get(codename=queue.permission_name[9:])
|
p = Permission.objects.get(codename=queue.permission_name[9:])
|
||||||
@ -68,7 +74,7 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
def test_dashboard_ticket_counts(self):
|
def test_dashboard_ticket_counts(self):
|
||||||
"""
|
"""
|
||||||
Check that the regular users' dashboard only shows 1 of the 2 queues,
|
Check that the regular users' dashboard only shows 1 of the 2 queues,
|
||||||
that user_1 only sees a total of 1 ticket, that user_2 sees a total of 2
|
that user_1 only sees a total of 2 tickets, that user_2 sees a total of 4
|
||||||
tickets, but that the superuser's dashboard shows all queues and tickets.
|
tickets, but that the superuser's dashboard shows all queues and tickets.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -105,7 +111,7 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
def test_report_ticket_counts(self):
|
def test_report_ticket_counts(self):
|
||||||
"""
|
"""
|
||||||
Check that the regular users' report only shows 1 of the 2 queues,
|
Check that the regular users' report only shows 1 of the 2 queues,
|
||||||
that user_1 only sees a total of 1 ticket, that user_2 sees a total of 2
|
that user_1 only sees a total of 2 tickets, that user_2 sees a total of 4
|
||||||
tickets, but that the superuser's report shows all queues and tickets.
|
tickets, but that the superuser's report shows all queues and tickets.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -153,15 +159,16 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
def test_ticket_list_per_queue_user_restrictions(self):
|
def test_ticket_list_per_queue_user_restrictions(self):
|
||||||
"""
|
"""
|
||||||
Ensure that while the superuser can list all tickets, user_1 can only
|
Ensure that while the superuser can list all tickets, user_1 can only
|
||||||
list the 1 ticket in his queue and user_2 can list only the 2 tickets
|
list the 2 tickets in his queue and user_2 can list only the 4 tickets
|
||||||
in his queue.
|
in his queue.
|
||||||
"""
|
"""
|
||||||
# Regular users
|
# Regular users
|
||||||
for identifier in self.IDENTIFIERS:
|
for identifier in self.IDENTIFIERS:
|
||||||
self.client.login(username='User_%d' % identifier, password=str(identifier))
|
self.client.login(username='User_%d' % identifier, password=str(identifier))
|
||||||
response = self.client.get(reverse('helpdesk:list'))
|
response = self.client.get(reverse('helpdesk:list'))
|
||||||
|
tickets = get_query(response.context['urlsafe_query'], HelpdeskUser(self.identifier_users[identifier]))
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
len(response.context['tickets']),
|
len(tickets),
|
||||||
identifier * 2,
|
identifier * 2,
|
||||||
'Ticket list was not properly limited by queue membership'
|
'Ticket list was not properly limited by queue membership'
|
||||||
)
|
)
|
||||||
@ -179,8 +186,9 @@ class PerQueueStaffMembershipTestCase(TestCase):
|
|||||||
# Superuser
|
# Superuser
|
||||||
self.client.login(username='superuser', password='superuser')
|
self.client.login(username='superuser', password='superuser')
|
||||||
response = self.client.get(reverse('helpdesk:list'))
|
response = self.client.get(reverse('helpdesk:list'))
|
||||||
|
tickets = get_query(response.context['urlsafe_query'], HelpdeskUser(self.superuser))
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
len(response.context['tickets']),
|
len(tickets),
|
||||||
6,
|
6,
|
||||||
'Ticket list was limited by queue membership for a superuser'
|
'Ticket list was limited by queue membership for a superuser'
|
||||||
)
|
)
|
||||||
|
@ -13,7 +13,7 @@ except ImportError: # python 2
|
|||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
|
|
||||||
from helpdesk.templatetags.ticket_to_link import num_to_link
|
from helpdesk.templatetags.ticket_to_link import num_to_link
|
||||||
from helpdesk.views.staff import _is_my_ticket
|
from helpdesk.user import HelpdeskUser
|
||||||
|
|
||||||
|
|
||||||
class TicketActionsTestCase(TestCase):
|
class TicketActionsTestCase(TestCase):
|
||||||
@ -150,7 +150,7 @@ class TicketActionsTestCase(TestCase):
|
|||||||
response = self.client.post(reverse('helpdesk:update', kwargs={'ticket_id': ticket_id}), post_data, follow=True)
|
response = self.client.post(reverse('helpdesk:update', kwargs={'ticket_id': ticket_id}), post_data, follow=True)
|
||||||
self.assertContains(response, 'Changed Status from Open to Closed')
|
self.assertContains(response, 'Changed Status from Open to Closed')
|
||||||
|
|
||||||
def test_is_my_ticket(self):
|
def test_can_access_ticket(self):
|
||||||
"""Tests whether non-staff but assigned user still counts as owner"""
|
"""Tests whether non-staff but assigned user still counts as owner"""
|
||||||
|
|
||||||
# make non-staff user
|
# make non-staff user
|
||||||
@ -173,8 +173,8 @@ class TicketActionsTestCase(TestCase):
|
|||||||
# create ticket
|
# create ticket
|
||||||
helpdesk_settings.HELPDESK_ENABLE_PER_QUEUE_STAFF_PERMISSION = True
|
helpdesk_settings.HELPDESK_ENABLE_PER_QUEUE_STAFF_PERMISSION = True
|
||||||
ticket = Ticket.objects.create(**initial_data)
|
ticket = Ticket.objects.create(**initial_data)
|
||||||
self.assertEqual(_is_my_ticket(self.user, ticket), True)
|
self.assertEqual(HelpdeskUser(self.user).can_access_ticket(ticket), True)
|
||||||
self.assertEqual(_is_my_ticket(self.user2, ticket), False)
|
self.assertEqual(HelpdeskUser(self.user2).can_access_ticket(ticket), False)
|
||||||
|
|
||||||
def test_num_to_link(self):
|
def test_num_to_link(self):
|
||||||
"""Test that we are correctly expanding links to tickets from IDs"""
|
"""Test that we are correctly expanding links to tickets from IDs"""
|
||||||
|
@ -17,7 +17,6 @@ except ImportError: # python 2
|
|||||||
from urlparse import urlparse
|
from urlparse import urlparse
|
||||||
|
|
||||||
from helpdesk.templatetags.ticket_to_link import num_to_link
|
from helpdesk.templatetags.ticket_to_link import num_to_link
|
||||||
from helpdesk.views.staff import _is_my_ticket
|
|
||||||
|
|
||||||
|
|
||||||
class TimeSpentTestCase(TestCase):
|
class TimeSpentTestCase(TestCase):
|
||||||
|
@ -11,7 +11,7 @@ default_login_view = auth_views.LoginView.as_view(
|
|||||||
def login(request):
|
def login(request):
|
||||||
login_url = settings.LOGIN_URL
|
login_url = settings.LOGIN_URL
|
||||||
# Prevent redirect loop by checking that LOGIN_URL is not this view's name
|
# Prevent redirect loop by checking that LOGIN_URL is not this view's name
|
||||||
if login_url and login_url != request.resolver_match.view_name:
|
if login_url and (login_url != resolve_url(request.resolver_match.view_name) and (login_url != request.resolver_match.view_name)):
|
||||||
if 'next' in request.GET:
|
if 'next' in request.GET:
|
||||||
return_to = request.GET['next']
|
return_to = request.GET['next']
|
||||||
else:
|
else:
|
||||||
|
@ -98,18 +98,6 @@ def _get_queue_choices(queues):
|
|||||||
return queue_choices
|
return queue_choices
|
||||||
|
|
||||||
|
|
||||||
def _is_my_ticket(user, ticket):
|
|
||||||
"""Check to see if the user has permission to access
|
|
||||||
a ticket. If not then deny access."""
|
|
||||||
if (user, ticket.queue):
|
|
||||||
return True
|
|
||||||
elif user.is_superuser or user.is_staff or \
|
|
||||||
(ticket.assigned_to and user.id == ticket.assigned_to.id):
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
@helpdesk_staff_member_required
|
@helpdesk_staff_member_required
|
||||||
def dashboard(request):
|
def dashboard(request):
|
||||||
"""
|
"""
|
||||||
@ -908,21 +896,10 @@ def ticket_list(request):
|
|||||||
|
|
||||||
urlsafe_query = query_to_base64(query_params)
|
urlsafe_query = query_to_base64(query_params)
|
||||||
|
|
||||||
tickets_base = get_query(urlsafe_query, huser)
|
get_query(urlsafe_query, huser)
|
||||||
|
|
||||||
user_saved_queries = SavedSearch.objects.filter(Q(user=request.user) | Q(shared__exact=True))
|
user_saved_queries = SavedSearch.objects.filter(Q(user=request.user) | Q(shared__exact=True))
|
||||||
|
|
||||||
ticket_qs = None
|
|
||||||
try:
|
|
||||||
ticket_qs = apply_query(tickets_base, query_params)
|
|
||||||
except ValidationError:
|
|
||||||
# invalid parameters in query, return default query
|
|
||||||
query_params = {
|
|
||||||
'filtering': {'status__in': [1, 2, 3]},
|
|
||||||
'sorting': 'created',
|
|
||||||
}
|
|
||||||
ticket_qs = apply_query(tickets_base, query_params)
|
|
||||||
|
|
||||||
search_message = ''
|
search_message = ''
|
||||||
if query_params['search_string'] and settings.DATABASES['default']['ENGINE'].endswith('sqlite'):
|
if query_params['search_string'] and settings.DATABASES['default']['ENGINE'].endswith('sqlite'):
|
||||||
search_message = _(
|
search_message = _(
|
||||||
@ -935,7 +912,6 @@ def ticket_list(request):
|
|||||||
|
|
||||||
return render(request, 'helpdesk/ticket_list.html', dict(
|
return render(request, 'helpdesk/ticket_list.html', dict(
|
||||||
context,
|
context,
|
||||||
tickets=ticket_qs,
|
|
||||||
default_tickets_per_page=request.user.usersettings_helpdesk.tickets_per_page,
|
default_tickets_per_page=request.user.usersettings_helpdesk.tickets_per_page,
|
||||||
user_choices=User.objects.filter(is_active=True, is_staff=True),
|
user_choices=User.objects.filter(is_active=True, is_staff=True),
|
||||||
queue_choices=huser.get_queues(),
|
queue_choices=huser.get_queues(),
|
||||||
|
Loading…
Reference in New Issue
Block a user