source: trunk/LATMOS-Accounts/t/05_utils.t @ 2462

Last change on this file since 2462 was 2352, checked in by nanardon, 4 years ago

Add basic template features

File size: 4.7 KB
RevLine 
[209]1use strict;
2use warnings;
[2352]3use Test::More tests => 48;
[335]4use File::Temp qw(mkstemp);
[209]5
6use_ok('LATMOS::Accounts::Utils');
[1216]7use_ok('LATMOS::Accounts::Mail');
[210]8use LATMOS::Accounts::Log;
9
10ok(la_log(LA_NOTICE, "a notice"), "can run la_log");
[335]11
[1985]12{
[335]13my ($fh, $file) = mkstemp( "tmpfileXXXXX" );
14print $fh <<EOF;
15attr1: attr1
16attr: val1
17attr: val2
18EOF
19
20seek($fh, 0, 0);
21
22my %attributes = LATMOS::Accounts::Utils::parse_obj_file($fh);
23$fh = undef;
[338]24unlink($file);
[335]25
26# now testing
27is($attributes{'attr1'}, 'attr1', "can get attribute from file");
28ok(eq_set($attributes{'attr'}, [ qw(val1 val2) ]),
29        "can get multiple values attribute");
30
[2352]31my %attributes2 = LATMOS::Accounts::Utils::parse_obj_text(
32<<EOF
33attr1: attr1
34attr: val1
35attr: val2
36EOF
37);
38
39# now testing
40is($attributes2{'attr1'}, 'attr1', "can get attribute from file");
41ok(eq_set($attributes2{'attr'}, [ qw(val1 val2) ]),
42        "can get multiple values attribute");
43
[335]44$ENV{EDITOR} = 'sleep 1; /bin/touch';
45
46ok(LATMOS::Accounts::Utils::dump_read_temp_file(
47        sub { 1; }, sub { 1; }), "Can edit temp file");
[674]48
[1985]49}
50{
51my ($fh, $file) = mkstemp( "tmpfileXXXXX" );
52binmode($fh, ":encoding(UTF-8)");
53print $fh <<EOF;
54sn,givenName
55Nom,Prénom
56EOF
57
58seek($fh, 0, 0);
59
60my $res = LATMOS::Accounts::Utils::loadCSV($fh);
61$fh = undef;
62unlink($file);
63
64# now testing
65is(scalar(@{ $res }), 1, "loadCSV return same number result");
66is($res->[0]{givenName}, "Prénom", "Attribute givenName is properly return");
67
68}
69
[674]70ok(!LATMOS::Accounts::Utils::check_oid_validity('toto'), '"toto" is valid oid');
71ok(!LATMOS::Accounts::Utils::check_oid_validity('toTo'), '"toTo" is valid oid');
72ok(LATMOS::Accounts::Utils::check_oid_validity('to to'), '"to to" is invalid oid');
73ok(LATMOS::Accounts::Utils::check_oid_validity(' toto'), '" toto" is invalid oid');
74
75ok(!LATMOS::Accounts::Utils::check_ug_validity('toto'), '"toto" is valid username');
76ok(LATMOS::Accounts::Utils::check_ug_validity('toTo'), '"toTo" is invalid username');
77ok(LATMOS::Accounts::Utils::check_ug_validity('to to'), '"to to" is invalid username');
78ok(LATMOS::Accounts::Utils::check_ug_validity(' toto'), '" toto" is invalid username');
79ok(LATMOS::Accounts::Utils::check_ug_validity('5toto'), '"5toto" is invalid username');
80ok(!LATMOS::Accounts::Utils::check_ug_validity('t5oto'), '"t5oto" is valid username');
[1378]81
[1984]82is(LATMOS::Accounts::Utils::buildLogin('Toto'), 'toto', "buildLogin return toto");
83is(LATMOS::Accounts::Utils::buildLogin('To\'to'), 'toto', "buildLogin return toto");
84is(LATMOS::Accounts::Utils::buildLogin('#'), undef, "Impossible name return undef");
85is(LATMOS::Accounts::Utils::buildLogin('TotoTataTiti'), 'tototata', "buildLogin return 8 byte length login");
86is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^toto$/ ? 0 : 1 }, 'toto'), undef, "buildLogin: cb works");
87is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^toto$/ ? 0 : 1 }, 'Toto', 'Titi'), 'totot', "buildLogin: try others login");
88is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^totot?$/ ? 0 : 1 }, 'toto', 'titi'), 'tototi', "buildLogin: try others login");
89is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^toto/ ? 0 : 1 }, 'toto', 'titi'), undef, "buildLogin: return undef if no possibility");
90is(LATMOS::Accounts::Utils::buildLogin(sub { length($_[0]) > 9 }, 'TotoTataTiti'), 'tototatati', "buildLogin return 8 byte length login");
91
[2071]92ok(LATMOS::Accounts::Utils::genpassword(), "can generate a password");
93ok(LATMOS::Accounts::Utils::genpassword(
94        checkpassword => sub { 1 },
95    ), "can generate a password");
96
[2041]97my $clearpass = 'passwd';
98my $password = '';
99$password = LATMOS::Accounts::Utils::Crypt($clearpass, 'DES');
100like($password, qr/^\w\w.*/, 'Password encrypted using DES');
101is(crypt($clearpass, $password), $password);
102
103$password = LATMOS::Accounts::Utils::Crypt($clearpass, 'MD5');
104like($password, qr/^\$1\$.*/, 'Password encrypted using MD5');
105is(crypt($clearpass, $password), $password);
106
107$password = LATMOS::Accounts::Utils::Crypt($clearpass, 'sha-256');
108like($password, qr/^\$5\$.*/, 'Password encrypted using SHA-256');
109is(crypt($clearpass, $password), $password);
110
111$password = LATMOS::Accounts::Utils::Crypt($clearpass, 'SHA-512');
112like($password, qr/^\$6\$.*/, 'Password encrypted using SHA-512');
113is(crypt($clearpass, $password), $password);
114
115$password = LATMOS::Accounts::Utils::Crypt($clearpass, '5');
116like($password, qr/^\$5\$.*/, 'Password encrypted using SHA-256 (number)');
117is(crypt($clearpass, $password), $password);
118
119$password = LATMOS::Accounts::Utils::Crypt($clearpass);
120like($password, qr/^\$1\$.*/, 'Password encrypted using MD5 (default)');
121is(crypt($clearpass, $password), $password);
122
[1378]123is(yesno('yes'),  1, 'yes is true');
124is(yesno('true'), 1, 'true is true');
125is(yesno('23'),   1, '23 is true');
126is(yesno('no'),   0, 'no is false');
127is(yesno('what'), 'what', 'what is what?');
Note: See TracBrowser for help on using the repository browser.