Blame SOURCES/0005-tests-firewall-cmd-exercise-check-config.patch

e3f863
From b388398d8c4b9859fba9b45371239bd2e5d6bfd4 Mon Sep 17 00:00:00 2001
e3f863
From: Eric Garver <e@erig.me>
e3f863
Date: Thu, 24 May 2018 16:30:41 -0400
e3f863
Subject: [PATCH 5/5] tests/firewall-cmd: exercise --check-config
e3f863
e3f863
This exercises the --check-config option for both firewall-cmd and
e3f863
firewall-offline-cmd.
e3f863
e3f863
We also remove the explicit check in config/Makefile as it's now part of
e3f863
the normal testsuite.
e3f863
e3f863
(cherry picked from commit c2bd43e71018ca4e43141ca93fab352e344f4a30)
e3f863
---
e3f863
 src/tests/firewall-cmd.at | 374 ++++++++++++++++++++++++++++++++++++++++++++++
e3f863
 src/tests/functions.at    |   3 +
e3f863
 2 files changed, 377 insertions(+)
e3f863
e3f863
diff --git a/src/tests/firewall-cmd.at b/src/tests/firewall-cmd.at
e3f863
index 7364e9770d27..92cade844b9e 100644
e3f863
--- a/src/tests/firewall-cmd.at
e3f863
+++ b/src/tests/firewall-cmd.at
e3f863
@@ -840,3 +840,377 @@ FWD_END_TEST([-e '/ERROR: INVALID_RULE:/d' dnl
e3f863
               -e '/ERROR: INVALID_LOG_LEVEL: eror/d' dnl
e3f863
               -e '/ERROR: MISSING_FAMILY/d' dnl
e3f863
               -e '/ERROR: INVALID_LIMIT: 1\/2m/d'])
e3f863
+
e3f863
+FWD_START_TEST([config validation])
e3f863
+    dnl default config
e3f863
+    FWD_CHECK([--check-config], 0, ignore)
e3f863
+
e3f863
+    dnl The rest of these are negative test cases.
e3f863
+
e3f863
+    dnl firewalld.conf
e3f863
+    AT_CHECK([cp ./firewalld.conf ./firewalld.conf.orig])
e3f863
+    AT_CHECK([echo "SomeBogusField=yes" >> ./firewalld.conf])
e3f863
+    FWD_CHECK([--check-config], 0, ignore, [dnl
e3f863
+m4_ifdef([TESTING_FIREWALL_OFFLINE_CMD], [dnl
e3f863
+ERROR: Invalid option: 'SomeBogusField=yes'
e3f863
+ERROR: Invalid option: 'SomeBogusField=yes'
e3f863
+])])
e3f863
+    AT_CHECK([cp ./firewalld.conf.orig ./firewalld.conf])
e3f863
+
e3f863
+    dnl direct
e3f863
+    AT_DATA([./direct.xml], [dnl
e3f863
+
e3f863
+<direct>
e3f863
+<chain table="filter" ipv="ipv7" chain="foobar"/>
e3f863
+</direct>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 111, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./direct.xml], [dnl
e3f863
+
e3f863
+<direct>
e3f863
+<rule />
e3f863
+</direct>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+    AT_CHECK([rm ./direct.xml])
e3f863
+
e3f863
+    dnl lockdown-whitelist
e3f863
+    AT_DATA([./lockdown-whitelist.xml], [dnl
e3f863
+
e3f863
+<whitelist>
e3f863
+    <user uid="666"/>
e3f863
+</whitelist>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./lockdown-whitelist.xml], [dnl
e3f863
+
e3f863
+<whitelist>
e3f863
+    <uid id="666"/>
e3f863
+</whitelist>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./lockdown-whitelist.xml], [dnl
e3f863
+
e3f863
+<whitelist>
e3f863
+    <group name="foobar" />
e3f863
+</whitelist>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+    AT_CHECK([rm ./lockdown-whitelist.xml])
e3f863
+
e3f863
+    dnl ipset
e3f863
+    AT_CHECK([mkdir -p ./ipsets])
e3f863
+    AT_DATA([./ipsets/foobar.xml], [dnl
e3f863
+
e3f863
+<ipset type="hash:mac">
e3f863
+  <entry>12:34:56:78:90</entry>
e3f863
+</ipset>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 0, ignore, [dnl
e3f863
+m4_ifdef([TESTING_FIREWALL_OFFLINE_CMD], [dnl
e3f863
+WARNING: INVALID_ENTRY: invalid mac address '12:34:56:78:90' in '12:34:56:78:90', ignoring.
e3f863
+WARNING: INVALID_ENTRY: invalid mac address '12:34:56:78:90' in '12:34:56:78:90', ignoring.
e3f863
+])])
e3f863
+
e3f863
+    AT_DATA([./ipsets/foobar.xml], [dnl
e3f863
+
e3f863
+<ipset type="hash:mac">
e3f863
+  <entry bogus_attr="bogus">12:34:56:78:90:ab</entry>
e3f863
+</ipset>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./ipsets/foobar.xml], [dnl
e3f863
+
e3f863
+<ipset type="hash:ip,bogus">
e3f863
+</ipset>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 119, ignore, ignore)
e3f863
+    AT_CHECK([rm ./ipsets/foobar.xml])
e3f863
+
e3f863
+    dnl helpers
e3f863
+    AT_CHECK([mkdir -p ./helpers])
e3f863
+    AT_DATA([./helpers/foobar.xml], [dnl
e3f863
+
e3f863
+<helper>
e3f863
+</helper>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./helpers/foobar.xml], [dnl
e3f863
+
e3f863
+<helper family="ipv7" module="nf_conntrack_ftp">
e3f863
+</helper>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 111, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./helpers/foobar.xml], [dnl
e3f863
+
e3f863
+<helper family="ipv6" module="nf_conntrack_ftp">
e3f863
+<port protocol="aoeui" port="666" />
e3f863
+</helper>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 103, ignore, ignore)
e3f863
+    AT_CHECK([rm ./helpers/foobar.xml])
e3f863
+
e3f863
+    dnl icmptype
e3f863
+    AT_CHECK([mkdir -p ./icmptypes])
e3f863
+    AT_DATA([./icmptypes/foobar.xml], [dnl
e3f863
+
e3f863
+<bad_element />
e3f863
+<icmptype>
e3f863
+</icmptype>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./icmptypes/foobar.xml], [dnl
e3f863
+
e3f863
+<icmptype>
e3f863
+<destination unexpected_attr="foobar" />
e3f863
+</icmptype>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+    AT_CHECK([rm ./icmptypes/foobar.xml])
e3f863
+
e3f863
+    dnl services
e3f863
+    AT_CHECK([mkdir -p ./services])
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<protocol value="aoeui" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 103, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<protocol bad_attr="foo" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<bad_element />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<module module="bad_attr" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<port protocol="aoeu" port="666" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 103, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<port protocol="tcp" port="ssssssh" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 102, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<port protocol="tcp" port="22" />
e3f863
+<source-port protocol="tcp" port="sssssh" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 102, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./services/foobar.xml], [dnl
e3f863
+
e3f863
+<service>
e3f863
+<destination ipv4="224.0.0.1" ipv7="1234" />
e3f863
+</service>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+    AT_CHECK([rm ./services/foobar.xml])
e3f863
+
e3f863
+    dnl zones
e3f863
+    AT_CHECK([mkdir -p ./zones])
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 112, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<service name="bogus_service_name" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 101, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<port protocol="ipv4" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<protocol value="thisdoesnotexist" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 103, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<icmp-block invalid_attr=""/>
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<icmp-type />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<masquerade value="true" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<forward-port port="666" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<forward-port protocol="sctppp" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<source-port port="-1" />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<interface />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<source />
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 0, ignore, [dnl
e3f863
+m4_ifdef([TESTING_FIREWALL_OFFLINE_CMD], [dnl
e3f863
+WARNING: Invalid source: No address no ipset.
e3f863
+WARNING: Invalid source: No address no ipset.
e3f863
+])])
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<rule>
e3f863
+<source address="10.0.0.1/24" />
e3f863
+<limit />
e3f863
+</rule>
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<rule family="ipv4">
e3f863
+<source address="10.0.0.1/24" />
e3f863
+<accept>
e3f863
+<limit value="none" />
e3f863
+</accept>
e3f863
+</rule>
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 0, ignore, [dnl
e3f863
+m4_ifdef([TESTING_FIREWALL_OFFLINE_CMD], [dnl
e3f863
+WARNING: INVALID_LIMIT: none: rule family="ipv4" source address="10.0.0.1/24" accept limit value="none"
e3f863
+WARNING: INVALID_LIMIT: none: rule family="ipv4" source address="10.0.0.1/24" accept limit value="none"
e3f863
+])])
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<rule>
e3f863
+<source address="10.0.0.1/24" />
e3f863
+<log level="super_critical" />
e3f863
+</rule>
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 0, ignore, [dnl
e3f863
+m4_ifdef([TESTING_FIREWALL_OFFLINE_CMD], [dnl
e3f863
+WARNING: Invalid rule: Invalid log level
e3f863
+WARNING: Invalid rule: Invalid log level
e3f863
+])])
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<rule family="ipv4">
e3f863
+<source address="10.0.0.1/24" />
e3f863
+<audit prefix="foobar" />
e3f863
+</rule>
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 28, ignore, ignore)
e3f863
+
e3f863
+    AT_DATA([./zones/foobar.xml], [dnl
e3f863
+
e3f863
+<zone>
e3f863
+<rule family="ipv6">
e3f863
+<source address="10.0.0.1/24" />
e3f863
+<accept />
e3f863
+</rule>
e3f863
+</zone>
e3f863
+])
e3f863
+    FWD_CHECK([--check-config], 0, ignore, [dnl
e3f863
+m4_ifdef([TESTING_FIREWALL_OFFLINE_CMD], [dnl
e3f863
+WARNING: INVALID_ADDR: 10.0.0.1/24: rule family="ipv6" source address="10.0.0.1/24" accept
e3f863
+WARNING: INVALID_ADDR: 10.0.0.1/24: rule family="ipv6" source address="10.0.0.1/24" accept
e3f863
+])])
e3f863
+    AT_CHECK([rm ./zones/foobar.xml])
e3f863
+
e3f863
+FWD_END_TEST([-e '/ERROR:/d'dnl
e3f863
+              -e '/WARNING:/d'])
e3f863
diff --git a/src/tests/functions.at b/src/tests/functions.at
e3f863
index 7bd66d5c74fe..d9b1ce401bb0 100644
e3f863
--- a/src/tests/functions.at
e3f863
+++ b/src/tests/functions.at
e3f863
@@ -122,6 +122,9 @@ m4_define([FWD_CHECK], [
e3f863
                 m4_if(-1, m4_index([$1], [-default-zone]), [], [
e3f863
                     m4_define([FWD_CHECK_RUN_FIREWALL_OFFLINE_CMD])
e3f863
                 ])
e3f863
+                m4_if(-1, m4_index([$1], [--check-config]), [], [
e3f863
+                    m4_define([FWD_CHECK_RUN_FIREWALL_OFFLINE_CMD])
e3f863
+                ])
e3f863
             ], [
e3f863
                 m4_if(-1, m4_index([$1], [--timeout]), [
e3f863
                     m4_define([FWD_CHECK_RUN_FIREWALL_OFFLINE_CMD])
e3f863
-- 
e3f863
2.16.3
e3f863