1*f1ed5c00SAlan Somers# 2*f1ed5c00SAlan Somers# Copyright (c) 2018 Aniket Pandey 3*f1ed5c00SAlan Somers# 4*f1ed5c00SAlan Somers# Redistribution and use in source and binary forms, with or without 5*f1ed5c00SAlan Somers# modification, are permitted provided that the following conditions 6*f1ed5c00SAlan Somers# are met: 7*f1ed5c00SAlan Somers# 1. Redistributions of source code must retain the above copyright 8*f1ed5c00SAlan Somers# notice, this list of conditions and the following disclaimer. 9*f1ed5c00SAlan Somers# 2. Redistributions in binary form must reproduce the above copyright 10*f1ed5c00SAlan Somers# notice, this list of conditions and the following disclaimer in the 11*f1ed5c00SAlan Somers# documentation and/or other materials provided with the distribution. 12*f1ed5c00SAlan Somers# 13*f1ed5c00SAlan Somers# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14*f1ed5c00SAlan Somers# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15*f1ed5c00SAlan Somers# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16*f1ed5c00SAlan Somers# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17*f1ed5c00SAlan Somers# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18*f1ed5c00SAlan Somers# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19*f1ed5c00SAlan Somers# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20*f1ed5c00SAlan Somers# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21*f1ed5c00SAlan Somers# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22*f1ed5c00SAlan Somers# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23*f1ed5c00SAlan Somers# SUCH DAMAGE. 24*f1ed5c00SAlan Somers# 25*f1ed5c00SAlan Somers# 26*f1ed5c00SAlan Somers 27*f1ed5c00SAlan Somers 28*f1ed5c00SAlan Somersatf_test_case praudit_delim_comma 29*f1ed5c00SAlan Somerspraudit_delim_comma_head() 30*f1ed5c00SAlan Somers{ 31*f1ed5c00SAlan Somers atf_set "descr" "Verify that comma delimiter is present with -d ',' cmd" 32*f1ed5c00SAlan Somers} 33*f1ed5c00SAlan Somers 34*f1ed5c00SAlan Somerspraudit_delim_comma_body() 35*f1ed5c00SAlan Somers{ 36*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/del_comma \ 37*f1ed5c00SAlan Somers praudit -d "," $(atf_get_srcdir)/trail 38*f1ed5c00SAlan Somers} 39*f1ed5c00SAlan Somers 40*f1ed5c00SAlan Somers 41*f1ed5c00SAlan Somersatf_test_case praudit_delim_underscore 42*f1ed5c00SAlan Somerspraudit_delim_underscore_head() 43*f1ed5c00SAlan Somers{ 44*f1ed5c00SAlan Somers atf_set "descr" "Verify that underscore delimiter is present with -d _" 45*f1ed5c00SAlan Somers} 46*f1ed5c00SAlan Somers 47*f1ed5c00SAlan Somerspraudit_delim_underscore_body() 48*f1ed5c00SAlan Somers{ 49*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/del_underscore \ 50*f1ed5c00SAlan Somers praudit -d "_" $(atf_get_srcdir)/trail 51*f1ed5c00SAlan Somers} 52*f1ed5c00SAlan Somers 53*f1ed5c00SAlan Somers 54*f1ed5c00SAlan Somersatf_test_case praudit_no_args 55*f1ed5c00SAlan Somerspraudit_no_args_head() 56*f1ed5c00SAlan Somers{ 57*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs default form without " \ 58*f1ed5c00SAlan Somers "any arguments" 59*f1ed5c00SAlan Somers} 60*f1ed5c00SAlan Somers 61*f1ed5c00SAlan Somerspraudit_no_args_body() 62*f1ed5c00SAlan Somers{ 63*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/no_args \ 64*f1ed5c00SAlan Somers praudit $(atf_get_srcdir)/trail 65*f1ed5c00SAlan Somers} 66*f1ed5c00SAlan Somers 67*f1ed5c00SAlan Somers 68*f1ed5c00SAlan Somersatf_test_case praudit_numeric_form 69*f1ed5c00SAlan Somerspraudit_numeric_form_head() 70*f1ed5c00SAlan Somers{ 71*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs the numeric form " \ 72*f1ed5c00SAlan Somers "with -n flag" 73*f1ed5c00SAlan Somers} 74*f1ed5c00SAlan Somers 75*f1ed5c00SAlan Somerspraudit_numeric_form_body() 76*f1ed5c00SAlan Somers{ 77*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/numeric_form \ 78*f1ed5c00SAlan Somers praudit -n $(atf_get_srcdir)/trail 79*f1ed5c00SAlan Somers} 80*f1ed5c00SAlan Somers 81*f1ed5c00SAlan Somers 82*f1ed5c00SAlan Somersatf_test_case praudit_raw_form 83*f1ed5c00SAlan Somerspraudit_raw_form_head() 84*f1ed5c00SAlan Somers{ 85*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs the raw form with -r flag" 86*f1ed5c00SAlan Somers} 87*f1ed5c00SAlan Somers 88*f1ed5c00SAlan Somerspraudit_raw_form_body() 89*f1ed5c00SAlan Somers{ 90*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/raw_form \ 91*f1ed5c00SAlan Somers praudit -r $(atf_get_srcdir)/trail 92*f1ed5c00SAlan Somers} 93*f1ed5c00SAlan Somers 94*f1ed5c00SAlan Somers 95*f1ed5c00SAlan Somersatf_test_case praudit_same_line 96*f1ed5c00SAlan Somerspraudit_same_line_head() 97*f1ed5c00SAlan Somers{ 98*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs the trail in the same " \ 99*f1ed5c00SAlan Somers "line with -l flag" 100*f1ed5c00SAlan Somers} 101*f1ed5c00SAlan Somers 102*f1ed5c00SAlan Somerspraudit_same_line_body() 103*f1ed5c00SAlan Somers{ 104*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/same_line \ 105*f1ed5c00SAlan Somers praudit -l $(atf_get_srcdir)/trail 106*f1ed5c00SAlan Somers} 107*f1ed5c00SAlan Somers 108*f1ed5c00SAlan Somers 109*f1ed5c00SAlan Somersatf_test_case praudit_short_form 110*f1ed5c00SAlan Somerspraudit_short_form_head() 111*f1ed5c00SAlan Somers{ 112*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs the short form " \ 113*f1ed5c00SAlan Somers "with -s flag" 114*f1ed5c00SAlan Somers} 115*f1ed5c00SAlan Somers 116*f1ed5c00SAlan Somerspraudit_short_form_body() 117*f1ed5c00SAlan Somers{ 118*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/short_form \ 119*f1ed5c00SAlan Somers praudit -s $(atf_get_srcdir)/trail 120*f1ed5c00SAlan Somers} 121*f1ed5c00SAlan Somers 122*f1ed5c00SAlan Somers 123*f1ed5c00SAlan Somersatf_test_case praudit_xml_form 124*f1ed5c00SAlan Somerspraudit_xml_form_head() 125*f1ed5c00SAlan Somers{ 126*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs the XML file with -x flag" 127*f1ed5c00SAlan Somers} 128*f1ed5c00SAlan Somers 129*f1ed5c00SAlan Somerspraudit_xml_form_body() 130*f1ed5c00SAlan Somers{ 131*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/xml_form \ 132*f1ed5c00SAlan Somers praudit -x $(atf_get_srcdir)/trail 133*f1ed5c00SAlan Somers} 134*f1ed5c00SAlan Somers 135*f1ed5c00SAlan Somers 136*f1ed5c00SAlan Somersatf_test_case praudit_sync_to_next_record 137*f1ed5c00SAlan Somerspraudit_sync_to_next_record_head() 138*f1ed5c00SAlan Somers{ 139*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit(1) outputs the last few audit " \ 140*f1ed5c00SAlan Somers "records when the initial part of the trail is " \ 141*f1ed5c00SAlan Somers "corrputed." 142*f1ed5c00SAlan Somers} 143*f1ed5c00SAlan Somers 144*f1ed5c00SAlan Somerspraudit_sync_to_next_record_body() 145*f1ed5c00SAlan Somers{ 146*f1ed5c00SAlan Somers # The 'corrupted' binary file contains some redundant 147*f1ed5c00SAlan Somers # binary symbols before the actual audit record. 148*f1ed5c00SAlan Somers # Since 'praudit -p' syncs to the next legitimate record, 149*f1ed5c00SAlan Somers # it would skip the corrupted part and print the desired 150*f1ed5c00SAlan Somers # audit record to STDOUT. 151*f1ed5c00SAlan Somers atf_check -o file:$(atf_get_srcdir)/no_args \ 152*f1ed5c00SAlan Somers praudit -p $(atf_get_srcdir)/corrupted 153*f1ed5c00SAlan Somers} 154*f1ed5c00SAlan Somers 155*f1ed5c00SAlan Somers 156*f1ed5c00SAlan Somersatf_test_case praudit_raw_short_exclusive 157*f1ed5c00SAlan Somerspraudit_raw_short_exclusive_head() 158*f1ed5c00SAlan Somers{ 159*f1ed5c00SAlan Somers atf_set "descr" "Verify that praudit outputs usage message on stderr " \ 160*f1ed5c00SAlan Somers "when both raw and short options are specified" 161*f1ed5c00SAlan Somers} 162*f1ed5c00SAlan Somers 163*f1ed5c00SAlan Somerspraudit_raw_short_exclusive_body() 164*f1ed5c00SAlan Somers{ 165*f1ed5c00SAlan Somers atf_check -s exit:1 -e match:"usage: praudit" \ 166*f1ed5c00SAlan Somers praudit -rs $(atf_get_srcdir)/trail 167*f1ed5c00SAlan Somers} 168*f1ed5c00SAlan Somers 169*f1ed5c00SAlan Somers 170*f1ed5c00SAlan Somersatf_init_test_cases() 171*f1ed5c00SAlan Somers{ 172*f1ed5c00SAlan Somers atf_add_test_case praudit_delim_comma 173*f1ed5c00SAlan Somers atf_add_test_case praudit_delim_underscore 174*f1ed5c00SAlan Somers atf_add_test_case praudit_no_args 175*f1ed5c00SAlan Somers atf_add_test_case praudit_numeric_form 176*f1ed5c00SAlan Somers atf_add_test_case praudit_raw_form 177*f1ed5c00SAlan Somers atf_add_test_case praudit_same_line 178*f1ed5c00SAlan Somers atf_add_test_case praudit_short_form 179*f1ed5c00SAlan Somers atf_add_test_case praudit_xml_form 180*f1ed5c00SAlan Somers atf_add_test_case praudit_sync_to_next_record 181*f1ed5c00SAlan Somers atf_add_test_case praudit_raw_short_exclusive 182*f1ed5c00SAlan Somers} 183