summaryrefslogtreecommitdiff
path: root/tests/regressiontests/multiple_database/tests.py
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2010-04-09 13:08:08 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2010-04-09 13:08:08 +0000
commit7b47609629692241848469fabc24fa798c0ac70b (patch)
tree6c5583612055f3f7ad1c3cffab0cc4b49e89ceb3 /tests/regressiontests/multiple_database/tests.py
parente9bbdb39de3047761fa8d03d5241eccd571093ff (diff)
Fixed #13308 -- Ensured that dumpdata correctly interacts with router allow_syncdb directions. Thanks to Francis (wizard_2) for the report.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12940 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/multiple_database/tests.py')
-rw-r--r--tests/regressiontests/multiple_database/tests.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/tests/regressiontests/multiple_database/tests.py b/tests/regressiontests/multiple_database/tests.py
index 28aa7c249d..0aac69401a 100644
--- a/tests/regressiontests/multiple_database/tests.py
+++ b/tests/regressiontests/multiple_database/tests.py
@@ -1,8 +1,11 @@
import datetime
import pickle
+import sys
+from StringIO import StringIO
from django.conf import settings
from django.contrib.auth.models import User
+from django.core import management
from django.db import connections, router, DEFAULT_DB_ALIAS
from django.db.utils import ConnectionRouter
from django.test import TestCase
@@ -1211,10 +1214,19 @@ class AuthTestCase(TestCase):
self.old_routers = router.routers
router.routers = [AuthRouter()]
+ # Redirect stdout to a buffer so we can test
+ # the output of a management command
+ self.old_stdout = sys.stdout
+ self.stdout = StringIO()
+ sys.stdout = self.stdout
+
def tearDown(self):
# Restore the 'other' database as an independent database
router.routers = self.old_routers
+ # Restore stdout
+ sys.stdout = self.old_stdout
+
def test_auth_manager(self):
"The methods on the auth manager obey database hints"
# Create one user using default allocation policy
@@ -1243,6 +1255,22 @@ class AuthTestCase(TestCase):
self.assertEquals(User.objects.using('default').count(), 1)
self.assertEquals(User.objects.using('other').count(), 1)
+ def test_dumpdata(self):
+ "Check that dumpdata honors allow_syncdb restrictions on the router"
+ User.objects.create_user('alice', 'alice@example.com')
+ User.objects.db_manager('default').create_user('bob', 'bob@example.com')
+
+ # Check that dumping the default database doesn't try to include auth
+ # because allow_syncdb prohibits auth on default
+ self.stdout.flush()
+ management.call_command('dumpdata', 'auth', format='json', database='default')
+ self.assertEquals(self.stdout.getvalue(), '[]\n')
+
+ # Check that dumping the other database does include auth
+ self.stdout.flush()
+ management.call_command('dumpdata', 'auth', format='json', database='other')
+ self.assertTrue('alice@example.com' in self.stdout.getvalue())
+
class UserProfileTestCase(TestCase):
def setUp(self):
self.old_auth_profile_module = getattr(settings, 'AUTH_PROFILE_MODULE', None)
@@ -1307,7 +1335,6 @@ class FixtureTestCase(TestCase):
except Book.DoesNotExist:
self.fail('"The Definitive Guide to Django" should exist on both databases')
-
class PickleQuerySetTestCase(TestCase):
multi_db = True