diff options
| author | Hasan Ramezani <hasan.r67@gmail.com> | 2019-06-21 23:38:27 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-07-02 12:55:09 +0200 |
| commit | a5308514fb4bc5086c9a16a8a24a945eeebb073c (patch) | |
| tree | 0f0eb8295a6b3cecd605acd5e20337ccabffbce9 /tests/auth_tests/test_management.py | |
| parent | 4b32d039dbb59b3c3e76587df5c58150e752d9ac (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.py | 56 |
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'} |
