ActiveSambaLdap 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/NEWS.en +40 -0
- data/NEWS.ja +44 -0
- data/README.en +366 -0
- data/README.ja +361 -0
- data/Rakefile +168 -0
- data/bin/asl-groupadd +73 -0
- data/bin/asl-groupadd.help +1 -0
- data/bin/asl-groupdel +61 -0
- data/bin/asl-groupdel.help +1 -0
- data/bin/asl-groupmod +137 -0
- data/bin/asl-groupmod.help +1 -0
- data/bin/asl-groupshow +33 -0
- data/bin/asl-groupshow.help +1 -0
- data/bin/asl-passwd +90 -0
- data/bin/asl-passwd.help +1 -0
- data/bin/asl-populate +101 -0
- data/bin/asl-populate.help +1 -0
- data/bin/asl-purge +26 -0
- data/bin/asl-purge.help +1 -0
- data/bin/asl-samba-computeradd +96 -0
- data/bin/asl-samba-computeradd.help +1 -0
- data/bin/asl-samba-groupadd +57 -0
- data/bin/asl-samba-groupadd.help +1 -0
- data/bin/asl-samba-groupdel +55 -0
- data/bin/asl-samba-groupdel.help +1 -0
- data/bin/asl-samba-groupmod +99 -0
- data/bin/asl-samba-groupmod.help +1 -0
- data/bin/asl-samba-useradd +100 -0
- data/bin/asl-samba-useradd.help +1 -0
- data/bin/asl-samba-userdel +49 -0
- data/bin/asl-samba-userdel.help +1 -0
- data/bin/asl-samba-usermod +94 -0
- data/bin/asl-samba-usermod.help +1 -0
- data/bin/asl-useradd +264 -0
- data/bin/asl-useradd.help +1 -0
- data/bin/asl-userdel +84 -0
- data/bin/asl-userdel.help +1 -0
- data/bin/asl-usermod +335 -0
- data/bin/asl-usermod.help +1 -0
- data/bin/asl-usershow +33 -0
- data/bin/asl-usershow.help +1 -0
- data/lib/active_samba_ldap.rb +42 -0
- data/lib/active_samba_ldap/account_entry.rb +208 -0
- data/lib/active_samba_ldap/base.rb +137 -0
- data/lib/active_samba_ldap/command.rb +100 -0
- data/lib/active_samba_ldap/computer.rb +24 -0
- data/lib/active_samba_ldap/computer_account_entry.rb +34 -0
- data/lib/active_samba_ldap/configuration.rb +333 -0
- data/lib/active_samba_ldap/dc.rb +19 -0
- data/lib/active_samba_ldap/entry.rb +81 -0
- data/lib/active_samba_ldap/get_text_support.rb +12 -0
- data/lib/active_samba_ldap/group.rb +17 -0
- data/lib/active_samba_ldap/group_entry.rb +187 -0
- data/lib/active_samba_ldap/idmap.rb +19 -0
- data/lib/active_samba_ldap/ou.rb +20 -0
- data/lib/active_samba_ldap/populate.rb +257 -0
- data/lib/active_samba_ldap/reloadable.rb +15 -0
- data/lib/active_samba_ldap/samba_account_entry.rb +225 -0
- data/lib/active_samba_ldap/samba_entry.rb +26 -0
- data/lib/active_samba_ldap/samba_group_entry.rb +143 -0
- data/lib/active_samba_ldap/unix_id_pool.rb +43 -0
- data/lib/active_samba_ldap/user.rb +44 -0
- data/lib/active_samba_ldap/user_account_entry.rb +30 -0
- data/lib/active_samba_ldap/version.rb +3 -0
- data/lib/samba/encrypt.rb +86 -0
- data/misc/rd2html.rb +42 -0
- data/po/ja/active-samba-ldap.po +465 -0
- data/rails/README +30 -0
- data/rails/init.rb +33 -0
- data/rails_generators/scaffold_active_samba_ldap/scaffold_active_samba_ldap_generator.rb +27 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/computer.rb +3 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/dc.rb +3 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/group.rb +3 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/idmap.rb +3 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/ldap.yml +24 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/ou.rb +3 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/samba_controller.rb +12 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/samba_helper.rb +2 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/samba_index.rhtml +17 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/samba_populate.rhtml +15 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/samba_purge.rhtml +10 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/unix_id_pool.rb +3 -0
- data/rails_generators/scaffold_active_samba_ldap/templates/user.rb +3 -0
- data/setup.rb +1585 -0
- data/test-unit/History.txt +107 -0
- data/test-unit/README.txt +52 -0
- data/test-unit/Rakefile +40 -0
- data/test-unit/TODO +5 -0
- data/test-unit/bin/testrb +5 -0
- data/test-unit/lib/test/unit.rb +342 -0
- data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
- data/test-unit/lib/test/unit/assertions.rb +1149 -0
- data/test-unit/lib/test/unit/attribute.rb +125 -0
- data/test-unit/lib/test/unit/autorunner.rb +329 -0
- data/test-unit/lib/test/unit/collector.rb +43 -0
- data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
- data/test-unit/lib/test/unit/collector/dir.rb +108 -0
- data/test-unit/lib/test/unit/collector/load.rb +135 -0
- data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
- data/test-unit/lib/test/unit/color-scheme.rb +86 -0
- data/test-unit/lib/test/unit/color.rb +96 -0
- data/test-unit/lib/test/unit/diff.rb +538 -0
- data/test-unit/lib/test/unit/error.rb +124 -0
- data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
- data/test-unit/lib/test/unit/failure.rb +110 -0
- data/test-unit/lib/test/unit/fixture.rb +176 -0
- data/test-unit/lib/test/unit/notification.rb +125 -0
- data/test-unit/lib/test/unit/omission.rb +143 -0
- data/test-unit/lib/test/unit/pending.rb +146 -0
- data/test-unit/lib/test/unit/priority.rb +181 -0
- data/test-unit/lib/test/unit/runner/console.rb +52 -0
- data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
- data/test-unit/lib/test/unit/testcase.rb +425 -0
- data/test-unit/lib/test/unit/testresult.rb +89 -0
- data/test-unit/lib/test/unit/testsuite.rb +110 -0
- data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +223 -0
- data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
- data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
- data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
- data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
- data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
- data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
- data/test-unit/lib/test/unit/util/observable.rb +90 -0
- data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
- data/test-unit/lib/test/unit/version.rb +7 -0
- data/test-unit/sample/adder.rb +13 -0
- data/test-unit/sample/subtracter.rb +12 -0
- data/test-unit/sample/tc_adder.rb +18 -0
- data/test-unit/sample/tc_subtracter.rb +18 -0
- data/test-unit/sample/test_user.rb +22 -0
- data/test-unit/sample/ts_examples.rb +7 -0
- data/test-unit/test/collector/test-descendant.rb +135 -0
- data/test-unit/test/collector/test-load.rb +333 -0
- data/test-unit/test/collector/test_dir.rb +406 -0
- data/test-unit/test/collector/test_objectspace.rb +98 -0
- data/test-unit/test/run-test.rb +13 -0
- data/test-unit/test/test-attribute.rb +86 -0
- data/test-unit/test/test-color-scheme.rb +56 -0
- data/test-unit/test/test-color.rb +47 -0
- data/test-unit/test/test-diff.rb +477 -0
- data/test-unit/test/test-emacs-runner.rb +60 -0
- data/test-unit/test/test-fixture.rb +287 -0
- data/test-unit/test/test-notification.rb +33 -0
- data/test-unit/test/test-omission.rb +81 -0
- data/test-unit/test/test-pending.rb +70 -0
- data/test-unit/test/test-priority.rb +119 -0
- data/test-unit/test/test-testcase.rb +507 -0
- data/test-unit/test/test_assertions.rb +1082 -0
- data/test-unit/test/test_error.rb +26 -0
- data/test-unit/test/test_failure.rb +33 -0
- data/test-unit/test/test_testresult.rb +113 -0
- data/test-unit/test/test_testsuite.rb +129 -0
- data/test-unit/test/testunit-test-util.rb +14 -0
- data/test-unit/test/ui/test_testrunmediator.rb +20 -0
- data/test-unit/test/util/test-method-owner-finder.rb +38 -0
- data/test-unit/test/util/test_backtracefilter.rb +41 -0
- data/test-unit/test/util/test_observable.rb +102 -0
- data/test-unit/test/util/test_procwrapper.rb +36 -0
- data/test/asl-test-utils.rb +276 -0
- data/test/command.rb +67 -0
- data/test/config.yaml.sample +17 -0
- data/test/run-test.rb +20 -0
- data/test/test_asl_groupadd.rb +69 -0
- data/test/test_asl_groupdel.rb +88 -0
- data/test/test_asl_groupmod.rb +259 -0
- data/test/test_asl_groupshow.rb +21 -0
- data/test/test_asl_passwd.rb +126 -0
- data/test/test_asl_populate.rb +92 -0
- data/test/test_asl_purge.rb +21 -0
- data/test/test_asl_useradd.rb +712 -0
- data/test/test_asl_userdel.rb +75 -0
- data/test/test_asl_usermod.rb +549 -0
- data/test/test_asl_usershow.rb +27 -0
- data/test/test_entry.rb +21 -0
- data/test/test_group.rb +21 -0
- data/test/test_password.rb +51 -0
- data/test/test_samba_encrypt.rb +35 -0
- data/test/test_user_home_directory.rb +43 -0
- metadata +314 -0
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'asl-test-utils'
|
2
|
+
|
3
|
+
class AslGroupDelTest < Test::Unit::TestCase
|
4
|
+
include AslTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@bin_dir, "asl-groupdel")
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_run_as_normal_user
|
12
|
+
assert_equal([false, "", _("need root authority.") + "\n"],
|
13
|
+
run_command_as_normal_user("group-name"))
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_not_exist_group
|
17
|
+
assert_equal([false, "", _("group doesn't exist: %s") % 'not-exist' + "\n"],
|
18
|
+
run_command("not-exist"))
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_exist_group
|
22
|
+
make_dummy_group do |group|
|
23
|
+
assert_equal([true, "", ""], run_command(group.cn))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_user_is_belonged_to
|
28
|
+
make_dummy_group do |group|
|
29
|
+
make_dummy_user do |user, password|
|
30
|
+
group.users << user
|
31
|
+
assert_equal([true, "", ""], run_command(group.cn))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_primary_group_of_user
|
37
|
+
make_dummy_group do |group|
|
38
|
+
make_dummy_user(:gid_number => group.gid_number) do |user, password|
|
39
|
+
format = _("cannot destroy group '%s' due to members " \
|
40
|
+
"who belong to the group as primary group: %s")
|
41
|
+
message = format % [group.cn, user.uid] + "\n"
|
42
|
+
assert_equal([false, "", message], run_command(group.cn))
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_primary_group_of_user_with_force
|
48
|
+
make_dummy_group do |group|
|
49
|
+
make_dummy_user(:gid_number => group.gid_number) do |user, password|
|
50
|
+
format = _("cannot change primary group from '%s' " \
|
51
|
+
"to other group due to no other belonged groups: %s")
|
52
|
+
message = format % [group.cn, user.uid] + "\n"
|
53
|
+
assert_equal([false, "", message], run_command(group.cn, "--force"))
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_primary_group_of_user_with_force_with_other_group
|
59
|
+
make_dummy_group do |group|
|
60
|
+
make_dummy_user(:gid_number => group.gid_number) do |user, password|
|
61
|
+
make_dummy_group do |group2|
|
62
|
+
group2.users << user
|
63
|
+
assert_equal(group.gid_number, user.gid_number)
|
64
|
+
assert_equal([true, "", ""], run_command(group.cn, "--force"))
|
65
|
+
user.reload
|
66
|
+
assert_equal(group2.gid_number, user.gid_number)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_primary_group_of_user_with_other_group
|
73
|
+
make_dummy_group do |group|
|
74
|
+
make_dummy_user(:gid_number => group.gid_number) do |user, password|
|
75
|
+
make_dummy_group do |group2|
|
76
|
+
group2.users << user
|
77
|
+
assert_equal(group.gid_number, user.gid_number)
|
78
|
+
format = _("cannot destroy group '%s' due to members " \
|
79
|
+
"who belong to the group as primary group: %s")
|
80
|
+
message = format % [group.cn, user.uid] + "\n"
|
81
|
+
assert_equal([false, "", message], run_command(group.cn))
|
82
|
+
user.reload
|
83
|
+
assert_equal(group.gid_number, user.gid_number)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,259 @@
|
|
1
|
+
require 'asl-test-utils'
|
2
|
+
|
3
|
+
class AslGroupModTest < Test::Unit::TestCase
|
4
|
+
include AslTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@bin_dir, "asl-groupmod")
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_not_exist_group
|
12
|
+
assert_equal([false, "", _("group doesn't exist: %s") % 'not-exist' + "\n"],
|
13
|
+
run_command("not-exist"))
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_rename
|
17
|
+
make_dummy_group do |group|
|
18
|
+
old_cn = group.cn
|
19
|
+
new_cn = "#{old_cn}-new"
|
20
|
+
ensure_delete_group(new_cn) do
|
21
|
+
assert(!@group_class.exists?(new_cn))
|
22
|
+
|
23
|
+
args = ["--rename", new_cn]
|
24
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
25
|
+
|
26
|
+
assert(!@group_class.exists?(old_cn))
|
27
|
+
assert(@group_class.exists?(new_cn))
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_rename_with_members
|
33
|
+
make_dummy_user do |user1, password1|
|
34
|
+
make_dummy_user do |user2, password2|
|
35
|
+
make_dummy_group do |group|
|
36
|
+
group.users.concat(user1, user2)
|
37
|
+
|
38
|
+
old_cn = group.cn
|
39
|
+
new_cn = "#{old_cn}-new"
|
40
|
+
ensure_delete_group(new_cn) do
|
41
|
+
assert(!@group_class.exists?(new_cn))
|
42
|
+
|
43
|
+
args = ["--rename", new_cn]
|
44
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
45
|
+
|
46
|
+
assert(!@group_class.exists?(old_cn))
|
47
|
+
assert(@group_class.exists?(new_cn))
|
48
|
+
|
49
|
+
members = []
|
50
|
+
new_group = @group_class.find(new_cn)
|
51
|
+
new_group.member_uid(true).each do |uid|
|
52
|
+
members.concat(@user_class.find(:all,
|
53
|
+
:attribute => "uid",
|
54
|
+
:value => uid))
|
55
|
+
end
|
56
|
+
assert_equal([user1.uid, user2.uid].sort,
|
57
|
+
members.collect {|m| m.uid}.sort)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_rename_with_members_primary
|
65
|
+
make_dummy_user do |user1, password1|
|
66
|
+
make_dummy_user do |user2, password2|
|
67
|
+
make_dummy_group do |group|
|
68
|
+
user1.primary_group = group
|
69
|
+
assert(user1.save)
|
70
|
+
user2.primary_group = group
|
71
|
+
assert(user2.save)
|
72
|
+
|
73
|
+
old_cn = group.cn
|
74
|
+
new_cn = "#{old_cn}-new"
|
75
|
+
ensure_delete_group(new_cn) do
|
76
|
+
assert(!@group_class.exists?(new_cn))
|
77
|
+
|
78
|
+
args = ["--rename", new_cn]
|
79
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
80
|
+
|
81
|
+
assert(!@group_class.exists?(old_cn))
|
82
|
+
assert(@group_class.exists?(new_cn))
|
83
|
+
|
84
|
+
new_group = @group_class.find(new_cn)
|
85
|
+
assert_equal(new_group.gid_number, user1.gid_number)
|
86
|
+
assert_equal(new_group.gid_number, user2.gid_number)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_gid_number
|
94
|
+
make_dummy_group do |group|
|
95
|
+
old_gid_number = group.gid_number
|
96
|
+
old_samba_sid = group.samba_sid
|
97
|
+
new_gid_number = old_gid_number.succ
|
98
|
+
|
99
|
+
old_rid = (2 * Integer(old_gid_number) + 1001).to_s
|
100
|
+
new_rid = (2 * Integer(new_gid_number) + 1001).to_s
|
101
|
+
new_samba_sid = old_samba_sid.sub(/#{Regexp.escape(old_rid)}$/, new_rid)
|
102
|
+
|
103
|
+
args = ["--gid", new_gid_number]
|
104
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
105
|
+
|
106
|
+
new_group = @group_class.find(group.cn)
|
107
|
+
assert_equal(new_gid_number, new_group.gid_number)
|
108
|
+
assert_equal(new_samba_sid, new_group.samba_sid)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_gid_number_non_unique
|
113
|
+
make_dummy_group do |group|
|
114
|
+
old_gid_number = group.gid_number
|
115
|
+
make_dummy_group do |group2|
|
116
|
+
new_gid_number = group2.gid_number
|
117
|
+
|
118
|
+
old_samba_sid = group.samba_sid
|
119
|
+
old_rid = (2 * Integer(old_gid_number) + 1001).to_s
|
120
|
+
new_rid = (2 * Integer(new_gid_number) + 1001).to_s
|
121
|
+
new_samba_sid = old_samba_sid.sub(/#{Regexp.escape(old_rid)}$/, new_rid)
|
122
|
+
|
123
|
+
message = _("gid number already exists: %s") % new_gid_number + "\n"
|
124
|
+
args = ["--gid", new_gid_number]
|
125
|
+
assert_asl_groupmod_failed(group.cn, message, *args)
|
126
|
+
|
127
|
+
new_group = @group_class.find(group.cn)
|
128
|
+
assert_equal(old_gid_number, new_group.gid_number)
|
129
|
+
assert_equal(old_samba_sid, new_group.samba_sid)
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_gid_number_allow_non_unique
|
135
|
+
make_dummy_group do |group|
|
136
|
+
old_gid_number = group.gid_number
|
137
|
+
make_dummy_group do |group2|
|
138
|
+
new_gid_number = group2.gid_number
|
139
|
+
|
140
|
+
old_samba_sid = group.samba_sid
|
141
|
+
old_rid = (2 * Integer(old_gid_number) + 1001).to_s
|
142
|
+
new_rid = (2 * Integer(new_gid_number) + 1001).to_s
|
143
|
+
new_samba_sid = old_samba_sid.sub(/#{Regexp.escape(old_rid)}$/, new_rid)
|
144
|
+
|
145
|
+
args = ["--gid", new_gid_number, "--allow-non-unique-gid"]
|
146
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
147
|
+
|
148
|
+
new_group = @group_class.find(group.cn)
|
149
|
+
assert_equal(new_gid_number, new_group.gid_number)
|
150
|
+
assert_equal(new_samba_sid, new_group.samba_sid)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_add_members
|
156
|
+
make_dummy_group do |group|
|
157
|
+
make_dummy_user do |user1, password1|
|
158
|
+
make_dummy_user do |user2, password2|
|
159
|
+
make_dummy_user do |user3, password3|
|
160
|
+
old_member_uids = group.member_uid(true)
|
161
|
+
|
162
|
+
new_members = [user1.uid, user2.uid]
|
163
|
+
args = ["--add-members", new_members.join(",")]
|
164
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
165
|
+
|
166
|
+
new_group = @group_class.find(group.cn)
|
167
|
+
new_member_uids = new_group.member_uid(true)
|
168
|
+
|
169
|
+
assert_equal(new_members.sort,
|
170
|
+
(new_member_uids - old_member_uids).sort)
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def test_delete_members
|
178
|
+
make_dummy_group do |group|
|
179
|
+
make_dummy_user do |user1, password1|
|
180
|
+
make_dummy_user do |user2, password2|
|
181
|
+
make_dummy_user do |user3, password3|
|
182
|
+
group.users.concat(user1, user2, user3)
|
183
|
+
|
184
|
+
old_member_uids = group.member_uid(true)
|
185
|
+
|
186
|
+
members_to_delete = [user1.uid, user2.uid]
|
187
|
+
args = ["--delete-members", members_to_delete.join(",")]
|
188
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
189
|
+
|
190
|
+
new_group = @group_class.find(group.cn)
|
191
|
+
new_member_uids = new_group.member_uid(true)
|
192
|
+
|
193
|
+
assert_equal(members_to_delete.sort,
|
194
|
+
(old_member_uids - new_member_uids).sort)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
def test_add_and_delete_members
|
202
|
+
make_dummy_group do |group|
|
203
|
+
make_dummy_user do |user1, password1|
|
204
|
+
make_dummy_user do |user2, password2|
|
205
|
+
make_dummy_user do |user3, password3|
|
206
|
+
group.users << user1
|
207
|
+
|
208
|
+
old_member_uids = group.member_uid(true)
|
209
|
+
|
210
|
+
new_members = [user2.uid, user3.uid]
|
211
|
+
args = ["--add-members", new_members.join(","),
|
212
|
+
"--delete-members", old_member_uids.join(",")]
|
213
|
+
assert_asl_groupmod_successfully(group.cn, *args)
|
214
|
+
|
215
|
+
new_group = @group_class.find(group.cn)
|
216
|
+
new_member_uids = new_group.member_uid(true)
|
217
|
+
|
218
|
+
assert_equal(new_members.sort,
|
219
|
+
(new_member_uids - old_member_uids).sort)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_duplicate_members
|
227
|
+
make_dummy_group do |group|
|
228
|
+
format = _("there is duplicated member in " \
|
229
|
+
"adding and deleting members: %s")
|
230
|
+
assert_asl_groupmod_failed(group.cn,
|
231
|
+
"#{format % 'user'}\n",
|
232
|
+
"--add-members", "user",
|
233
|
+
"--delete-members", "user")
|
234
|
+
|
235
|
+
assert_asl_groupmod_failed(group.cn,
|
236
|
+
"#{format % 'user2'}\n",
|
237
|
+
"--add-members", "user1,user2,user3",
|
238
|
+
"--delete-members", "user2")
|
239
|
+
|
240
|
+
format = _("there are duplicated members in " \
|
241
|
+
"adding and deleting members: %s")
|
242
|
+
assert_asl_groupmod_failed(group.cn,
|
243
|
+
"#{format % 'user2, user3'}\n",
|
244
|
+
"--add-members", "user1,user2,user3",
|
245
|
+
"--delete-members", "user2,user3,user4")
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
private
|
250
|
+
def assert_asl_groupmod_successfully(name, *args)
|
251
|
+
args << name
|
252
|
+
assert_equal([true, "", ""], run_command(*args))
|
253
|
+
end
|
254
|
+
|
255
|
+
def assert_asl_groupmod_failed(name, message, *args)
|
256
|
+
args << name
|
257
|
+
assert_equal([false, "", message], run_command(*args))
|
258
|
+
end
|
259
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'asl-test-utils'
|
2
|
+
|
3
|
+
class AslGroupShowTest < Test::Unit::TestCase
|
4
|
+
include AslTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@bin_dir, "asl-groupshow")
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_exist_group
|
12
|
+
make_dummy_group do |group|
|
13
|
+
assert_equal([true, group.to_ldif, ""], run_command(group.cn))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_not_exist_group
|
18
|
+
assert_equal([false, "", _("group doesn't exist: %s") % 'not-exist' + "\n"],
|
19
|
+
run_command("not-exist"))
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
require 'asl-test-utils'
|
2
|
+
|
3
|
+
class AslPasswdTest < Test::Unit::TestCase
|
4
|
+
include AslTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@bin_dir, "asl-passwd")
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_unknown_user
|
12
|
+
assert_equal([false, "", _("user doesn't exist: %s") % 'unknown' + "\n"],
|
13
|
+
run_command("unknown"))
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_change_password
|
17
|
+
make_dummy_user do |user, password|
|
18
|
+
new_password = "new#{password}"
|
19
|
+
|
20
|
+
assert_samba_password(user, password)
|
21
|
+
|
22
|
+
assert_change_password_successfully(user.uid, password, new_password)
|
23
|
+
|
24
|
+
user.reload
|
25
|
+
assert_samba_password(user, new_password)
|
26
|
+
|
27
|
+
assert_change_password_with_wrong_current_password(user.uid, password)
|
28
|
+
user.reload
|
29
|
+
assert_samba_password(user, new_password)
|
30
|
+
|
31
|
+
assert_change_password_successfully(user.uid,
|
32
|
+
new_password, password)
|
33
|
+
user.reload
|
34
|
+
assert_samba_password(user, password)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_change_password_only_unix
|
39
|
+
make_dummy_user do |user, password|
|
40
|
+
new_password = "new#{password}"
|
41
|
+
args = ["--no-samba-password"]
|
42
|
+
|
43
|
+
assert_samba_password(user, password)
|
44
|
+
|
45
|
+
assert_change_password_successfully(user.uid,
|
46
|
+
password, new_password,
|
47
|
+
*args)
|
48
|
+
user.reload
|
49
|
+
assert_samba_password(user, password)
|
50
|
+
|
51
|
+
assert_change_password_with_wrong_current_password(user.uid,
|
52
|
+
password, *args)
|
53
|
+
|
54
|
+
assert_change_password_successfully(user.uid,
|
55
|
+
new_password, password, *args)
|
56
|
+
user.reload
|
57
|
+
assert_samba_password(user, password)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_change_password_only_samba
|
62
|
+
make_dummy_user do |user, password|
|
63
|
+
new_password = "new#{password}"
|
64
|
+
args = ["--no-unix-password"]
|
65
|
+
|
66
|
+
assert_samba_password(user, password)
|
67
|
+
|
68
|
+
assert_change_password_successfully(user.uid,
|
69
|
+
password, new_password, *args)
|
70
|
+
user.reload
|
71
|
+
assert_samba_password(user, new_password)
|
72
|
+
|
73
|
+
assert_change_password_with_wrong_current_password(user.uid,
|
74
|
+
new_password, *args)
|
75
|
+
|
76
|
+
assert_change_password_successfully(user.uid, password, password,
|
77
|
+
*args)
|
78
|
+
user.reload
|
79
|
+
assert_samba_password(user, password)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
private
|
84
|
+
def change_password(name, old_password, new_password, *args)
|
85
|
+
run_command_as_normal_user(name, *args) do |input, output|
|
86
|
+
output.puts(old_password)
|
87
|
+
output.puts(new_password)
|
88
|
+
output.puts(new_password)
|
89
|
+
output.flush
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def assert_samba_password(user, password)
|
94
|
+
_wrap_assertion do
|
95
|
+
assert_equal(Samba::Encrypt.lm_hash(password),
|
96
|
+
user.samba_lm_password)
|
97
|
+
assert_equal(Samba::Encrypt.ntlm_hash(password),
|
98
|
+
user.samba_nt_password)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def assert_change_password_successfully(name, old_password, new_password,
|
103
|
+
*args)
|
104
|
+
assert_equal([true,
|
105
|
+
[
|
106
|
+
_("Enter your current password: "),
|
107
|
+
_("New password: "),
|
108
|
+
_("Retype new password: "),
|
109
|
+
].join("\n") + "\n",
|
110
|
+
"",
|
111
|
+
],
|
112
|
+
change_password(name, old_password, new_password, *args))
|
113
|
+
end
|
114
|
+
|
115
|
+
def assert_change_password_with_wrong_current_password(name, password, *args)
|
116
|
+
input_password = Proc.new do |input, output|
|
117
|
+
output.puts(password)
|
118
|
+
output.flush
|
119
|
+
end
|
120
|
+
assert_equal([false,
|
121
|
+
_("Enter your current password: ") + "\n",
|
122
|
+
_("password doesn't match.") + "\n",
|
123
|
+
],
|
124
|
+
run_command_as_normal_user(name, *args, &input_password))
|
125
|
+
end
|
126
|
+
end
|