| 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): |
| 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() |
| |
| 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) |
| |
| stderr = StringIO() |
| call_command('loaddata', 'test_permissions.json', |
| verbosity=0, commit=False, stderr=stderr) |
| self.assertEqual(stderr.getvalue(), '') |