PLAT-1847 Fix cms tests under Django 1.9

This commit is contained in:
Jeremy Bowman
2017-12-13 15:29:02 -05:00
parent a0df76e19e
commit d44e6297ae
8 changed files with 36 additions and 12 deletions

View File

@@ -20,6 +20,7 @@ from openedx.core.djangoapps.external_auth.models import ExternalAuthMap
import openedx.core.djangoapps.external_auth.views as external_auth_views
from openedx.core.djangoapps.site_configuration.tests.factories import SiteFactory
from openedx.core.djangolib.testing.utils import skip_unless_cms, skip_unless_lms
from openedx.tests.util import expected_redirect_url
from student.models import CourseEnrollment
from student.roles import CourseStaffRole
from student.tests.factories import UserFactory
@@ -182,7 +183,7 @@ class SSLClientTest(ModuleStoreTestCase):
response = self.client.get(
reverse('dashboard'), follow=True,
SSL_CLIENT_S_DN=self.AUTH_DN.format(self.USER_NAME, self.USER_EMAIL))
self.assertEquals(('http://testserver/dashboard', 302),
self.assertEquals((expected_redirect_url('/dashboard'), 302),
response.redirect_chain[-1])
self.assertIn(SESSION_KEY, self.client.session)
@@ -196,7 +197,7 @@ class SSLClientTest(ModuleStoreTestCase):
response = self.client.get(
reverse('register_user'), follow=True,
SSL_CLIENT_S_DN=self.AUTH_DN.format(self.USER_NAME, self.USER_EMAIL))
self.assertEquals(('http://testserver/dashboard', 302),
self.assertEquals((expected_redirect_url('/dashboard'), 302),
response.redirect_chain[-1])
self.assertIn(SESSION_KEY, self.client.session)
@@ -236,7 +237,7 @@ class SSLClientTest(ModuleStoreTestCase):
response = self.client.get(
reverse('signin_user'), follow=True,
SSL_CLIENT_S_DN=self.AUTH_DN.format(self.USER_NAME, self.USER_EMAIL))
self.assertEquals(('http://testserver/dashboard', 302),
self.assertEquals((expected_redirect_url('/dashboard'), 302),
response.redirect_chain[-1])
self.assertIn(SESSION_KEY, self.client.session)
@@ -359,7 +360,7 @@ class SSLClientTest(ModuleStoreTestCase):
SSL_CLIENT_S_DN=self.AUTH_DN.format(self.USER_NAME, self.USER_EMAIL),
HTTP_ACCEPT='text/html'
)
self.assertEqual(('http://testserver{0}'.format(course_private_url), 302),
self.assertEqual((expected_redirect_url(course_private_url), 302),
response.redirect_chain[-1])
self.assertIn(SESSION_KEY, self.client.session)
@@ -391,7 +392,7 @@ class SSLClientTest(ModuleStoreTestCase):
SSL_CLIENT_S_DN=self.AUTH_DN.format(self.USER_NAME, self.USER_EMAIL),
HTTP_ACCEPT='text/html'
)
self.assertEqual(('http://testserver{0}'.format(course_private_url), 302),
self.assertEqual((expected_redirect_url(course_private_url), 302),
response.redirect_chain[-1])
self.assertIn(SESSION_KEY, self.client.session)
@@ -409,7 +410,7 @@ class SSLClientTest(ModuleStoreTestCase):
response = self.client.get(
reverse('dashboard'), follow=True,
SSL_CLIENT_S_DN=self.AUTH_DN.format(self.USER_NAME, self.USER_EMAIL))
self.assertEquals(('http://testserver/dashboard', 302),
self.assertEquals((expected_redirect_url('/dashboard'), 302),
response.redirect_chain[-1])
self.assertIn(SESSION_KEY, self.client.session)
response = self.client.get(

View File

@@ -151,10 +151,8 @@ class UpdateScheduleTests(SharedModuleStoreTestCase):
def assert_schedule_dates(self, schedule, expected_start):
assert _strip_secs(schedule.start) == _strip_secs(expected_start)
assert (
_strip_secs(schedule.upgrade_deadline) ==
_strip_secs(expected_start) + datetime.timedelta(days=self.VERIFICATION_DEADLINE_DAYS),
)
deadline_delta = datetime.timedelta(days=self.VERIFICATION_DEADLINE_DAYS)
assert _strip_secs(schedule.upgrade_deadline) == _strip_secs(expected_start) + deadline_delta
def test_updated_when_course_not_started(self, mock_get_current_site):
mock_get_current_site.return_value = self.site

View File

@@ -0,0 +1,20 @@
"""
Utilities for Open edX unit tests.
"""
from __future__ import absolute_import, unicode_literals
import django
# TODO: Remove Django 1.11 upgrade shim
# SHIM: We should be able to get rid of this utility post-upgrade
def expected_redirect_url(relative_url, hostname='testserver'):
"""
Get the expected redirect URL for the current Django version and the
given relative URL. Django 1.8 and earlier redirect to absolute URLs,
later versions redirect to relative ones.
"""
if django.VERSION < (1, 9):
return 'http://{}{}'.format(hostname, relative_url)
else:
return relative_url