From 4cd9b4bb5081338176e66dae14115130d50831a9 Mon Sep 17 00:00:00 2001 From: Ramiro Morales Date: Sat, 10 Mar 2012 17:36:41 +0000 Subject: [PATCH] Fixed #17327 (again) -- Moved createsuperuser tests added in r17665. In their new location they won't cause multi-db-related errors when users run contrib.auh tests together with their application tests. Thanks brianriley for the patch. git-svn-id: http://code.djangoproject.com/svn/django/trunk@17676 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/contrib/auth/tests/__init__.py | 2 - django/contrib/auth/tests/management.py | 51 ----------------- .../createsuperuser/__init__.py | 0 .../regressiontests/createsuperuser/models.py | 0 .../regressiontests/createsuperuser/tests.py | 57 +++++++++++++++++++ 5 files changed, 57 insertions(+), 53 deletions(-) create mode 100644 tests/regressiontests/createsuperuser/__init__.py create mode 100644 tests/regressiontests/createsuperuser/models.py create mode 100644 tests/regressiontests/createsuperuser/tests.py diff --git a/django/contrib/auth/tests/__init__.py b/django/contrib/auth/tests/__init__.py index cd314f6050..cc619776a5 100644 --- a/django/contrib/auth/tests/__init__.py +++ b/django/contrib/auth/tests/__init__.py @@ -12,8 +12,6 @@ from django.contrib.auth.tests.remote_user import (RemoteUserTest, from django.contrib.auth.tests.management import ( GetDefaultUsernameTestCase, ChangepasswordManagementCommandTestCase, - MultiDBChangepasswordManagementCommandTestCase, - MultiDBCreatesuperuserTestCase, ) from django.contrib.auth.tests.models import (ProfileTestCase, NaturalKeysTestCase, LoadDataWithoutNaturalKeysTestCase, LoadDataWithNaturalKeysTestCase, diff --git a/django/contrib/auth/tests/management.py b/django/contrib/auth/tests/management.py index 2287ab91ad..3708cc8bd0 100644 --- a/django/contrib/auth/tests/management.py +++ b/django/contrib/auth/tests/management.py @@ -2,7 +2,6 @@ from StringIO import StringIO from django.contrib.auth import models, management from django.contrib.auth.management.commands import changepassword -from django.core.management import call_command from django.test import TestCase @@ -70,53 +69,3 @@ class ChangepasswordManagementCommandTestCase(TestCase): stdout=self.stdout, stderr=self.stderr ) - - -class MultiDBChangepasswordManagementCommandTestCase(TestCase): - multi_db = True - - def setUp(self): - self.user = models.User.objects.db_manager('other').create_user(username='joe', password='qwerty') - self.stdout = StringIO() - - def tearDown(self): - self.stdout.close() - - def test_that_changepassword_command_with_database_option_uses_given_db(self): - """ - Executing the changepassword management command with a database option - should operate on the specified DB - """ - self.assertTrue(self.user.check_password('qwerty')) - command = changepassword.Command() - command._get_pass = lambda *args: 'not qwerty' - - command.execute("joe", database='other', stdout=self.stdout) - command_output = self.stdout.getvalue().strip() - - self.assertEquals(command_output, "Changing password for user 'joe'\nPassword changed successfully for user 'joe'") - self.assertTrue(models.User.objects.using('other').get(username="joe").check_password("not qwerty")) - - -class MultiDBCreatesuperuserTestCase(TestCase): - multi_db = True - - def test_createsuperuser_command_with_database_option(self): - " createsuperuser command should operate on specified DB" - new_io = StringIO() - - call_command("createsuperuser", - interactive=False, - username="joe", - email="joe@somewhere.org", - database='other', - stdout=new_io - ) - command_output = new_io.getvalue().strip() - - self.assertEqual(command_output, 'Superuser created successfully.') - - u = models.User.objects.using('other').get(username="joe") - self.assertEqual(u.email, 'joe@somewhere.org') - - new_io.close() diff --git a/tests/regressiontests/createsuperuser/__init__.py b/tests/regressiontests/createsuperuser/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/createsuperuser/models.py b/tests/regressiontests/createsuperuser/models.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/regressiontests/createsuperuser/tests.py b/tests/regressiontests/createsuperuser/tests.py new file mode 100644 index 0000000000..4fdb5923ab --- /dev/null +++ b/tests/regressiontests/createsuperuser/tests.py @@ -0,0 +1,57 @@ +from StringIO import StringIO + +from django.contrib.auth import models +from django.contrib.auth.management.commands import changepassword +from django.core.management import call_command +from django.test import TestCase + + +class MultiDBChangepasswordManagementCommandTestCase(TestCase): + multi_db = True + + def setUp(self): + self.user = models.User.objects.db_manager('other').create_user(username='joe', password='qwerty') + self.stdout = StringIO() + + def tearDown(self): + self.stdout.close() + + def test_that_changepassword_command_with_database_option_uses_given_db(self): + """ + Executing the changepassword management command with a database option + should operate on the specified DB + """ + self.assertTrue(self.user.check_password('qwerty')) + command = changepassword.Command() + command._get_pass = lambda *args: 'not qwerty' + + command.execute("joe", database='other', stdout=self.stdout) + command_output = self.stdout.getvalue().strip() + + self.assertEquals(command_output, "Changing password for user 'joe'\nPassword changed successfully for user 'joe'") + self.assertTrue(models.User.objects.using('other').get(username="joe").check_password("not qwerty")) + + +class MultiDBCreatesuperuserTestCase(TestCase): + multi_db = True + + def test_createsuperuser_command_with_database_option(self): + " createsuperuser command should operate on specified DB" + new_io = StringIO() + + call_command("createsuperuser", + interactive=False, + username="joe", + email="joe@somewhere.org", + database='other', + stdout=new_io + ) + command_output = new_io.getvalue().strip() + + self.assertEqual(command_output, 'Superuser created successfully.') + + u = models.User.objects.using('other').get(username="joe") + self.assertEqual(u.email, 'joe@somewhere.org') + + new_io.close() +