also test from_session
[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 subtest "persist_in_session unset" => sub {
17     my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
18         {   'ldap_server' => LDAPTest::server_host(),
19             'binddn'      => 'anonymous',
20             'bindpw'      => 'dontcarehow',
21             'start_tls'   => 0,
22             'user_basedn' => 'ou=foobar',
23             'user_filter' => '(&(objectClass=person)(uid=%s))',
24             'user_scope'  => 'one',
25             'user_field'  => 'uid',
26             'use_roles'   => 0,
27         }
28     );
29
30     my $user = $back->find_user( { username => 'somebody' } );
31     ok( my $session = $user->for_session, 'for_session ok');
32     is($session, 'somebody', 'for_session returns correct data');
33     ok($back->from_session($c, $session), 'from_session ok');
34 };
35
36 subtest "persist_in_session 'username'" => sub {
37     my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
38         {   ldap_server         => LDAPTest::server_host(),
39             binddn              => 'anonymous',
40             bindpw              => 'dontcarehow',
41             start_tls           => 0,
42             user_basedn         => 'ou=foobar',
43             user_filter         => '(&(objectClass=person)(uid=%s))',
44             user_scope          => 'one',
45             user_field          => 'uid',
46             use_roles           => 0,
47             persist_in_session  => 'username',
48         }
49     );
50     my $user = $back->find_user( { username => 'somebody' } );
51     ok( my $session = $user->for_session, 'for_session ok');
52     is($session, 'somebody', 'for_session returns correct data');
53     ok($back->from_session($c, $session), 'from_session ok');
54 };
55
56 subtest "persist_in_session 'all'" => sub {
57     my $back = Catalyst::Authentication::Store::LDAP::Backend->new(
58         {   ldap_server         => LDAPTest::server_host(),
59             binddn              => 'anonymous',
60             bindpw              => 'dontcarehow',
61             start_tls           => 0,
62             user_basedn         => 'ou=foobar',
63             user_filter         => '(&(objectClass=person)(uid=%s))',
64             user_scope          => 'one',
65             user_field          => 'uid',
66             use_roles           => 0,
67             persist_in_session  => 'all',
68         }
69     );
70     my $user = $back->find_user( { username => 'somebody' } );
71     ok( my $session = $user->for_session, 'for_session ok');
72     is_deeply($session,
73         {
74             persist_in_session => 'all',
75             user => $user->user,
76             _roles => [],
77         },
78         "for_session returns correct data");
79     ok($back->from_session($c, $session), 'from_session ok');
80 };
81
82 done_testing;