| use strict; |
| use warnings FATAL => 'all'; |
| |
| use Apache::Test; |
| use Apache::TestRequest; |
| use Apache::TestUtil qw(t_write_file); |
| |
| use File::Spec; |
| |
| # test ap_cfg_getline / ap_varbuf_cfg_getline |
| |
| Apache::TestRequest::user_agent(keep_alive => 1); |
| |
| my $dir_foo = Apache::Test::vars('serverroot') . '/htdocs/cfg_getline'; |
| |
| # XXX: htaccess is limited to 8190 chars, would need different test |
| # XXX: method to test longer lines |
| my @test_cases = (100, 196 .. 202, 396 .. 402 , 596 .. 602 , 1016 .. 1030, |
| 8170 .. 8190); |
| plan tests => 2 * scalar(@test_cases), need need_lwp, |
| need_module('mod_include'), |
| need_module('mod_setenvif'); |
| |
| foreach my $len (@test_cases) { |
| my $prefix = 'SetEnvIf User-Agent ^ testvar='; |
| my $expect = 'a' x ($len - length($prefix)); |
| my $file = File::Spec->catfile(Apache::Test::vars('serverroot'), 'htdocs', |
| 'apache', 'cfg_getline', '.htaccess'); |
| t_write_file($file, "$prefix$expect\n"); |
| |
| my $response = GET('/apache/cfg_getline/index.shtml'); |
| my $rc = $response->code; |
| print "Got rc $rc for length $len\n"; |
| ok($rc == 200); |
| |
| my $got = $response->content; |
| my $match; |
| if ($got =~ /^'$expect'/) { |
| $match = 1; |
| } |
| else { |
| print "Got $got\n", |
| "expected '$expect'\n"; |
| } |
| ok($match); |
| } |