def test_parse_args_in_yunohost_format_domain_two_domains():
    main_domain = "my_main_domain.com"
    other_domain = "some_other_domain.tld"
    domains = [main_domain, other_domain]

    questions = [
        {
            "name": "some_domain",
            "type": "domain",
        }
    ]
    answers = {"some_domain": other_domain}
    expected_result = OrderedDict({"some_domain": (other_domain, "domain")})

    with patch.object(
        domain, "_get_maindomain", return_value=main_domain
    ), patch.object(domain, "domain_list", return_value={"domains": domains}):
        assert _parse_args_in_yunohost_format(answers, questions) == expected_result

    answers = {"some_domain": main_domain}
    expected_result = OrderedDict({"some_domain": (main_domain, "domain")})

    with patch.object(
        domain, "_get_maindomain", return_value=main_domain
    ), patch.object(domain, "domain_list", return_value={"domains": domains}):
        assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_user_two_users_no_default():
    username = "******"
    other_user = "******"
    users = {
        username: {
            "ssh_allowed": False,
            "username": "******",
            "mailbox-quota": "0",
            "mail": "*****@*****.**",
            "fullname": "the first name the last name",
        },
        other_user: {
            "ssh_allowed": False,
            "username": "******",
            "mailbox-quota": "0",
            "mail": "*****@*****.**",
            "fullname": "john doe",
        },
    }

    questions = [{"name": "some_user", "type": "user", "ask": "choose a user"}]
    answers = {}

    with patch.object(user, "user_list", return_value={"users": users}):
        with pytest.raises(YunohostError):
            _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_display_text():
    questions = [{"name": "some_app", "type": "display_text", "ask": "foobar"}]
    answers = {}

    with patch.object(sys, "stdout", new_callable=StringIO) as stdout:
        _parse_args_in_yunohost_format(answers, questions)
        assert "foobar" in stdout.getvalue()
示例#4
0
def test_parse_args_in_yunohost_format_user_two_users_wrong_answer():
    username = "******"
    other_user = "******"
    users = {
        username: {
            "ssh_allowed": False,
            "username": "******",
            "shell": "/bin/false",
            "mailbox-quota": "0",
            "mail": "*****@*****.**",
            "fullname": "the first name the last name",
        },
        other_user: {
            "ssh_allowed": False,
            "username": "******",
            "shell": "/bin/false",
            "mailbox-quota": "0",
            "mail": "*****@*****.**",
            "fullname": "john doe",
        },
    }

    questions = [
        {
            "name": "some_user",
            "type": "user",
        }
    ]
    answers = {"some_user": "******"}

    with patch.object(user, "user_list", return_value={"users": users}):
        with pytest.raises(YunohostError):
            _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_string_no_input():
    questions = [
        {
            "name": "some_string",
        }
    ]
    answers = {}

    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_password_no_input():
    questions = [
        {
            "name": "some_password",
            "type": "password",
        }
    ]
    answers = {}

    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_boolean_bad_input():
    questions = [
        {
            "name": "some_boolean",
            "type": "boolean",
        }
    ]
    answers = {"some_boolean": "stuff"}

    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_number_bad_default():
    questions = [
        {
            "name": "some_number",
            "ask": "some question",
            "type": "number",
            "default": "bad default",
        }
    ]
    answers = {}
    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_password_bad_chars():
    questions = [
        {
            "name": "some_password",
            "type": "password",
            "ask": "some question",
            "example": "some_value",
        }
    ]

    for i in PasswordArgumentParser.forbidden_chars:
        with pytest.raises(YunohostError):
            _parse_args_in_yunohost_format({"some_password": i * 8}, questions)
def test_parse_args_in_yunohost_format_string_input_test_ask():
    ask_text = "some question"
    questions = [
        {
            "name": "some_string",
            "ask": ask_text,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="some_value") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        prompt.assert_called_with(ask_text, False)
def test_parse_args_in_yunohost_format_password_no_input_example():
    questions = [
        {
            "name": "some_password",
            "type": "password",
            "ask": "some question",
            "example": "some_value",
        }
    ]
    answers = {"some_password": "******"}

    # no example for password!
    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_number_input_test_ask():
    ask_text = "some question"
    questions = [
        {
            "name": "some_number",
            "type": "number",
            "ask": ask_text,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="1111") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        prompt.assert_called_with("%s (default: 0)" % (ask_text), False)
def test_parse_args_in_yunohost_format_password_no_input_default():
    questions = [
        {
            "name": "some_password",
            "type": "password",
            "ask": "some question",
            "default": "some_value",
        }
    ]
    answers = {}

    # no default for password!
    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_boolean_input_test_ask():
    ask_text = "some question"
    questions = [
        {
            "name": "some_boolean",
            "type": "boolean",
            "ask": ask_text,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value=0) as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        prompt.assert_called_with(ask_text + " [yes | no] (default: no)", False)
def test_parse_args_in_yunohost_format_number_bad_input():
    questions = [
        {
            "name": "some_number",
            "type": "number",
        }
    ]
    answers = {"some_number": "stuff"}

    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)

    answers = {"some_number": 1.5}
    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_string_input_test_ask_with_default():
    ask_text = "some question"
    default_text = "some example"
    questions = [
        {
            "name": "some_string",
            "ask": ask_text,
            "default": default_text,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="some_value") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        prompt.assert_called_with("%s (default: %s)" % (ask_text, default_text), False)
def test_parse_args_in_yunohost_format_user():
    username = "******"
    users = {
        username: {
            "ssh_allowed": False,
            "username": "******",
            "mailbox-quota": "0",
            "mail": "*****@*****.**",
            "fullname": "the first name the last name",
        }
    }

    questions = [
        {
            "name": "some_user",
            "type": "user",
        }
    ]
    answers = {"some_user": username}

    expected_result = OrderedDict({"some_user": (username, "user")})

    with patch.object(user, "user_list", return_value={"users": users}):
        with patch.object(user, "user_info", return_value={}):
            assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_string_input_test_ask_with_help():
    ask_text = "some question"
    help_text = "some_help"
    questions = [
        {
            "name": "some_string",
            "ask": ask_text,
            "help": help_text,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="some_value") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        assert ask_text in prompt.call_args[0][0]
        assert help_text in prompt.call_args[0][0]
def test_parse_args_in_yunohost_format_password_optional_strong_enough():
    questions = [
        {
            "name": "some_password",
            "ask": "some question",
            "type": "password",
            "optional": True,
        }
    ]

    with pytest.raises(YunohostError):
        # too short
        _parse_args_in_yunohost_format({"some_password": "******"}, questions)

    with pytest.raises(YunohostError):
        _parse_args_in_yunohost_format({"some_password": "******"}, questions)
def test_parse_args_in_yunohost_format_boolean_input():
    questions = [
        {
            "name": "some_boolean",
            "type": "boolean",
            "ask": "some question",
        }
    ]
    answers = {}

    expected_result = OrderedDict({"some_boolean": (1, "boolean")})
    with patch.object(msignals, "prompt", return_value="y"):
        assert _parse_args_in_yunohost_format(answers, questions) == expected_result

    expected_result = OrderedDict({"some_boolean": (0, "boolean")})
    with patch.object(msignals, "prompt", return_value="n"):
        assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_path_input_test_ask_with_example():
    ask_text = "some question"
    example_text = "some example"
    questions = [
        {
            "name": "some_path",
            "type": "path",
            "ask": ask_text,
            "example": example_text,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="some_value") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        assert ask_text in prompt.call_args[0][0]
        assert example_text in prompt.call_args[0][0]
def test_parse_args_in_yunohost_format_number_input_test_ask_with_help():
    ask_text = "some question"
    help_value = 1337
    questions = [
        {
            "name": "some_number",
            "type": "number",
            "ask": ask_text,
            "help": help_value,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="1111") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        assert ask_text in prompt.call_args[0][0]
        assert help_value in prompt.call_args[0][0]
def test_parse_args_in_yunohost_format_domain_two_domains_wrong_answer():
    main_domain = "my_main_domain.com"
    other_domain = "some_other_domain.tld"
    domains = [main_domain, other_domain]

    questions = [
        {
            "name": "some_domain",
            "type": "domain",
        }
    ]
    answers = {"some_domain": "doesnt_exist.pouet"}

    with patch.object(
        domain, "_get_maindomain", return_value=main_domain
    ), patch.object(domain, "domain_list", return_value={"domains": domains}):
        with pytest.raises(YunohostError):
            _parse_args_in_yunohost_format(answers, questions)
def test_parse_args_in_yunohost_format_domain_two_domains_default_input():
    main_domain = "my_main_domain.com"
    other_domain = "some_other_domain.tld"
    domains = [main_domain, other_domain]

    questions = [{"name": "some_domain", "type": "domain", "ask": "choose a domain"}]
    answers = {}

    with patch.object(
        domain, "_get_maindomain", return_value=main_domain
    ), patch.object(domain, "domain_list", return_value={"domains": domains}):
        expected_result = OrderedDict({"some_domain": (main_domain, "domain")})
        with patch.object(msignals, "prompt", return_value=main_domain):
            assert _parse_args_in_yunohost_format(answers, questions) == expected_result

        expected_result = OrderedDict({"some_domain": (other_domain, "domain")})
        with patch.object(msignals, "prompt", return_value=other_domain):
            assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_string_default_type():
    questions = [
        {
            "name": "some_string",
        }
    ]
    answers = {"some_string": "some_value"}
    expected_result = OrderedDict({"some_string": ("some_value", "string")})
    assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_string_with_choice_ask():
    ask_text = "some question"
    choices = ["fr", "en", "es", "it", "ru"]
    questions = [
        {
            "name": "some_string",
            "ask": ask_text,
            "choices": choices,
        }
    ]
    answers = {}

    with patch.object(msignals, "prompt", return_value="ru") as prompt:
        _parse_args_in_yunohost_format(answers, questions)
        assert ask_text in prompt.call_args[0][0]

        for choice in choices:
            assert choice in prompt.call_args[0][0]
def test_parse_args_in_yunohost_format_password_no_input_optional():
    questions = [
        {
            "name": "some_password",
            "type": "password",
            "optional": True,
        }
    ]
    answers = {}
    expected_result = OrderedDict({"some_password": ("", "password")})

    assert _parse_args_in_yunohost_format(answers, questions) == expected_result

    questions = [
        {"name": "some_password", "type": "password", "optional": True, "default": ""}
    ]

    assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_boolean():
    questions = [
        {
            "name": "some_boolean",
            "type": "boolean",
        }
    ]
    answers = {"some_boolean": "y"}
    expected_result = OrderedDict({"some_boolean": (1, "boolean")})
    assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_path():
    questions = [
        {
            "name": "some_path",
            "type": "path",
        }
    ]
    answers = {"some_path": "some_value"}
    expected_result = OrderedDict({"some_path": ("some_value", "path")})
    assert _parse_args_in_yunohost_format(answers, questions) == expected_result
def test_parse_args_in_yunohost_format_number():
    questions = [
        {
            "name": "some_number",
            "type": "number",
        }
    ]
    answers = {"some_number": 1337}
    expected_result = OrderedDict({"some_number": (1337, "number")})
    assert _parse_args_in_yunohost_format(answers, questions) == expected_result