Ticket #8402: 8402.add_password_change_tests_and_update_default_template_to_newforms.diff

File 8402.add_password_change_tests_and_update_default_template_to_newforms.diff, 6.2 KB (added by mtrichardson, 16 years ago)
  • django/contrib/admin/templates/registration/password_change_form.html

     
    1313
    1414<form action="" method="post">
    1515
    16 {% if form.old_password.errors %}{{ form.old_password.html_error_list }}{% endif %}
     16{% if form.old_password.errors %}{{ form.old_password.errors }}{% endif %}
    1717<p class="aligned wide"><label for="id_old_password">{% trans 'Old password:' %}</label>{{ form.old_password }}</p>
    18 {% if form.new_password1.errors %}{{ form.new_password1.html_error_list }}{% endif %}
     18{% if form.new_password1.errors %}{{ form.new_password1.errors }}{% endif %}
    1919<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
    20 {% if form.new_password2.errors %}{{ form.new_password2.html_error_list }}{% endif %}
     20{% if form.new_password2.errors %}{{ form.new_password2.errors }}{% endif %}
    2121<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
    2222
    2323<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
  • django/contrib/auth/tests/views.py

     
    11
     2import os
    23import re
     4
     5from django.conf import settings
    36from django.contrib.auth.models import User
    47from django.test import TestCase
    58from django.core import mail
     
    8689        self.assertEquals(response.status_code, 200)
    8790        self.assert_("The two password fields didn't match" in response.content)
    8891
     92
     93class ChangePasswordTest(TestCase):
     94    fixtures = ['authtestdata.json']
     95    urls = 'django.contrib.auth.urls'
     96   
     97    def setUp(self):
     98        self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
     99        settings.TEMPLATE_DIRS = (
     100            os.path.join(
     101                os.path.dirname(__file__),
     102                'templates'
     103            )
     104        ,)
     105   
     106    def tearDown(self):
     107        settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
     108   
     109    def login(self, password='password'):
     110        response = self.client.post('/login/', {
     111            'username': 'testclient',
     112            'password': password
     113            }
     114        )
     115        self.assertEquals(response.status_code, 302)
     116        self.assert_(response['Location'].endswith('/accounts/profile/'))
     117   
     118    def fail_login(self, password='password'):
     119        response = self.client.post('/login/', {
     120            'username': 'testclient',
     121            'password': password
     122            }
     123        )
     124        self.assertEquals(response.status_code, 200)
     125        self.assert_("Please enter a correct username and password. Note that both fields are case-sensitive." in response.content)
     126   
     127    def logout(self):
     128        response = self.client.get('/logout/')
     129   
     130    def test_password_change_fails_with_invalid_old_password(self):
     131        self.login()
     132        response = self.client.post('/password_change/', {
     133            'old_password': 'donuts',
     134            'new_password1': 'password1',
     135            'new_password2': 'password1',
     136            }
     137        )
     138        self.assertEquals(response.status_code, 200)
     139        self.assert_("Your old password was entered incorrectly. Please enter it again." in response.content)
     140   
     141    def test_password_change_fails_with_mismatched_passwords(self):
     142        self.login()
     143        response = self.client.post('/password_change/', {
     144            'old_password': 'password',
     145            'new_password1': 'password1',
     146            'new_password2': 'donuts',
     147            }
     148        )
     149        self.assertEquals(response.status_code, 200)
     150        self.assert_("The two password fields didn't match." in response.content)
     151   
     152    def test_password_change_succeeds(self):
     153        self.login()
     154        response = self.client.post('/password_change/', {
     155            'old_password': 'password',
     156            'new_password1': 'password1',
     157            'new_password2': 'password1',
     158            }
     159        )
     160        self.assertEquals(response.status_code, 302)
     161        self.assert_(response['Location'].endswith('/password_change/done/'))
     162        self.fail_login()
     163        self.login(password='password1')
     164       
  • django/contrib/auth/tests/__init__.py

     
    11from django.contrib.auth.tests.basic import BASIC_TESTS
    2 from django.contrib.auth.tests.views import PasswordResetTest
     2from django.contrib.auth.tests.views import PasswordResetTest, ChangePasswordTest
    33from django.contrib.auth.tests.forms import FORM_TESTS
    44from django.contrib.auth.tests.tokens import TOKEN_GENERATOR_TESTS
    55
     6# The password for the fixture data users is 'password'
     7
    68__test__ = {
    79    'BASIC_TESTS': BASIC_TESTS,
    810    'PASSWORDRESET_TESTS': PasswordResetTest,
    911    'FORM_TESTS': FORM_TESTS,
    10     'TOKEN_GENERATOR_TESTS': TOKEN_GENERATOR_TESTS
     12    'TOKEN_GENERATOR_TESTS': TOKEN_GENERATOR_TESTS,
     13    'CHANGEPASSWORD_TESTS': ChangePasswordTest,
    1114}
  • django/contrib/auth/tests/templates/registration/login.html

     
     1{{ form.as_ul }}
     2 No newline at end of file
  • django/contrib/auth/urls.py

     
    55from django.conf.urls.defaults import *
    66
    77urlpatterns = patterns('',
     8    (r'^login/$', 'django.contrib.auth.views.login'),
    89    (r'^logout/$', 'django.contrib.auth.views.logout'),
    910    (r'^password_change/$', 'django.contrib.auth.views.password_change'),
    1011    (r'^password_change/done/$', 'django.contrib.auth.views.password_change_done'),
Back to Top