blob: b1c6bb74ed64cd2ed7e2bc962b5db0c1b39f020f [file] [log] [blame]
# please insert nothing before this line: -*- mode: cperl; cperl-indent-level: 4; cperl-continued-statement-offset: 4; indent-tabs-mode: nil -*-
package TestFilter::out_str_api;
# Test Apache2::FilterRec and Apache2::Filter accessors
use strict;
use warnings FATAL => 'all';
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::Filter ();
use Apache2::FilterRec ();
use Apache::Test;
use Apache::TestUtil;
use Apache::TestRequest;
use Apache2::Const -compile => 'OK';
my $response_data = "blah blah blah";
#XXX: else pp_untie complains:
#untie attempted while %d inner references still exist
sub Apache2::Filter::UNTIE {}
sub Apache2::Filter::PRINTF {}
sub handler {
my $filter = shift;
my $data = '';
while ($filter->read(my $buffer, 1024)) {
$data .= $buffer;
}
tie *STDOUT, $filter;
plan tests => 8;
ok t_cmp($data, $response_data, "response data");
ok $filter->isa('Apache2::Filter');
{
my $frec = $filter->frec;
ok $frec->isa('Apache2::FilterRec');
ok t_cmp($frec->name, "modperl_request_output", '$frec->name');
my $next = $filter->next;
ok t_cmp($next->frec->name, "modperl_request_output",
'$filter->next->frec->name');
$next = $next->next;
# since we can't ensure that the next filter will be the same,
# as it's not under control, just check that we get some name
my $name = $next->frec->name;
t_debug("next->next name: $name");
ok $name;
}
my $r = $filter->r;
ok $r->isa('Apache2::RequestRec');
my $path = '/' . Apache::TestRequest::module2path(__PACKAGE__);
ok t_cmp($r->uri, $path, "path");
untie *STDOUT;
# we have done the job
$filter->remove;
Apache2::Const::OK;
}
sub pass_through {
return Apache2::Const::DECLINED;
}
sub response {
my $r = shift;
$r->content_type('text/plain');
$r->puts($response_data);
Apache2::Const::OK;
}
1;
__DATA__
<NoAutoConfig>
PerlModule TestFilter::out_str_api
<Location /TestFilter__out_str_api>
SetHandler modperl
PerlResponseHandler TestFilter::out_str_api::response
PerlOutputFilterHandler TestFilter::out_str_api
PerlOutputFilterHandler TestFilter::out_str_api::pass_through
</Location>
</NoAutoConfig>