1 |
|
2 use 5.014; |
|
3 no strict 'subs'; |
|
4 use Test::More; |
|
5 use Test::Exception; |
|
6 use English qw(-no_match_vars); |
|
7 |
|
8 package FOO; |
|
9 ::require_ok 'blib/nagios/plugins/ius/check_amanda-client'; |
|
10 FOO->import; |
|
11 |
|
12 package main; |
|
13 |
|
14 subtest 'find_tool' => sub { |
|
15 is FOO::find_tool('sh'), '/bin/sh' => 'found /bin/sh'; |
|
16 dies_ok { FOO: find_tool('abc123xyz-unknown-tool') } |
|
17 'dies for unknown tool'; |
|
18 }; |
|
19 |
|
20 subtest 'check_perms' => sub { |
|
21 my ($mode, $owner, $group) = (stat $EXECUTABLE_NAME)[2, 4, 5]; |
|
22 $mode &= 07777; |
|
23 |
|
24 ok FOO::check_perms($EXECUTABLE_NAME, $mode, $owner, $group), |
|
25 "perms of $EXECUTABLE_NAME 1"; |
|
26 ok FOO::check_perms( |
|
27 $EXECUTABLE_NAME, $mode, |
|
28 scalar(getpwuid $owner), |
|
29 scalar(getgrgid $group) |
|
30 ), |
|
31 "perms of $EXECUTABLE_NAME 2"; |
|
32 dies_ok { FOO::check_perms($EXECUTABLE_NAME, $mode, $owner + 1, $group) } |
|
33 'dies on wrong perms'; |
|
34 }; |
|
35 |
|
36 subtest 'config_names' => sub { |
|
37 is_deeply [sort +FOO::config_names('t/etc/amanda')], |
|
38 [sort qw(foobar DailySet1 WeeklySet1)] => 'got configs'; |
|
39 dies_ok { FOO::config_names('t/etc/no-amanda') } 'dies on missing configs'; |
|
40 }; |
|
41 |
|
42 subtest 'file systems' => sub { |
|
43 my @fs = do { |
|
44 local @ARGV = ('/proc/filesystems'); |
|
45 map { /(\S+)/ } grep { not /^nodev/ } <>; |
|
46 }; |
|
47 my @devs = |
|
48 sort { $a->[0] cmp $b->[0] } |
|
49 map { [$_->[0], (stat $_->[0])[0]] } |
|
50 grep { $_->[1] ~~ @fs } |
|
51 map { [(split)[6, 1]] } `df -PT`; |
|
52 ok scalar @fs => 'have file systems for testing'; |
|
53 ok scalar @devs => 'have devices for testing'; |
|
54 is_deeply [sort { $a->[0] cmp $b->[0] } FOO::get_devices()], |
|
55 \@devs => 'got the proper devices'; |
|
56 |
|
57 }; |
|
58 |
|
59 subtest 'su' => sub { |
|
60 is_deeply [FOO::su('root')], [0, 0], 'su to root'; |
|
61 }; |
|
62 |
|
63 done_testing; |
|