1
0
Fork 0
apache2/debian/perl-framework/t/modules/brotli.t
Daniel Baumann f56986e2d9
Adding debian version 2.4.63-1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 11:01:27 +02:00

115 lines
3.5 KiB
Perl

use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
my @qvalue = (
[ '' , 1],
[ ' ' , 1],
[ ';' , 1],
[';q=' , 1],
[';q=0' , 0],
[';q=0.' , 0],
[';q=0.0' , 0],
[';q=0.00' , 0],
[';q=0.000' , 0],
[';q=0.0000' , 1], # invalid qvalue format
);
plan tests => (6 * scalar @qvalue) + 4, need_module 'brotli', need_module 'alias';
my $r;
foreach my $q (@qvalue) {
# GET request against the location with Brotli.
print "qvalue: " . $q->[0] . "\n";
$r = GET("/only_brotli/index.html", "Accept-Encoding" => "br" . $q->[0]);
ok t_cmp($r->code, 200);
if ($q->[1] == 1) {
ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
}
else {
ok t_cmp($r->header("Content-Encoding"), undef, "response without Content-Encoding is OK");
}
if (!defined($r->header("Content-Length"))) {
t_debug "Content-Length was expected";
ok 0;
}
if (!defined($r->header("ETag"))) {
t_debug "ETag field was expected";
ok 0;
}
# GET request for a zero-length file.
print "qvalue: " . $q->[0] . "\n";
$r = GET("/only_brotli/zero.txt", "Accept-Encoding" => "br" . $q->[0]);
ok t_cmp($r->code, 200);
if ($q->[1] == 1) {
ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
}
else {
ok t_cmp($r->header("Content-Encoding"), undef, "response without Content-Encoding is OK");
}
if (!defined($r->header("Content-Length"))) {
t_debug "Content-Length was expected";
ok 0;
}
if (!defined($r->header("ETag"))) {
t_debug "ETag field was expected";
ok 0;
}
# HEAD request against the location with Brotli.
print "qvalue: " . $q->[0] . "\n";
$r = HEAD("/only_brotli/index.html", "Accept-Encoding" => "br" . $q->[0]);
ok t_cmp($r->code, 200);
if ($q->[1] == 1) {
ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
}
else {
ok t_cmp($r->header("Content-Encoding"), undef, "response without Content-Encoding is OK");
}
if (!defined($r->header("Content-Length"))) {
t_debug "Content-Length was expected";
ok 0;
}
if (!defined($r->header("ETag"))) {
t_debug "ETag field was expected";
ok 0;
}
}
if (have_module('deflate')) {
# GET request against the location with fallback to deflate (test that
# Brotli is chosen due to the order in SetOutputFilter).
$r = GET("/brotli_and_deflate/apache_pb.gif", "Accept-Encoding" => "gzip,br");
ok t_cmp($r->code, 200);
ok t_cmp($r->header("Content-Encoding"), "br", "response Content-Encoding is OK");
if (!defined($r->header("Content-Length"))) {
t_debug "Content-Length was expected";
ok 0;
}
if (!defined($r->header("ETag"))) {
t_debug "ETag field was expected";
ok 0;
}
$r = GET("/brotli_and_deflate/apache_pb.gif", "Accept-Encoding" => "gzip");
ok t_cmp($r->code, 200);
ok t_cmp($r->header("Content-Encoding"), "gzip", "response Content-Encoding is OK");
if (!defined($r->header("Content-Length"))) {
t_debug "Content-Length was expected";
ok 0;
}
if (!defined($r->header("ETag"))) {
t_debug "ETag field was expected";
ok 0;
}
} else {
skip "skipping tests without mod_deflate" foreach (1..4);
}