mirror of
https://github.com/ansible/awx.git
synced 2026-01-13 19:10:07 -03:30
refector old update_password tests
This commit is contained in:
parent
17484a18a0
commit
102b8a4f91
52
awx/main/tests/functional/commands/test_commands.py
Normal file
52
awx/main/tests/functional/commands/test_commands.py
Normal file
@ -0,0 +1,52 @@
|
||||
import sys
|
||||
import pytest
|
||||
|
||||
try:
|
||||
from cStringIO import StringIO
|
||||
except ImportError:
|
||||
from StringIO import StringIO
|
||||
|
||||
from django.core.management import call_command
|
||||
|
||||
from awx.main.management.commands.update_password import UpdatePassword
|
||||
|
||||
def run_command(name, *args, **options):
|
||||
command_runner = options.pop('command_runner', call_command)
|
||||
stdin_fileobj = options.pop('stdin_fileobj', None)
|
||||
options.setdefault('verbosity', 1)
|
||||
options.setdefault('interactive', False)
|
||||
original_stdin = sys.stdin
|
||||
original_stdout = sys.stdout
|
||||
original_stderr = sys.stderr
|
||||
if stdin_fileobj:
|
||||
sys.stdin = stdin_fileobj
|
||||
sys.stdout = StringIO()
|
||||
sys.stderr = StringIO()
|
||||
result = None
|
||||
try:
|
||||
result = command_runner(name, *args, **options)
|
||||
except Exception as e:
|
||||
result = e
|
||||
finally:
|
||||
captured_stdout = sys.stdout.getvalue()
|
||||
captured_stderr = sys.stderr.getvalue()
|
||||
sys.stdin = original_stdin
|
||||
sys.stdout = original_stdout
|
||||
sys.stderr = original_stderr
|
||||
return result, captured_stdout, captured_stderr
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"command,username,password,expected,changed", [
|
||||
('update_password', 'admin', 'dingleberry', 'Password updated\n', True),
|
||||
('update_password', 'admin', 'admin', 'Password not updated\n', False),
|
||||
('update_password', None, 'foo', 'username required', False),
|
||||
('update_password', 'admin', None, 'password required', False),
|
||||
]
|
||||
)
|
||||
def test_run_command(mocker, command, username, password, expected, changed):
|
||||
with mocker.patch.object(UpdatePassword, 'update_password', return_value=changed):
|
||||
result, stdout, stderr = run_command(command, username=username, password=password)
|
||||
if result is None:
|
||||
assert stdout == expected
|
||||
else:
|
||||
assert str(result) == expected
|
||||
@ -1,37 +0,0 @@
|
||||
# Copyright (c) 2015 Ansible, Inc.
|
||||
# All Rights Reserved
|
||||
|
||||
# AWX
|
||||
from awx.main.tests.base import BaseTest
|
||||
from command_base import BaseCommandMixin
|
||||
|
||||
# Django
|
||||
from django.core.management.base import CommandError
|
||||
|
||||
__all__ = ['UpdatePasswordCommandFunctionalTest']
|
||||
|
||||
class UpdatePasswordCommandFunctionalTest(BaseCommandMixin, BaseTest):
|
||||
def setUp(self):
|
||||
super(UpdatePasswordCommandFunctionalTest, self).setUp()
|
||||
self.create_test_license_file()
|
||||
self.setup_instances()
|
||||
self.setup_users()
|
||||
|
||||
def test_updated_ok(self):
|
||||
result, stdout, stderr = self.run_command('update_password', username='admin', password='dingleberry')
|
||||
self.assertEqual(stdout, 'Password updated\n')
|
||||
|
||||
def test_same_password(self):
|
||||
result, stdout, stderr = self.run_command('update_password', username='admin', password='admin')
|
||||
self.assertEqual(stdout, 'Password not updated\n')
|
||||
|
||||
def test_error_username_required(self):
|
||||
result, stdout, stderr = self.run_command('update_password', password='foo')
|
||||
self.assertIsInstance(result, CommandError)
|
||||
self.assertEqual(str(result), 'username required')
|
||||
|
||||
def test_error_password_required(self):
|
||||
result, stdout, stderr = self.run_command('update_password', username='admin')
|
||||
self.assertIsInstance(result, CommandError)
|
||||
self.assertEqual(str(result), 'password required')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user