2010-12-13 06:59:28 +08:00
|
|
|
try:
|
|
|
|
from cStringIO import StringIO
|
|
|
|
except ImportError:
|
|
|
|
from StringIO import StringIO
|
|
|
|
|
|
|
|
from django.contrib.auth.management import create_permissions
|
|
|
|
from django.contrib.auth import models as auth_models
|
|
|
|
from django.contrib.contenttypes import models as contenttypes_models
|
|
|
|
from django.core.management import call_command
|
|
|
|
from django.test import TestCase
|
|
|
|
|
|
|
|
|
|
|
|
class TestAuthPermissions(TestCase):
|
2010-12-19 21:01:51 +08:00
|
|
|
def tearDown(self):
|
|
|
|
# These tests mess with content types, but content type lookups
|
|
|
|
# are cached, so we need to make sure the effects of this test
|
|
|
|
# are cleaned up.
|
|
|
|
contenttypes_models.ContentType.objects.clear_cache()
|
|
|
|
|
2010-12-13 06:59:28 +08:00
|
|
|
def test_permission_register_order(self):
|
|
|
|
"""Test that the order of registered permissions doesn't break"""
|
|
|
|
# Changeset 14413 introduced a regression in the ordering of
|
|
|
|
# newly created permissions for objects. When loading a fixture
|
|
|
|
# after the initial creation (such as during unit tests), the
|
|
|
|
# expected IDs for the permissions may not match up, leading to
|
|
|
|
# SQL errors. This is ticket 14731
|
|
|
|
|
|
|
|
# Start with a clean slate and build the permissions as we
|
|
|
|
# expect to see them in the fixtures.
|
|
|
|
auth_models.Permission.objects.all().delete()
|
|
|
|
contenttypes_models.ContentType.objects.all().delete()
|
|
|
|
create_permissions(auth_models, [], verbosity=0)
|
|
|
|
create_permissions(contenttypes_models, [], verbosity=0)
|
|
|
|
|
2011-06-14 18:45:49 +08:00
|
|
|
stdout = StringIO()
|
|
|
|
call_command('loaddata', 'permissionstestdata.json',
|
|
|
|
verbosity=1, commit=False, stdout=stdout)
|
|
|
|
self.assertNotEqual(stdout.getvalue(), 'No fixtures found.\n')
|