blob: 1b9342301e9456a54a36e34b2db6f00ed355ac84 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestRequest;
##
## mod_dir tests
##
my @index = qw(1 2 3 4 5 6 7 8 9 0);
my @bad_index = qw(foo goo moo bleh);
my $htdocs = Apache::Test::vars('documentroot');
my $htaccess = "$htdocs/modules/dir/htaccess/.htaccess";
my $url = "/modules/dir/htaccess/";
my ($actual, $expected);
#XXX: this is silly; need a better way to be portable
sub my_chomp {
$actual =~ s/[\r\n]+$//s;
}
plan tests => @bad_index * @index * 5 + @bad_index + 5, need_module 'dir';
foreach my $bad_index (@bad_index) {
print "expecting 403 (forbidden) using DirectoryIndex $bad_index\n";
$expected = (have_module 'autoindex') ? 403 : 404;
write_htaccess("$bad_index");
$actual = GET_RC $url;
ok ($actual == $expected);
foreach my $index (@index) {
print "running 5 test gambit for \"$index.html\"\n";
## $index will be expected for all
## tests at this level
$expected = $index;
write_htaccess("$index.html");
$actual = GET_BODY $url;
ok ($actual eq $expected);
write_htaccess("$bad_index $index.html");
$actual = GET_BODY $url;
ok ($actual eq $expected);
write_htaccess("$index.html $bad_index");
$actual = GET_BODY $url;
ok ($actual eq $expected);
write_htaccess("/modules/alias/$index.html");
$actual = GET_BODY $url;
ok ($actual eq $expected);
write_htaccess("$bad_index /modules/alias/$index.html");
$actual = GET_BODY $url;
ok ($actual eq $expected);
}
}
print "DirectoryIndex /modules/alias/index.html\n";
$expected = "alias index";
write_htaccess("/modules/alias/index.html");
$actual = GET_BODY $url;
my_chomp();
ok ($actual eq $expected);
print "expecting 403 for DirectoryIndex @bad_index\n";
$expected = (have_module 'autoindex') ? 403 : 404;
write_htaccess("@bad_index");
$actual = GET_RC $url;
ok ($actual == $expected);
$expected = $index[0];
my @index_html = map { "$_.html" } @index;
print "expecting $expected with DirectoryIndex @index_html\n";
write_htaccess("@index_html");
$actual = GET_BODY $url;
ok ($actual eq $expected);
print "expecting $expected with DirectoryIndex @bad_index @index_html\n";
write_htaccess("@bad_index @index_html");
$actual = GET_BODY $url;
ok ($actual eq $expected);
unlink $htaccess;
print "removed .htaccess (no DirectoryIndex), expecting default (index.html)\n";
$expected = "dir index";
$actual = GET_BODY $url;
my_chomp();
ok ($actual eq $expected);
sub write_htaccess {
my $string = shift;
open (HT, ">$htaccess") or die "cannot open $htaccess: $!";
print HT "DirectoryIndex $string";
close (HT);
}
|