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()
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