also test from_session
[catagits/Catalyst-Authentication-Store-LDAP.git] / t / 20-persist_in_session.t
CommitLineData
a45fc086 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
574fdac2 13# the tests currently don't require a real Catalyst app instance
14my $c;
a45fc086 15
574fdac2 16subtest "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 );
a45fc086 29
574fdac2 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};
a45fc086 35
574fdac2 36subtest "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
56subtest "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};
a45fc086 81
82done_testing;