Version 1.017
[catagits/Catalyst-Authentication-Store-LDAP.git] / t / 20-persist_in_session.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use Test::More;
7 use Catalyst::Authentication::Store::LDAP::Backend;
8 use lib 't/lib';
9 use LDAPTest;
10
11 my $server = LDAPTest::spawn_server();
12
13 # the tests  currently don't require a real Catalyst app instance
14 my $c;
15
16 my $stringy_session_value;
17 subtest "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
37 my $hash_session_value;
38 subtest "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
65 subtest "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
87 done_testing;