1
0
mirror of https://github.com/ansible/awx.git synced 2024-11-02 09:51:09 +03:00

refactor old remove_instance tests

This commit is contained in:
Wayne Witzel III 2016-05-10 11:42:54 -04:00
parent 102b8a4f91
commit 2c0c8591df
2 changed files with 30 additions and 46 deletions

View File

@ -8,7 +8,10 @@ except ImportError:
from django.core.management import call_command from django.core.management import call_command
from awx.main.models import Instance
from awx.main.management.commands.update_password import UpdatePassword from awx.main.management.commands.update_password import UpdatePassword
from awx.main.management.commands.remove_instance import Command as RemoveInstance
def run_command(name, *args, **options): def run_command(name, *args, **options):
command_runner = options.pop('command_runner', call_command) command_runner = options.pop('command_runner', call_command)
@ -35,18 +38,38 @@ def run_command(name, *args, **options):
sys.stderr = original_stderr sys.stderr = original_stderr
return result, captured_stdout, captured_stderr return result, captured_stdout, captured_stderr
@pytest.mark.parametrize( @pytest.mark.parametrize(
"command,username,password,expected,changed", [ "username,password,expected,changed", [
('update_password', 'admin', 'dingleberry', 'Password updated\n', True), ('admin', 'dingleberry', 'Password updated\n', True),
('update_password', 'admin', 'admin', 'Password not updated\n', False), ('admin', 'admin', 'Password not updated\n', False),
('update_password', None, 'foo', 'username required', False), (None, 'foo', 'username required', False),
('update_password', 'admin', None, 'password required', False), ('admin', None, 'password required', False),
] ]
) )
def test_run_command(mocker, command, username, password, expected, changed): def test_update_password_command(mocker, username, password, expected, changed):
with mocker.patch.object(UpdatePassword, 'update_password', return_value=changed): with mocker.patch.object(UpdatePassword, 'update_password', return_value=changed):
result, stdout, stderr = run_command(command, username=username, password=password) result, stdout, stderr = run_command('update_password', username=username, password=password)
if result is None: if result is None:
assert stdout == expected assert stdout == expected
else: else:
assert str(result) == expected assert str(result) == expected
@pytest.mark.parametrize(
"primary,hostname,startswith,exception", [
(True, "127.0.0.1", "Cannot remove primary", None),
(False, "127.0.0.2", "Successfully removed", None),
(False, "127.0.0.3", "No matching instance", Instance.DoesNotExist),
]
)
def test_remove_instance_command(mocker, primary, hostname, startswith, exception):
mock_instance = mocker.MagicMock(primary=primary, enforce_unique_find=True)
with mocker.patch.object(Instance.objects, 'get', return_value=mock_instance, side_effect=exception):
with mocker.patch.object(RemoveInstance, 'include_option_hostname_uuid_find'):
with mocker.patch.object(RemoveInstance, 'get_unique_fields', return_value={'hostname':hostname, 'uuid':1}):
result, stdout, stderr = run_command("remove_instance", hostname=hostname)
if result is None:
assert stdout.startswith(startswith)
else:
assert str(result).startswith(startswith)

View File

@ -1,39 +0,0 @@
# Copyright (c) 2015 Ansible, Inc.
# All Rights Reserved
# Python
import uuid
# AWX
from awx.main.tests.base import BaseTest
from command_base import BaseCommandMixin
from awx.main.models import * # noqa
__all__ = ['RemoveInstanceCommandFunctionalTest']
class RemoveInstanceCommandFunctionalTest(BaseCommandMixin, BaseTest):
uuids = []
instances = []
def setup_instances(self):
self.uuids = [uuid.uuid4().hex for x in range(0, 3)]
self.instances.append(Instance(uuid=settings.SYSTEM_UUID, primary=True, hostname='127.0.0.1'))
self.instances.append(Instance(uuid=self.uuids[0], primary=False, hostname='127.0.0.2'))
self.instances.append(Instance(uuid=self.uuids[1], primary=False, hostname='127.0.0.3'))
self.instances.append(Instance(uuid=self.uuids[2], primary=False, hostname='127.0.0.4'))
for x in self.instances:
x.save()
def setUp(self):
super(RemoveInstanceCommandFunctionalTest, self).setUp()
self.create_test_license_file()
self.setup_instances()
self.setup_users()
def test_default(self):
self.assertEqual(Instance.objects.filter(hostname="127.0.0.2").count(), 1)
result, stdout, stderr = self.run_command('remove_instance', hostname='127.0.0.2')
self.assertIsNone(result)
self.assertEqual(stdout, 'Successfully removed instance (uuid="%s",hostname="127.0.0.2",role="secondary").\n' % (self.uuids[0]))
self.assertEqual(Instance.objects.filter(hostname="127.0.0.2").count(), 0)