From 58daab21cd043e1dc37024a7f99b396788372918 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 9 Mar 2024 14:19:48 +0100 Subject: Merging upstream version 1.44.3. Signed-off-by: Daniel Baumann --- web/server/h2o/libh2o/t/40env.t | 80 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 web/server/h2o/libh2o/t/40env.t (limited to 'web/server/h2o/libh2o/t/40env.t') diff --git a/web/server/h2o/libh2o/t/40env.t b/web/server/h2o/libh2o/t/40env.t new file mode 100644 index 000000000..daaa08665 --- /dev/null +++ b/web/server/h2o/libh2o/t/40env.t @@ -0,0 +1,80 @@ +use strict; +use warnings; +use Digest::MD5 qw(md5_hex); +use File::Temp qw(tempdir); +use Net::EmptyPort qw(check_port empty_port); +use Test::More; +use t::Util; + +subtest "fastcgi" => sub { + my $server = spawn_h2o(<< "EOT"); +file.custom-handler: + extension: .cgi + fastcgi.spawn: "exec \$H2O_ROOT/share/h2o/fastcgi-cgi" + unsetenv: + - "foo" +setenv: + "global": 123 +hosts: + default: + setenv: + "host": 234 + paths: + "/": + setenv: + "path": 345 + "foo": "abc" + file.dir: @{[ DOC_ROOT ]} + "/unset": + unsetenv: "host" + file.dir: @{[ DOC_ROOT ]} +EOT + subtest "basic" => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/printenv.cgi`; + like $resp, qr{^global:123$}m; + like $resp, qr{^host:234$}m; + like $resp, qr{^path:345$}m; + unlike $resp, qr{^foo:}m; + }); + }; + subtest "unsetenv" => sub { + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/unset/printenv.cgi`; + like $resp, qr{^global:123$}m; + unlike $resp, qr{^host:}m; + unlike $resp, qr{^path:}m; + unlike $resp, qr{^foo:}m; + }); + }; +}; + +subtest "mruby" => sub { + plan skip_all => 'mruby support is off' + unless server_features()->{mruby}; + my $server = spawn_h2o(<< 'EOT'); +hosts: + default: + paths: + "/": + setenv: + foo: 123 + mruby.handler: | + Proc.new do |env| + [ + 200, + {"content-type" => "text/plain; charset=utf-8"}, + [(env.map {|k, v| k + ":" + String(v) + "\n"}).join] + ] + end +EOT + run_with_curl($server, sub { + my ($proto, $port, $curl) = @_; + my $resp = `$curl --silent $proto://127.0.0.1:$port/`; + like $resp, qr{^foo:123$}m; + }); +}; + +done_testing(); -- cgit v1.2.3