mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-04-30 06:11:26 -07:00
Do not join flag parameters in iptables module (#36658)
* Do not join flag parameters This put a comma between every character of the tcp flag parameters, resulting in a bad iptables command. Fixes #36490 * Use suboptions to ensure tcp_flags options are lists * Add unit tests for tcp_flags * Add example of how to use tcp_flags
This commit is contained in:
parent
13aff08748
commit
c9d3bb59a4
2 changed files with 85 additions and 5 deletions
|
@ -1,4 +1,3 @@
|
|||
from ansible.compat.tests import unittest
|
||||
from ansible.compat.tests.mock import patch
|
||||
from ansible.module_utils import basic
|
||||
from ansible.modules.system import iptables
|
||||
|
@ -578,3 +577,62 @@ class TestIptables(ModuleTestCase):
|
|||
'--reject-with',
|
||||
'tcp-reset',
|
||||
])
|
||||
|
||||
def test_tcp_flags(self):
|
||||
""" Test various ways of inputting tcp_flags """
|
||||
args = [
|
||||
{
|
||||
'chain': 'OUTPUT',
|
||||
'protocol': 'tcp',
|
||||
'jump': 'DROP',
|
||||
'tcp_flags': 'flags=ALL flags_set="ACK,RST,SYN,FIN"'
|
||||
},
|
||||
{
|
||||
'chain': 'OUTPUT',
|
||||
'protocol': 'tcp',
|
||||
'jump': 'DROP',
|
||||
'tcp_flags': {
|
||||
'flags': 'ALL',
|
||||
'flags_set': 'ACK,RST,SYN,FIN'
|
||||
}
|
||||
},
|
||||
{
|
||||
'chain': 'OUTPUT',
|
||||
'protocol': 'tcp',
|
||||
'jump': 'DROP',
|
||||
'tcp_flags': {
|
||||
'flags': ['ALL'],
|
||||
'flags_set': ['ACK', 'RST', 'SYN', 'FIN']
|
||||
}
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
for item in args:
|
||||
set_module_args(item)
|
||||
|
||||
commands_results = [
|
||||
(0, '', ''),
|
||||
]
|
||||
|
||||
with patch.object(basic.AnsibleModule, 'run_command') as run_command:
|
||||
run_command.side_effect = commands_results
|
||||
with self.assertRaises(AnsibleExitJson) as result:
|
||||
iptables.main()
|
||||
self.assertTrue(result.exception.args[0]['changed'])
|
||||
|
||||
self.assertEqual(run_command.call_count, 1)
|
||||
self.assertEqual(run_command.call_args_list[0][0][0], [
|
||||
'/sbin/iptables',
|
||||
'-t',
|
||||
'filter',
|
||||
'-C',
|
||||
'OUTPUT',
|
||||
'-p',
|
||||
'tcp',
|
||||
'--tcp-flags',
|
||||
'ALL',
|
||||
'ACK,RST,SYN,FIN',
|
||||
'-j',
|
||||
'DROP'
|
||||
])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue