use strict; use warnings; use Test::More tests => 15; use File::Temp; use File::Path; use Config::IniFiles; use_ok('LATMOS::Accounts::Synchro'); use_ok('LATMOS::Accounts'); my $workdir = File::Temp::tempdir(); my $config = Config::IniFiles->new(); $config->AddSection('source'); $config->newval('source', 'type', 'unix'); $config->newval('source', 'use_shadow', 1); $config->AddSection('dest'); $config->newval('dest', 'type', 'unix'); $config->newval('dest', 'use_shadow', 1); foreach (qw(passwd shadow group gshadow)) { system('cp', "testdata/synchro/dest/$_", "$workdir/$_"); $config->newval('source', $_, "testdata/synchro/source/$_"); $config->newval('dest', $_, "$workdir/$_"); } ok($config->WriteConfig("$workdir/latmos-accounts.ini"), "can write config file for test"); diag("Write test done in $workdir/"); isa_ok( my $accounts = LATMOS::Accounts->new($workdir), 'LATMOS::Accounts' ); ok($accounts->base('source'), "can get source base"); ok($accounts->base('dest'), "can get dest base"); my $synchro = LATMOS::Accounts::Synchro->new( $accounts->base('source'), $accounts->base('dest'), state_file => "$workdir/status.ini", ); isa_ok($synchro, 'LATMOS::Accounts::Synchro'); ok($synchro->process, "process get succefull"); ok(my $unixb = LATMOS::Accounts::Bases->new( 'unix', { params => { passwd => "$workdir/passwd", shadow => "$workdir/shadow", group => "$workdir/group", gshadow => "$workdir/gshadow", } } ), "Can get unix base"); isa_ok($unixb, 'LATMOS::Accounts::Bases::Unix'); ok($unixb->load, "Can load unix base"); { ok(my $user = $unixb->get_object('user', 'bin'), "Can get bin user"); is($user->get_c_field('homeDirectory'), '/bin', 'Can get homeDirectory directory'); } { ok(my $user = $unixb->get_object('user', 'adm'), "Can get adm user"); is($user->get_field('gecos'), 'adm', 'Can get home directory'); } rmtree($workdir);