also test from_session
Alexander Hartmaier [Fri, 11 Dec 2015 14:17:08 +0000 (15:17 +0100)]
use subtests

t/20-persist_in_session.t

index 516ee71..54ebd0e 100644 (file)
@@ -10,59 +10,73 @@ use LDAPTest;
 
 my $server = LDAPTest::spawn_server();
 
-my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
-    {   'ldap_server' => LDAPTest::server_host(),
-        'binddn'      => 'anonymous',
-        'bindpw'      => 'dontcarehow',
-        'start_tls'   => 0,
-        'user_basedn' => 'ou=foobar',
-        'user_filter' => '(&(objectClass=person)(uid=%s))',
-        'user_scope'  => 'one',
-        'user_field'  => 'uid',
-        'use_roles'   => 0,
-    }
-);
+# the tests  currently don't require a real Catalyst app instance
+my $c;
 
-my $user = $back->find_user( { username => 'somebody' } );
-is($user->for_session, 'somebody', 'persist_in_session unset: for_session ok');
+subtest "persist_in_session unset" => sub {
+    my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
+        {   'ldap_server' => LDAPTest::server_host(),
+            'binddn'      => 'anonymous',
+            'bindpw'      => 'dontcarehow',
+            'start_tls'   => 0,
+            'user_basedn' => 'ou=foobar',
+            'user_filter' => '(&(objectClass=person)(uid=%s))',
+            'user_scope'  => 'one',
+            'user_field'  => 'uid',
+            'use_roles'   => 0,
+        }
+    );
 
-my $back_persist_username = Catalyst::Authentication::Store::LDAP::Backend->new(
-    {   ldap_server         => LDAPTest::server_host(),
-        binddn              => 'anonymous',
-        bindpw              => 'dontcarehow',
-        start_tls           => 0,
-        user_basedn         => 'ou=foobar',
-        user_filter         => '(&(objectClass=person)(uid=%s))',
-        user_scope          => 'one',
-        user_field          => 'uid',
-        use_roles           => 0,
-        persist_in_session  => 'username',
-    }
-);
-$user = $back_persist_username->find_user( { username => 'somebody' } );
-is($user->for_session, 'somebody',
-    "persist_in_session 'username': for_session ok");
+    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');
+};
 
-my $back_persist_all = Catalyst::Authentication::Store::LDAP::Backend->new(
-    {   ldap_server         => LDAPTest::server_host(),
-        binddn              => 'anonymous',
-        bindpw              => 'dontcarehow',
-        start_tls           => 0,
-        user_basedn         => 'ou=foobar',
-        user_filter         => '(&(objectClass=person)(uid=%s))',
-        user_scope          => 'one',
-        user_field          => 'uid',
-        use_roles           => 0,
-        persist_in_session  => 'all',
-    }
-);
-$user = $back_persist_all->find_user( { username => 'somebody' } );
-is_deeply($user->for_session,
-    {
-        persist_in_session => 'all',
-        user => $user->user,
-        _roles => [],
-    },
-    "persist_in_session 'all': for_session ok");
+subtest "persist_in_session 'username'" => sub {
+    my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
+        {   ldap_server         => LDAPTest::server_host(),
+            binddn              => 'anonymous',
+            bindpw              => 'dontcarehow',
+            start_tls           => 0,
+            user_basedn         => 'ou=foobar',
+            user_filter         => '(&(objectClass=person)(uid=%s))',
+            user_scope          => 'one',
+            user_field          => 'uid',
+            use_roles           => 0,
+            persist_in_session  => 'username',
+        }
+    );
+    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');
+};
+
+subtest "persist_in_session 'all'" => sub {
+    my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
+        {   ldap_server         => LDAPTest::server_host(),
+            binddn              => 'anonymous',
+            bindpw              => 'dontcarehow',
+            start_tls           => 0,
+            user_basedn         => 'ou=foobar',
+            user_filter         => '(&(objectClass=person)(uid=%s))',
+            user_scope          => 'one',
+            user_field          => 'uid',
+            use_roles           => 0,
+            persist_in_session  => 'all',
+        }
+    );
+    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($back->from_session($c, $session), 'from_session ok');
+};
 
 done_testing;