Commit 1dfd3310 by David Baumgold

Refactor student views

Fix pylint/pep8 warnings, use JsonResponse instead of HttpResponse where useful,
put in TODOs to change HTTP status codes to be more accurate.
parent 01ac04ca
...@@ -23,6 +23,7 @@ from external_auth.models import ExternalAuthMap ...@@ -23,6 +23,7 @@ from external_auth.models import ExternalAuthMap
TEST_DATA_MIXED_MODULESTORE = mixed_store_config(settings.COMMON_TEST_DATA_ROOT, {}) TEST_DATA_MIXED_MODULESTORE = mixed_store_config(settings.COMMON_TEST_DATA_ROOT, {})
class LoginTest(TestCase): class LoginTest(TestCase):
''' '''
Test student.views.login_user() view Test student.views.login_user() view
...@@ -224,7 +225,11 @@ class ExternalAuthShibTest(ModuleStoreTestCase): ...@@ -224,7 +225,11 @@ class ExternalAuthShibTest(ModuleStoreTestCase):
""" """
response = self.client.post(reverse('login'), {'email': self.user_w_map.email, 'password': ''}) response = self.client.post(reverse('login'), {'email': self.user_w_map.email, 'password': ''})
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)
self.assertEqual(response.content, json.dumps({'success': False, 'redirect': reverse('shib-login')})) obj = json.loads(response.content)
self.assertEqual(obj, {
'success': False,
'redirect': reverse('shib-login'),
})
@unittest.skipUnless(settings.FEATURES.get('AUTH_USE_SHIB'), "AUTH_USE_SHIB not set") @unittest.skipUnless(settings.FEATURES.get('AUTH_USE_SHIB'), "AUTH_USE_SHIB not set")
def test__get_course_enrollment_domain(self): def test__get_course_enrollment_domain(self):
......
...@@ -68,8 +68,11 @@ class ResetPasswordTests(TestCase): ...@@ -68,8 +68,11 @@ class ResetPasswordTests(TestCase):
bad_pwd_resp = password_reset(bad_pwd_req) bad_pwd_resp = password_reset(bad_pwd_req)
# If they've got an unusable password, we return a successful response code # If they've got an unusable password, we return a successful response code
self.assertEquals(bad_pwd_resp.status_code, 200) self.assertEquals(bad_pwd_resp.status_code, 200)
self.assertEquals(bad_pwd_resp.content, json.dumps({'success': True, obj = json.loads(bad_pwd_resp.content)
'value': "('registration/password_reset_done.html', [])"})) self.assertEquals(obj, {
'success': True,
'value': "('registration/password_reset_done.html', [])",
})
@patch('student.views.render_to_string', Mock(side_effect=mock_render_to_string, autospec=True)) @patch('student.views.render_to_string', Mock(side_effect=mock_render_to_string, autospec=True))
def test_nonexist_email_password_reset(self): def test_nonexist_email_password_reset(self):
...@@ -80,12 +83,19 @@ class ResetPasswordTests(TestCase): ...@@ -80,12 +83,19 @@ class ResetPasswordTests(TestCase):
# Note: even if the email is bad, we return a successful response code # Note: even if the email is bad, we return a successful response code
# This prevents someone potentially trying to "brute-force" find out which emails are and aren't registered with edX # This prevents someone potentially trying to "brute-force" find out which emails are and aren't registered with edX
self.assertEquals(bad_email_resp.status_code, 200) self.assertEquals(bad_email_resp.status_code, 200)
self.assertEquals(bad_email_resp.content, json.dumps({'success': True, obj = json.loads(bad_email_resp.content)
'value': "('registration/password_reset_done.html', [])"})) self.assertEquals(obj, {
'success': True,
@unittest.skipIf(settings.FEATURES.get('DISABLE_RESET_EMAIL_TEST', False), 'value': "('registration/password_reset_done.html', [])",
dedent("""Skipping Test because CMS has not provided necessary templates for password reset. })
If LMS tests print this message, that needs to be fixed."""))
@unittest.skipIf(
settings.FEATURES.get('DISABLE_RESET_EMAIL_TEST', False),
dedent("""
Skipping Test because CMS has not provided necessary templates for password reset.
If LMS tests print this message, that needs to be fixed.
""")
)
@patch('django.core.mail.send_mail') @patch('django.core.mail.send_mail')
@patch('student.views.render_to_string', Mock(side_effect=mock_render_to_string, autospec=True)) @patch('student.views.render_to_string', Mock(side_effect=mock_render_to_string, autospec=True))
def test_reset_password_email(self, send_email): def test_reset_password_email(self, send_email):
...@@ -94,9 +104,11 @@ class ResetPasswordTests(TestCase): ...@@ -94,9 +104,11 @@ class ResetPasswordTests(TestCase):
good_req = self.request_factory.post('/password_reset/', {'email': self.user.email}) good_req = self.request_factory.post('/password_reset/', {'email': self.user.email})
good_resp = password_reset(good_req) good_resp = password_reset(good_req)
self.assertEquals(good_resp.status_code, 200) self.assertEquals(good_resp.status_code, 200)
self.assertEquals(good_resp.content, obj = json.loads(good_resp.content)
json.dumps({'success': True, self.assertEquals(obj, {
'value': "('registration/password_reset_done.html', [])"})) 'success': True,
'value': "('registration/password_reset_done.html', [])",
})
((subject, msg, from_addr, to_addrs), sm_kwargs) = send_email.call_args ((subject, msg, from_addr, to_addrs), sm_kwargs) = send_email.call_args
self.assertIn("Password reset", subject) self.assertIn("Password reset", subject)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment