summaryrefslogtreecommitdiff
path: root/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py')
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py249
1 files changed, 0 insertions, 249 deletions
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py
deleted file mode 100644
index 91a7cab..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py
+++ /dev/null
@@ -1,249 +0,0 @@
-from __future__ import unicode_literals
-from datetime import date
-
-from django.contrib.auth import models, management
-from django.contrib.auth.management import create_permissions
-from django.contrib.auth.management.commands import changepassword
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.custom_user import CustomUser
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.contenttypes.models import ContentType
-from django.core.management import call_command
-from django.core.management.base import CommandError
-from django.core.management.validation import get_validation_errors
-from django.db.models.loading import get_app
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils import six
-from django.utils.six import StringIO
-
-
-@skipIfCustomUser
-class GetDefaultUsernameTestCase(TestCase):
-
- def setUp(self):
- self.old_get_system_username = management.get_system_username
-
- def tearDown(self):
- management.get_system_username = self.old_get_system_username
-
- def test_actual_implementation(self):
- self.assertIsInstance(management.get_system_username(), six.text_type)
-
- def test_simple(self):
- management.get_system_username = lambda: 'joe'
- self.assertEqual(management.get_default_username(), 'joe')
-
- def test_existing(self):
- models.User.objects.create(username='joe')
- management.get_system_username = lambda: 'joe'
- self.assertEqual(management.get_default_username(), '')
- self.assertEqual(
- management.get_default_username(check_db=False), 'joe')
-
- def test_i18n(self):
- # 'Julia' with accented 'u':
- management.get_system_username = lambda: 'J\xfalia'
- self.assertEqual(management.get_default_username(), 'julia')
-
-
-@skipIfCustomUser
-class ChangepasswordManagementCommandTestCase(TestCase):
-
- def setUp(self):
- self.user = models.User.objects.create_user(username='joe', password='qwerty')
- self.stdout = StringIO()
- self.stderr = StringIO()
-
- def tearDown(self):
- self.stdout.close()
- self.stderr.close()
-
- def test_that_changepassword_command_changes_joes_password(self):
- "Executing the changepassword management command should change joe's password"
- self.assertTrue(self.user.check_password('qwerty'))
- command = changepassword.Command()
- command._get_pass = lambda *args: 'not qwerty'
-
- command.execute("joe", stdout=self.stdout)
- command_output = self.stdout.getvalue().strip()
-
- self.assertEqual(command_output, "Changing password for user 'joe'\nPassword changed successfully for user 'joe'")
- self.assertTrue(models.User.objects.get(username="joe").check_password("not qwerty"))
-
- def test_that_max_tries_exits_1(self):
- """
- A CommandError should be thrown by handle() if the user enters in
- mismatched passwords three times.
- """
- command = changepassword.Command()
- command._get_pass = lambda *args: args or 'foo'
-
- with self.assertRaises(CommandError):
- command.execute("joe", stdout=self.stdout, stderr=self.stderr)
-
- def test_that_changepassword_command_works_with_nonascii_output(self):
- """
- #21627 -- Executing the changepassword management command should allow
- non-ASCII characters from the User object representation.
- """
- # 'Julia' with accented 'u':
- models.User.objects.create_user(username='J\xfalia', password='qwerty')
-
- command = changepassword.Command()
- command._get_pass = lambda *args: 'not qwerty'
-
- command.execute("J\xfalia", stdout=self.stdout)
-
-@skipIfCustomUser
-class CreatesuperuserManagementCommandTestCase(TestCase):
-
- def test_createsuperuser(self):
- "Check the operation of the createsuperuser management command"
- # We can use the management command to create a superuser
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe",
- email="joe@somewhere.org",
- stdout=new_io
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, 'Superuser created successfully.')
- u = User.objects.get(username="joe")
- self.assertEqual(u.email, 'joe@somewhere.org')
-
- # created password should be unusable
- self.assertFalse(u.has_usable_password())
-
- def test_verbosity_zero(self):
- # We can supress output on the management command
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe2",
- email="joe2@somewhere.org",
- verbosity=0,
- stdout=new_io
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, '')
- u = User.objects.get(username="joe2")
- self.assertEqual(u.email, 'joe2@somewhere.org')
- self.assertFalse(u.has_usable_password())
-
- def test_email_in_username(self):
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe+admin@somewhere.org",
- email="joe@somewhere.org",
- stdout=new_io
- )
- u = User._default_manager.get(username="joe+admin@somewhere.org")
- self.assertEqual(u.email, 'joe@somewhere.org')
- self.assertFalse(u.has_usable_password())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUser')
- def test_swappable_user(self):
- "A superuser can be created when a custom User model is in use"
- # We can use the management command to create a superuser
- # We skip validation because the temporary substitution of the
- # swappable User model messes with validation.
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- email="joe@somewhere.org",
- date_of_birth="1976-04-01",
- stdout=new_io,
- skip_validation=True
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, 'Superuser created successfully.')
- u = CustomUser._default_manager.get(email="joe@somewhere.org")
- self.assertEqual(u.date_of_birth, date(1976, 4, 1))
-
- # created password should be unusable
- self.assertFalse(u.has_usable_password())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUser')
- def test_swappable_user_missing_required_field(self):
- "A Custom superuser won't be created when a required field isn't provided"
- # We can use the management command to create a superuser
- # We skip validation because the temporary substitution of the
- # swappable User model messes with validation.
- new_io = StringIO()
- with self.assertRaises(CommandError):
- call_command("createsuperuser",
- interactive=False,
- username="joe@somewhere.org",
- stdout=new_io,
- stderr=new_io,
- skip_validation=True
- )
-
- self.assertEqual(CustomUser._default_manager.count(), 0)
-
-
-class CustomUserModelValidationTestCase(TestCase):
- @override_settings(AUTH_USER_MODEL='auth.CustomUserNonListRequiredFields')
- def test_required_fields_is_list(self):
- "REQUIRED_FIELDS should be a list."
- new_io = StringIO()
- get_validation_errors(new_io, get_app('auth'))
- self.assertIn("The REQUIRED_FIELDS must be a list or tuple.", new_io.getvalue())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUserBadRequiredFields')
- def test_username_not_in_required_fields(self):
- "USERNAME_FIELD should not appear in REQUIRED_FIELDS."
- new_io = StringIO()
- get_validation_errors(new_io, get_app('auth'))
- self.assertIn("The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.", new_io.getvalue())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUserNonUniqueUsername')
- def test_username_non_unique(self):
- "A non-unique USERNAME_FIELD should raise a model validation error."
- new_io = StringIO()
- get_validation_errors(new_io, get_app('auth'))
- self.assertIn("The USERNAME_FIELD must be unique. Add unique=True to the field parameters.", new_io.getvalue())
-
-
-class PermissionDuplicationTestCase(TestCase):
-
- def setUp(self):
- self._original_permissions = models.Permission._meta.permissions[:]
-
- def tearDown(self):
- models.Permission._meta.permissions = self._original_permissions
- ContentType.objects.clear_cache()
-
- def test_duplicated_permissions(self):
- """
- Test that we show proper error message if we are trying to create
- duplicate permissions.
- """
- # check duplicated default permission
- models.Permission._meta.permissions = [
- ('change_permission', 'Can edit permission (duplicate)')]
- six.assertRaisesRegex(self, CommandError,
- "The permission codename 'change_permission' clashes with a "
- "builtin permission for model 'auth.Permission'.",
- create_permissions, models, [], verbosity=0)
-
- # check duplicated custom permissions
- models.Permission._meta.permissions = [
- ('my_custom_permission', 'Some permission'),
- ('other_one', 'Some other permission'),
- ('my_custom_permission', 'Some permission with duplicate permission code'),
- ]
- six.assertRaisesRegex(self, CommandError,
- "The permission codename 'my_custom_permission' is duplicated for model "
- "'auth.Permission'.",
- create_permissions, models, [], verbosity=0)
-
- # should not raise anything
- models.Permission._meta.permissions = [
- ('my_custom_permission', 'Some permission'),
- ('other_one', 'Some other permission'),
- ]
- create_permissions(models, [], verbosity=0)