remove shebangs from tests
[catagits/Catalyst-Plugin-Session-State-Cookie.git] / t / basic.t
index 3093b00..60c33e4 100644 (file)
--- a/t/basic.t
+++ b/t/basic.t
-#!/usr/bin/perl
-
 use strict;
 use warnings;
 
-use Test::More tests => 15;
-use Test::MockObject;
-use Test::MockObject::Extends;
+use Test::More tests => 13;
+
+use Catalyst::Plugin::Session;
 
 my $m;
 BEGIN { use_ok( $m = "Catalyst::Plugin::Session::State::Cookie" ) }
 
-my $cookie = Test::MockObject->new;
-$cookie->set_always( value => "the session id" );
+my $cookie_meta = Class::MOP::Class->create_anon_class( superclasses => ['Moose::Object'] );
+my $cookie = $cookie_meta->name->new;
+$cookie_meta->add_method( value => sub { "the session id" } );
 
-my $req = Test::MockObject->new;
+my $req_meta = Class::MOP::Class->create_anon_class( superclasses => ['Moose::Object'] );
 my %req_cookies;
-$req->set_always( cookies => \%req_cookies );
+$req_meta->add_method( cookies => sub { \%req_cookies } );
+my $req = $req_meta->name->new;
 
-my $res = Test::MockObject->new;
+my $res_meta = Class::MOP::Class->create_anon_class( superclasses => ['Moose::Object'] );
 my %res_cookies;
-$res->set_always( cookies => \%res_cookies );
-
-my $cxt =
-  Test::MockObject::Extends->new("Catalyst::Plugin::Session::State::Cookie");
+my $cookies_called = 0;
+$res_meta->add_method( cookies => sub { $cookies_called++; \%res_cookies });
+my $res = $res_meta->name->new;
+
+my $cxt_meta = Class::MOP::Class->create_anon_class(
+    superclasses => [qw/
+        Catalyst::Plugin::Session
+        Catalyst::Plugin::Session::State::Cookie
+        Moose::Object
+    /],
+);
 
-$cxt->set_always( config   => {} );
-$cxt->set_always( request  => $req );
-$cxt->set_always( response => $res );
-$cxt->set_always( session  => { __expires => 123 } );
-$cxt->set_false("debug");
+my $config = {};
+$cxt_meta->add_method( config   => sub { $config });
+$cxt_meta->add_method( request  => sub { $req });
+$cxt_meta->add_method( response => sub { $res });
+$cxt_meta->add_method( session  => sub { { } } );
+$cxt_meta->add_method( session_expires => sub { 123 });
+$cxt_meta->add_method("debug" => sub { 0 });
 my $sessionid;
-$cxt->mock( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
+$cxt_meta->add_method( sessionid => sub { shift; $sessionid = shift if @_; $sessionid } );
 
 can_ok( $m, "setup_session" );
 
+my $cxt = $cxt_meta->name->new;
 $cxt->setup_session;
 
-is( $cxt->config->{session}{cookie_name},
-    "session", "default cookie name is set" );
+like( $config->{'Plugin::Session'}{cookie_name},
+    qr/_session$/, "default cookie name is set" );
+
+$config->{'Plugin::Session'}{cookie_name} = "session";
 
-can_ok( $m, "prepare_cookies" );
+can_ok( $m, "get_session_id" );
 
-$cxt->prepare_cookies;
-ok( !$cxt->called("sessionid"),
-    "didn't try setting session ID when there was nothing to set it by" );
+ok( !$cxt->get_session_id, "no session id yet");
 
-$cxt->clear;
+$cxt = $cxt_meta->name->new;
 
 %req_cookies = ( session => $cookie );
 
-ok( !$cxt->sessionid, "no session ID yet" );
-$cxt->prepare_cookies;
-is( $cxt->sessionid, "the session id", "session ID was restored from cookie" );
+is( $cxt->get_session_id, "the session id", "session ID was restored from cookie" );
 
-$cxt->clear;
-$res->clear;
+$cxt_meta->name->new;
+%res_cookies = ();
 
-can_ok( $m, "finalize_cookies" );
-$cxt->finalize_cookies;
-ok( !$res->called("cookies"),
-    "response cookie was not set since res cookie is already there" );
+can_ok( $m, "set_session_id" );
+$cxt->set_session_id("moose");
 
-$cxt->clear;
-$sessionid = undef;
-$res->clear;
+ok( $cookies_called, "created a cookie on set" );
+$cookies_called = 0;
 
-$cxt->finalize_cookies;
-ok( !$res->called("cookies"),
-"response cookie was not set when sessionid was deleted, even if req cookie is still there"
-);
+$cxt_meta->name->new;
+%res_cookies = ();
 
-$sessionid = "some other ID";
-$cxt->clear;
-$res->clear;
+$cxt->set_session_id($sessionid);
 
-$cxt->finalize_cookies;
-$res->called_ok( "cookies", "response cookie was set when sessionid changed" );
+ok( $cookies_called, "response cookie was set when sessionid changed" );
 is_deeply(
     \%res_cookies,
-    { session => { value => $sessionid, expires => 123 } },
+    { session => { value => $sessionid, httponly => 1, expires => 123 } },
     "cookie was set correctly"
 );
 
-$cxt->clear;
-$res->clear;
-%req_cookies = ();
-%res_cookies = ();
-$sessionid   = undef;
+$cxt_meta->name->new;
 
-$cxt->finalize_cookies;
-ok( !$res->called("cookies"),
-    "response cookie was not set when there is no sessionid or request cookie"
-);
-
-$cxt->clear;
-$sessionid   = "123";
-%res_cookies = ();
-$res->clear;
-
-$cxt->finalize_cookies;
+can_ok( $m, "cookie_is_rejecting" );
 
-$res->called_ok( "cookies",
-    "response cookie was set when session was created" );
-is_deeply(
-    \%res_cookies,
-    { session => { value => $sessionid, expires => 123 } },
-    "cookie was set correctly"
-);
+%req_cookies = ( path => '/foo' );
+my $path = '';
+$req_meta->add_method( path => sub { $path } );
+ok( $cxt->cookie_is_rejecting(\%req_cookies), "cookie is rejecting" );
+$path = 'foo/bar';
+ok( !$cxt->cookie_is_rejecting(\%req_cookies), "cookie is not rejecting" );