summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/t/40env.t
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--web/server/h2o/libh2o/t/40env.t80
1 files changed, 80 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/t/40env.t b/web/server/h2o/libh2o/t/40env.t
new file mode 100644
index 00000000..daaa0866
--- /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();