use strict; use warnings; use Test::More tests => 48; use File::Temp qw(mkstemp); use_ok('LATMOS::Accounts::Utils'); use_ok('LATMOS::Accounts::Mail'); use LATMOS::Accounts::Log; ok(la_log(LA_NOTICE, "a notice"), "can run la_log"); { my ($fh, $file) = mkstemp( "tmpfileXXXXX" ); print $fh <[0]{givenName}, "Prénom", "Attribute givenName is properly return"); } ok(!LATMOS::Accounts::Utils::check_oid_validity('toto'), '"toto" is valid oid'); ok(!LATMOS::Accounts::Utils::check_oid_validity('toTo'), '"toTo" is valid oid'); ok(LATMOS::Accounts::Utils::check_oid_validity('to to'), '"to to" is invalid oid'); ok(LATMOS::Accounts::Utils::check_oid_validity(' toto'), '" toto" is invalid oid'); ok(!LATMOS::Accounts::Utils::check_ug_validity('toto'), '"toto" is valid username'); ok(LATMOS::Accounts::Utils::check_ug_validity('toTo'), '"toTo" is invalid username'); ok(LATMOS::Accounts::Utils::check_ug_validity('to to'), '"to to" is invalid username'); ok(LATMOS::Accounts::Utils::check_ug_validity(' toto'), '" toto" is invalid username'); ok(LATMOS::Accounts::Utils::check_ug_validity('5toto'), '"5toto" is invalid username'); ok(!LATMOS::Accounts::Utils::check_ug_validity('t5oto'), '"t5oto" is valid username'); is(LATMOS::Accounts::Utils::buildLogin('Toto'), 'toto', "buildLogin return toto"); is(LATMOS::Accounts::Utils::buildLogin('To\'to'), 'toto', "buildLogin return toto"); is(LATMOS::Accounts::Utils::buildLogin('#'), undef, "Impossible name return undef"); is(LATMOS::Accounts::Utils::buildLogin('TotoTataTiti'), 'tototata', "buildLogin return 8 byte length login"); is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^toto$/ ? 0 : 1 }, 'toto'), undef, "buildLogin: cb works"); is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^toto$/ ? 0 : 1 }, 'Toto', 'Titi'), 'totot', "buildLogin: try others login"); is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^totot?$/ ? 0 : 1 }, 'toto', 'titi'), 'tototi', "buildLogin: try others login"); is(LATMOS::Accounts::Utils::buildLogin(sub { $_[0] =~ /^toto/ ? 0 : 1 }, 'toto', 'titi'), undef, "buildLogin: return undef if no possibility"); is(LATMOS::Accounts::Utils::buildLogin(sub { length($_[0]) > 9 }, 'TotoTataTiti'), 'tototatati', "buildLogin return 8 byte length login"); ok(LATMOS::Accounts::Utils::genpassword(), "can generate a password"); ok(LATMOS::Accounts::Utils::genpassword( checkpassword => sub { 1 }, ), "can generate a password"); my $clearpass = 'passwd'; my $password = ''; $password = LATMOS::Accounts::Utils::Crypt($clearpass, 'DES'); like($password, qr/^\w\w.*/, 'Password encrypted using DES'); is(crypt($clearpass, $password), $password); $password = LATMOS::Accounts::Utils::Crypt($clearpass, 'MD5'); like($password, qr/^\$1\$.*/, 'Password encrypted using MD5'); is(crypt($clearpass, $password), $password); $password = LATMOS::Accounts::Utils::Crypt($clearpass, 'sha-256'); like($password, qr/^\$5\$.*/, 'Password encrypted using SHA-256'); is(crypt($clearpass, $password), $password); $password = LATMOS::Accounts::Utils::Crypt($clearpass, 'SHA-512'); like($password, qr/^\$6\$.*/, 'Password encrypted using SHA-512'); is(crypt($clearpass, $password), $password); $password = LATMOS::Accounts::Utils::Crypt($clearpass, '5'); like($password, qr/^\$5\$.*/, 'Password encrypted using SHA-256 (number)'); is(crypt($clearpass, $password), $password); $password = LATMOS::Accounts::Utils::Crypt($clearpass); like($password, qr/^\$1\$.*/, 'Password encrypted using MD5 (default)'); is(crypt($clearpass, $password), $password); is(yesno('yes'), 1, 'yes is true'); is(yesno('true'), 1, 'true is true'); is(yesno('23'), 1, '23 is true'); is(yesno('no'), 0, 'no is false'); is(yesno('what'), 'what', 'what is what?');