mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-06 13:22:48 +00:00
Move utility functions out of basic.py (#51715)
Move the following methods to lib/anisble/module_utils/common/validation.py: - _count_terms() - _check_mutually_exclusive() - _check_required_one_of() - _check_required_together() - _check_required_by() - _check_required_arguments() - _check_required_if - fail_on_missing_params() --> create check_missing_parameters()
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2019 Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
import pytest
|
||||
|
||||
from ansible.module_utils._text import to_native
|
||||
from ansible.module_utils.common.validation import check_mutually_exclusive
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def mutually_exclusive_terms():
|
||||
return [
|
||||
('string1', 'string2',),
|
||||
('box', 'fox', 'socks'),
|
||||
]
|
||||
|
||||
|
||||
def test_check_mutually_exclusive(mutually_exclusive_terms):
|
||||
params = {
|
||||
'string1': 'cat',
|
||||
'fox': 'hat',
|
||||
}
|
||||
assert check_mutually_exclusive(mutually_exclusive_terms, params) == []
|
||||
|
||||
|
||||
def test_check_mutually_exclusive_found(mutually_exclusive_terms):
|
||||
params = {
|
||||
'string1': 'cat',
|
||||
'string2': 'hat',
|
||||
'fox': 'red',
|
||||
'socks': 'blue',
|
||||
}
|
||||
expected = "TypeError('parameters are mutually exclusive: string1|string2, box|fox|socks',)"
|
||||
|
||||
with pytest.raises(TypeError) as e:
|
||||
check_mutually_exclusive(mutually_exclusive_terms, params)
|
||||
assert e.value == expected
|
||||
|
||||
|
||||
def test_check_mutually_exclusive_none():
|
||||
terms = None
|
||||
params = {
|
||||
'string1': 'cat',
|
||||
'fox': 'hat',
|
||||
}
|
||||
assert check_mutually_exclusive(terms, params) == []
|
||||
|
||||
|
||||
def test_check_mutually_exclusive_no_params(mutually_exclusive_terms):
|
||||
with pytest.raises(TypeError) as te:
|
||||
check_mutually_exclusive(mutually_exclusive_terms, None)
|
||||
assert "TypeError: 'NoneType' object is not iterable" in to_native(te.error)
|
||||
@@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2019 Ansible Project
|
||||
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
__metaclass__ = type
|
||||
|
||||
import pytest
|
||||
|
||||
from ansible.module_utils.common.validation import count_terms
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def params():
|
||||
return {
|
||||
'name': 'bob',
|
||||
'dest': '/etc/hosts',
|
||||
'state': 'present',
|
||||
'value': 5,
|
||||
}
|
||||
|
||||
|
||||
def test_count_terms(params):
|
||||
check = set(('name', 'dest'))
|
||||
assert count_terms(check, params) == 2
|
||||
|
||||
|
||||
def test_count_terms_str_input(params):
|
||||
check = 'name'
|
||||
assert count_terms(check, params) == 1
|
||||
|
||||
|
||||
def test_count_terms_tuple_input(params):
|
||||
check = ('name', 'dest')
|
||||
assert count_terms(check, params) == 2
|
||||
|
||||
|
||||
def test_count_terms_list_input(params):
|
||||
check = ['name', 'dest']
|
||||
assert count_terms(check, params) == 2
|
||||
Reference in New Issue
Block a user