1#!/usr/bin/perl 2 3use strict; 4use warnings; 5 6use Test::More; 7use Catalyst::Authentication::Store::LDAP::Backend; 8use lib 't/lib'; 9use LDAPTest; 10 11my $server = LDAPTest::spawn_server(); 12 13# the tests currently don't require a real Catalyst app instance 14my $c; 15 16my $stringy_session_value; 17subtest "persist_in_session unset" => sub { 18 my $back = Catalyst::Authentication::Store::LDAP::Backend->new( 19 { 'ldap_server' => LDAPTest::server_host(), 20 'binddn' => 'anonymous', 21 'bindpw' => 'dontcarehow', 22 'start_tls' => 0, 23 'user_basedn' => 'ou=foobar', 24 'user_filter' => '(&(objectClass=person)(uid=%s))', 25 'user_scope' => 'one', 26 'user_field' => 'uid', 27 'use_roles' => 0, 28 } 29 ); 30 31 my $user = $back->find_user( { username => 'somebody' } ); 32 ok($stringy_session_value = $user->for_session, 'for_session ok'); 33 is($stringy_session_value, 'somebody', 'for_session returns correct data'); 34 ok($back->from_session($c, $stringy_session_value), 'from_session ok'); 35}; 36 37my $hash_session_value; 38subtest "persist_in_session 'all'" => sub { 39 my $back = Catalyst::Authentication::Store::LDAP::Backend->new( 40 { ldap_server => LDAPTest::server_host(), 41 binddn => 'anonymous', 42 bindpw => 'dontcarehow', 43 start_tls => 0, 44 user_basedn => 'ou=foobar', 45 user_filter => '(&(objectClass=person)(uid=%s))', 46 user_scope => 'one', 47 user_field => 'uid', 48 use_roles => 0, 49 persist_in_session => 'all', 50 } 51 ); 52 my $user = $back->find_user( { username => 'somebody' } ); 53 ok($hash_session_value = $user->for_session, 'for_session ok'); 54 is_deeply($hash_session_value, 55 { 56 persist_in_session => 'all', 57 user => $user->user, 58 _roles => [], 59 }, 60 "for_session returns correct data"); 61 ok($back->from_session($c, $hash_session_value), 'from_session ok'); 62 ok($back->from_session($c, $stringy_session_value), 'from_session ok for stringy value'); 63}; 64 65subtest "persist_in_session 'username'" => sub { 66 my $back = Catalyst::Authentication::Store::LDAP::Backend->new( 67 { ldap_server => LDAPTest::server_host(), 68 binddn => 'anonymous', 69 bindpw => 'dontcarehow', 70 start_tls => 0, 71 user_basedn => 'ou=foobar', 72 user_filter => '(&(objectClass=person)(uid=%s))', 73 user_scope => 'one', 74 user_field => 'uid', 75 use_roles => 0, 76 persist_in_session => 'username', 77 } 78 ); 79 my $user = $back->find_user( { username => 'somebody' } ); 80 ok(my $session = $stringy_session_value = $user->for_session, 'for_session ok'); 81 is($session, 'somebody', 'for_session returns correct data'); 82 ok($back->from_session($c, $session), 'from_session ok'); 83 ok($back->from_session($c, $hash_session_value), 'from_session ok for hash value') 84 or diag explain $hash_session_value; 85}; 86 87done_testing; 88