use strict;
use warnings;
use Test::More tests => 8;
use Test::Exception;
use CGI qw( -no_debug );
use HTML::Mason::FakeApache;
# Trick ApacheHandler into loading without exploding
sub Apache::perl_hook { 1 }
sub Apache::server { 0 }
use Apache::Constants ();
use MasonX::WebApp;
sub Apache::Constants::OK { 200 }
sub Apache::Constants::REDIRECT { 302 }
{
package Tie::STDOUT;
use base 'Tie::Handle';
sub TIEHANDLE { my $class = shift; bless {}, $class }
sub PRINT { shift->{data} .= join '', grep { defined } @_ }
sub data { $_[0]->{data} }
}
{
my $app =
MasonX::WebApp->new
( apache_req => HTML::Mason::FakeApache->new,
args => {},
);
throws_ok { $app->abort } 'MasonX::WebApp::Exception::Abort';
ok $app->aborted, 'aborted() is true';
is $app->abort_status, Apache::Constants::OK(), 'abort status is OK';
}
{
my $app =
MasonX::WebApp->new
( apache_req => HTML::Mason::FakeApache->new,
args => {},
);
my $stdout;
{
local *STDOUT;
tie *STDOUT, 'Tie::STDOUT';
throws_ok { $app->redirect( uri => '/' ) } 'MasonX::WebApp::Exception::Abort';
$stdout = (tied *STDOUT)->data;
}
like $stdout, qr/Status:\s+302/i, 'output includes correct status code';
like $stdout, qr/Location:\s+/i, 'output includes correct location header';
ok $app->aborted, 'aborted() is true';
is $app->abort_status, Apache::Constants::REDIRECT(), 'abort status is REDIRECT';
}