adamwill / rpms / openscap

Forked from rpms/openscap 3 years ago
Clone

Blame SOURCES/openscap-1.2.17-filehash58_probe_test.patch

7a6a25
diff --git a/tests/probes/filehash58/check_filehash_simple.xml b/tests/probes/filehash58/check_filehash_simple.xml
7a6a25
new file mode 100644
7a6a25
index 000000000..2f6fa877e
7a6a25
--- /dev/null
7a6a25
+++ b/tests/probes/filehash58/check_filehash_simple.xml
7a6a25
@@ -0,0 +1,40 @@
7a6a25
+<ns0:oval_definitions xmlns:ns0="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:ns2="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:ns3="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" xmlns:ns4="http://oval.mitre.org/XMLSchema/oval-definitions-5#unix" xmlns:ns5="http://oval.mitre.org/XMLSchema/oval-definitions-5#linux" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-common-5 oval-common-schema.xsd         http://oval.mitre.org/XMLSchema/oval-definitions-5 oval-definitions-schema.xsd         http://oval.mitre.org/XMLSchema/oval-definitions-5#independent independent-definitions-schema.xsd         http://oval.mitre.org/XMLSchema/oval-definitions-5#unix unix-definitions-schema.xsd         http://oval.mitre.org/XMLSchema/oval-definitions-5#linux linux-definitions-schema.xsd">
7a6a25
+  <ns0:generator>
7a6a25
+    <ns2:product_name>combine_ovals.py from SCAP Security Guide</ns2:product_name>
7a6a25
+    <ns2:product_version>ssg: [0, 1, 40], python: 3.6.5</ns2:product_version>
7a6a25
+    <ns2:schema_version>5.11</ns2:schema_version>
7a6a25
+    <ns2:timestamp>2018-07-20T09:33:24</ns2:timestamp>
7a6a25
+  </ns0:generator>
7a6a25
+  <ns0:definitions>
7a6a25
+    <ns0:definition class="compliance" id="oval:ssg-oval_test_has_hash:def:1" version="1">
7a6a25
+      <ns0:metadata>
7a6a25
+        <ns0:title>Verify that hash of a file that should contain just "foo\n".</ns0:title>
7a6a25
+        <ns0:affected family="unix">
7a6a25
+          <ns0:platform>Red Hat Enterprise Linux 7</ns0:platform>
7a6a25
+        </ns0:affected>
7a6a25
+        <ns0:description>This description in OVALs is mandatory, but the most important is to have description in XCCDF.</ns0:description>
7a6a25
+      <reference ref_id="oval_test_has_hash" source="ssg" /></ns0:metadata>
7a6a25
+      <ns0:criteria>
7a6a25
+        <ns0:criterion comment="Check file hash of /oval-test" test_ref="oval:ssg-oval_test_hash_matches:tst:1" />
7a6a25
+      </ns0:criteria>
7a6a25
+    </ns0:definition>
7a6a25
+  </ns0:definitions>
7a6a25
+  <ns0:tests>
7a6a25
+    <ns3:filehash58_test check="all" comment="-" id="oval:ssg-oval_test_hash_matches:tst:1" version="1">
7a6a25
+      <ns3:object object_ref="oval:ssg-concerned_file:obj:1" />
7a6a25
+      <ns3:state state_ref="oval:ssg-hash_value:ste:1" />
7a6a25
+    </ns3:filehash58_test>
7a6a25
+  </ns0:tests>
7a6a25
+  <ns0:objects>
7a6a25
+    <ns3:filehash58_object id="oval:ssg-concerned_file:obj:1" version="1">
7a6a25
+      <ns3:filepath>/oval-test</ns3:filepath>
7a6a25
+      <ns3:hash_type>SHA-1</ns3:hash_type>
7a6a25
+    </ns3:filehash58_object>
7a6a25
+  </ns0:objects>
7a6a25
+  <ns0:states>
7a6a25
+    <ns3:filehash58_state id="oval:ssg-hash_value:ste:1" version="1">
7a6a25
+      <ns3:hash_type>SHA-1</ns3:hash_type>
7a6a25
+      <ns3:hash>f1d2d2f924e986ac86fdf7b36c94bcdf32beec15</ns3:hash>
7a6a25
+    </ns3:filehash58_state>
7a6a25
+  </ns0:states>
7a6a25
+</ns0:oval_definitions>
7a6a25
diff -r -U3 op0/tests/probes/filehash58/Makefile.in op1/tests/probes/filehash58/Makefile.in
7a6a25
--- op0/tests/probes/filehash58/Makefile.in	2018-08-14 10:45:06.065438575 +0200
7a6a25
+++ op1/tests/probes/filehash58/Makefile.in	2018-08-14 10:53:57.248937836 +0200
7a6a25
@@ -1106,7 +1106,7 @@
7a6a25
 		$(top_builddir)/run
7a6a25
 
7a6a25
 TESTS = test_probes_filehash58.sh
7a6a25
-EXTRA_DIST = test_probes_filehash58.sh test_probes_filehash58.xml.sh
7a6a25
+EXTRA_DIST = test_probes_filehash58.sh test_probes_filehash58.xml.sh check_filehash_simple.xml
7a6a25
 all: all-am
7a6a25
 
7a6a25
 .SUFFIXES:
7a6a25
diff -r -U3 op0/tests/probes/filehash58/test_probes_filehash58.sh op1/tests/probes/filehash58/test_probes_filehash58.sh
7a6a25
--- op0/tests/probes/filehash58/test_probes_filehash58.sh	2018-08-14 10:36:09.914512125 +0200
7a6a25
+++ op1/tests/probes/filehash58/test_probes_filehash58.sh	2018-08-14 10:53:32.366536647 +0200
7a6a25
@@ -38,15 +38,69 @@
7a6a25
 	ret_val=1
7a6a25
     fi
7a6a25
 
7a6a25
+    # The file was created as a side-effect of test_probes_filehash58.xml.sh
7a6a25
     [ $ret_val -eq 0 ] && rm -f /tmp/test_probes_filehash58.tmp
7a6a25
 
7a6a25
     return $ret_val
7a6a25
 }
7a6a25
 
7a6a25
+
7a6a25
+# $1: The chroot directory
7a6a25
+function test_probes_filehash58_chroot {
7a6a25
+
7a6a25
+    probecheck "filehash58" || return 255
7a6a25
+    require "sha1sum" || return 255
7a6a25
+
7a6a25
+    local ret_val=0;
7a6a25
+    local DF="$srcdir/check_filehash_simple.xml"
7a6a25
+
7a6a25
+    absolute_probe_root=$(cd "$1" && pwd)
7a6a25
+
7a6a25
+    # oscap-chroot is not readily available during test run, so we use oscap + env var setting.
7a6a25
+    result_keyword=$(OSCAP_PROBE_ROOT="$absolute_probe_root" "$OSCAP" oval eval "$DF" | grep oval_test_has_hash | grep -o '\w*$')
7a6a25
+    
7a6a25
+    [ "$result_keyword" == "$2" ] && return 0
7a6a25
+    # vvv This is more a test error than a failure or "warning" vvv
7a6a25
+    [ "$result_keyword" == "" ] && return 2
7a6a25
+    return 1
7a6a25
+}
7a6a25
+
7a6a25
+
7a6a25
+function test_probes_filehash58_chroot_pass {
7a6a25
+	local ret_val=0
7a6a25
+
7a6a25
+	mkdir -p pass
7a6a25
+	echo foo > pass/oval-test
7a6a25
+
7a6a25
+	test_probes_filehash58_chroot pass true
7a6a25
+	ret_val=$?
7a6a25
+	rm -rf pass
7a6a25
+
7a6a25
+	return $ret_val
7a6a25
+}
7a6a25
+
7a6a25
+
7a6a25
+function test_probes_filehash58_chroot_fail {
7a6a25
+	local ret_val=0
7a6a25
+
7a6a25
+	mkdir -p fail
7a6a25
+	echo bar > fail/oval-test
7a6a25
+
7a6a25
+	test_probes_filehash58_chroot fail false
7a6a25
+	ret_val=$?
7a6a25
+	rm -rf fail
7a6a25
+
7a6a25
+	return $ret_val
7a6a25
+}
7a6a25
+
7a6a25
 # Testing.
7a6a25
 
7a6a25
 test_init "test_probes_filehash58.log"
7a6a25
 
7a6a25
 test_run "test_probes_filehash58" test_probes_filehash58
7a6a25
 
7a6a25
+test_run "test_probes_filehash58_chroot_fail" test_probes_filehash58_chroot_fail
7a6a25
+
7a6a25
+test_run "test_probes_filehash58_chroot_pass" test_probes_filehash58_chroot_pass
7a6a25
+
7a6a25
 test_exit