blob: 7cc6e76836696339ecdcd67b222519e70ace2001 [file] [log] [blame]
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
my $url = '/index.html';
my $cgi_name = "test-cgi";
my $cgi_string = "test cgi for";
my $root = "htdocs/modules/vhost_alias";
my $ext;
my @vh = qw(www.vha-test.com big.server.name.from.heck.org ab.com w-t-f.net);
plan tests => @vh * 2, sub { have_module('vhost_alias') && have_cgi() };
Apache::TestRequest::scheme('http'); #ssl not listening on this vhost
Apache::TestRequest::module('mod_vhost_alias'); #use this module's port
## test environment setup ##
t_mkdir($root);
foreach (@vh) {
my @part = split /\./, $_;
my $d = "$root/";
## create VirtualDocumentRoot htdocs/modules/vhost_alias/%2/%1.4/%-2/%2+
## %2 ##
if ($part[1]) {
$d .= $part[1];
} else {
$d .= "_";
}
t_mkdir($d);
$d .= "/";
## %1.4 ##
if (length($part[0]) < 4) {
$d .= "_";
} else {
$d .= substr($part[0], 3, 1);
}
t_mkdir($d);
$d .= "/";
## %-2 ##
if ($part[@part-2]) {
$d .= $part[@part-2];
} else {
$d .= "_";
}
t_mkdir($d);
$d .= "/";
## %2+ ##
for (my $i = 1;$i < @part;$i++) {
$d .= $part[$i];
$d .= "." if $part[$i+1];
}
t_mkdir($d);
## write index.html for the VirtualDocumentRoot ##
t_write_file("$d$url",$_);
## create directories for VirtualScriptAlias tests ##
$d = "$root/$_";
t_mkdir($d);
$d .= "/";
## write cgi ##
my $cgi_content = <<SCRIPT;
echo Content-type: text/html
echo
echo $cgi_string $_
SCRIPT
$ext = Apache::TestUtil::write_shell_script("$d$cgi_name",
$cgi_content);
chmod 0755, "$d$cgi_name.$ext";
}
## run tests ##
foreach (@vh) {
## test VirtalDocumentRoot ##
ok t_cmp($_,
GET_BODY($url, Host => $_),
"VirtalDocumentRoot test"
);
## test VirtualScriptAlias ##
my $cgi_uri = "/cgi-bin/$cgi_name.$ext";
my $actual = GET_BODY $cgi_uri, Host => $_;
$actual =~ s/[\r\n]+$//;
ok t_cmp("$cgi_string $_",
$actual,
"VirtualScriptAlias test"
);
}