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

Last change on this file since 1836 was 1836, checked in by nanardon, 8 years ago

Fix expire date not reset when unlimited statut is set

  • Property svn:keywords set to Id
File size: 9.3 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 => 75; # 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: group
54my $oid = genid();
55
56use_ok('LATMOS::Accounts::Bases::Sql::Group');
57ok($base->create_c_object('group', $oid,
58    description => 'Group Test'
59), "Can create group $oid");
60ok(my $obj = $base->get_object('group', $oid), "group $oid is actually deleted");
61is($obj->get_attributes('description'), "Group Test");
62
63ok($base->delete_object('group', $oid), "Can delete group $oid");
64ok(!$base->get_object('group', $oid), "group $oid is actually deleted");
65}
66
67$base->rollback;
68
69{ # test: nethost
70my $oid = genid();
71
72use_ok('LATMOS::Accounts::Bases::Sql::Nethost');
73ok($base->create_c_object('nethost', $oid,
74    description => 'Nethost Test',
75    ip => '255.255.255.255', # widely improbable to conflict with existing one
76), "Can create nethost $oid");
77ok(my $obj = $base->get_object('nethost', $oid), "nethost $oid is actually deleted");
78is($obj->get_attributes('description'), "Nethost Test");
79my ($ip) = $obj->get_attributes('ip');
80is($ip, '255.255.255.255');
81
82ok($base->delete_object('nethost', $oid), "Can delete nethost $oid");
83ok(!$base->get_object('nethost', $oid), "nethost $oid is actually deleted");
84}
85
86$base->rollback;
87
88{ # test: netzone
89my $oid = genid();
90
91use_ok('LATMOS::Accounts::Bases::Sql::Netzone');
92ok($base->create_c_object('netzone', $oid,
93    description => 'Netzone Test',
94    type => 'dhcp',
95), "Can create netzone $oid");
96ok(my $obj = $base->get_object('netzone', $oid), "netzone $oid is actually deleted");
97is($obj->get_attributes('description'), "Netzone Test");
98
99ok($base->delete_object('netzone', $oid), "Can delete netzone $oid");
100ok(!$base->get_object('netzone', $oid), "netzone $oid is actually deleted");
101}
102
103$base->rollback;
104
105{ # test employment
106use_ok('LATMOS::Accounts::Bases::Sql::Employment');
107my $baseEmp = genid();
108my $empUser = genid();
109
110my $baseEmpStart = DateTime->now->subtract(days => 60);
111my $baseEmpEnd   = DateTime->now->add(days => 60);
112
113ok($base->create_c_object('user', $empUser,
114    sn => "snUser",
115    givenName => "givenNameUser",
116    ), "Can create user $empUser");
117
118ok($base->create_c_object('employment', $baseEmp,
119    user => $empUser,
120    firstday => $baseEmpStart->dmy('/'),
121    lastday  => $baseEmpEnd->dmy('/'),
122), "Can create current employment");
123
124{
125    my $Emp      = genid();
126    my $EmpStart = DateTime->now->add(days => 61);
127    my $EmpEnd   = DateTime->now->add(days => 120);
128    ok($base->create_c_object('employment', $Emp,
129        user => $empUser,
130        firstday => $EmpStart->dmy('/'),
131        lastday  => $EmpEnd->dmy('/'),
132    ), "Can create employment after");
133    ok($base->delete_object('employment', $Emp), "Deleting Emp $Emp");
134}
135{
136    my $Emp      = genid();
137    my $EmpStart = DateTime->now->subtract(days => 40);
138    my $EmpEnd   = DateTime->now->subtract(days => 20);
139    ok(!$base->create_c_object('employment', $Emp,
140        user => $empUser,
141        firstday => $EmpStart->dmy('/'),
142        lastday  => $EmpEnd->dmy('/'),
143    ), "Cannot create employment overlaping start");
144    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
145}
146{
147    my $Emp      = genid();
148    my $EmpStart = DateTime->now->add(days => 30);
149    my $EmpEnd   = DateTime->now->add(days => 90);
150    ok(!$base->create_c_object('employment', $Emp,
151        user => $empUser,
152        firstday => $EmpStart->dmy('/'),
153        lastday  => $EmpEnd->dmy('/'),
154    ), "Cannot create employment overlapping end");
155    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
156}
157{
158    my $Emp      = genid();
159    my $EmpStart = DateTime->now->subtract(days => 90);
160    my $EmpEnd   = DateTime->now->add(days => 90);
161    ok(!$base->create_c_object('employment', $Emp,
162        user => $empUser,
163        firstday => $EmpStart->dmy('/'),
164        lastday  => $EmpEnd->dmy('/'),
165    ), "Cannot create employment overlapping another");
166    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
167}
168ok($base->delete_object('employment', $baseEmp), "Deleting Emp BaseEmp $baseEmp");
169
170{
171
172    $base->{_options}{allow_pasted_employment} = 1;
173    my $Emp      = genid();
174    my $EmpStart = DateTime->now->subtract(days => 90);
175    ok($base->create_c_object('employment', $Emp,
176        user => $empUser,
177        firstday => $EmpStart->dmy('/'),
178        lastday  => undef,
179    ), "Can create unlimited employment");
180    ok(my $ouser = $base->get_object('user', $empUser), "Getting user object");
181    ok(!$ouser->get_attributes('expire'), 'User don t expire');
182
183    my $EmpOld   = genid();
184    ok($base->create_c_object('employment', $EmpOld,
185        user => $empUser,
186        firstday => '1/1/2012',
187        lastday  => '31/12/2012',
188    ), "Cannot create pasted employement");
189
190    ok($ouser = $base->get_object('user', $empUser), "Getting user object");
191    ok(!$ouser->get_attributes('expire'), 'User still don t expire');
192
193    ok($base->delete_object('employment', $Emp), "Deleting Emp $Emp");
194    ok($base->delete_object('employment', $EmpOld), "Deleting Emp $EmpOld");
195    $base->{_options}{allow_pasted_employment} = undef;
196}
197
198ok($base->delete_object('user', $empUser), "Deleting user $empUser");
199}
200
201$base->rollback;
202
203{
204    diag('Testing search');
205 
206    ok($base->create_c_object('user', 'searchuaa',
207        sn => "Lastnamea",
208        givenName => "Firstnamea",
209        ), "Can create user searchuaa");
210    ok($base->create_c_object('user', 'searchuna',
211        sn => "Lastnamea",
212        ), "Can create user searchuna");
213    ok($base->create_c_object('user', 'searchuab',
214        sn => "Lastnamea",
215        givenName => "Firstnameb",
216        ), "Can create user searchuab");
217    ok($base->create_c_object('user', 'searchuba',
218        sn => "Lastnameb",
219        givenName => "Firstnamea",
220        ), "Can create user searchuba");
221    ok($base->create_c_object('user', 'searchubb',
222        sn => "Lastnameb",
223        givenName => "Firstnameb",
224        ), "Can create user searchubb");
225    ok($base->create_c_object('group', 'searchga',
226            member => [ 'searchuaa', 'searchuba' ],
227        ), "Can create group searchga");
228    ok($base->create_c_object('group', 'searchgb',
229            member => [ 'searchuab', 'searchuba' ],
230        ), "Can create group searchgb");
231
232    ok(eq_set(
233        [ $base->search_objects('user', 'givenName=Firstnamea') ],
234        [ 'searchuaa', 'searchuba' ]
235    ), 'Can search on single attribute');
236    ok(eq_set(
237        [ $base->search_objects('user', 'givenName=Firstnamea', 'givenName=Firstnameb') ],
238        [ 'searchuaa', 'searchuab', 'searchuba', 'searchubb' ]
239    ), 'Can search on single attribute with 2 values');
240    ok(eq_set(
241        [ $base->search_objects('user', 'givenName=Firstnamea||Firstnameb') ],
242        [ 'searchuaa', 'searchuba', 'searchuab', 'searchubb' ]
243    ), 'Can search on single attribute with 2 values using ||');
244    ok(eq_set(
245        [ $base->search_objects('user', 'givenName=Firstnamea', 'sn=Lastnamea') ],
246        [ 'searchuaa' ]
247    ), 'Can search on 2 attributes');
248    ok(! $base->search_objects('user', 'givenName=Firstnamea', 'sn=NoName'), 'Can search on 2 attributes, one return nothing');
249    ok($base->search_objects('user'), 'No filter return something');
250    ok(eq_set(
251        [ $base->search_objects('user', 'givenName=NULL', 'sn=Lastnamea') ],
252        [ 'searchuna' ]
253    ), 'Can search on NULL attributes');
254    ok(eq_set(
255        [ $base->search_objects('user', 'memberOf=searchga&&searchgb') ],
256        [ 'searchuba' ],
257    ), "Search using && with two values");
258    ok(eq_set(
259        [ $base->search_objects('group', 'member.givenName=Firstnameb') ],
260        [ 'searchgb' ],
261    ), "Search using recursive search");
262    ok(eq_set(
263        [ $base->search_objects('user', 'givenName~nameb') ],
264        [ 'searchuab', 'searchubb' ]
265    ), 'Can search using ~ operator');
266
267    ok($base->delete_object('user', 'searchuaa'), "deleting user searchuaa");
268    ok($base->delete_object('user', 'searchuna'), "deleting user searchuna");
269    ok($base->delete_object('user', 'searchuba'), "deleting user searchuba");
270    ok($base->delete_object('user', 'searchuab'), "deleting user searchuab");
271    ok($base->delete_object('user', 'searchubb'), "deleting user searchubb");
272}
273
274$base->rollback;
Note: See TracBrowser for help on using the repository browser.