-
Notifications
You must be signed in to change notification settings - Fork 3
/
06-no-such-entry.t
74 lines (65 loc) · 1.73 KB
/
06-no-such-entry.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
use strict;
use warnings;
use Test::More;
use Net::LDAP::Server::Test;
use Net::LDAP;
use Net::LDAP::LDIF;
use File::Temp qw(tempfile);
use Net::LDAP::Constant qw(
LDAP_SUCCESS
LDAP_NO_SUCH_OBJECT
LDAP_CONTROL_PAGED
LDAP_OPERATIONS_ERROR
LDAP_UNWILLING_TO_PERFORM
LDAP_ALREADY_EXISTS
LDAP_TYPE_OR_VALUE_EXISTS
LDAP_NO_SUCH_ATTRIBUTE
);
# Create ldif
my $ldif_entries = <<EOL;
dn: app=test
app: test
objectClass: top
objectClass: application
dn: msisdn=34610123123,app=test
objectClass: msisdn
msisdn: 34610123123
EOL
my ( $fh, $filename ) = tempfile();
print $fh $ldif_entries;
close $fh;
# Create and connect to server
ok( my $server = Net::LDAP::Server::Test->new( 12389, auto_schema => 1 ),
"test LDAP server spawned" );
ok( my $ldap = Net::LDAP->new( 'localhost', port => 12389 ),
"new LDAP connection" );
# Load ldif
my $ldif = Net::LDAP::LDIF->new(
$filename, 'r',
onerror => 'die',
lowercase => 1
);
while ( not $ldif->eof ) {
my $entry = $ldif->read_entry or die "Unable to parse entry";
my $mesg = $ldap->add($entry);
$mesg->code
and die sprintf "Error adding entry [%s]: [%s]", $entry->dn,
$mesg->error;
}
$ldif->done;
# Just make sure everything is ok :)
my $mesg = $ldap->search(
base => 'msisdn=34610123123,app=test',
scope => 'base',
filter => 'objectClass=*'
);
is( $mesg->code, LDAP_SUCCESS, 'msisdn found' );
# This should work. A base search to a non-existing entry should return 32
$mesg = $ldap->search(
base => 'msisdn=123456789,app=test',
scope => 'base',
filter => 'objectClass=*'
);
is( $mesg->code, LDAP_NO_SUCH_OBJECT, 'msisdn not found' );
is( scalar( $mesg->entries ), 0, 'number of entries equals zero' );
done_testing;