Ark

 view release on metacpan or  search on metacpan

t/plugin_session.t  view on Meta::CPAN

        like $@, qr/session is already finalized/;
    };

    subtest "can't remove" => sub {
        my $c = ctx_get '/test_set';
        local $@;
        eval {
            $c->session->remove('test');
        };
        like $@, qr/session is already finalized/;
    };

    subtest "can get" => sub {
        my $c = ctx_get '/test_set';
        local $@;
        eval {
            $c->session->get('test');
        };
        ok !$@;
    };
};

{
    my $res = request(GET => '/test_flash_set');
    like( $res->header('Set-Cookie'), qr/testapp_session=/, 'session id ok');

    is(get('/test_flash_get'), 'dummy_flash', 'flash get ok');
    is(get('/test_flash_get'), '', 'flash cleaered ok');
}

{
    is(get('/incr'), 1, 'increment first ok');
    is(get('/incr'), 2, 'increment second ok');
    reset_app;

    is(get('/incr'), 1, 're-increment first ok'); # XXX: this is test for Ark::Test: should be sepalate test.
    is(get('/incr'), 2, 're-increment second ok');
}

{
    # sid regeneration
    reset_app;

    my $res;
    $res = request(GET => '/incr');
    is $res->content, 1, 'request ok';

    my ($sid) = $res->header('Set-Cookie') =~ /testapp_session=(\w+)/;
    ok $sid, 'sid ok';

    $res = request(GET => '/regen');
    is $res->content, 'regenerated', 'sid regenerated';
    my ($new_sid) = $res->header('Set-Cookie') =~ /testapp_session=(\w+)/;

    is get('/incr'), 2, 'session continued ok';
    isnt $sid, $new_sid, 'but session_id updated ok';

    is get('/regen_and_incr'), 3, 'modified session data and regenerated sid on the same request ok';

    # old sid is now removed
    my $request = HTTP::Request->new(GET => '/incr');
    $request->header( Cookie => "testapp_session=$sid" );
    is request($request)->content, 1, 'old session already expired';
}
done_testing;



( run in 0.737 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )