mirror of
https://github.com/django/django.git
synced 2025-09-24 03:03:09 +00:00
Fixed #27801 -- Made createsuperuser fall back to environment variables for password and required fields.
This commit is contained in:
parent
4b32d039db
commit
a5308514fb
4 changed files with 90 additions and 7 deletions
|
@ -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'}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue