source: trunk/LATMOS-Accounts/live-test/10_sql.t @ 2250

Last change on this file since 2250 was 2250, checked in by nanardon, 5 years ago

Remove debug message

  • Property svn:keywords set to Id
File size: 11.7 KB
Line 
1# -*- indent-tabs-mode: nil; tab-width: 4; -*-
2# vim:ft=perl:et:sw=4
3# $Id$
4
5use strict;
6use warnings;
7use Test::More;
8use FindBin qw($Bin);
9
10use DateTime;
11
12require "$Bin/common.pl";
13eval "require '$Bin/config.pl'";
14
15if ($@) {
16    plan skip_all => 'no config found' if ($@);
17} elsif (!$LA::T::SQLBASE) {
18    plan skip_all => 'No SQL base defined';
19} else {
20    plan tests => 102; # Number of test
21}
22
23use_ok('LATMOS::Accounts');
24use_ok('LATMOS::Accounts::Bases::Sql');
25
26ok(my $la = LATMOS::Accounts->new(undef, noacl => 1), "Can get LATMOS::Accounts");
27ok(my $base = $la->base($LA::T::SQLBASE), "can get SQL base $LA::T::SQLBASE");
28
29{ # test: user
30my $oid = genid();
31
32use_ok('LATMOS::Accounts::Bases::Sql::User');
33ok($base->create_c_object('user', $oid,
34    sn => "snUser",
35    givenName => "givenNameUser",
36    expire => undef,
37    ), "Can create user $oid");
38ok(my $obj = $base->get_object('user', $oid), "user $oid is actually deleted");
39is($obj->get_attributes('sn'), "snUser");
40
41my $passwd = genid();
42ok($obj->set_password($passwd), "Can set password");
43ok($base->authenticate_user($oid, $passwd), "can authenticate user");
44ok(!$base->authenticate_user($oid, '----'),
45    "don't authenticate with invalid password");
46
47ok($base->delete_object('user', $oid), "Can delete user $oid");
48ok(!$base->get_object('user', $oid), "user $oid is actually deleted");
49}
50
51$base->rollback;
52
53{ # test alias
54
55my $oid = genid();
56
57ok($base->create_c_object('user', $oid,
58    sn => "snUser",
59    givenName => "givenNameUser",
60    expire => undef,
61    ), "Can create user $oid");
62ok(my $realobj = $base->get_object('user', $oid), "user $oid is actually created");
63
64my $aliasoid = genid();
65
66ok($base->CreateAlias('user', $aliasoid, $oid), "Can create alias object");
67
68ok(my $obj = $base->get_object('user', $aliasoid), "Can get object trought alias");
69is($obj->get_attributes('sn'), 'snUser');
70
71ok(my $aobj = $base->GetAlias('user', $aliasoid), "Can get alias object");
72
73is($aobj->get_attributes('oalias'), $oid);
74is($aobj->get_attributes('oaliascache'), $oid);
75
76my $oidsub = genid();
77ok($base->create_c_object('user', $oidsub,
78    sn => "snUserSub",
79    givenName => "givenNameSub",
80    expire => undef,
81    ), "Can create user $oid");
82ok(my $subobj = $base->get_object('user', $oidsub), "user $oidsub is actually created");
83
84$subobj->set_c_fields(
85    managerContact => $aliasoid,
86);
87
88is($subobj->get_c_field('manager'), $aliasoid, "Can get ref manager");
89is($subobj->GetAttributeValue('manager'), $oid, "Can get ref manager via GetAttributeValue");
90
91ok(eq_set(
92        [ $base->search_objects('user', 'sn=snUser') ],
93        [ $oid, $aliasoid ]
94    ), 'Search retrieve alias');
95
96ok(eq_set(
97        [ $base->search_objects('user', 'sn=snUser', 'oalias=NULL') ],
98        [ $oid ]
99    ), 'Search with oalias=NULL don\'t retrieve alias');
100
101ok(eq_set(
102        [ $base->search_objects('user', 'sn=XXXXXXXXX') ],
103        [ ]
104    ), 'Search with no result don\'t retrieve alias');
105
106ok($base->RemoveAlias('user', $aliasoid), "Removing Alias");
107ok(!$base->GetAlias('user', $aliasoid), "Cannot get removed alias object");
108
109$subobj->set_c_fields(
110    managerContact => $oid,
111);
112
113ok($base->CreateAlias('user', $aliasoid, "user.$oidsub.managerContact"), "Can create alias object");
114ok($aobj = $base->GetAlias('user', $aliasoid), "Can get alias object");
115is($aobj->get_attributes('oalias'), "user.$oidsub.managerContact");
116is($aobj->get_attributes('oaliascache'), $oid);
117
118ok($aobj->set_c_fields(oalias => $oidsub));
119is($aobj->get_attributes('oalias'), $oidsub);
120is($aobj->get_attributes('oaliascache'), $oidsub);
121
122ok($aobj->set_c_fields(oalias => "user.$oidsub.managerContact"));
123is($aobj->get_attributes('oalias'), "user.$oidsub.managerContact");
124is($aobj->get_attributes('oaliascache'), $oid);
125
126}
127
128$base->rollback;
129
130{ # test: group
131my $oid = genid();
132
133use_ok('LATMOS::Accounts::Bases::Sql::Group');
134ok($base->create_c_object('group', $oid,
135    description => 'Group Test'
136), "Can create group $oid");
137ok(my $obj = $base->get_object('group', $oid), "group $oid is actually deleted");
138is($obj->get_attributes('description'), "Group Test");
139
140ok($base->delete_object('group', $oid), "Can delete group $oid");
141ok(!$base->get_object('group', $oid), "group $oid is actually deleted");
142}
143
144$base->rollback;
145
146{ # test: nethost
147my $oid = genid();
148
149use_ok('LATMOS::Accounts::Bases::Sql::Nethost');
150ok($base->create_c_object('nethost', $oid,
151    description => 'Nethost Test',
152    ip => '255.255.255.255', # widely improbable to conflict with existing one
153), "Can create nethost $oid");
154ok(my $obj = $base->get_object('nethost', $oid), "nethost $oid is actually deleted");
155is($obj->get_attributes('description'), "Nethost Test");
156my ($ip) = $obj->get_attributes('ip');
157is($ip, '255.255.255.255');
158
159ok($base->delete_object('nethost', $oid), "Can delete nethost $oid");
160ok(!$base->get_object('nethost', $oid), "nethost $oid is actually deleted");
161}
162
163$base->rollback;
164
165{ # test: netzone
166my $oid = genid();
167
168use_ok('LATMOS::Accounts::Bases::Sql::Netzone');
169ok($base->create_c_object('netzone', $oid,
170    description => 'Netzone Test',
171    type => 'dhcp',
172), "Can create netzone $oid");
173ok(my $obj = $base->get_object('netzone', $oid), "netzone $oid is actually deleted");
174is($obj->get_attributes('description'), "Netzone Test");
175
176ok($base->delete_object('netzone', $oid), "Can delete netzone $oid");
177ok(!$base->get_object('netzone', $oid), "netzone $oid is actually deleted");
178}
179
180$base->rollback;
181
182{ # test employment
183use_ok('LATMOS::Accounts::Bases::Sql::Employment');
184my $baseEmp = genid();
185my $empUser = genid();
186
187my $baseEmpStart = DateTime->now->subtract(days => 60);
188my $baseEmpEnd   = DateTime->now->add(days => 60);
189
190ok($base->create_c_object('user', $empUser,
191    sn => "snUser",
192    givenName => "givenNameUser",
193    ), "Can create user $empUser");
194
195ok($base->create_c_object('employment', $baseEmp,
196    user => $empUser,
197    firstday => $baseEmpStart->dmy('/'),
198    lastday  => $baseEmpEnd->dmy('/'),
199), "Can create current employment");
200
201{
202    my $Emp      = genid();
203    my $EmpStart = DateTime->now->add(days => 61);
204    my $EmpEnd   = DateTime->now->add(days => 120);
205    ok($base->create_c_object('employment', $Emp,
206        user => $empUser,
207        firstday => $EmpStart->dmy('/'),
208        lastday  => $EmpEnd->dmy('/'),
209    ), "Can create employment after");
210    ok($base->delete_object('employment', $Emp), "Deleting Emp $Emp");
211}
212{
213    my $Emp      = genid();
214    my $EmpStart = DateTime->now->subtract(days => 40);
215    my $EmpEnd   = DateTime->now->subtract(days => 20);
216    ok(!$base->create_c_object('employment', $Emp,
217        user => $empUser,
218        firstday => $EmpStart->dmy('/'),
219        lastday  => $EmpEnd->dmy('/'),
220    ), "Cannot create employment overlaping start");
221    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
222}
223{
224    my $Emp      = genid();
225    my $EmpStart = DateTime->now->add(days => 30);
226    my $EmpEnd   = DateTime->now->add(days => 90);
227    ok(!$base->create_c_object('employment', $Emp,
228        user => $empUser,
229        firstday => $EmpStart->dmy('/'),
230        lastday  => $EmpEnd->dmy('/'),
231    ), "Cannot create employment overlapping end");
232    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
233}
234{
235    my $Emp      = genid();
236    my $EmpStart = DateTime->now->subtract(days => 90);
237    my $EmpEnd   = DateTime->now->add(days => 90);
238    ok(!$base->create_c_object('employment', $Emp,
239        user => $empUser,
240        firstday => $EmpStart->dmy('/'),
241        lastday  => $EmpEnd->dmy('/'),
242    ), "Cannot create employment overlapping another");
243    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
244}
245ok($base->delete_object('employment', $baseEmp), "Deleting Emp BaseEmp $baseEmp");
246
247{
248
249    $base->{_options}{allow_pasted_employment} = 1;
250    my $Emp      = genid();
251    my $EmpStart = DateTime->now->subtract(days => 90);
252    ok($base->create_c_object('employment', $Emp,
253        user => $empUser,
254        firstday => $EmpStart->dmy('/'),
255        lastday  => undef,
256    ), "Can create unlimited employment");
257    ok(my $ouser = $base->get_object('user', $empUser), "Getting user object");
258    ok(!$ouser->get_attributes('expire'), 'User don t expire');
259
260    my $EmpOld   = genid();
261    ok($base->create_c_object('employment', $EmpOld,
262        user => $empUser,
263        firstday => '1/1/2012',
264        lastday  => '31/12/2012',
265    ), "Cannot create pasted employement");
266
267    ok($ouser = $base->get_object('user', $empUser), "Getting user object");
268    ok(!$ouser->get_attributes('expire'), 'User still don t expire');
269
270    ok($base->delete_object('employment', $Emp), "Deleting Emp $Emp");
271    ok($base->delete_object('employment', $EmpOld), "Deleting Emp $EmpOld");
272    $base->{_options}{allow_pasted_employment} = undef;
273}
274
275ok($base->delete_object('user', $empUser), "Deleting user $empUser");
276}
277
278$base->rollback;
279
280{
281    diag('Testing search');
282 
283    ok($base->create_c_object('user', 'searchuaa',
284        sn => "Lastnamea",
285        givenName => "Firstnamea",
286        ), "Can create user searchuaa");
287    ok($base->create_c_object('user', 'searchuna',
288        sn => "Lastnamea",
289        ), "Can create user searchuna");
290    ok($base->create_c_object('user', 'searchuab',
291        sn => "Lastnamea",
292        givenName => "Firstnameb",
293        ), "Can create user searchuab");
294    ok($base->create_c_object('user', 'searchuba',
295        sn => "Lastnameb",
296        givenName => "Firstnamea",
297        ), "Can create user searchuba");
298    ok($base->create_c_object('user', 'searchubb',
299        sn => "Lastnameb",
300        givenName => "Firstnameb",
301        ), "Can create user searchubb");
302    ok($base->create_c_object('group', 'searchga',
303            member => [ 'searchuaa', 'searchuba' ],
304        ), "Can create group searchga");
305    ok($base->create_c_object('group', 'searchgb',
306            member => [ 'searchuab', 'searchuba' ],
307        ), "Can create group searchgb");
308
309    ok(eq_set(
310        [ $base->search_objects('user', 'givenName=Firstnamea') ],
311        [ 'searchuaa', 'searchuba' ]
312    ), 'Can search on single attribute');
313    ok(eq_set(
314        [ $base->search_objects('user', 'givenName=Firstnamea', 'givenName=Firstnameb') ],
315        [ 'searchuaa', 'searchuab', 'searchuba', 'searchubb' ]
316    ), 'Can search on single attribute with 2 values');
317    ok(eq_set(
318        [ $base->search_objects('user', 'givenName=Firstnamea||Firstnameb') ],
319        [ 'searchuaa', 'searchuba', 'searchuab', 'searchubb' ]
320    ), 'Can search on single attribute with 2 values using ||');
321    ok(eq_set(
322        [ $base->search_objects('user', 'givenName=Firstnamea', 'sn=Lastnamea') ],
323        [ 'searchuaa' ]
324    ), 'Can search on 2 attributes');
325    ok(! $base->search_objects('user', 'givenName=Firstnamea', 'sn=NoName'), 'Can search on 2 attributes, one return nothing');
326    ok($base->search_objects('user'), 'No filter return something');
327    ok(eq_set(
328        [ $base->search_objects('user', 'givenName=NULL', 'sn=Lastnamea') ],
329        [ 'searchuna' ]
330    ), 'Can search on NULL attributes');
331    ok(eq_set(
332        [ $base->search_objects('user', 'memberOf=searchga&&searchgb') ],
333        [ 'searchuba' ],
334    ), "Search using && with two values");
335    ok(eq_set(
336        [ $base->search_objects('group', 'member.givenName=Firstnameb') ],
337        [ 'searchgb' ],
338    ), "Search using recursive search");
339    ok(eq_set(
340        [ $base->search_objects('user', 'givenName~nameb') ],
341        [ 'searchuab', 'searchubb' ]
342    ), 'Can search using ~ operator');
343
344    ok($base->delete_object('user', 'searchuaa'), "deleting user searchuaa");
345    ok($base->delete_object('user', 'searchuna'), "deleting user searchuna");
346    ok($base->delete_object('user', 'searchuba'), "deleting user searchuba");
347    ok($base->delete_object('user', 'searchuab'), "deleting user searchuab");
348    ok($base->delete_object('user', 'searchubb'), "deleting user searchubb");
349}
350
351$base->rollback;
Note: See TracBrowser for help on using the repository browser.