use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestUtil; use Apache::TestRequest; my $htdocs = Apache::Test::vars('documentroot'); 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, need need_module('vhost_alias'), need_cgi, need_lwp; 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 = < $_), $_, "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($actual, "$cgi_string $_", "VirtualScriptAlias test" ); }