use strict;
use warnings FATAL => 'all';

use Apache::Test;
use Apache::TestRequest;
use Apache::TestUtil;
use MIME::Base64;
use Data::Dumper;
use HTTP::Response;
use Socket;

use LWP::UserAgent ();
 

my @testcases = (
    ['/apache/ratelimit/'                    => '200', "ratelimited small file"],
    ['/apache/ratelimit/autoindex/'          => '200', "ratelimited small autoindex output"],
    ['/apache/ratelimit/chunk?0,8192'        => '200', "ratelimited chunked response"],
);

plan tests => scalar @testcases, need need_lwp,
                 need_module('mod_ratelimit'),
                 need_module('mod_autoindex'),
                 need_min_apache_version('2.4.35');

my $ua = LWP::UserAgent->new;
$ua->timeout(4);

foreach my $t (@testcases) {
    my $r;

    # trap a die() in WLP when the the status line is invalid to avoid
    # 'dubious test...' instead of just a failure.
    eval { $r = GET($t->[0]) ;
        chomp $r;
        t_debug "Status Line: '" .  $r->status_line . "'";
        ok t_cmp($r->code, $t->[1], $t->[2]);
    }; 
    # Check if the eval() die'ed
    ok t_cmp($@, undef, $t->[2]) if $@
 
}