File: 24-mock-delete.t

package info (click to toggle)
libtest-net-ldap-perl 0.07-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 204 kB
  • sloc: perl: 2,017; makefile: 2
file content (109 lines) | stat: -rw-r--r-- 3,000 bytes parent folder | download | duplicates (2)
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!perl -T
use strict;
use warnings;

use Test::More tests => 35;

use Net::LDAP::Constant qw(
    LDAP_SUCCESS
    LDAP_PARAM_ERROR
    LDAP_INVALID_DN_SYNTAX
    LDAP_NO_SUCH_OBJECT
);
use Net::LDAP::Entry;
use Test::Net::LDAP::Mock::Data;
use Test::Net::LDAP::Util qw(ldap_dn_is);

my $data = Test::Net::LDAP::Mock::Data->new;
my $search;
my @entries;

# Prepare user1, user2, user3
$data->add_ok('uid=user1, dc=example, dc=com', attrs => [
    uid => 'user1',
]);

$data->add_ok('uid=user2, dc=example, dc=com', attrs => [
    uid => 'user2',
]);

$data->add_ok('uid=user3, dc=example, dc=com', attrs => [
    uid => 'user3',
]);

$search = $data->search_ok(
    base => 'dc=example, dc=com', scope => 'one',
    filter => '(uid=*)', attrs => [qw(uid)],
);

is(scalar($search->entries), 3);
@entries = sort {$a->get_value('uid') cmp $b->get_value('uid')} $search->entries;
ldap_dn_is($entries[0]->dn, 'uid=user1,dc=example,dc=com');
is($entries[0]->get_value('uid'), 'user1');
ldap_dn_is($entries[1]->dn, 'uid=user2,dc=example,dc=com');
is($entries[1]->get_value('uid'), 'user2');
ldap_dn_is($entries[2]->dn, 'uid=user3,dc=example,dc=com');
is($entries[2]->get_value('uid'), 'user3');

# Delete user2
$data->delete_ok('uid=user2, dc=example, dc=com');

$search = $data->search_ok(
    base => 'dc=example, dc=com', scope => 'one',
    filter => '(uid=*)', attrs => [qw(uid)],
);

is(scalar($search->entries), 2);
@entries = sort {$a->get_value('uid') cmp $b->get_value('uid')} $search->entries;
ldap_dn_is($entries[0]->dn, 'uid=user1,dc=example,dc=com');
is($entries[0]->get_value('uid'), 'user1');
ldap_dn_is($entries[1]->dn, 'uid=user3,dc=example,dc=com');
is($entries[1]->get_value('uid'), 'user3');

# Delete user1
$data->delete_ok('uid=user1, dc=example, dc=com');

$search = $data->search_ok(
    base => 'dc=example, dc=com', scope => 'one',
    filter => '(uid=*)', attrs => [qw(uid)],
);

is(scalar($search->entries), 1);
@entries = sort {$a->get_value('uid') cmp $b->get_value('uid')} $search->entries;
ldap_dn_is($entries[0]->dn, 'uid=user3,dc=example,dc=com');
is($entries[0]->get_value('uid'), 'user3');

# Delete user3
$data->delete_ok('uid=user3, dc=example, dc=com');

$search = $data->search_ok(
    base => 'dc=example, dc=com', scope => 'one',
    filter => '(uid=*)', attrs => [qw(uid)],
);

is(scalar($search->entries), 0);

# Callback
$data->add_ok('uid=cb1, dc=example, dc=com');
my @callback_args;

my $mesg = $data->delete_ok('uid=cb1, dc=example, dc=com',
    callback => sub {
        push @callback_args, \@_;
    }
);

is(scalar(@callback_args), 1);
is(scalar(@{$callback_args[0]}), 1);
cmp_ok($callback_args[0][0], '==', $mesg);

# Error: dn is missing
$data->delete_is([], LDAP_PARAM_ERROR);

# Error: dn is invalid
$data->delete_is(['invalid'], LDAP_INVALID_DN_SYNTAX);
$data->delete_is([dn => 'invalid'], LDAP_INVALID_DN_SYNTAX);

# Error: Attempt to delete an entry that does not exist
$data->delete_is(['uid=invalid, dc=example, dc=com'], LDAP_NO_SUCH_OBJECT);