xref: /freebsd/usr.sbin/praudit/tests/praudit_test.sh (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
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