The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

use Test::More tests => 3;
use Test::Exception;

use File::Temp;

use CGI qw( -no_debug );
use HTML::Mason::FakeApache;

# Trick ApacheHandler into loading without exploding
sub Apache::perl_hook { 1 }
sub Apache::server { 0 }

{
    package Test1;

    use base 'MasonX::WebApp';

    __PACKAGE__->UseSession(0);

    my $app =
        Test1->new
            ( apache_req => HTML::Mason::FakeApache->new,
              args       => {},
            );

    ::throws_ok { $app->session } 'MasonX::WebApp::Exception',
                'Cannot call session() when UseSession is false';
}

{
    package Test2;

    use base 'MasonX::WebApp';

    my $dir;
    BEGIN { $dir = File::Temp::tempdir( CLEANUP => 1 ) };

    __PACKAGE__->SessionWrapperParams( { class          => 'File',
                                         directory      => $dir,
                                         lock_directory => $dir,
                                       },
                                     );

    my $app =
        Test2->new
            ( apache_req => HTML::Mason::FakeApache->new,
              args       => {},
            );

    ::isa_ok $app->session_wrapper, 'Apache::Session::Wrapper';
    ::isa_ok tied %{ $app->session }, 'Apache::Session';
}