use FILTER enviroment variable to specify LDAP filter
[virtual-ldap] / t / ldap-rewrite.t
1 #!/usr/bin/perl
2
3 use warnings;
4 use strict;
5
6 use Test::More tests => 9;
7 use Data::Dump qw(dump);
8
9 BEGIN {
10         use_ok 'Net::LDAP';
11 }
12
13 our $config;
14 ok( require( ( shift @ARGV || 't/config.pl' ) ), 'config.pl' );
15
16 sub ldap_check_error {
17         my $o = shift;
18         ok( ! $o->code, 'no errror' );
19         diag $o->error if $o->code;
20 }
21
22 ok( my $ldap = Net::LDAP->new( $config->{server} ), 'new Net::LDAP ' . dump( $config->{server} ) );
23
24 ok( my $bind = $ldap->bind( $config->{bind_as}, password => $config->{password} ), 'bind ' . $config->{bind_as} );
25 ldap_check_error $bind;
26
27 $config->{search}->{filter} = $ENV{FILTER} if $ENV{FILTER};
28
29 ok( my $search = $ldap->search( %{ $config->{search} } ), 'search ' . dump( $config->{search} ) );
30 ldap_check_error $search;
31
32 foreach my $entry ( $search->entries ) {
33
34 #       diag dump $entry;
35         $entry->dump;
36
37         my $missing = 0;
38         my @required = @{ $config->{attributes_required} };
39         foreach my $attr ( @required ) {
40                 next if grep { /^\Q$attr\E$/i } $entry->attributes;
41                 $missing++;
42                 diag "$missing missing $attr\n";
43         }
44
45         ok( ! $missing, "attributes " . dump( @required ) );
46 }
47
48 ok( $ldap->unbind, 'unbind' );