mirror of
https://github.com/YunoHost/moulinette.git
synced 2024-09-03 20:06:31 +02:00
Add some unit tests for the actionsmap module
This commit is contained in:
parent
6b5d271068
commit
cef72f7de9
2 changed files with 90 additions and 3 deletions
|
@ -95,7 +95,7 @@ class CommentParameter(_ExtraParameter):
|
|||
def validate(klass, value, arg_name):
|
||||
# Deprecated boolean or empty string
|
||||
if isinstance(value, bool) or (isinstance(value, str) and not value):
|
||||
logger.warning("expecting a string for extra parameter '%s' of "
|
||||
logger.warning("expecting a non-empty string for extra parameter '%s' of "
|
||||
"argument '%s'", klass.name, arg_name)
|
||||
value = arg_name
|
||||
elif not isinstance(value, str):
|
||||
|
@ -130,7 +130,7 @@ class AskParameter(_ExtraParameter):
|
|||
def validate(klass, value, arg_name):
|
||||
# Deprecated boolean or empty string
|
||||
if isinstance(value, bool) or (isinstance(value, str) and not value):
|
||||
logger.warning("expecting a string for extra parameter '%s' of "
|
||||
logger.warning("expecting a non-empty string for extra parameter '%s' of "
|
||||
"argument '%s'", klass.name, arg_name)
|
||||
value = arg_name
|
||||
elif not isinstance(value, str):
|
||||
|
@ -198,7 +198,7 @@ class PatternParameter(_ExtraParameter):
|
|||
def validate(value, arg_name):
|
||||
# Deprecated string type
|
||||
if isinstance(value, str):
|
||||
logger.warning("expecting a list for extra parameter 'pattern' of "
|
||||
logger.warning("expecting a list as extra parameter 'pattern' of "
|
||||
"argument '%s'", arg_name)
|
||||
value = [value, 'pattern_not_match']
|
||||
elif not isinstance(value, list) or len(value) != 2:
|
||||
|
|
87
test/test_actionsmap.py
Normal file
87
test/test_actionsmap.py
Normal file
|
@ -0,0 +1,87 @@
|
|||
import pytest
|
||||
|
||||
from moulinette.actionsmap import (
|
||||
CommentParameter,
|
||||
AskParameter,
|
||||
PatternParameter,
|
||||
RequiredParameter,
|
||||
ActionsMap
|
||||
)
|
||||
from moulinette.interfaces import BaseActionsMapParser
|
||||
from moulinette.core import MoulinetteError
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def iface():
|
||||
return 'iface'
|
||||
|
||||
|
||||
def test_comment_parameter_bad_bool_value(iface, caplog):
|
||||
comment = CommentParameter(iface)
|
||||
assert comment.validate(True, 'a') == 'a'
|
||||
assert any('expecting a non-empty string' in message for message in caplog.messages)
|
||||
|
||||
|
||||
def test_comment_parameter_bad_empty_string(iface, caplog):
|
||||
comment = CommentParameter(iface)
|
||||
assert comment.validate('', 'a') == 'a'
|
||||
assert any('expecting a non-empty string' in message for message in caplog.messages)
|
||||
|
||||
|
||||
def test_comment_parameter_bad_type(iface):
|
||||
comment = CommentParameter(iface)
|
||||
with pytest.raises(TypeError):
|
||||
comment.validate({}, 'b')
|
||||
|
||||
|
||||
def test_ask_parameter_bad_bool_value(iface, caplog):
|
||||
ask = AskParameter(iface)
|
||||
assert ask.validate(True, 'a') == 'a'
|
||||
assert any('expecting a non-empty string' in message for message in caplog.messages)
|
||||
|
||||
|
||||
def test_ask_parameter_bad_empty_string(iface, caplog):
|
||||
ask = AskParameter(iface)
|
||||
assert ask.validate('', 'a') == 'a'
|
||||
assert any('expecting a non-empty string' in message for message in caplog.messages)
|
||||
|
||||
|
||||
def test_ask_parameter_bad_type(iface):
|
||||
ask = AskParameter(iface)
|
||||
with pytest.raises(TypeError):
|
||||
ask.validate({}, 'b')
|
||||
|
||||
|
||||
def test_pattern_parameter_bad_str_value(iface, caplog):
|
||||
pattern = PatternParameter(iface)
|
||||
assert pattern.validate('', 'a') == ['', 'pattern_not_match']
|
||||
assert any('expecting a list' in message for message in caplog.messages)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('iface', [
|
||||
[],
|
||||
['pattern_alone'],
|
||||
['pattern', 'message', 'extra stuff']
|
||||
])
|
||||
def test_pattern_parameter_bad_list_len(iface):
|
||||
pattern = PatternParameter(iface)
|
||||
with pytest.raises(TypeError):
|
||||
pattern.validate(iface, 'a')
|
||||
|
||||
|
||||
def test_required_paremeter_missing_value(iface):
|
||||
required = RequiredParameter(iface)
|
||||
with pytest.raises(MoulinetteError) as exception:
|
||||
required(True, 'a', '')
|
||||
assert 'is required' in str(exception)
|
||||
|
||||
|
||||
def test_actions_map_unknown_authenticator(monkeypatch, tmp_path):
|
||||
monkeypatch.setenv('MOULINETTE_DATA_DIR', str(tmp_path))
|
||||
actionsmap_dir = actionsmap_dir = tmp_path / 'actionsmap'
|
||||
actionsmap_dir.mkdir()
|
||||
|
||||
amap = ActionsMap(BaseActionsMapParser)
|
||||
with pytest.raises(ValueError) as exception:
|
||||
amap.get_authenticator(profile='unknown')
|
||||
assert 'Unknown authenticator' in str(exception)
|
Loading…
Add table
Reference in a new issue