summaryrefslogtreecommitdiffstats
path: root/libseaudit/tests/parse_file.c
diff options
context:
space:
mode:
Diffstat (limited to 'libseaudit/tests/parse_file.c')
-rw-r--r--libseaudit/tests/parse_file.c113
1 files changed, 113 insertions, 0 deletions
diff --git a/libseaudit/tests/parse_file.c b/libseaudit/tests/parse_file.c
new file mode 100644
index 0000000..a4bac21
--- /dev/null
+++ b/libseaudit/tests/parse_file.c
@@ -0,0 +1,113 @@
+/**
+ * @file
+ *
+ * Test libseaudit's log file parsing ability.
+ *
+ * @author Jeremy A. Mowery jmowery@tresys.com
+ * @author Jason Tang jtang@tresys.com
+ *
+ * Copyright (C) 2007 Tresys Technology, LLC
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <config.h>
+
+#include <CUnit/CUnit.h>
+#include <seaudit/log.h>
+#include <seaudit/parse.h>
+
+#include <stdbool.h>
+#include <stdio.h>
+
+struct log_answer
+{
+ const char *log_name;
+ bool has_warnings;
+};
+
+static void parse_file_test(const struct log_answer *la)
+{
+ seaudit_log_t *l = seaudit_log_create(NULL, NULL);
+ CU_ASSERT_PTR_NOT_NULL_FATAL(l);
+
+ FILE *f = fopen(la->log_name, "r");
+ CU_ASSERT_PTR_NOT_NULL_FATAL(f);
+
+ int retval;
+ retval = seaudit_log_parse(l, f);
+ if (la->has_warnings) {
+ CU_ASSERT(retval > 0);
+ } else {
+ CU_ASSERT(retval == 0);
+ }
+
+ fclose(f);
+ seaudit_log_destroy(&l);
+}
+
+static void parse_file_fc4()
+{
+ struct log_answer l = {
+ TEST_POLICIES "/setools-3.0/seaudit/messages-FC4",
+ false
+ };
+ parse_file_test(&l);
+}
+
+static void parse_file_fc5()
+{
+ struct log_answer l = {
+ TEST_POLICIES "/setools-3.0/seaudit/messages-FC5",
+ false
+ };
+ parse_file_test(&l);
+}
+
+static void parse_file_nowarns()
+{
+ struct log_answer l = {
+ TEST_POLICIES "/setools-3.1/seaudit/messages-nowarns",
+ false
+ };
+ parse_file_test(&l);
+}
+
+static void parse_file_warnings()
+{
+ struct log_answer l = {
+ TEST_POLICIES "/setools-3.1/seaudit/messages-warnings",
+ true
+ };
+ parse_file_test(&l);
+}
+
+CU_TestInfo parse_file_tests[] = {
+ {"FC4 log", parse_file_fc4},
+ {"FC5 log", parse_file_fc5},
+ {"messages-nowarns", parse_file_nowarns},
+ {"messages-warnings", parse_file_warnings},
+ CU_TEST_INFO_NULL
+};
+
+int parse_file_init()
+{
+ return 0;
+}
+
+int parse_file_cleanup()
+{
+ return 0;
+}