mirror of
https://github.com/django-helpdesk/django-helpdesk.git
synced 2024-12-13 10:21:05 +01:00
Fixing unit tests for python3 for custom staff filters
This commit is contained in:
parent
27ee01449e
commit
6e2a16e5a6
@ -11,18 +11,14 @@ import mimetypes
|
|||||||
import os
|
import os
|
||||||
from smtplib import SMTPException
|
from smtplib import SMTPException
|
||||||
|
|
||||||
try:
|
import six
|
||||||
# Python 2 support
|
|
||||||
from base64 import urlsafe_b64encode as b64encode
|
if six.PY3:
|
||||||
except ImportError:
|
|
||||||
# Python 3 support
|
|
||||||
from base64 import encodebytes as b64encode
|
from base64 import encodebytes as b64encode
|
||||||
try:
|
|
||||||
# Python 2 support
|
|
||||||
from base64 import urlsafe_b64decode as b64decode
|
|
||||||
except ImportError:
|
|
||||||
# Python 3 support
|
|
||||||
from base64 import decodebytes as b64decode
|
from base64 import decodebytes as b64decode
|
||||||
|
else:
|
||||||
|
from base64 import urlsafe_b64encode as b64encode
|
||||||
|
from base64 import urlsafe_b64decode as b64decode
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
|
@ -17,6 +17,7 @@ from django.utils import timezone
|
|||||||
from django.utils.translation import ugettext_lazy as _, ugettext
|
from django.utils.translation import ugettext_lazy as _, ugettext
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
class Queue(models.Model):
|
class Queue(models.Model):
|
||||||
@ -1118,7 +1119,10 @@ class UserSettings(models.Model):
|
|||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
from helpdesk.lib import b64decode
|
from helpdesk.lib import b64decode
|
||||||
try:
|
try:
|
||||||
return pickle.loads(b64decode(str(self.settings_pickled)))
|
if six.PY3:
|
||||||
|
return pickle.loads(b64decode(bytes(self.settings_pickled, 'utf8')))
|
||||||
|
else:
|
||||||
|
return pickle.loads(b64decode(str(self.settings_pickled)))
|
||||||
except pickle.UnpicklingError:
|
except pickle.UnpicklingError:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ from django.contrib.auth import get_user_model
|
|||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
from helpdesk.models import Ticket, Queue
|
from helpdesk.models import Ticket, Queue, UserSettings
|
||||||
|
|
||||||
|
|
||||||
def get_staff_user(username='helpdesk.staff', password='password'):
|
def get_staff_user(username='helpdesk.staff', password='password'):
|
||||||
@ -22,7 +22,7 @@ def get_staff_user(username='helpdesk.staff', password='password'):
|
|||||||
|
|
||||||
def reload_urlconf(urlconf=None):
|
def reload_urlconf(urlconf=None):
|
||||||
|
|
||||||
from imp import reload # python 3 needs this import.
|
from importlib import reload # python 3 needs this import.
|
||||||
|
|
||||||
if urlconf is None:
|
if urlconf is None:
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@ -40,7 +40,7 @@ def reload_urlconf(urlconf=None):
|
|||||||
|
|
||||||
|
|
||||||
def update_user_settings(user, **kwargs):
|
def update_user_settings(user, **kwargs):
|
||||||
usersettings = user.usersettings
|
usersettings = user.usersettings_helpdesk
|
||||||
settings = usersettings.settings
|
settings = usersettings.settings
|
||||||
settings.update(kwargs)
|
settings.update(kwargs)
|
||||||
usersettings.settings = settings
|
usersettings.settings = settings
|
||||||
@ -48,7 +48,7 @@ def update_user_settings(user, **kwargs):
|
|||||||
|
|
||||||
|
|
||||||
def delete_user_settings(user, *args):
|
def delete_user_settings(user, *args):
|
||||||
usersettings = user.usersettings
|
usersettings = user.usersettings_helpdesk
|
||||||
settings = usersettings.settings
|
settings = usersettings.settings
|
||||||
for setting in args:
|
for setting in args:
|
||||||
if setting in settings:
|
if setting in settings:
|
||||||
|
@ -1,23 +1,24 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import sys
|
import sys
|
||||||
|
from importlib import reload
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
|
||||||
from helpdesk import settings
|
from helpdesk import settings as helpdesk_settings
|
||||||
from helpdesk.tests.helpers import (get_staff_user, reload_urlconf, User, update_user_settings, delete_user_settings,
|
from helpdesk.tests.helpers import (get_staff_user, reload_urlconf, User, update_user_settings, delete_user_settings,
|
||||||
create_ticket)
|
create_ticket)
|
||||||
|
|
||||||
|
|
||||||
class KBDisabledTestCase(TestCase):
|
class KBDisabledTestCase(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.HELPDESK_KB_ENABLED = settings.HELPDESK_KB_ENABLED
|
self.HELPDESK_KB_ENABLED = helpdesk_settings.HELPDESK_KB_ENABLED
|
||||||
if self.HELPDESK_KB_ENABLED:
|
if self.HELPDESK_KB_ENABLED:
|
||||||
settings.HELPDESK_KB_ENABLED = False
|
helpdesk_settings.HELPDESK_KB_ENABLED = False
|
||||||
reload_urlconf()
|
reload_urlconf()
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
if self.HELPDESK_KB_ENABLED:
|
if self.HELPDESK_KB_ENABLED:
|
||||||
settings.HELPDESK_KB_ENABLED = True
|
helpdesk_settings.HELPDESK_KB_ENABLED = True
|
||||||
reload_urlconf()
|
reload_urlconf()
|
||||||
|
|
||||||
def test_navigation(self):
|
def test_navigation(self):
|
||||||
@ -41,12 +42,12 @@ class StaffUserTestCaseMixin(object):
|
|||||||
HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = False
|
HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = False
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.original_setting = settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
self.original_setting = helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
||||||
settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = self.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = self.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
||||||
self.reload_views()
|
self.reload_views()
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = self.original_setting
|
helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = self.original_setting
|
||||||
self.reload_views()
|
self.reload_views()
|
||||||
|
|
||||||
def reload_views(self):
|
def reload_views(self):
|
||||||
@ -59,7 +60,7 @@ class StaffUserTestCaseMixin(object):
|
|||||||
|
|
||||||
def test_anonymous_user(self):
|
def test_anonymous_user(self):
|
||||||
"""Access to the dashboard always requires a login"""
|
"""Access to the dashboard always requires a login"""
|
||||||
response = self.client.get(reverse('helpdesk_dashboard'), follow=True)
|
response = self.client.get(reverse('helpdesk:dashboard'), follow=True)
|
||||||
self.assertTemplateUsed(response, 'helpdesk/registration/login.html')
|
self.assertTemplateUsed(response, 'helpdesk/registration/login.html')
|
||||||
|
|
||||||
|
|
||||||
@ -78,7 +79,7 @@ class NonStaffUsersAllowedTestCase(StaffUserTestCaseMixin, TestCase):
|
|||||||
self.assertTrue(is_helpdesk_staff(user))
|
self.assertTrue(is_helpdesk_staff(user))
|
||||||
|
|
||||||
self.client.login(username=user.username, password='gouda')
|
self.client.login(username=user.username, password='gouda')
|
||||||
response = self.client.get(reverse('helpdesk_dashboard'), follow=True)
|
response = self.client.get(reverse('helpdesk:dashboard'), follow=True)
|
||||||
self.assertTemplateUsed(response, 'helpdesk/dashboard.html')
|
self.assertTemplateUsed(response, 'helpdesk/dashboard.html')
|
||||||
|
|
||||||
|
|
||||||
@ -105,7 +106,7 @@ class StaffUsersOnlyTestCase(StaffUserTestCaseMixin, TestCase):
|
|||||||
self.assertTrue(is_helpdesk_staff(user))
|
self.assertTrue(is_helpdesk_staff(user))
|
||||||
|
|
||||||
self.client.login(username=user.username, password='password')
|
self.client.login(username=user.username, password='password')
|
||||||
response = self.client.get(reverse('helpdesk_dashboard'), follow=True)
|
response = self.client.get(reverse('helpdesk:dashboard'), follow=True)
|
||||||
self.assertTemplateUsed(response, 'helpdesk/dashboard.html')
|
self.assertTemplateUsed(response, 'helpdesk/dashboard.html')
|
||||||
|
|
||||||
|
|
||||||
@ -128,7 +129,7 @@ class CustomStaffUserTestCase(StaffUserTestCaseMixin, TestCase):
|
|||||||
self.assertTrue(is_helpdesk_staff(user))
|
self.assertTrue(is_helpdesk_staff(user))
|
||||||
|
|
||||||
self.client.login(username=user.username, password='gouda')
|
self.client.login(username=user.username, password='gouda')
|
||||||
response = self.client.get(reverse('helpdesk_dashboard'), follow=True)
|
response = self.client.get(reverse('helpdesk:dashboard'), follow=True)
|
||||||
self.assertTemplateUsed(response, 'helpdesk/dashboard.html')
|
self.assertTemplateUsed(response, 'helpdesk/dashboard.html')
|
||||||
|
|
||||||
def test_custom_staff_fail(self):
|
def test_custom_staff_fail(self):
|
||||||
@ -139,45 +140,45 @@ class CustomStaffUserTestCase(StaffUserTestCaseMixin, TestCase):
|
|||||||
self.assertFalse(is_helpdesk_staff(user))
|
self.assertFalse(is_helpdesk_staff(user))
|
||||||
|
|
||||||
self.client.login(username=user.username, password='frog')
|
self.client.login(username=user.username, password='frog')
|
||||||
response = self.client.get(reverse('helpdesk_dashboard'), follow=True)
|
response = self.client.get(reverse('helpdesk:dashboard'), follow=True)
|
||||||
self.assertTemplateUsed(response, 'helpdesk/registration/login.html')
|
self.assertTemplateUsed(response, 'helpdesk/registration/login.html')
|
||||||
|
|
||||||
|
|
||||||
class HomePageAnonymousUserTestCase(TestCase):
|
class HomePageAnonymousUserTestCase(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.redirect_to_login = settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT
|
self.redirect_to_login = helpdesk_settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT = self.redirect_to_login
|
helpdesk_settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT = self.redirect_to_login
|
||||||
|
|
||||||
def test_homepage(self):
|
def test_homepage(self):
|
||||||
settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT = True
|
helpdesk_settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT = True
|
||||||
response = self.client.get(reverse('helpdesk_home'))
|
response = self.client.get(reverse('helpdesk:home'))
|
||||||
self.assertTemplateUsed('helpdesk/public_homepage.html')
|
self.assertTemplateUsed('helpdesk/public_homepage.html')
|
||||||
|
|
||||||
def test_redirect_to_login(self):
|
def test_redirect_to_login(self):
|
||||||
"""Unauthenticated users are redirected to the login page if HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT is True"""
|
"""Unauthenticated users are redirected to the login page if HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT is True"""
|
||||||
settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT = True
|
helpdesk_settings.HELPDESK_REDIRECT_TO_LOGIN_BY_DEFAULT = True
|
||||||
response = self.client.get(reverse('helpdesk_home'))
|
response = self.client.get(reverse('helpdesk:home'))
|
||||||
self.assertRedirects(response, reverse('login'))
|
self.assertRedirects(response, reverse('helpdesk:login'))
|
||||||
|
|
||||||
|
|
||||||
class HomePageTestCase(TestCase):
|
class HomePageTestCase(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.original_setting = settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
self.original_setting = helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE
|
||||||
settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = False
|
helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = False
|
||||||
try:
|
try:
|
||||||
reload(sys.modules['helpdesk.views.public'])
|
reload(sys.modules['helpdesk.views.public'])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = self.original_setting
|
helpdesk_settings.HELPDESK_ALLOW_NON_STAFF_TICKET_UPDATE = self.original_setting
|
||||||
reload(sys.modules['helpdesk.views.public'])
|
reload(sys.modules['helpdesk.views.public'])
|
||||||
|
|
||||||
def assertUserRedirectedToView(self, user, view_name):
|
def assertUserRedirectedToView(self, user, view_name):
|
||||||
self.client.login(username=user.username, password='password')
|
self.client.login(username=user.username, password='password')
|
||||||
response = self.client.get(reverse('helpdesk_home'))
|
response = self.client.get(reverse('helpdesk:home'))
|
||||||
self.assertRedirects(response, reverse(view_name))
|
self.assertRedirects(response, reverse(view_name))
|
||||||
self.client.logout()
|
self.client.logout()
|
||||||
|
|
||||||
@ -187,11 +188,11 @@ class HomePageTestCase(TestCase):
|
|||||||
|
|
||||||
# login_view_ticketlist is False...
|
# login_view_ticketlist is False...
|
||||||
update_user_settings(user, login_view_ticketlist=False)
|
update_user_settings(user, login_view_ticketlist=False)
|
||||||
self.assertUserRedirectedToView(user, 'helpdesk_dashboard')
|
self.assertUserRedirectedToView(user, 'helpdesk:dashboard')
|
||||||
|
|
||||||
# ... or missing
|
# ... or missing
|
||||||
delete_user_settings(user, 'login_view_ticketlist')
|
delete_user_settings(user, 'login_view_ticketlist')
|
||||||
self.assertUserRedirectedToView(user, 'helpdesk_dashboard')
|
self.assertUserRedirectedToView(user, 'helpdesk:dashboard')
|
||||||
|
|
||||||
def test_no_user_settings_redirect_to_dashboard(self):
|
def test_no_user_settings_redirect_to_dashboard(self):
|
||||||
"""Authenticated users are redirected to the dashboard if user settings are missing"""
|
"""Authenticated users are redirected to the dashboard if user settings are missing"""
|
||||||
@ -199,14 +200,14 @@ class HomePageTestCase(TestCase):
|
|||||||
user = get_staff_user()
|
user = get_staff_user()
|
||||||
|
|
||||||
UserSettings.objects.filter(user=user).delete()
|
UserSettings.objects.filter(user=user).delete()
|
||||||
self.assertUserRedirectedToView(user, 'helpdesk_dashboard')
|
self.assertUserRedirectedToView(user, 'helpdesk:dashboard')
|
||||||
|
|
||||||
def test_redirect_to_ticket_list(self):
|
def test_redirect_to_ticket_list(self):
|
||||||
"""Authenticated users are redirected to the ticket list based on their user settings"""
|
"""Authenticated users are redirected to the ticket list based on their user settings"""
|
||||||
user = get_staff_user()
|
user = get_staff_user()
|
||||||
update_user_settings(user, login_view_ticketlist=True)
|
update_user_settings(user, login_view_ticketlist=True)
|
||||||
|
|
||||||
self.assertUserRedirectedToView(user, 'helpdesk_list')
|
self.assertUserRedirectedToView(user, 'helpdesk:list')
|
||||||
|
|
||||||
|
|
||||||
class ReturnToTicketTestCase(TestCase):
|
class ReturnToTicketTestCase(TestCase):
|
||||||
@ -215,7 +216,7 @@ class ReturnToTicketTestCase(TestCase):
|
|||||||
|
|
||||||
user = get_staff_user()
|
user = get_staff_user()
|
||||||
ticket = create_ticket()
|
ticket = create_ticket()
|
||||||
response = return_to_ticket(user, settings, ticket)
|
response = return_to_ticket(user, helpdesk_settings, ticket)
|
||||||
self.assertEqual(response['location'], ticket.get_absolute_url())
|
self.assertEqual(response['location'], ticket.get_absolute_url())
|
||||||
|
|
||||||
def test_non_staff_user(self):
|
def test_non_staff_user(self):
|
||||||
@ -223,5 +224,5 @@ class ReturnToTicketTestCase(TestCase):
|
|||||||
|
|
||||||
user = User.objects.create_user(username='henry.wensleydale', password='gouda', email='wensleydale@example.com')
|
user = User.objects.create_user(username='henry.wensleydale', password='gouda', email='wensleydale@example.com')
|
||||||
ticket = create_ticket()
|
ticket = create_ticket()
|
||||||
response = return_to_ticket(user, settings, ticket)
|
response = return_to_ticket(user, helpdesk_settings, ticket)
|
||||||
self.assertEqual(response['location'], ticket.ticket_url)
|
self.assertEqual(response['location'], ticket.ticket_url)
|
||||||
|
@ -27,6 +27,7 @@ class QuickDjangoTest(object):
|
|||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.sites',
|
'django.contrib.sites',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
'markdown_deux',
|
||||||
'bootstrapform',
|
'bootstrapform',
|
||||||
)
|
)
|
||||||
MIDDLEWARE_CLASSES = [
|
MIDDLEWARE_CLASSES = [
|
||||||
@ -58,6 +59,8 @@ class QuickDjangoTest(object):
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
SITE_ID = 1
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
self.apps = args
|
self.apps = args
|
||||||
|
Loading…
Reference in New Issue
Block a user