From fd67219af7a9e1acdc7707e14f97133195fb33ec Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 6 Jul 2017 23:31:27 -0400 Subject: [PATCH] Add password reset unit test. Signed-off-by: Roberto Rosario --- mayan/apps/authentication/tests/test_views.py | 41 +++++++++++++++- mayan/apps/authentication/views.py | 47 ++++++++----------- 2 files changed, 59 insertions(+), 29 deletions(-) diff --git a/mayan/apps/authentication/tests/test_views.py b/mayan/apps/authentication/tests/test_views.py index c24c1fe66d..b3c81c3242 100644 --- a/mayan/apps/authentication/tests/test_views.py +++ b/mayan/apps/authentication/tests/test_views.py @@ -2,13 +2,15 @@ from __future__ import absolute_import, unicode_literals from django.conf import settings from django.contrib.auth import get_user_model +from django.core import mail from django.core.urlresolvers import reverse from django.test import override_settings from common.tests import BaseTestCase from smart_settings.classes import Namespace from user_management.tests.literals import ( - TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_ADMIN_USERNAME + TEST_ADMIN_EMAIL, TEST_ADMIN_PASSWORD, TEST_USER_PASSWORD_EDITED, + TEST_ADMIN_USERNAME ) from ..settings import setting_maximum_session_length @@ -172,3 +174,40 @@ class UserLoginTestCase(BaseTestCase): self.assertEqual(response.status_code, 200) self.assertTrue(self.client.session.get_expire_at_browser_close()) + + @override_settings(AUTHENTICATION_LOGIN_METHOD='username') + def test_password_reset(self): + response = self.client.post( + reverse('authentication:password_reset_view'), { + 'email': TEST_ADMIN_EMAIL, + }, follow=True + ) + + self.assertContains( + response, text='Password reset email sent!', status_code=200 + ) + self.assertEqual(len(mail.outbox), 1) + + uid_token = mail.outbox[0].body.replace('\n', '').split('/') + + response = self.client.post( + reverse('authentication:password_reset_confirm_view', args=uid_token[-3:-1]), { + 'new_password1': TEST_USER_PASSWORD_EDITED, + 'new_password2': TEST_USER_PASSWORD_EDITED, + }, follow=True + ) + + self.assertContains( + response, text='Password reset complete!', status_code=200 + ) + + response = self.client.post( + reverse(settings.LOGIN_URL), { + 'username': TEST_ADMIN_USERNAME, + 'password': TEST_USER_PASSWORD_EDITED, + 'remember_me': True + }, follow=True + ) + + response = self.client.get(reverse('documents:document_list')) + self.assertEqual(response.status_code, 200) diff --git a/mayan/apps/authentication/views.py b/mayan/apps/authentication/views.py index fab1982506..cdd3fdfd40 100644 --- a/mayan/apps/authentication/views.py +++ b/mayan/apps/authentication/views.py @@ -76,12 +76,9 @@ def password_reset_complete_view(request): 'appearance_type': 'plain' } - kwargs = { - 'template_name': 'authentication/password_reset_complete.html' - } - return password_reset_complete( - request, extra_context=extra_context, **kwargs + request, extra_context=extra_context, + template_name= 'authentication/password_reset_complete.html' ) @@ -91,15 +88,12 @@ def password_reset_confirm_view(request, uidb64=None, token=None): 'appearance_type': 'plain' } - kwargs = { - 'template_name': 'authentication/password_reset_confirm.html', - 'post_reset_redirect': reverse('authentication:password_reset_complete_view'), - 'uidb64': uidb64, - 'token': token - } - return password_reset_confirm( - request, extra_context=extra_context, **kwargs + request, extra_context=extra_context, + template_name='authentication/password_reset_confirm.html', + post_reset_redirect=reverse( + 'authentication:password_reset_complete_view' + ), uidb64=uidb64, token=token ) @@ -109,11 +103,10 @@ def password_reset_done_view(request): 'appearance_type': 'plain' } - kwargs = { - 'template_name': 'authentication/password_reset_done.html' - } - - return password_reset_done(request, extra_context=extra_context, **kwargs) + return password_reset_done( + request, extra_context=extra_context, + template_name='authentication/password_reset_done.html' + ) @public @@ -122,19 +115,17 @@ def password_reset_view(request): 'appearance_type': 'plain' } - kwargs = { - 'email_template_name': 'authentication/password_reset_email.html', - 'extra_email_context': { + return password_reset( + request, extra_context=extra_context, + email_template_name='authentication/password_reset_email.html', + extra_email_context={ 'project_title': settings.PROJECT_TITLE, 'project_website': settings.PROJECT_WEBSITE, 'project_copyright': settings.PROJECT_COPYRIGHT, 'project_license': settings.PROJECT_LICENSE, - }, - 'subject_template_name': 'authentication/password_reset_subject.txt', - 'template_name': 'authentication/password_reset_form.html', - 'post_reset_redirect': reverse( + }, subject_template_name='authentication/password_reset_subject.txt', + template_name='authentication/password_reset_form.html', + post_reset_redirect=reverse( 'authentication:password_reset_done_view' ) - } - - return password_reset(request, extra_context=extra_context, **kwargs) + )