@ -15,7 +15,7 @@ import pytest
from units . compat . mock import MagicMock
from ansible . module_utils import basic
from ansible . module_utils . common . warnings import get_deprecation_messages , get_warning_messages
from ansible . module_utils . six import integer_types
from ansible . module_utils . six import integer_types , string_types
from ansible . module_utils . six . moves import builtins
@ -101,6 +101,7 @@ def complex_argspec():
baz = dict ( fallback = ( basic . env_fallback , [ ' BAZ ' ] ) ) ,
bar1 = dict ( type = ' bool ' ) ,
bar3 = dict ( type = ' list ' , elements = ' path ' ) ,
bar_str = dict ( type = ' list ' , elements = str ) ,
zardoz = dict ( choices = [ ' one ' , ' two ' ] ) ,
zardoz2 = dict ( type = ' list ' , choices = [ ' one ' , ' two ' , ' three ' ] ) ,
zardoz3 = dict ( type = ' str ' , aliases = [ ' zodraz ' ] , deprecated_aliases = [ dict ( name = ' zodraz ' , version = ' 9.99 ' ) ] ) ,
@ -212,6 +213,16 @@ def test_validator_function(mocker, stdin):
assert am . params [ ' arg ' ] == 27
@pytest.mark.parametrize ( ' stdin ' , [ { ' arg ' : ' 123 ' } , { ' arg ' : 123 } ] , indirect = [ ' stdin ' ] )
def test_validator_string_type ( mocker , stdin ) :
# Custom callable that is 'str'
argspec = { ' arg ' : { ' type ' : str } }
am = basic . AnsibleModule ( argspec )
assert isinstance ( am . params [ ' arg ' ] , string_types )
assert am . params [ ' arg ' ] == ' 123 '
@pytest.mark.parametrize ( ' argspec, expected, stdin ' , [ ( s [ 0 ] , s [ 2 ] , s [ 1 ] ) for s in INVALID_SPECS ] ,
indirect = [ ' stdin ' ] )
def test_validator_fail ( stdin , capfd , argspec , expected ) :
@ -342,6 +353,16 @@ class TestComplexArgSpecs:
assert " Alias ' zodraz ' is deprecated. " in get_deprecation_messages ( ) [ 0 ] [ ' msg ' ]
assert get_deprecation_messages ( ) [ 0 ] [ ' version ' ] == ' 9.99 '
@pytest.mark.parametrize ( ' stdin ' , [ { ' foo ' : ' hello ' , ' bar_str ' : [ 867 , ' 5309 ' ] } ] , indirect = [ ' stdin ' ] )
def test_list_with_elements_callable_str ( self , capfd , mocker , stdin , complex_argspec ) :
""" Test choices with list """
am = basic . AnsibleModule ( * * complex_argspec )
assert isinstance ( am . params [ ' bar_str ' ] , list )
assert isinstance ( am . params [ ' bar_str ' ] [ 0 ] , string_types )
assert isinstance ( am . params [ ' bar_str ' ] [ 1 ] , string_types )
assert am . params [ ' bar_str ' ] [ 0 ] == ' 867 '
assert am . params [ ' bar_str ' ] [ 1 ] == ' 5309 '
class TestComplexOptions :
""" Test arg spec options """