37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
""" Test Student helpers """
|
|
|
|
import logging
|
|
|
|
from django.core.urlresolvers import reverse
|
|
from django.test import TestCase
|
|
from django.test.client import RequestFactory
|
|
from testfixtures import LogCapture
|
|
|
|
from student.helpers import get_next_url_for_login_page
|
|
|
|
|
|
LOGGER_NAME = "student.helpers"
|
|
|
|
|
|
class TestLoginHelper(TestCase):
|
|
"""Test login helper methods."""
|
|
def setUp(self):
|
|
super(TestLoginHelper, self).setUp()
|
|
self.request = RequestFactory()
|
|
|
|
def test_unsafe_next(self):
|
|
""" Test unsafe next parameter """
|
|
unsafe_url = "https://www.amazon.com"
|
|
with LogCapture(LOGGER_NAME, level=logging.ERROR) as logger:
|
|
req = self.request.get(reverse("login") + "?next={url}".format(url=unsafe_url))
|
|
get_next_url_for_login_page(req)
|
|
logger.check(
|
|
(LOGGER_NAME, "ERROR", u"Unsafe redirect parameter detected: u'{url}'".format(url=unsafe_url))
|
|
)
|
|
|
|
def test_safe_next(self):
|
|
""" Test safe next parameter """
|
|
req = self.request.get(reverse("login") + "?next={url}".format(url="/dashboard"))
|
|
next_page = get_next_url_for_login_page(req)
|
|
self.assertEqual(next_page, u'/dashboard')
|