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
101
|
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 = <<SCRIPT;
echo Content-type: text/html
echo
echo $cgi_string $_
SCRIPT
$ext = Apache::TestUtil::t_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($actual,
"$cgi_string $_",
"VirtualScriptAlias test"
);
}
|