Test persist_in_session transition both ways
Dagfinn Ilmari Mannsåker [Thu, 11 Feb 2016 17:26:11 +0000 (17:26 +0000)]
t/20-persist_in_session.t

index 54ebd0e..c28c6ab 100644 (file)
@@ -13,6 +13,7 @@ my $server = LDAPTest::spawn_server();
 # the tests  currently don't require a real Catalyst app instance
 my $c;
 
+my $stringy_session_value;
 subtest "persist_in_session unset" => sub {
     my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
         {   'ldap_server' => LDAPTest::server_host(),
@@ -28,12 +29,13 @@ subtest "persist_in_session unset" => sub {
     );
 
     my $user = $back->find_user( { username => 'somebody' } );
-    ok( my $session = $user->for_session, 'for_session ok');
-    is($session, 'somebody', 'for_session returns correct data');
-    ok($back->from_session($c, $session), 'from_session ok');
+    ok($stringy_session_value = $user->for_session, 'for_session ok');
+    is($stringy_session_value, 'somebody', 'for_session returns correct data');
+    ok($back->from_session($c, $stringy_session_value), 'from_session ok');
 };
 
-subtest "persist_in_session 'username'" => sub {
+my $hash_session_value;
+subtest "persist_in_session 'all'" => sub {
     my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
         {   ldap_server         => LDAPTest::server_host(),
             binddn              => 'anonymous',
@@ -44,16 +46,23 @@ subtest "persist_in_session 'username'" => sub {
             user_scope          => 'one',
             user_field          => 'uid',
             use_roles           => 0,
-            persist_in_session  => 'username',
+            persist_in_session  => 'all',
         }
     );
     my $user = $back->find_user( { username => 'somebody' } );
-    ok( my $session = $user->for_session, 'for_session ok');
-    is($session, 'somebody', 'for_session returns correct data');
-    ok($back->from_session($c, $session), 'from_session ok');
+    ok($hash_session_value = $user->for_session, 'for_session ok');
+    is_deeply($hash_session_value,
+        {
+            persist_in_session => 'all',
+            user => $user->user,
+            _roles => [],
+        },
+        "for_session returns correct data");
+    ok($back->from_session($c, $hash_session_value), 'from_session ok');
+    ok($back->from_session($c, $stringy_session_value), 'from_session ok for stringy value');
 };
 
-subtest "persist_in_session 'all'" => sub {
+subtest "persist_in_session 'username'" => sub {
     my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
         {   ldap_server         => LDAPTest::server_host(),
             binddn              => 'anonymous',
@@ -64,19 +73,15 @@ subtest "persist_in_session 'all'" => sub {
             user_scope          => 'one',
             user_field          => 'uid',
             use_roles           => 0,
-            persist_in_session  => 'all',
+            persist_in_session  => 'username',
         }
     );
     my $user = $back->find_user( { username => 'somebody' } );
-    ok( my $session = $user->for_session, 'for_session ok');
-    is_deeply($session,
-        {
-            persist_in_session => 'all',
-            user => $user->user,
-            _roles => [],
-        },
-        "for_session returns correct data");
+    ok(my $session = $stringy_session_value = $user->for_session, 'for_session ok');
+    is($session, 'somebody', 'for_session returns correct data');
     ok($back->from_session($c, $session), 'from_session ok');
+    ok($back->from_session($c, $hash_session_value), 'from_session ok for hash value')
+        or diag explain $hash_session_value;
 };
 
 done_testing;