Exemple #1
0
    def test_case_insensitive_enum_choices(self):
        from enum import Enum

        class TestEnum(Enum):  # pylint: disable=too-few-public-methods

            opt1 = "ALL_CAPS"
            opt2 = "camelCase"
            opt3 = "snake_case"

        def test_handler():
            pass

        cli = TestCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('opt', '--opt', required=True, **enum_choice_list(TestEnum))
        cmd_table = {'test command': command}
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)

        args = parser.parse_args('test command --opt alL_cAps'.split())
        self.assertEqual(args.opt, 'ALL_CAPS')

        args = parser.parse_args('test command --opt CAMELCASE'.split())
        self.assertEqual(args.opt, 'camelCase')

        args = parser.parse_args('test command --opt sNake_CASE'.split())
        self.assertEqual(args.opt, 'snake_case')
Exemple #2
0
    def test_register_simple_commands(self):
        def test_handler1():
            pass

        def test_handler2():
            pass

        cli = DummyCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'command the-name', test_handler1)
        command2 = AzCliCommand(cli.loader, 'sub-command the-second-name',
                                test_handler2)
        cmd_table = {
            'command the-name': command,
            'sub-command the-second-name': command2
        }
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)
        args = parser.parse_args('command the-name'.split())
        self.assertIs(args.func, command)

        args = parser.parse_args('sub-command the-second-name'.split())
        self.assertIs(args.func, command2)

        AzCliCommandParser.error = VerifyError(self, )
        parser.parse_args('sub-command'.split())
        self.assertTrue(AzCliCommandParser.error.called)
def _get_test_cmd():
    cli_ctx = DummyCli()
    loader = AzCommandsLoader(cli_ctx, resource_type=ResourceType.MGMT_COMPUTE)
    cmd = AzCliCommand(loader, 'test', None)
    cmd.command_kwargs = {'resource_type': ResourceType.MGMT_COMPUTE, 'operation_group': 'virtual_machines'}
    cmd.cli_ctx = cli_ctx
    return cmd
Exemple #4
0
    def test_case_insensitive_enum_choices(self):
        from enum import Enum

        class TestEnum(Enum):  # pylint: disable=too-few-public-methods

            opt1 = "ALL_CAPS"
            opt2 = "camelCase"
            opt3 = "snake_case"

        def test_handler():
            pass

        cli = DummyCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('opt',
                             '--opt',
                             required=True,
                             **enum_choice_list(TestEnum))
        cmd_table = {'test command': command}
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)

        args = parser.parse_args('test command --opt alL_cAps'.split())
        self.assertEqual(args.opt, 'ALL_CAPS')

        args = parser.parse_args('test command --opt CAMELCASE'.split())
        self.assertEqual(args.opt, 'camelCase')

        args = parser.parse_args('test command --opt sNake_CASE'.split())
        self.assertEqual(args.opt, 'snake_case')
Exemple #5
0
def _get_test_cmd():
    cli_ctx = DummyCli()
    cli_ctx.data['subscription_id'] = '00000000-0000-0000-0000-000000000000'
    loader = AzCommandsLoader(cli_ctx, resource_type='Microsoft.AppPlatform')
    cmd = AzCliCommand(loader, 'test', None)
    cmd.command_kwargs = {'resource_type': 'Microsoft.AppPlatform'}
    cmd.cli_ctx = cli_ctx
    return cmd
Exemple #6
0
 def load_command_table(self, args):
     super(ExtCommandsLoader, self).load_command_table(args)
     command = AzCliCommand(loader, 'test extension', test_handler)
     command.add_argument('opt',
                          '--opt',
                          required=True,
                          **enum_choice_list(TestEnum))
     self.command_table['test extension'] = command
     return self.command_table
def _get_test_cmd():
    from azure.cli.testsdk import TestCli
    from azure.cli.core import AzCommandsLoader
    from azure.cli.core.commands import AzCliCommand
    cli_ctx = TestCli()
    loader = AzCommandsLoader(cli_ctx, resource_type=ResourceType.MGMT_COMPUTE)
    cmd = AzCliCommand(loader, 'test', None)
    cmd.command_kwargs = {'resource_type': ResourceType.MGMT_COMPUTE}
    cmd.cli_ctx = cli_ctx
    return cmd
def _get_test_cmd():
    from azure.cli.core.mock import DummyCli
    from azure.cli.core import AzCommandsLoader
    from azure.cli.core.commands import AzCliCommand
    cli_ctx = DummyCli()
    loader = AzCommandsLoader(cli_ctx, resource_type=ResourceType.MGMT_APPSERVICE)
    cmd = AzCliCommand(loader, 'test', None)
    cmd.command_kwargs = {'resource_type': ResourceType.MGMT_APPSERVICE}
    cmd.cli_ctx = cli_ctx
    return cmd
Exemple #9
0
def _get_test_cmd():
    from azure.cli.testsdk import TestCli
    from azure.cli.core import AzCommandsLoader
    from azure.cli.core.commands import AzCliCommand
    cli_ctx = TestCli()
    loader = AzCommandsLoader(cli_ctx, resource_type=ResourceType.MGMT_COMPUTE)
    cmd = AzCliCommand(loader, 'test', None)
    cmd.command_kwargs = {'resource_type': ResourceType.MGMT_COMPUTE}
    cmd.cli_ctx = cli_ctx
    return cmd
 def _get_test_cmd():
     from azure.cli.core.mock import DummyCli
     from azure.cli.core import AzCommandsLoader
     from azure.cli.core.commands import AzCliCommand
     from azure.cli.core.profiles import ResourceType
     cli_ctx = DummyCli()
     loader = AzCommandsLoader(cli_ctx, resource_type=ResourceType.MGMT_COMPUTE)
     cmd = AzCliCommand(loader, 'test', None)
     cmd.command_kwargs = {'resource_type': ResourceType.MGMT_COMPUTE}
     cmd.cli_ctx = cli_ctx
     return cmd
def fixture_cmd(mocker):
    cli = DummyCli()
    cli.loader = mocker.MagicMock()
    cli.loader.cli_ctx = cli

    def test_handler1():
        pass

    return AzCliCommand(cli.loader, "iot-extension command", test_handler1)
Exemple #12
0
    def test_nargs_parameter(self):
        def test_handler():
            pass

        cli = TestCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('req', '--req', required=True, nargs=2)
        cmd_table = {'test command': command}

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cmd_table)

        args = parser.parse_args('test command --req yep nope'.split())
        self.assertIs(args.func, command)

        AzCliCommandParser.error = VerifyError(self)
        parser.parse_args('test command -req yep'.split())
        self.assertTrue(AzCliCommandParser.error.called)
Exemple #13
0
    def test_required_parameter(self):
        def test_handler(args):  # pylint: disable=unused-argument
            pass

        cli = DummyCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('req', '--req', required=True)
        cmd_table = {'test command': command}
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)

        args = parser.parse_args('test command --req yep'.split())
        self.assertIs(args.func, command)

        AzCliCommandParser.error = VerifyError(self)
        parser.parse_args('test command'.split())
        self.assertTrue(AzCliCommandParser.error.called)
Exemple #14
0
    def test_required_parameter(self):
        def test_handler(args):  # pylint: disable=unused-argument
            pass

        cli = DummyCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('req', '--req', required=True)
        cmd_table = {'test command': command}
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)

        args = parser.parse_args('test command --req yep'.split())
        self.assertIs(args.func, command)

        AzCliCommandParser.error = VerifyError(self)
        parser.parse_args('test command'.split())
        self.assertTrue(AzCliCommandParser.error.called)
Exemple #15
0
    def test_nargs_parameter(self):
        def test_handler():
            pass

        cli = TestCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('req', '--req', required=True, nargs=2)
        cmd_table = {'test command': command}
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)

        args = parser.parse_args('test command --req yep nope'.split())
        self.assertIs(args.func, command)

        AzCliCommandParser.error = VerifyError(self)
        parser.parse_args('test command -req yep'.split())
        self.assertTrue(AzCliCommandParser.error.called)
Exemple #16
0
    def test_nargs_parameter(self):
        def test_handler():
            pass

        cli = DummyCli()
        cli.loader = mock.MagicMock()
        cli.loader.cli_ctx = cli

        command = AzCliCommand(cli.loader, 'test command', test_handler)
        command.add_argument('req', '--req', required=True, nargs=2)
        cmd_table = {'test command': command}
        cli.commands_loader.command_table = cmd_table

        parser = AzCliCommandParser(cli)
        parser.load_command_table(cli.commands_loader)

        args = parser.parse_args('test command --req yep nope'.split())
        self.assertIs(args.func, command)

        with mock.patch('azure.cli.core.parser.AzCliCommandParser.error', new=VerifyError(self)):
            parser.parse_args('test command -req yep'.split())
            self.assertTrue(AzCliCommandParser.error.called)
Exemple #17
0
class MockCmd:
    def __init__(self, cli_ctx):
        self.cli_ctx = cli_ctx
        self.cmd = AzCliCommand(AzCommandsLoader(cli_ctx), "mock-cmd", None)

    def supported_api_version(
        self,
        resource_type=None,
        min_api=None,
        max_api=None,
        operation_group=None,
        parameter_name=None,
    ):
        return self.cmd.supported_api_version(
            resource_type=resource_type,
            min_api=min_api,
            max_api=max_api,
            operation_group=operation_group,
            parameter_name=parameter_name,
        )

    def get_models(self, *attr_args, **kwargs):
        return self.cmd.get_models(*attr_args, **kwargs)
Exemple #18
0
    def test_what_if_exclude_change_types(self, long_running_operation_stub):
        # Arrange.
        from azure.cli.core.mock import DummyCli
        from azure.cli.core import AzCommandsLoader
        from azure.cli.core.commands import AzCliCommand
        from azure.cli.core.profiles._shared import ResourceType

        cli_ctx = DummyCli()
        loader = AzCommandsLoader(
            cli_ctx, resource_type=ResourceType.MGMT_RESOURCE_RESOURCES)
        cmd = AzCliCommand(loader, 'test', None)
        cmd.command_kwargs = {
            'resource_type': ResourceType.MGMT_RESOURCE_RESOURCES
        }
        cmd.cli_ctx = cli_ctx

        WhatIfOperationResult, WhatIfChange, ChangeType = cmd.get_models(
            'WhatIfOperationResult', 'WhatIfChange', 'ChangeType')

        long_running_operation_stub.return_value = WhatIfOperationResult(
            changes=[
                WhatIfChange(resource_id='resource0',
                             change_type=ChangeType.create),
                WhatIfChange(resource_id='resource1',
                             change_type=ChangeType.modify),
                WhatIfChange(resource_id='resource2',
                             change_type=ChangeType.ignore),
            ])

        # Act.
        result = _what_if_deploy_arm_template_core(cmd.cli_ctx,
                                                   mock.MagicMock(), True,
                                                   ["create", "igNoRE"])

        # Assert.
        self.assertEqual(1, len(result.changes))
        self.assertEqual(ChangeType.modify, result.changes[0].change_type)
Exemple #19
0
 def create_invoker_and_load_cmds_and_args(cli):
     cli.invocation = mock.MagicMock()
     cli.invocation.commands_loader = mock.MagicMock()
     cli.invocation.commands_loader.command_table = self.cmd_table = {}
     for cmd in [
             'foo command_1', 'foo command_2', 'bar command_1',
             'bar command_2', 'foobar'
     ]:
         self.cmd_table[cmd] = AzCliCommand(
             cli.invocation.commands_loader, cmd, lambda: None)
     for cmd in ['bar command_1', 'bar command_2']:
         self.cmd_table[cmd].command_source = ExtensionCommandSource(
             extension_name='bar')
         self.cmd_table[cmd].command_source.extension_name = 'bar'
     for cmd in ['foo command_1', 'foo command_2']:
         self.cmd_table[cmd].command_source = mock.MagicMock()
         self.cmd_table[cmd].command_source = 'foo'
Exemple #20
0
 def load_command_table(self, args):
     super(TestCommandsLoader, self).load_command_table(args)
     self.command_table = {'test': AzCliCommand(self, 'test', _handler)}
     return self.command_table
Exemple #21
0
# --------------------------------------------------------------------------------------------

import unittest

from azure.cli.core.profiles import ResourceType
from azure.cli.core.mock import DummyCli
from azure.cli.core import AzCommandsLoader
from azure.cli.core.commands import AzCliCommand

from azure.cli.command_modules.resource._color import Color, ColoredStringBuilder
from azure.cli.command_modules.resource._formatters import format_json, format_what_if_operation_result


cli_ctx = DummyCli()
loader = AzCommandsLoader(cli_ctx, resource_type=ResourceType.MGMT_RESOURCE_RESOURCES)
cmd = AzCliCommand(loader, "test", None, resource_type=ResourceType.MGMT_RESOURCE_RESOURCES)

WhatIfOperationResult, WhatIfChange, WhatIfPropertyChange, ChangeType, PropertyChangeType = cmd.get_models(
    "WhatIfOperationResult", "WhatIfChange", "WhatIfPropertyChange", "ChangeType", "PropertyChangeType",
)


class TestFormatJson(unittest.TestCase):
    _colon = ColoredStringBuilder().append(":", Color.RESET).build()
    _left_square_bracket = ColoredStringBuilder().append("[", Color.RESET).build()
    _right_square_bracket = ColoredStringBuilder().append("]", Color.RESET).build()

    def test_leaf(self):
        test_data = (
            ("null", None),
            ("true", True),
    _what_if_deploy_arm_template_core,
    deploy_arm_template_at_resource_group,
    deploy_arm_template_at_subscription_scope,
    deploy_arm_template_at_management_group,
    deploy_arm_template_at_tenant_scope,
)

from azure.cli.core.mock import DummyCli
from azure.cli.core import AzCommandsLoader
from azure.cli.core.commands import AzCliCommand
from azure.cli.core.profiles._shared import ResourceType

cli_ctx = DummyCli()
loader = AzCommandsLoader(cli_ctx,
                          resource_type=ResourceType.MGMT_RESOURCE_RESOURCES)
cmd = AzCliCommand(loader, 'test', None)
cmd.command_kwargs = {'resource_type': ResourceType.MGMT_RESOURCE_RESOURCES}
cmd.cli_ctx = cli_ctx

WhatIfOperationResult, WhatIfChange, ChangeType = cmd.get_models(
    'WhatIfOperationResult', 'WhatIfChange', 'ChangeType')


def _simulate_no_tty():
    from knack.prompting import NoTTYException
    raise NoTTYException


@mock.patch('knack.prompting.verify_is_a_tty', _simulate_no_tty)
class TestCustom(unittest.TestCase):
    def test_file_string_or_uri(self):
Exemple #23
0
 def load_command_table(self, args):
     super(ExtCommandsLoader, self).load_command_table(args)
     command = AzCliCommand(loader, 'test extension', test_handler)
     command.add_argument('opt', '--opt', required=True, **enum_choice_list(TestEnum))
     self.command_table['test extension'] = command
     return self.command_table
Exemple #24
0
 def __init__(self, cli_ctx):
     self.cli_ctx = cli_ctx
     self.cmd = AzCliCommand(AzCommandsLoader(cli_ctx), "mock-cmd", None)