1 | use strict; |
---|
2 | use warnings; |
---|
3 | use Test::More tests => 33; |
---|
4 | use File::Temp; |
---|
5 | |
---|
6 | use_ok('LATMOS::Accounts::Bases'); |
---|
7 | use_ok('LATMOS::Accounts::Bases::Objects'); |
---|
8 | use_ok('LATMOS::Accounts::Bases::Unix'); |
---|
9 | use_ok('LATMOS::Accounts::Bases::Unix::User'); |
---|
10 | use_ok('LATMOS::Accounts::Bases::Unix::Group'); |
---|
11 | |
---|
12 | my $dir = File::Temp::tempdir; |
---|
13 | |
---|
14 | foreach (qw(passwd shadow group gshadow)) { |
---|
15 | system('cp', "testdata/$_", "$dir/$_"); |
---|
16 | } |
---|
17 | |
---|
18 | ok(my $unixb = LATMOS::Accounts::Bases->new( |
---|
19 | 'unix', |
---|
20 | { params => { |
---|
21 | passwd => "$dir/passwd", |
---|
22 | shadow => "$dir/shadow", |
---|
23 | group => "$dir/group", |
---|
24 | gshadow => "$dir/gshadow", |
---|
25 | } } |
---|
26 | ), "Can get unix base"); |
---|
27 | isa_ok($unixb, 'LATMOS::Accounts::Bases'); |
---|
28 | isa_ok($unixb, 'LATMOS::Accounts::Bases::Unix'); |
---|
29 | ok($unixb->load, "Can load unix base"); |
---|
30 | |
---|
31 | is( $unixb->attribute('user', 'homeDirectory')->iname, "home", "can call get_fields_name"); |
---|
32 | |
---|
33 | ok(my $user = $unixb->get_object('user', 'root'), "Can get root user"); |
---|
34 | ok(my $group = $unixb->get_object('group', 'root'), "Can get root group"); |
---|
35 | |
---|
36 | is($user->get_c_field('homeDirectory'), '/root', 'Can get homeDirectory directory'); |
---|
37 | is($user->get_field('home'), '/root', 'Can get home directory'); |
---|
38 | |
---|
39 | is($user->get_field('shell'), '/bin/bash', 'Can get login shell'); |
---|
40 | ok($user->set_fields(shell => '/bin/tcsh'), "Can set login shell"); |
---|
41 | is($user->get_field('shell'), '/bin/tcsh', 'Can get modified login shell'); |
---|
42 | ok($unixb->create_object('user', 'admin', |
---|
43 | uid => 2, gid => 2, |
---|
44 | home => '/home/admin', |
---|
45 | shell => '/bin/sh', |
---|
46 | ), "Can create a user"); |
---|
47 | |
---|
48 | ok($unixb->commit, "Can save unix base"); |
---|
49 | ok(eq_set($group->get_c_field('memberUID'), [ 'user' ]), 'can get group\'s member'); |
---|
50 | ok($group->set_c_fields('memberUID', [ 'admin' ]), 'can set group\'s member'); |
---|
51 | ok(eq_set($group->get_c_field('memberUID'), [ 'admin' ]), 'can get group\'s member after change'); |
---|
52 | |
---|
53 | ok($group->addAttributeValue('memberUID', 'root'), 'can use addAttributeValue'); |
---|
54 | ok(eq_set($group->get_c_field('memberUID'), [ 'admin', 'root' ]), 'can get group\'s member after addAttributeValue'); |
---|
55 | ok($group->delAttributeValue('memberUID', 'root'), 'can use addAttributeValue'); |
---|
56 | ok(eq_set($group->get_c_field('memberUID'), [ 'admin' ]), 'can get group\'s member after addAttributeValue'); |
---|
57 | |
---|
58 | ok(my $unixbmod = LATMOS::Accounts::Bases->new( |
---|
59 | 'unix', |
---|
60 | { params => { |
---|
61 | passwd => "$dir/passwd", |
---|
62 | shadow => "$dir/shadow", |
---|
63 | group => "$dir/group", |
---|
64 | gshadow => "$dir/gshadow", |
---|
65 | } } |
---|
66 | ), "Can get unix base"); |
---|
67 | ok($unixbmod->load, "Can load saved db"); |
---|
68 | ok($user = $unixbmod->get_object('user', 'root'), |
---|
69 | "Can get object from modified db"); |
---|
70 | is($user->get_field('shell'), '/bin/tcsh', 'Can get modified login shell'); |
---|
71 | |
---|
72 | ok($unixbmod->rename_object('user', 'root', 'rootb'), "can rename object"); |
---|
73 | ok($unixbmod->get_object('user', 'rootb'), "can get renamed object"); |
---|
74 | ok(!$unixbmod->get_object('user', 'root'), "can get old object"); |
---|
75 | |
---|
76 | system('rm', '-fr', $dir); |
---|