update session cookie with the course id
This commit is contained in:
@@ -49,14 +49,17 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
course_min_price=100,
|
||||
days_till_verification_deadline=14,
|
||||
verification_status=None,
|
||||
sku=None
|
||||
sku=None,
|
||||
create_user=True
|
||||
):
|
||||
"""Set up the course and user for this test."""
|
||||
now = datetime.now(utc)
|
||||
if create_user:
|
||||
self.user = UserFactory.create(username='mrrobot', password='test') # pylint: disable=attribute-defined-outside-init
|
||||
|
||||
self.course = CourseFactory.create( # pylint: disable=attribute-defined-outside-init
|
||||
start=now + timedelta(days=days_till_start)
|
||||
)
|
||||
self.user = UserFactory.create(username='mrrobot', password='test') # pylint: disable=attribute-defined-outside-init
|
||||
|
||||
if days_till_end is not None:
|
||||
self.course.end = now + timedelta(days=days_till_end)
|
||||
@@ -280,7 +283,12 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
|
||||
# Tests Verified Upgrade Deadline Date Block
|
||||
|
||||
def check_upgrade_banner(self, banner_expected=True, include_url_parameter=True):
|
||||
def check_upgrade_banner(
|
||||
self,
|
||||
banner_expected=True,
|
||||
include_url_parameter=True,
|
||||
expected_cookie_value=None
|
||||
):
|
||||
"""
|
||||
Helper method to check for the presence of the Upgrade Banner
|
||||
"""
|
||||
@@ -288,11 +296,17 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
if include_url_parameter:
|
||||
url += '?upgrade=true'
|
||||
resp = self.client.get(url)
|
||||
upgrade_cookie_name = 'show_upgrade_notification'
|
||||
expected_banner_text = "Give yourself an additional incentive to complete"
|
||||
if banner_expected:
|
||||
self.assertIn(expected_banner_text, resp.content)
|
||||
self.assertIn(str(self.course.id), self.client.cookies[upgrade_cookie_name].value)
|
||||
else:
|
||||
self.assertNotIn(expected_banner_text, resp.content)
|
||||
if upgrade_cookie_name in self.client.cookies:
|
||||
self.assertNotIn(str(self.course.id), self.client.cookies[upgrade_cookie_name].value)
|
||||
if expected_cookie_value is not None:
|
||||
self.assertIn(str(expected_cookie_value), self.client.cookies[upgrade_cookie_name].value)
|
||||
|
||||
@freeze_time('2015-01-02')
|
||||
def test_verified_upgrade_deadline_date(self):
|
||||
@@ -335,6 +349,19 @@ class CourseDateSummaryTest(SharedModuleStoreTestCase):
|
||||
# the URL parameter in order to see the notification.
|
||||
self.check_upgrade_banner(include_url_parameter=False)
|
||||
|
||||
# Store the current course_id for testing
|
||||
old_course_id = self.course.id
|
||||
|
||||
# Change to another course
|
||||
self.setup_course_and_user(days_till_upgrade_deadline=1,
|
||||
user_enrollment_mode=CourseMode.AUDIT,
|
||||
create_user=False)
|
||||
|
||||
# Banner should not be present in the newly created course
|
||||
self.check_upgrade_banner(include_url_parameter=False,
|
||||
banner_expected=False,
|
||||
expected_cookie_value=old_course_id)
|
||||
|
||||
# Unfortunately (according to django doc), it is not possible to test expiration of the cookie.
|
||||
|
||||
def test_ecommerce_checkout_redirect(self):
|
||||
|
||||
@@ -354,13 +354,16 @@ def course_info(request, course_id):
|
||||
if request.GET.get('upgrade', 'false') == 'true':
|
||||
store_upgrade_cookie = True
|
||||
show_upgrade_notification = True
|
||||
elif upgrade_cookie_name in request.COOKIES and bool(request.COOKIES[upgrade_cookie_name]):
|
||||
elif upgrade_cookie_name in request.COOKIES and course_id in request.COOKIES[upgrade_cookie_name]:
|
||||
show_upgrade_notification = True
|
||||
|
||||
if show_upgrade_notification:
|
||||
upgrade_data = VerifiedUpgradeDeadlineDate(course, user)
|
||||
if upgrade_data.is_enabled:
|
||||
upgrade_link = upgrade_data.link
|
||||
else:
|
||||
# The upgrade is not enabled so the cookie does not need to be stored
|
||||
store_upgrade_cookie = False
|
||||
|
||||
context = {
|
||||
'request': request,
|
||||
@@ -393,13 +396,21 @@ def course_info(request, course_id):
|
||||
|
||||
response = render_to_response('courseware/info.html', context)
|
||||
if store_upgrade_cookie:
|
||||
response.set_cookie(
|
||||
upgrade_cookie_name,
|
||||
True,
|
||||
max_age=10 * 24 * 60 * 60, # set for 10 days
|
||||
domain=settings.SESSION_COOKIE_DOMAIN,
|
||||
httponly=True # no use case for accessing from JavaScript
|
||||
)
|
||||
if upgrade_cookie_name in request.COOKIES and str(course_id) not in request.COOKIES[upgrade_cookie_name]:
|
||||
cookie_value = '%s,%s' % (course_id, request.COOKIES[upgrade_cookie_name])
|
||||
elif upgrade_cookie_name in request.COOKIES and str(course_id) in request.COOKIES[upgrade_cookie_name]:
|
||||
cookie_value = request.COOKIES[upgrade_cookie_name]
|
||||
else:
|
||||
cookie_value = course_id
|
||||
|
||||
if cookie_value is not None:
|
||||
response.set_cookie(
|
||||
upgrade_cookie_name,
|
||||
cookie_value,
|
||||
max_age=10 * 24 * 60 * 60, # set for 10 days
|
||||
domain=settings.SESSION_COOKIE_DOMAIN,
|
||||
httponly=True # no use case for accessing from JavaScript
|
||||
)
|
||||
|
||||
return response
|
||||
|
||||
|
||||
Reference in New Issue
Block a user