Skip to content

Commit

Permalink
Fix ansible-collections#209 ansible.utils filters should raise Ansibl…
Browse files Browse the repository at this point in the history
…eFilterError
  • Loading branch information
Urth committed Sep 29, 2022
1 parent 57c5cd4 commit 6112618
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 12 deletions.
3 changes: 3 additions & 0 deletions changelogs/fragments/209.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
bugfixes:
- Fix filters to only raise AnsibleFilterError exceptions (https://github.com/ansible-collections/ansible.utils/issues/209).
6 changes: 3 additions & 3 deletions plugins/filter/ipaddr.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

from functools import partial

from ansible.errors import AnsibleError, AnsibleFilterError
from ansible.errors import AnsibleFilterError

from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
AnsibleArgSpecValidator,
Expand Down Expand Up @@ -261,15 +261,15 @@ def _ipaddr(*args, **kwargs):
elif isinstance(data["value"], list):
pass
else:
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipaddr filter <{1}>".format(
type(data["value"]),
"value",
),
)

except (TypeError, ValueError):
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipaddr filter <{1}>".format(type(data["value"]), "value"),
)

Expand Down
6 changes: 3 additions & 3 deletions plugins/filter/ipv4.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

from functools import partial

from ansible.errors import AnsibleError, AnsibleFilterError
from ansible.errors import AnsibleFilterError

from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
AnsibleArgSpecValidator,
Expand Down Expand Up @@ -139,15 +139,15 @@ def _ipv4(*args, **kwargs):
elif isinstance(data["value"], list):
pass
else:
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipv4 filter <{1}>".format(
type(data["value"]),
"value",
),
)

except (TypeError, ValueError):
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipv4 filter <{1}>".format(type(data["value"]), "value"),
)
aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipv4")
Expand Down
6 changes: 3 additions & 3 deletions plugins/filter/ipv6.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

from functools import partial

from ansible.errors import AnsibleError, AnsibleFilterError
from ansible.errors import AnsibleFilterError

from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
AnsibleArgSpecValidator,
Expand Down Expand Up @@ -157,15 +157,15 @@ def _ipv6(*args, **kwargs):
elif isinstance(data["value"], list):
pass
else:
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipv6 filter <{1}>".format(
type(data["value"]),
"value",
),
)

except (TypeError, ValueError):
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipv6 filter <{1}>".format(type(data["value"]), "value"),
)
aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipv6")
Expand Down
6 changes: 3 additions & 3 deletions plugins/filter/ipwrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from functools import partial

from ansible.errors import AnsibleError, AnsibleFilterError
from ansible.errors import AnsibleFilterError

from ansible_collections.ansible.utils.plugins.module_utils.common.argspec_validate import (
AnsibleArgSpecValidator,
Expand Down Expand Up @@ -160,15 +160,15 @@ def _ipwrap(*args, **kwargs):
elif isinstance(data["value"], bool):
pass
else:
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipwrap filter <{1}>".format(
type(data["value"]),
"value",
),
)

except (TypeError, ValueError):
raise AnsibleError(
raise AnsibleFilterError(
"Unrecognized type <{0}> for ipwrap filter <{1}>".format(type(data["value"]), "value"),
)
aav = AnsibleArgSpecValidator(data=data, schema=DOCUMENTATION, name="ipwrap")
Expand Down
8 changes: 8 additions & 0 deletions tests/unit/plugins/filter/test_ipaddr.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@
import pytest

from ansible.errors import AnsibleFilterError
from ansible.template import AnsibleUndefined

from ansible_collections.ansible.utils.plugins.filter.cidr_merge import cidr_merge
from ansible_collections.ansible.utils.plugins.filter.ip4_hex import ip4_hex
from ansible_collections.ansible.utils.plugins.filter.ipaddr import _ipaddr
from ansible_collections.ansible.utils.plugins.filter.ipmath import ipmath
from ansible_collections.ansible.utils.plugins.filter.ipsubnet import ipsubnet
from ansible_collections.ansible.utils.plugins.filter.network_in_network import network_in_network
Expand Down Expand Up @@ -57,6 +59,12 @@ def test_cidr_merge(self):
self.assertEqual(cidr_merge(subnets), ["1.12.1.1/32", "1.12.1.255/32"])
self.assertEqual(cidr_merge(subnets, "span"), "1.12.1.0/24")

def test_ipaddr_undefined_value(self):
"""Check ipaddr filter undefined value"""
args = ["", AnsibleUndefined(name="my_ip"), ""]
with pytest.raises(AnsibleFilterError, match="Unrecognized type <<class 'ansible.template.AnsibleUndefined'>> for ipaddr filter <value>"):
_ipaddr(*args)

def test_ipaddr_empty_query(self):
self.assertEqual(ipaddr("192.0.2.230"), "192.0.2.230")
self.assertEqual(ipaddr("192.0.2.230/30"), "192.0.2.230/30")
Expand Down
11 changes: 11 additions & 0 deletions tests/unit/plugins/filter/test_ipv4.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@

import unittest

import pytest

from ansible.errors import AnsibleFilterError
from ansible.template import AnsibleUndefined

from ansible_collections.ansible.utils.plugins.filter.ipv4 import _ipv4


Expand All @@ -40,6 +45,12 @@ class TestIp4(unittest.TestCase):
def setUp(self):
pass

def test_ipv4_undefined_value(self):
"""Check ipv4 filter undefined value"""
args = ["", AnsibleUndefined(name="my_ip"), ""]
with pytest.raises(AnsibleFilterError, match="Unrecognized type <<class 'ansible.template.AnsibleUndefined'>> for ipv4 filter <value>"):
_ipv4(*args)

def test_ipv4_filter_empty_query(self):
"""Check ipv4 filter empty query"""
args = ["", VALID_DATA, ""]
Expand Down
11 changes: 11 additions & 0 deletions tests/unit/plugins/filter/test_ipv6.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@

import unittest

import pytest

from ansible.errors import AnsibleFilterError
from ansible.template import AnsibleUndefined

from ansible_collections.ansible.utils.plugins.filter.ipv6 import _ipv6


Expand Down Expand Up @@ -43,6 +48,12 @@ class TestIp6(unittest.TestCase):
def setUp(self):
pass

def test_ipv6_undefined_value(self):
"""Check ipv6 filter undefined value"""
args = ["", AnsibleUndefined(name="my_ip"), ""]
with pytest.raises(AnsibleFilterError, match="Unrecognized type <<class 'ansible.template.AnsibleUndefined'>> for ipv6 filter <value>"):
_ipv6(*args)

def test_ipv6_filter_empty_query(self):
"""Check ipv6 filter empty query"""
args = ["", VALID_DATA, ""]
Expand Down
11 changes: 11 additions & 0 deletions tests/unit/plugins/filter/test_ipwrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,11 @@

import unittest

import pytest

from ansible.errors import AnsibleFilterError
from ansible.template import AnsibleUndefined

from ansible_collections.ansible.utils.plugins.filter.ipwrap import _ipwrap


Expand Down Expand Up @@ -45,6 +50,12 @@ class TestIpWrap(unittest.TestCase):
def setUp(self):
pass

def test_ipwrap_undefined_value(self):
"""Check ipwrap filter undefined value"""
args = ["", AnsibleUndefined(name="my_ip"), ""]
with pytest.raises(AnsibleFilterError, match="Unrecognized type <<class 'ansible.template.AnsibleUndefined'>> for ipwrap filter <value>"):
_ipwrap(*args)

def test_valid_data_list(self):
"""Check passing valid argspec(list)"""
args = ["", VALID_DATA, ""]
Expand Down

0 comments on commit 6112618

Please sign in to comment.