summaryrefslogtreecommitdiff
path: root/tests/auth_tests/test_management.py
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2019-06-21 23:38:27 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2019-07-02 12:55:09 +0200
commita5308514fb4bc5086c9a16a8a24a945eeebb073c (patch)
tree0f0eb8295a6b3cecd605acd5e20337ccabffbce9 /tests/auth_tests/test_management.py
parent4b32d039dbb59b3c3e76587df5c58150e752d9ac (diff)
Fixed #27801 -- Made createsuperuser fall back to environment variables for password and required fields.
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'}