blob: 9e6836da7f0ae342eb0643851f41daba4eff0e00 [file] [log] [blame]
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestRequest;
use Apache::TestUtil;
use Apache::TestConfig ();
my $config = Apache::Test::config();
my $server = $config->server;
my $version = $server->{version};
my $scheme = Apache::Test::vars()->{scheme};
my $hostport = Apache::TestRequest::hostport();
my $https = "nope";
$https = "yep" if $scheme eq "https";
my $pfx = "/modules/lua";
my @ts = (
{ url => "$pfx/hello.lua", rcontent => "Hello Lua World!\n",
ctype => "text/plain" },
{ url => "$pfx/404?translateme=1", rcontent => "Hello Lua World!\n" },
{ url => "$pfx/translate-inherit-before/404?translateme=1", rcontent => "other lua handler\n" },
{ url => "$pfx/translate-inherit-default-before/404?translateme=1", rcontent => "other lua handler\n" },
{ url => "$pfx/translate-inherit-after/404?translateme=1", rcontent => "Hello Lua World!\n" },
{ url => "$pfx/translate-inherit-before/404?translateme=1&ok=1", rcontent => "other lua handler\n" },
{ url => "$pfx/translate-inherit-default-before/404?translateme=1&ok=1", rcontent => "other lua handler\n" },
# the more specific translate_name handler will run first and return OK.
{ url => "$pfx/translate-inherit-after/404?translateme=1&ok=1", rcontent => "other lua handler\n" },
{ url => "$pfx/version.lua", rcontent => qr(^$version) },
{ url => "$pfx/method.lua", rcontent => "GET" },
{ url => "$pfx/201.lua", rcontent => "", code => 201 },
{ url => "$pfx/https.lua", rcontent => $https },
{ url => "$pfx/setheaders.lua", rcontent => "",
headers => { "X-Header" => "yes",
"X-Host" => $hostport } },
{ url => "$pfx/setheaderfromparam.lua?HeaderName=foo&HeaderValue=bar",
rcontent => "Header set",
headers => { "foo" => "bar" } },
{ url => "$pfx/filtered/foobar.html",
rcontent => "prefix\nbucket:foobar\nsuffix\n" },
);
plan tests => 4 * scalar @ts, need 'lua';
for my $t (@ts) {
my $url = $t->{"url"};
my $r = GET $url;
my $code = $t->{"code"} || 200;
my $headers = $t->{"headers"};
ok t_cmp($r->code, $code, "code for $url");
ok t_cmp($r->content, $t->{"rcontent"}, "response content for $url");
if ($t->{"ctype"}) {
ok t_cmp($r->header("Content-Type"), $t->{"ctype"}, "c-type for $url");
}
else {
skip 1;
}
if ($headers) {
my $correct = 1;
while (my ($name, $value) = each %{$headers}) {
my $actual = $r->header($name) || "<unset>";
t_debug "'$name' header value is '$actual' (expected '$value')";
if ($actual ne $value) {
$correct = 0;
}
}
ok $correct;
}
else {
skip 1;
}
}