source: trunk/LATMOS-Accounts/t/11_bases_unix.t @ 2099

Last change on this file since 2099 was 1306, checked in by nanardon, 9 years ago

Add addAttributeValue and delAttributeValue functions

This functions (and _ prefixed variantes) add or delete values to multiples
valued attributes and set it.

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