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

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

Add employment overlapping tests

  • Property svn:keywords set to Id
File size: 5.2 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 => 45; # 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    ), "Can create user $oid");
37ok(my $obj = $base->get_object('user', $oid), "user $oid is actually deleted");
38is($obj->get_attributes('sn'), "snUser");
39
40my $passwd = genid();
41ok($obj->set_password($passwd), "Can set password");
42ok($base->authenticate_user($oid, $passwd), "can authenticate user");
43ok(!$base->authenticate_user($oid, '----'),
44    "don't authenticate with invalid password");
45
46ok($base->delete_object('user', $oid), "Can delete user $oid");
47ok(!$base->get_object('user', $oid), "user $oid is actually deleted");
48}
49
50
51{ # test: group
52my $oid = genid();
53
54use_ok('LATMOS::Accounts::Bases::Sql::Group');
55ok($base->create_c_object('group', $oid,
56    description => 'Group Test'
57), "Can create group $oid");
58ok(my $obj = $base->get_object('group', $oid), "group $oid is actually deleted");
59is($obj->get_attributes('description'), "Group Test");
60
61ok($base->delete_object('group', $oid), "Can delete group $oid");
62ok(!$base->get_object('group', $oid), "group $oid is actually deleted");
63}
64
65{ # test: nethost
66my $oid = genid();
67
68use_ok('LATMOS::Accounts::Bases::Sql::Nethost');
69ok($base->create_c_object('nethost', $oid,
70    description => 'Nethost Test',
71    ip => '255.255.255.255', # widely improbable to conflict with existing one
72), "Can create nethost $oid");
73ok(my $obj = $base->get_object('nethost', $oid), "nethost $oid is actually deleted");
74is($obj->get_attributes('description'), "Nethost Test");
75my ($ip) = $obj->get_attributes('ip');
76is($ip, '255.255.255.255');
77
78ok($base->delete_object('nethost', $oid), "Can delete nethost $oid");
79ok(!$base->get_object('nethost', $oid), "nethost $oid is actually deleted");
80}
81
82{ # test: netzone
83my $oid = genid();
84
85use_ok('LATMOS::Accounts::Bases::Sql::Netzone');
86ok($base->create_c_object('netzone', $oid,
87    description => 'Netzone Test',
88    type => 'dhcp',
89), "Can create netzone $oid");
90ok(my $obj = $base->get_object('netzone', $oid), "netzone $oid is actually deleted");
91is($obj->get_attributes('description'), "Netzone Test");
92
93ok($base->delete_object('netzone', $oid), "Can delete netzone $oid");
94ok(!$base->get_object('netzone', $oid), "netzone $oid is actually deleted");
95}
96
97{ # test employment
98use_ok('LATMOS::Accounts::Bases::Sql::Employment');
99my $baseEmp = genid();
100my $empUser = genid();
101
102my $baseEmpStart = DateTime->now->subtract(days => 60);
103my $baseEmpEnd   = DateTime->now->add(days => 60);
104
105ok($base->create_c_object('user', $empUser,
106    sn => "snUser",
107    givenName => "givenNameUser",
108    ), "Can create user $empUser");
109
110ok($base->create_c_object('employment', $baseEmp,
111    user => $empUser,
112    firstday => $baseEmpStart->dmy('/'),
113    lastday  => $baseEmpEnd->dmy('/'),
114), "Can create current employment");
115
116{
117    my $Emp      = genid();
118    my $EmpStart = DateTime->now->add(days => 61);
119    my $EmpEnd   = DateTime->now->add(days => 120);
120    ok($base->create_c_object('employment', $Emp,
121        user => $empUser,
122        firstday => $EmpStart->dmy('/'),
123        lastday  => $EmpEnd->dmy('/'),
124    ), "Can create employment after");
125    ok($base->delete_object('employment', $Emp), "Deleting Emp $Emp");
126}
127{
128    my $Emp      = genid();
129    my $EmpStart = DateTime->now->subtract(days => 40);
130    my $EmpEnd   = DateTime->now->subtract(days => 20);
131    ok(!$base->create_c_object('employment', $Emp,
132        user => $empUser,
133        firstday => $EmpStart->dmy('/'),
134        lastday  => $EmpEnd->dmy('/'),
135    ), "Cannot create employment overlaping start");
136    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
137}
138{
139    my $Emp      = genid();
140    my $EmpStart = DateTime->now->add(days => 30);
141    my $EmpEnd   = DateTime->now->add(days => 90);
142    ok(!$base->create_c_object('employment', $Emp,
143        user => $empUser,
144        firstday => $EmpStart->dmy('/'),
145        lastday  => $EmpEnd->dmy('/'),
146    ), "Cannot create employment overlapping end");
147    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
148}
149{
150    my $Emp      = genid();
151    my $EmpStart = DateTime->now->subtract(days => 90);
152    my $EmpEnd   = DateTime->now->add(days => 90);
153    ok(!$base->create_c_object('employment', $Emp,
154        user => $empUser,
155        firstday => $EmpStart->dmy('/'),
156        lastday  => $EmpEnd->dmy('/'),
157    ), "Cannot create employment overlapping another");
158    ok(!$base->delete_object('employment', $Emp), "Deleting Emp $Emp");
159}
160
161ok($base->delete_object('employment', $baseEmp), "Deleting Emp $baseEmp");
162ok($base->delete_object('user', $empUser), "Deleting user $empUser");
163}
Note: See TracBrowser for help on using the repository browser.