blob: b0f92471a241bda333c76f399ca4b2b88695f352 [file] [log] [blame]
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 $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, have_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);
}