From 77e50caaf2ef81cd91075cf836fed0e75718ffb4 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 23:12:02 +0200 Subject: Adding debian version 1.8.3-2. Signed-off-by: Daniel Baumann --- debian/vendor-h2o/t/50file-custom-handler.t | 96 +++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 debian/vendor-h2o/t/50file-custom-handler.t (limited to 'debian/vendor-h2o/t/50file-custom-handler.t') diff --git a/debian/vendor-h2o/t/50file-custom-handler.t b/debian/vendor-h2o/t/50file-custom-handler.t new file mode 100644 index 0000000..1acc9c1 --- /dev/null +++ b/debian/vendor-h2o/t/50file-custom-handler.t @@ -0,0 +1,96 @@ +use strict; +use warnings; +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +subtest 'cgi file' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /robots.txt: + file.file: @{[DOC_ROOT]}/hello.cgi +EOT + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $resp = `$cmd --silent $proto://127.0.0.1:$port/robots.txt?name=Tobor`; + is $resp, "Hello Tobor"; + }); +}; + +subtest 'directory containing cgi files' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: [".cgi"] + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} +EOT + run_with_curl($server, sub { + my ($proto, $port, $cmd) = @_; + my $resp = `$cmd --silent $proto://127.0.0.1:$port/hello.cgi?name=Tobor`; + is $resp, "Hello Tobor"; + }); +}; + +subtest 'SCRIPT_NAME and PATH_INFO for fastcgi' => sub { + eval q{use CGI; 1} + or plan skip_all => 'CGI.pm not found'; + + # spawn h2o + my $server = spawn_h2o(<< "EOT"); +file.index: ['printenv.cgi'] +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" +hosts: + default: + paths: + /: + file.dir: @{[DOC_ROOT]} + /foo: + file.dir: @{[DOC_ROOT]} +EOT + my $doit = sub { + my ($path, $expected) = @_; + subtest $path => sub { + my $resp = `curl --silent http://127.0.0.1:$server->{port}$path`; + my $env = +{ map { split(':', $_, 2) } split(/\n/, $resp) }; + for my $key (sort keys %$expected) { + is $env->{$key}, $expected->{$key}, $key; + } + }; + }; + + $doit->('/printenv.cgi', + +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => undef }); + $doit->('/printenv.cgi/path/info', + +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => '/path/info' }); + $doit->('/foo/printenv.cgi/path/info', + +{ SCRIPT_NAME => '/foo/printenv.cgi', PATH_INFO => '/path/info' }); + $doit->('/', + +{ SCRIPT_NAME => '/printenv.cgi', PATH_INFO => undef }); + $doit->('/foo/', + +{ SCRIPT_NAME => '/foo/printenv.cgi', PATH_INFO => undef }); + +}; + +done_testing; + -- cgit v1.2.3