live_app.t for Catalyst::Plugin::Session
Yuval Kogman [Mon, 31 Oct 2005 01:52:06 +0000 (01:52 +0000)]
t/lib/Catalyst/Plugin/Session/Store/Dummy.pm [new file with mode: 0644]
t/lib/SessionTestApp.pm [new file with mode: 0644]
t/live_app.t [new file with mode: 0644]

diff --git a/t/lib/Catalyst/Plugin/Session/Store/Dummy.pm b/t/lib/Catalyst/Plugin/Session/Store/Dummy.pm
new file mode 100644 (file)
index 0000000..428e1d3
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+package Catalyst::Plugin::Session::Store::Dummy;
+use base qw/Catalyst::Plugin::Session::Store/;
+
+use strict;
+use warnings;
+
+my %store;
+
+sub get_session_data {
+    my ( $c, $sid ) = @_;
+    $store{$sid};
+}
+
+sub store_session_data {
+    my ( $c, $sid, $data ) = @_;
+    $store{$sid} = $data;
+}
+
+sub delete_session_data {
+    my ( $c, $sid ) = @_;
+    delete $store{$sid};
+}
+
+sub delete_expired_sessions { }
+
+__PACKAGE__;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+Catalyst::Plugin::Session::Store::Dummy - 
+
+=head1 SYNOPSIS
+
+       use Catalyst::Plugin::Session::Store::Dummy;
+
+=head1 DESCRIPTION
+
+=cut
+
+
diff --git a/t/lib/SessionTestApp.pm b/t/lib/SessionTestApp.pm
new file mode 100644 (file)
index 0000000..0f7fecd
--- /dev/null
@@ -0,0 +1,36 @@
+#!/usr/bin/perl
+
+package SessionTestApp;
+use Catalyst qw/Session Session::Store::Dummy Session::State::Cookie/;
+
+use strict;
+use warnings;
+
+sub login : Global {
+    my ( $self, $c ) = @_;
+    $c->session;
+    $c->res->output("logged in");
+}
+
+sub logout : Global {
+    my ( $self, $c ) = @_;
+    $c->res->output(
+        "logged out after " . $c->session->{counter} . " requests" );
+    $c->delete_session("logout");
+}
+
+sub page : Global {
+    my ( $self, $c ) = @_;
+    if ( $c->sessionid ) {
+        $c->res->output("you are logged in");
+               $c->session->{counter}++;
+    }
+    else {
+        $c->res->output("please login");
+    }
+}
+
+__PACKAGE__->setup;
+
+__PACKAGE__;
+
diff --git a/t/live_app.t b/t/live_app.t
new file mode 100644 (file)
index 0000000..aea01c2
--- /dev/null
@@ -0,0 +1,65 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More;
+
+BEGIN {
+    eval { require Catalyst::Plugin::Session::State::Cookie }
+      or plan skip_all =>
+      "Catalyst::Plugin::Session::State::Cookie is required for this test";
+
+    eval { require Test::WWW::Mechanize::Catalyst }
+      or plan skip_all =>
+      "Test::WWW::Mechanize::Catalyst is required for this test";
+         
+    plan tests => 30;
+}
+
+use lib "t/lib";
+use Test::WWW::Mechanize::Catalyst "SessionTestApp";
+
+my $ua1 = Test::WWW::Mechanize::Catalyst->new;
+my $ua2 = Test::WWW::Mechanize::Catalyst->new;
+
+$_->get_ok("http://localhost/page", "initial get") for $ua1, $ua2;
+
+$ua1->content_contains( "please login", "ua1 not logged in" );
+$ua2->content_contains( "please login", "ua2 not logged in" );
+
+$ua1->get_ok("http://localhost/login", "log ua1 in");
+$ua1->content_contains( "logged in", "ua1 logged in" );
+
+$_->get_ok("http://localhost/page", "get main page") for $ua1, $ua2;
+
+$ua1->content_contains( "you are logged in", "ua1 logged in" );
+$ua2->content_contains( "please login",      "ua2 not logged in" );
+
+$ua2->get_ok("http://localhost/login", "get main page");
+$ua2->content_contains( "logged in", "log ua2 in" );
+
+$_->get_ok("http://localhost/page", "get main page") for $ua1, $ua2;
+
+$ua1->content_contains( "you are logged in", "ua1 logged in" );
+$ua2->content_contains( "you are logged in", "ua2 logged in" );
+
+$ua2->get_ok("http://localhost/logout", "log ua2 out");
+$ua2->content_like( qr/logged out/, "ua2 logged out" );
+$ua2->content_like( qr/after 1 request/, "ua2 made 1 request for page in the session" );
+
+$_->get_ok("http://localhost/page", "get main page") for $ua1, $ua2;
+
+$ua1->content_contains( "you are logged in", "ua1 logged in" );
+$ua2->content_contains( "please login",      "ua2 not logged in" );
+
+$ua1->get_ok("http://localhost/logout", "log ua1 out");
+$ua1->content_like( qr/logged out/, "ua1 logged out" );
+$ua1->content_like( qr/after 3 requests/, "ua1 made 3 request for page in the session" );
+
+$_->get_ok("http://localhost/page", "get main page") for $ua1, $ua2;
+
+$ua1->content_contains( "please login", "ua1 not logged in" );
+$ua2->content_contains( "please login", "ua2 not logged in" );
+
+