X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=apps%2Fpatchwork%2Ftests%2Ftest_registration.py;fp=apps%2Fpatchwork%2Ftests%2Ftest_registration.py;h=0000000000000000000000000000000000000000;hb=ad2762cf775a8dde508de47164d6429f3fd724f1;hp=845b60b152576ab809a160f1172e5b5c315b9b32;hpb=f09e982f58384946111d4157fd2b7c2b31b78612;p=patchwork diff --git a/apps/patchwork/tests/test_registration.py b/apps/patchwork/tests/test_registration.py deleted file mode 100644 index 845b60b..0000000 --- a/apps/patchwork/tests/test_registration.py +++ /dev/null @@ -1,210 +0,0 @@ -# Patchwork - automated patch tracking system -# Copyright (C) 2010 Jeremy Kerr -# -# This file is part of the Patchwork package. -# -# Patchwork is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# Patchwork is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Patchwork; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -import unittest -from django.test import TestCase -from django.test.client import Client -from django.core import mail -from django.core.urlresolvers import reverse -from django.contrib.auth.models import User -from patchwork.models import EmailConfirmation, Person -from patchwork.tests.utils import create_user - -def _confirmation_url(conf): - return reverse('patchwork.views.confirm', kwargs = {'key': conf.key}) - -class TestUser(object): - firstname = 'Test' - lastname = 'User' - username = 'testuser' - email = 'test@example.com' - password = 'foobar' - -class RegistrationTest(TestCase): - def setUp(self): - self.user = TestUser() - self.client = Client() - self.default_data = {'username': self.user.username, - 'first_name': self.user.firstname, - 'last_name': self.user.lastname, - 'email': self.user.email, - 'password': self.user.password} - self.required_error = 'This field is required.' - self.invalid_error = 'Enter a valid value.' - - def testRegistrationForm(self): - response = self.client.get('/register/') - self.assertEquals(response.status_code, 200) - self.assertTemplateUsed(response, 'patchwork/registration_form.html') - - def testBlankFields(self): - for field in ['username', 'email', 'password']: - data = self.default_data.copy() - del data[field] - response = self.client.post('/register/', data) - self.assertEquals(response.status_code, 200) - self.assertFormError(response, 'form', field, self.required_error) - - def testInvalidUsername(self): - data = self.default_data.copy() - data['username'] = 'invalid user' - response = self.client.post('/register/', data) - self.assertEquals(response.status_code, 200) - self.assertFormError(response, 'form', 'username', self.invalid_error) - - def testExistingUsername(self): - user = create_user() - data = self.default_data.copy() - data['username'] = user.username - response = self.client.post('/register/', data) - self.assertEquals(response.status_code, 200) - self.assertFormError(response, 'form', 'username', - 'This username is already taken. Please choose another.') - - def testExistingEmail(self): - user = create_user() - data = self.default_data.copy() - data['email'] = user.email - response = self.client.post('/register/', data) - self.assertEquals(response.status_code, 200) - self.assertFormError(response, 'form', 'email', - 'This email address is already in use ' + \ - 'for the account "%s".\n' % user.username) - - def testValidRegistration(self): - response = self.client.post('/register/', self.default_data) - self.assertEquals(response.status_code, 200) - self.assertContains(response, 'confirmation email has been sent') - - # check for presence of an inactive user object - users = User.objects.filter(username = self.user.username) - self.assertEquals(users.count(), 1) - user = users[0] - self.assertEquals(user.username, self.user.username) - self.assertEquals(user.email, self.user.email) - self.assertEquals(user.is_active, False) - - # check for confirmation object - confs = EmailConfirmation.objects.filter(user = user, - type = 'registration') - self.assertEquals(len(confs), 1) - conf = confs[0] - self.assertEquals(conf.email, self.user.email) - - # check for a sent mail - self.assertEquals(len(mail.outbox), 1) - msg = mail.outbox[0] - self.assertEquals(msg.subject, 'Patchwork account confirmation') - self.assertTrue(self.user.email in msg.to) - self.assertTrue(_confirmation_url(conf) in msg.body) - - # ...and that the URL is valid - response = self.client.get(_confirmation_url(conf)) - self.assertEquals(response.status_code, 200) - -class RegistrationConfirmationTest(TestCase): - - def setUp(self): - self.user = TestUser() - self.default_data = {'username': self.user.username, - 'first_name': self.user.firstname, - 'last_name': self.user.lastname, - 'email': self.user.email, - 'password': self.user.password} - - def testRegistrationConfirmation(self): - self.assertEqual(EmailConfirmation.objects.count(), 0) - response = self.client.post('/register/', self.default_data) - self.assertEquals(response.status_code, 200) - self.assertContains(response, 'confirmation email has been sent') - - self.assertEqual(EmailConfirmation.objects.count(), 1) - conf = EmailConfirmation.objects.filter()[0] - self.assertFalse(conf.user.is_active) - self.assertTrue(conf.active) - - response = self.client.get(_confirmation_url(conf)) - self.assertEquals(response.status_code, 200) - self.assertTemplateUsed(response, 'patchwork/registration-confirm.html') - - conf = EmailConfirmation.objects.get(pk = conf.pk) - self.assertTrue(conf.user.is_active) - self.assertFalse(conf.active) - - def testRegistrationNewPersonSetup(self): - """ Check that the person object created after registration has the - correct details """ - - # register - self.assertEqual(EmailConfirmation.objects.count(), 0) - response = self.client.post('/register/', self.default_data) - self.assertEquals(response.status_code, 200) - self.assertFalse(Person.objects.exists()) - - # confirm - conf = EmailConfirmation.objects.filter()[0] - response = self.client.get(_confirmation_url(conf)) - self.assertEquals(response.status_code, 200) - - qs = Person.objects.filter(email = self.user.email) - self.assertTrue(qs.exists()) - person = Person.objects.get(email = self.user.email) - - self.assertEquals(person.name, - self.user.firstname + ' ' + self.user.lastname) - - def testRegistrationExistingPersonSetup(self): - """ Check that the person object created after registration has the - correct details """ - - fullname = self.user.firstname + ' ' + self.user.lastname - person = Person(name = fullname, email = self.user.email) - person.save() - - # register - self.assertEqual(EmailConfirmation.objects.count(), 0) - response = self.client.post('/register/', self.default_data) - self.assertEquals(response.status_code, 200) - - # confirm - conf = EmailConfirmation.objects.filter()[0] - response = self.client.get(_confirmation_url(conf)) - self.assertEquals(response.status_code, 200) - - person = Person.objects.get(email = self.user.email) - - self.assertEquals(person.name, fullname) - - def testRegistrationExistingPersonUnmodified(self): - """ Check that an unconfirmed registration can't modify an existing - Person object""" - - fullname = self.user.firstname + ' ' + self.user.lastname - person = Person(name = fullname, email = self.user.email) - person.save() - - # register - data = self.default_data.copy() - data['first_name'] = 'invalid' - data['last_name'] = 'invalid' - self.assertEquals(data['email'], person.email) - response = self.client.post('/register/', data) - self.assertEquals(response.status_code, 200) - - self.assertEquals(Person.objects.get(pk = person.pk).name, fullname)