From be1c7e50e1e8809ea56f2c9d472eccd8ffd73a97 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 04:57:58 +0200 Subject: Adding upstream version 1.44.3. Signed-off-by: Daniel Baumann --- web/server/h2o/libh2o/t/50config-tag.t | 111 +++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 web/server/h2o/libh2o/t/50config-tag.t (limited to 'web/server/h2o/libh2o/t/50config-tag.t') diff --git a/web/server/h2o/libh2o/t/50config-tag.t b/web/server/h2o/libh2o/t/50config-tag.t new file mode 100644 index 00000000..dd37f996 --- /dev/null +++ b/web/server/h2o/libh2o/t/50config-tag.t @@ -0,0 +1,111 @@ +use strict; +use warnings; +use File::Temp qw(tempfile); +use Test::More; +use t::Util; + +plan skip_all => 'curl not found' + unless prog_exists('curl'); + +my $curl = "curl --silent --show-error --dump-header /dev/stderr"; + +subtest 'basic' => sub { + my $included = temp_config_file(<< "EOT"); +header.add: &marked "foo: FOO" +file.dir: @{[DOC_ROOT]} +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: !file $included +EOT + + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; +}; + +subtest 'multi-hop' => sub { + my $included2 = temp_config_file(<< "EOT"); +header.add: &marked "foo: FOO" +file.dir: @{[DOC_ROOT]} +EOT + my $included1 = temp_config_file(<< "EOT"); +!file $included2 +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: !file $included1 +EOT + + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; +}; + +subtest 'with-alias' => sub { + my $included = temp_config_file(<< "EOT"); +header.add: &marked "foo: FOO" +file.dir: @{[DOC_ROOT]} +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: !file $included + /another: + header.add: *marked + file.dir: @{[DOC_ROOT]} +EOT + + subtest 'with_merge' => sub { + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; + }; + + subtest 'with_alias' => sub { + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/another/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; + }; +}; + +subtest 'with-merge' => sub { + my $included2 = temp_config_file(<< "EOT"); +header.add: "foo: FOO" +EOT + my $included1 = temp_config_file(<< "EOT"); +<<: !file $included2 +header.append: "bar: BAR" +EOT + + my $server = spawn_h2o(<< "EOT"); +hosts: + default: + paths: + /: + <<: !file $included1 + file.dir: @{[ DOC_ROOT ]} +EOT + + my ($stderr, $stdout) = run_prog("$curl http://127.0.0.1:@{[$server->{port}]}/"); + like $stderr, qr{^HTTP/[^ ]+ 200\s}s; + like $stderr, qr{^foo: ?FOO\r$}im; + like $stderr, qr{^bar: ?BAR\r$}im; +}; + +done_testing(); + +sub temp_config_file { + my ($content) = @_; + my ($fh, $fn) = tempfile(UNLINK => 1); + print $fh $content; + return $fn; +} -- cgit v1.2.3