Escape special characters in user/role names
[catagits/Catalyst-Authentication-Store-LDAP.git] / t / lib / LDAPTest.pm
1 # local test ldap server
2
3 package LDAPTest;
4 use strict;
5 use warnings;
6
7 use Net::LDAP::Server::Test;
8 use Net::LDAP::Entry;
9 use Net::LDAP;
10
11 sub server_port {10636}
12 sub server_host { 'ldap://127.0.0.1:' . server_port() }
13
14 sub spawn_server {
15     my $server = Net::LDAP::Server::Test->new( server_port(), auto_schema => 1, @_ );
16
17     my $ldap = Net::LDAP->new(server_host()) or die "Can't connect: $@";
18     my $msg = $ldap->bind;
19     die "Can't bind: " . $msg->error if $msg->is_error;
20
21     for my $user (
22         {
23             uid         => 'somebody',
24             displayName => 'Some Body',
25             cn          => [qw(value1 value2)]
26         },
27         {
28             uid         => 'some*',
29             displayName => 'Some Star',
30             cn          => [qw(value1 value2)]
31         },
32         {
33             uid         => 'sunnO)))',
34             displayName => 'Sunn O)))',
35             cn          => [qw(value1 value2)]
36         }
37     ) {
38         my $msg = $ldap->add("uid=$user->{uid},ou=foobar", attrs => [
39             objectClass => 'person',
40             ou => 'foobar',
41             %{$user},
42         ]);
43         die "Can't bind: " . $msg->error if $msg->is_error;
44     };
45     return bless { server => $server, client => $ldap }, 'ServerWrapper';
46 }
47
48 sub ServerWrapper::stop {
49     my ($self) = @_;
50     $self->{client}->unbind;
51     $self->{server}->stop;
52 }
53
54 1;