summaryrefslogtreecommitdiff
path: root/tests/auth_tests/test_management.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auth_tests/test_management.py')
-rw-r--r--tests/auth_tests/test_management.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/auth_tests/test_management.py b/tests/auth_tests/test_management.py
index d0a91f3261..bf9b063102 100644
--- a/tests/auth_tests/test_management.py
+++ b/tests/auth_tests/test_management.py
@@ -1,5 +1,6 @@
import builtins
import getpass
+import os
import sys
from datetime import date
from io import StringIO
@@ -905,6 +906,61 @@ class CreatesuperuserManagementCommandTestCase(TestCase):
test(self)
+ @mock.patch.dict(os.environ, {
+ 'DJANGO_SUPERUSER_PASSWORD': 'test_password',
+ 'DJANGO_SUPERUSER_USERNAME': 'test_superuser',
+ 'DJANGO_SUPERUSER_EMAIL': 'joe@somewhere.org',
+ 'DJANGO_SUPERUSER_FIRST_NAME': 'ignored_first_name',
+ })
+ def test_environment_variable_non_interactive(self):
+ call_command('createsuperuser', interactive=False, stdout=StringIO())
+ user = User.objects.get(username='test_superuser')
+ self.assertEqual(user.email, 'joe@somewhere.org')
+ self.assertTrue(user.check_password('test_password'))
+ # Environment variables are ignored for non-required fields.
+ self.assertEqual(user.first_name, '')
+
+ @mock.patch.dict(os.environ, {
+ 'DJANGO_SUPERUSER_USERNAME': 'test_superuser',
+ 'DJANGO_SUPERUSER_EMAIL': 'joe@somewhere.org',
+ })
+ def test_ignore_environment_variable_non_interactive(self):
+ # Environment variables are ignored in non-interactive mode, if
+ # provided by a command line arguments.
+ call_command(
+ 'createsuperuser',
+ interactive=False,
+ username='cmd_superuser',
+ email='cmd@somewhere.org',
+ stdout=StringIO(),
+ )
+ user = User.objects.get(username='cmd_superuser')
+ self.assertEqual(user.email, 'cmd@somewhere.org')
+ self.assertFalse(user.has_usable_password())
+
+ @mock.patch.dict(os.environ, {
+ 'DJANGO_SUPERUSER_PASSWORD': 'test_password',
+ 'DJANGO_SUPERUSER_USERNAME': 'test_superuser',
+ 'DJANGO_SUPERUSER_EMAIL': 'joe@somewhere.org',
+ })
+ def test_ignore_environment_variable_interactive(self):
+ # Environment variables are ignored in interactive mode.
+ @mock_inputs({'password': 'cmd_password'})
+ def test(self):
+ call_command(
+ 'createsuperuser',
+ interactive=True,
+ username='cmd_superuser',
+ email='cmd@somewhere.org',
+ stdin=MockTTY(),
+ stdout=StringIO(),
+ )
+ user = User.objects.get(username='cmd_superuser')
+ self.assertEqual(user.email, 'cmd@somewhere.org')
+ self.assertTrue(user.check_password('cmd_password'))
+
+ test(self)
+
class MultiDBCreatesuperuserTestCase(TestCase):
databases = {'default', 'other'}