From e0ff88be4f3a40d07d94d974c64a490d2ecb3e78 Mon Sep 17 00:00:00 2001 From: Hasan Ramezani Date: Thu, 17 May 2018 18:54:36 +0430 Subject: [PATCH] Added test for createsuperuser's handling of KeyboardInterrupt. --- tests/auth_tests/test_management.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/auth_tests/test_management.py b/tests/auth_tests/test_management.py index b0c5c6204b..b3772b1501 100644 --- a/tests/auth_tests/test_management.py +++ b/tests/auth_tests/test_management.py @@ -51,6 +51,8 @@ def mock_inputs(inputs): assert '__proxy__' not in prompt response = None for key, val in inputs.items(): + if val == 'KeyboardInterrupt': + raise KeyboardInterrupt # get() fallback because sometimes 'key' is the actual # prompt rather than a shortcut name. prompt_msgs = MOCK_INPUT_KEY_TO_PROMPTS.get(key, key) @@ -626,6 +628,19 @@ class CreatesuperuserManagementCommandTestCase(TestCase): test(self) + @mock_inputs({'username': 'KeyboardInterrupt'}) + def test_keyboard_interrupt(self): + new_io = StringIO() + with self.assertRaises(SystemExit): + call_command( + 'createsuperuser', + interactive=True, + stdin=MockTTY(), + stdout=new_io, + stderr=new_io, + ) + self.assertEqual(new_io.getvalue(), '\nOperation cancelled.\n') + def test_existing_username(self): """Creation fails if the username already exists.""" user = User.objects.create(username='janet')