diff --git a/django/contrib/auth/fixtures/authtestdata.json b/django/contrib/auth/fixtures/authtestdata.json new file mode 100644 index 00000000000..e0bdc24e72d --- /dev/null +++ b/django/contrib/auth/fixtures/authtestdata.json @@ -0,0 +1,56 @@ +[ + { + "pk": "1", + "model": "auth.user", + "fields": { + "username": "testclient", + "first_name": "Test", + "last_name": "Client", + "is_active": true, + "is_superuser": false, + "is_staff": false, + "last_login": "2006-12-17 07:03:31", + "groups": [], + "user_permissions": [], + "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161", + "email": "testclient@example.com", + "date_joined": "2006-12-17 07:03:31" + } + }, + { + "pk": "2", + "model": "auth.user", + "fields": { + "username": "inactive", + "first_name": "Inactive", + "last_name": "User", + "is_active": false, + "is_superuser": false, + "is_staff": false, + "last_login": "2006-12-17 07:03:31", + "groups": [], + "user_permissions": [], + "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161", + "email": "testclient@example.com", + "date_joined": "2006-12-17 07:03:31" + } + }, + { + "pk": "3", + "model": "auth.user", + "fields": { + "username": "staff", + "first_name": "Staff", + "last_name": "Member", + "is_active": true, + "is_superuser": false, + "is_staff": true, + "last_login": "2006-12-17 07:03:31", + "groups": [], + "user_permissions": [], + "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161", + "email": "staffmember@example.com", + "date_joined": "2006-12-17 07:03:31" + } + } +] diff --git a/django/contrib/auth/tests.py b/django/contrib/auth/tests.py index 81094ca85f3..e09f379456a 100644 --- a/django/contrib/auth/tests.py +++ b/django/contrib/auth/tests.py @@ -1,5 +1,5 @@ """ ->>> from models import User, AnonymousUser +>>> from django.contrib.auth.models import User, AnonymousUser >>> u = User.objects.create_user('testuser', 'test@example.com', 'testpw') >>> u.has_usable_password() True @@ -52,4 +52,21 @@ Superuser created successfully. u'joe@somewhere.org' >>> u.password u'!' -""" \ No newline at end of file +""" + +from django.test import TestCase +from django.core import mail + +class PasswordResetTest(TestCase): + fixtures = ['authtestdata.json'] + def test_email_not_found(self): + response = self.client.get('/auth/password_reset/') + self.assertEquals(response.status_code, 200) + response = self.client.post('/auth/password_reset/', {'email': 'not_a_real_email@email.com'} ) + self.assertContains(response, "That e-mail address doesn't have an associated user account") + self.assertEquals(len(mail.outbox), 0) + + def test_email_found(self): + response = self.client.post('/auth/password_reset/', {'email': 'staffmember@example.com'} ) + self.assertEquals(response.status_code, 302) + self.assertEquals(len(mail.outbox), 1) diff --git a/django/contrib/auth/urls.py b/django/contrib/auth/urls.py new file mode 100644 index 00000000000..3fd7cb47ada --- /dev/null +++ b/django/contrib/auth/urls.py @@ -0,0 +1,12 @@ +# This exists for the sake of testing only. Normally URLs are mapped in +# ../admin/urls.py + +from django.conf.urls.defaults import * + +urlpatterns = patterns('', + ('^logout/$', 'django.contrib.auth.views.logout'), + ('^password_change/$', 'django.contrib.auth.views.password_change'), + ('^password_change/done/$', 'django.contrib.auth.views.password_change_done'), + ('^password_reset/$', 'django.contrib.auth.views.password_reset') +) + diff --git a/tests/urls.py b/tests/urls.py index dbdf9a80641..a0ef892313a 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -22,4 +22,7 @@ urlpatterns = patterns('', # test urlconf for syndication tests (r'^syndication/', include('regressiontests.syndication.urls')), + + # Other contrib apps + (r'^auth/', include('django.contrib.auth.urls')), )