From dfe31f7395c7b80d8a7fc4891f2d9dcaa2a6fb65 Mon Sep 17 00:00:00 2001 From: Michal Nowak Date: Fri, 22 Dec 2023 10:57:12 +0100 Subject: [PATCH] Rewrite spf system test to pytest (cherry picked from commit e67d770432794f00855446ebc4353596360b4a3f) --- bin/tests/system/spf/tests.sh | 46 ------------------------- bin/tests/system/spf/tests_sh_spf.py | 14 -------- bin/tests/system/spf/tests_spf_zones.py | 32 +++++++++++++++++ 3 files changed, 32 insertions(+), 60 deletions(-) delete mode 100644 bin/tests/system/spf/tests.sh delete mode 100644 bin/tests/system/spf/tests_sh_spf.py create mode 100644 bin/tests/system/spf/tests_spf_zones.py diff --git a/bin/tests/system/spf/tests.sh b/bin/tests/system/spf/tests.sh deleted file mode 100644 index a74f55904e..0000000000 --- a/bin/tests/system/spf/tests.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh - -# Copyright (C) Internet Systems Consortium, Inc. ("ISC") -# -# SPDX-License-Identifier: MPL-2.0 -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, you can obtain one at https://mozilla.org/MPL/2.0/. -# -# See the COPYRIGHT file distributed with this work for additional -# information regarding copyright ownership. - -set -e - -. ../conf.sh - -n=1 -status=0 - -# Wait until all zones are loaded before checking SPF related logs -for i in 1 2 3 4 5 6 7 8 9 10; do - grep "all zones loaded" ns1/named.run >/dev/null && break - sleep 1 -done - -echo_i "checking that SPF warnings have been correctly generated ($n)" -ret=0 - -grep "zone spf/IN: loaded serial 0" ns1/named.run >/dev/null || ret=1 -grep "'y.spf' found type SPF" ns1/named.run >/dev/null || ret=1 -grep "'spf' found type SPF" ns1/named.run >/dev/null && ret=1 - -grep "zone warn/IN: loaded serial 0" ns1/named.run >/dev/null || ret=1 -grep "'y.warn' found type SPF" ns1/named.run >/dev/null || ret=1 -grep "'warn' found type SPF" ns1/named.run >/dev/null && ret=1 - -grep "zone nowarn/IN: loaded serial 0" ns1/named.run >/dev/null || ret=1 -grep "'y.nowarn' found type SPF" ns1/named.run >/dev/null && ret=1 -grep "'nowarn' found type SPF" ns1/named.run >/dev/null && ret=1 -n=$((n + 1)) -if [ $ret != 0 ]; then echo_i "failed"; fi -status=$((status + ret)) - -echo_i "exit status: $status" -[ $status -eq 0 ] || exit 1 diff --git a/bin/tests/system/spf/tests_sh_spf.py b/bin/tests/system/spf/tests_sh_spf.py deleted file mode 100644 index 53c623d594..0000000000 --- a/bin/tests/system/spf/tests_sh_spf.py +++ /dev/null @@ -1,14 +0,0 @@ -# Copyright (C) Internet Systems Consortium, Inc. ("ISC") -# -# SPDX-License-Identifier: MPL-2.0 -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, you can obtain one at https://mozilla.org/MPL/2.0/. -# -# See the COPYRIGHT file distributed with this work for additional -# information regarding copyright ownership. - - -def test_spf(run_tests_sh): - run_tests_sh() diff --git a/bin/tests/system/spf/tests_spf_zones.py b/bin/tests/system/spf/tests_spf_zones.py new file mode 100644 index 0000000000..550704ba51 --- /dev/null +++ b/bin/tests/system/spf/tests_spf_zones.py @@ -0,0 +1,32 @@ +# Copyright (C) Internet Systems Consortium, Inc. ("ISC") +# +# SPDX-License-Identifier: MPL-2.0 +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, you can obtain one at https://mozilla.org/MPL/2.0/. +# +# See the COPYRIGHT file distributed with this work for additional +# information regarding copyright ownership. + +import pytest + + +@pytest.mark.requires_zones_loaded("ns1") +def test_spf_log(servers): + for msg in ( + "zone spf/IN: 'y.spf' found type SPF record but no SPF TXT record found", + "zone warn/IN: 'y.warn' found type SPF record but no SPF TXT record found", + "zone spf/IN: loaded serial 0", + "zone warn/IN: loaded serial 0", + "zone nowarn/IN: loaded serial 0", + ): + servers["ns1"].log.expect(msg) + + for msg in ( + "zone nowarn/IN: 'y.nowarn' found type SPF record but no SPF TXT record found", + "zone spf/IN: 'spf' found type SPF record but no SPF TXT record found", + "zone warn/IN: 'warn' found type SPF record but no SPF TXT record found", + "zone nowarn/IN: 'nowarn' found type SPF record but no SPF TXT record found", + ): + servers["ns1"].log.prohibit(msg)