--- /dev/null
+package SessionValid::Controller::Root;
+use strict;
+use warnings;
+use Data::Dumper;
+
+use base qw/Catalyst::Controller/;
+
+__PACKAGE__->config( namespace => '' );
+
+sub index :Path :Args(0) {
+ my ( $self, $c ) = @_;
+ $c->session->{'value'} = 'value set';
+ $c->session_is_valid;
+ $c->res->output($c->session->{'value'});
+}
+
+1;
--- /dev/null
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+BEGIN {
+ eval { require Catalyst::Plugin::Session::State::Cookie; Catalyst::Plugin::Session::State::Cookie->VERSION(0.03) }
+ or plan skip_all =>
+ "Catalyst::Plugin::Session::State::Cookie 0.03 or higher is required for this test";
+
+ eval {
+ require Test::WWW::Mechanize::Catalyst;
+ Test::WWW::Mechanize::Catalyst->VERSION(0.51);
+ }
+ or plan skip_all =>
+ 'Test::WWW::Mechanize::Catalyst >= 0.51 is required for this test';
+
+ plan tests => 4;
+}
+
+use lib "t/lib";
+use Test::WWW::Mechanize::Catalyst "SessionValid";
+
+my $ua = Test::WWW::Mechanize::Catalyst->new;
+
+$ua->get_ok( "http://localhost/", "initial get" );
+$ua->content_contains( "value set", "page contains expected value" );
+
+sleep 2;
+
+$ua->get_ok( "http://localhost/", "grab the page again, after the session has expired" );
+$ua->content_contains( "value set", "page contains expected value" );
+