Use new tools from community.internal_test_tools. (#1061) (#1062)

(cherry picked from commit a1e9412bed)

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
patchback[bot] 2025-03-22 12:17:26 +01:00 committed by GitHub
parent f2f0492678
commit 64997ca907
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 63 additions and 37 deletions

View File

@ -13,6 +13,7 @@ from ansible.parsing.dataloader import DataLoader
from ansible.template import Templar
from ansible_collections.community.internal_test_tools.tests.unit.compat.mock import create_autospec
from ansible_collections.community.internal_test_tools.tests.unit.utils.trust import make_trusted
from ansible_collections.community.docker.plugins.inventory.docker_containers import InventoryModule
@ -258,7 +259,7 @@ def test_populate_filter(inventory, mocker):
'groups': {},
'keyed_groups': {},
'filters': [
{'include': 'docker_state.Running is true'},
{'include': make_trusted('docker_state.Running is true')},
{'exclude': True},
],
}))

View File

@ -11,7 +11,12 @@ __metaclass__ = type
import pytest
from ansible.utils.unsafe_proxy import AnsibleUnsafe
from ansible_collections.community.internal_test_tools.tests.unit.utils.trust import (
make_untrusted as _make_untrusted,
make_trusted as _make_trusted,
is_trusted as _is_trusted,
SUPPORTS_DATA_TAGGING,
)
from ansible_collections.community.docker.plugins.plugin_utils.unsafe import (
make_unsafe,
@ -20,28 +25,14 @@ from ansible_collections.community.docker.plugins.plugin_utils.unsafe import (
TEST_MAKE_UNSAFE = [
(
u'text',
_make_trusted(u'text'),
[],
[
(),
],
),
(
u'{{text}}',
[
(),
],
[],
),
(
b'text',
[],
[
(),
],
),
(
b'{{text}}',
_make_trusted(u'{{text}}'),
[
(),
],
@ -49,14 +40,14 @@ TEST_MAKE_UNSAFE = [
),
(
{
'skey': 'value',
'ukey': '{{value}}',
_make_trusted('skey'): _make_trusted('value'),
_make_trusted('ukey'): _make_trusted('{{value}}'),
1: [
'value',
'{{value}}',
_make_trusted('value'),
_make_trusted('{{value}}'),
{
1.0: '{{value}}',
2.0: 'value',
1.0: _make_trusted('{{value}}'),
2.0: _make_trusted('value'),
},
],
},
@ -72,7 +63,7 @@ TEST_MAKE_UNSAFE = [
],
),
(
['value', '{{value}}'],
[_make_trusted('value'), _make_trusted('{{value}}')],
[
(1, ),
],
@ -82,6 +73,24 @@ TEST_MAKE_UNSAFE = [
),
]
if not SUPPORTS_DATA_TAGGING:
TEST_MAKE_UNSAFE.extend([
(
_make_trusted(b"text"),
[],
[
(),
],
),
(
_make_trusted(b"{{text}}"),
[
(),
],
[],
),
])
@pytest.mark.parametrize("value, check_unsafe_paths, check_safe_paths", TEST_MAKE_UNSAFE)
def test_make_unsafe(value, check_unsafe_paths, check_safe_paths):
@ -91,43 +100,59 @@ def test_make_unsafe(value, check_unsafe_paths, check_safe_paths):
obj = unsafe_value
for elt in check_path:
obj = obj[elt]
assert isinstance(obj, AnsibleUnsafe)
assert not _is_trusted(obj)
for check_path in check_safe_paths:
obj = unsafe_value
for elt in check_path:
obj = obj[elt]
assert not isinstance(obj, AnsibleUnsafe)
assert _is_trusted(obj)
def test_make_unsafe_idempotence():
assert make_unsafe(None) is None
unsafe_str = _make_untrusted('{{test}}')
assert id(make_unsafe(unsafe_str)) == id(unsafe_str)
safe_str = _make_trusted('{{test}}')
assert id(make_unsafe(safe_str)) != id(safe_str)
def test_make_unsafe_dict_key():
value = {
b'test': 1,
u'test': 2,
_make_trusted(u'test'): 2,
}
if not SUPPORTS_DATA_TAGGING:
value[_make_trusted(b"test")] = 1
unsafe_value = make_unsafe(value)
assert unsafe_value == value
for obj in unsafe_value:
assert not isinstance(obj, AnsibleUnsafe)
assert _is_trusted(obj)
value = {
b'{{test}}': 1,
u'{{test}}': 2,
_make_trusted(u'{{test}}'): 2,
}
if not SUPPORTS_DATA_TAGGING:
value[_make_trusted(b"{{test}}")] = 1
unsafe_value = make_unsafe(value)
assert unsafe_value == value
for obj in unsafe_value:
assert isinstance(obj, AnsibleUnsafe)
assert not _is_trusted(obj)
def test_make_unsafe_set():
value = set([b'test', u'test'])
value = set([_make_trusted(u'test')])
if not SUPPORTS_DATA_TAGGING:
value.add(_make_trusted(b"test"))
unsafe_value = make_unsafe(value)
assert unsafe_value == value
for obj in unsafe_value:
assert not isinstance(obj, AnsibleUnsafe)
assert _is_trusted(obj)
value = set([b'{{test}}', u'{{test}}'])
value = set([_make_trusted(u'{{test}}')])
if not SUPPORTS_DATA_TAGGING:
value.add(_make_trusted(b"{{test}}"))
unsafe_value = make_unsafe(value)
assert unsafe_value == value
for obj in unsafe_value:
assert isinstance(obj, AnsibleUnsafe)
assert not _is_trusted(obj)