summaryrefslogtreecommitdiffstats
path: root/debian/vendor-h2o/t/40virtual-host.t
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 21:12:02 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-13 21:12:02 +0000
commit77e50caaf2ef81cd91075cf836fed0e75718ffb4 (patch)
tree53b7b411290b63192fc9e924a3b6b65cdf67e9d0 /debian/vendor-h2o/t/40virtual-host.t
parentAdding upstream version 1.8.3. (diff)
downloaddnsdist-77e50caaf2ef81cd91075cf836fed0e75718ffb4.tar.xz
dnsdist-77e50caaf2ef81cd91075cf836fed0e75718ffb4.zip
Adding debian version 1.8.3-2.debian/1.8.3-2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'debian/vendor-h2o/t/40virtual-host.t')
-rw-r--r--debian/vendor-h2o/t/40virtual-host.t83
1 files changed, 83 insertions, 0 deletions
diff --git a/debian/vendor-h2o/t/40virtual-host.t b/debian/vendor-h2o/t/40virtual-host.t
new file mode 100644
index 0000000..aef1b65
--- /dev/null
+++ b/debian/vendor-h2o/t/40virtual-host.t
@@ -0,0 +1,83 @@
+use strict;
+use warnings;
+use Digest::MD5 qw(md5_hex);
+use Net::EmptyPort qw(check_port);
+use File::Temp qw(tempfile);
+use Test::More;
+use t::Util;
+
+plan skip_all => 'curl not found'
+ unless prog_exists('curl');
+
+subtest "basic" => sub {
+ # create config
+ my ($global_port, $alternate_port) = empty_ports(2);
+ my ($conffh, $conffn) = tempfile(UNLINK => 1);
+ print $conffh <<"EOT";
+listen:
+ host: 127.0.0.1
+ port: $global_port
+hosts:
+ "default:$global_port":
+ paths:
+ /:
+ file.dir: examples/doc_root
+ "alternate:$global_port":
+ listen:
+ host: 127.0.0.1
+ port: $alternate_port
+ paths:
+ /:
+ file.dir: examples/doc_root.alternate
+EOT
+
+ # start server
+ my ($guard, $pid) = spawn_server(
+ argv => [ bindir() . "/h2o", "-c", $conffn ],
+ is_ready => sub {
+ check_port($global_port) && check_port($alternate_port);
+ },
+ );
+
+ my $resp = `curl --silent --resolve default:$global_port:127.0.0.1 http://default:$global_port/`;
+ is md5_hex($resp), md5_file("examples/doc_root/index.html"), "'host: default' against default port";
+
+ $resp = `curl --silent --resolve alternate:$global_port:127.0.0.1 http://alternate:$global_port/`;
+ is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: alternate' against default port";
+
+ $resp = `curl --silent --resolve default:$alternate_port:127.0.0.1 http://default:$alternate_port/`;
+ is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: default' against alternate port";
+
+ $resp = `curl --silent --resolve alternate:$alternate_port:127.0.0.1 http://alternate:$alternate_port/`;
+ is md5_hex($resp), md5_file("examples/doc_root.alternate/index.txt"), "'host: alternate' against alternate port";
+};
+
+subtest "wildcard" => sub {
+ my $server = spawn_h2o(sub {
+ my ($port, $tls_port) = @_;
+ return << "EOT";
+hosts:
+ default:
+ paths:
+ /:
+ file.dir: examples/doc_root
+ "*.example.com:$port":
+ paths:
+ /:
+ file.dir: examples/doc_root.alternate
+EOT
+ });
+
+ my $fetch = sub {
+ my $host = shift;
+ my $resp = `curl --silent --resolve $host:$server->{port}:127.0.0.1 http://$host:$server->{port}/`;
+ md5_hex($resp);
+ };
+
+ is $fetch->("www.example.com"), md5_file("examples/doc_root.alternate/index.txt"), "www.example.com";
+ is $fetch->("xxx.example.com"), md5_file("examples/doc_root.alternate/index.txt"), "xxx.example.com";
+ is $fetch->("example.com"), md5_file("examples/doc_root/index.html"), "example.com";
+ is $fetch->("example.org"), md5_file("examples/doc_root/index.html"), "example.org";
+};
+
+done_testing();