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.
Files changed (180) hide show
  1. data/NEWS.en +40 -0
  2. data/NEWS.ja +44 -0
  3. data/README.en +366 -0
  4. data/README.ja +361 -0
  5. data/Rakefile +168 -0
  6. data/bin/asl-groupadd +73 -0
  7. data/bin/asl-groupadd.help +1 -0
  8. data/bin/asl-groupdel +61 -0
  9. data/bin/asl-groupdel.help +1 -0
  10. data/bin/asl-groupmod +137 -0
  11. data/bin/asl-groupmod.help +1 -0
  12. data/bin/asl-groupshow +33 -0
  13. data/bin/asl-groupshow.help +1 -0
  14. data/bin/asl-passwd +90 -0
  15. data/bin/asl-passwd.help +1 -0
  16. data/bin/asl-populate +101 -0
  17. data/bin/asl-populate.help +1 -0
  18. data/bin/asl-purge +26 -0
  19. data/bin/asl-purge.help +1 -0
  20. data/bin/asl-samba-computeradd +96 -0
  21. data/bin/asl-samba-computeradd.help +1 -0
  22. data/bin/asl-samba-groupadd +57 -0
  23. data/bin/asl-samba-groupadd.help +1 -0
  24. data/bin/asl-samba-groupdel +55 -0
  25. data/bin/asl-samba-groupdel.help +1 -0
  26. data/bin/asl-samba-groupmod +99 -0
  27. data/bin/asl-samba-groupmod.help +1 -0
  28. data/bin/asl-samba-useradd +100 -0
  29. data/bin/asl-samba-useradd.help +1 -0
  30. data/bin/asl-samba-userdel +49 -0
  31. data/bin/asl-samba-userdel.help +1 -0
  32. data/bin/asl-samba-usermod +94 -0
  33. data/bin/asl-samba-usermod.help +1 -0
  34. data/bin/asl-useradd +264 -0
  35. data/bin/asl-useradd.help +1 -0
  36. data/bin/asl-userdel +84 -0
  37. data/bin/asl-userdel.help +1 -0
  38. data/bin/asl-usermod +335 -0
  39. data/bin/asl-usermod.help +1 -0
  40. data/bin/asl-usershow +33 -0
  41. data/bin/asl-usershow.help +1 -0
  42. data/lib/active_samba_ldap.rb +42 -0
  43. data/lib/active_samba_ldap/account_entry.rb +208 -0
  44. data/lib/active_samba_ldap/base.rb +137 -0
  45. data/lib/active_samba_ldap/command.rb +100 -0
  46. data/lib/active_samba_ldap/computer.rb +24 -0
  47. data/lib/active_samba_ldap/computer_account_entry.rb +34 -0
  48. data/lib/active_samba_ldap/configuration.rb +333 -0
  49. data/lib/active_samba_ldap/dc.rb +19 -0
  50. data/lib/active_samba_ldap/entry.rb +81 -0
  51. data/lib/active_samba_ldap/get_text_support.rb +12 -0
  52. data/lib/active_samba_ldap/group.rb +17 -0
  53. data/lib/active_samba_ldap/group_entry.rb +187 -0
  54. data/lib/active_samba_ldap/idmap.rb +19 -0
  55. data/lib/active_samba_ldap/ou.rb +20 -0
  56. data/lib/active_samba_ldap/populate.rb +257 -0
  57. data/lib/active_samba_ldap/reloadable.rb +15 -0
  58. data/lib/active_samba_ldap/samba_account_entry.rb +225 -0
  59. data/lib/active_samba_ldap/samba_entry.rb +26 -0
  60. data/lib/active_samba_ldap/samba_group_entry.rb +143 -0
  61. data/lib/active_samba_ldap/unix_id_pool.rb +43 -0
  62. data/lib/active_samba_ldap/user.rb +44 -0
  63. data/lib/active_samba_ldap/user_account_entry.rb +30 -0
  64. data/lib/active_samba_ldap/version.rb +3 -0
  65. data/lib/samba/encrypt.rb +86 -0
  66. data/misc/rd2html.rb +42 -0
  67. data/po/ja/active-samba-ldap.po +465 -0
  68. data/rails/README +30 -0
  69. data/rails/init.rb +33 -0
  70. data/rails_generators/scaffold_active_samba_ldap/scaffold_active_samba_ldap_generator.rb +27 -0
  71. data/rails_generators/scaffold_active_samba_ldap/templates/computer.rb +3 -0
  72. data/rails_generators/scaffold_active_samba_ldap/templates/dc.rb +3 -0
  73. data/rails_generators/scaffold_active_samba_ldap/templates/group.rb +3 -0
  74. data/rails_generators/scaffold_active_samba_ldap/templates/idmap.rb +3 -0
  75. data/rails_generators/scaffold_active_samba_ldap/templates/ldap.yml +24 -0
  76. data/rails_generators/scaffold_active_samba_ldap/templates/ou.rb +3 -0
  77. data/rails_generators/scaffold_active_samba_ldap/templates/samba_controller.rb +12 -0
  78. data/rails_generators/scaffold_active_samba_ldap/templates/samba_helper.rb +2 -0
  79. data/rails_generators/scaffold_active_samba_ldap/templates/samba_index.rhtml +17 -0
  80. data/rails_generators/scaffold_active_samba_ldap/templates/samba_populate.rhtml +15 -0
  81. data/rails_generators/scaffold_active_samba_ldap/templates/samba_purge.rhtml +10 -0
  82. data/rails_generators/scaffold_active_samba_ldap/templates/unix_id_pool.rb +3 -0
  83. data/rails_generators/scaffold_active_samba_ldap/templates/user.rb +3 -0
  84. data/setup.rb +1585 -0
  85. data/test-unit/History.txt +107 -0
  86. data/test-unit/README.txt +52 -0
  87. data/test-unit/Rakefile +40 -0
  88. data/test-unit/TODO +5 -0
  89. data/test-unit/bin/testrb +5 -0
  90. data/test-unit/lib/test/unit.rb +342 -0
  91. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  92. data/test-unit/lib/test/unit/assertions.rb +1149 -0
  93. data/test-unit/lib/test/unit/attribute.rb +125 -0
  94. data/test-unit/lib/test/unit/autorunner.rb +329 -0
  95. data/test-unit/lib/test/unit/collector.rb +43 -0
  96. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  97. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  98. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  99. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  100. data/test-unit/lib/test/unit/color-scheme.rb +86 -0
  101. data/test-unit/lib/test/unit/color.rb +96 -0
  102. data/test-unit/lib/test/unit/diff.rb +538 -0
  103. data/test-unit/lib/test/unit/error.rb +124 -0
  104. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  105. data/test-unit/lib/test/unit/failure.rb +110 -0
  106. data/test-unit/lib/test/unit/fixture.rb +176 -0
  107. data/test-unit/lib/test/unit/notification.rb +125 -0
  108. data/test-unit/lib/test/unit/omission.rb +143 -0
  109. data/test-unit/lib/test/unit/pending.rb +146 -0
  110. data/test-unit/lib/test/unit/priority.rb +181 -0
  111. data/test-unit/lib/test/unit/runner/console.rb +52 -0
  112. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  113. data/test-unit/lib/test/unit/testcase.rb +425 -0
  114. data/test-unit/lib/test/unit/testresult.rb +89 -0
  115. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  116. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  117. data/test-unit/lib/test/unit/ui/console/testrunner.rb +223 -0
  118. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  119. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  120. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  121. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  122. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  123. data/test-unit/lib/test/unit/util/method-owner-finder.rb +28 -0
  124. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  125. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  126. data/test-unit/lib/test/unit/version.rb +7 -0
  127. data/test-unit/sample/adder.rb +13 -0
  128. data/test-unit/sample/subtracter.rb +12 -0
  129. data/test-unit/sample/tc_adder.rb +18 -0
  130. data/test-unit/sample/tc_subtracter.rb +18 -0
  131. data/test-unit/sample/test_user.rb +22 -0
  132. data/test-unit/sample/ts_examples.rb +7 -0
  133. data/test-unit/test/collector/test-descendant.rb +135 -0
  134. data/test-unit/test/collector/test-load.rb +333 -0
  135. data/test-unit/test/collector/test_dir.rb +406 -0
  136. data/test-unit/test/collector/test_objectspace.rb +98 -0
  137. data/test-unit/test/run-test.rb +13 -0
  138. data/test-unit/test/test-attribute.rb +86 -0
  139. data/test-unit/test/test-color-scheme.rb +56 -0
  140. data/test-unit/test/test-color.rb +47 -0
  141. data/test-unit/test/test-diff.rb +477 -0
  142. data/test-unit/test/test-emacs-runner.rb +60 -0
  143. data/test-unit/test/test-fixture.rb +287 -0
  144. data/test-unit/test/test-notification.rb +33 -0
  145. data/test-unit/test/test-omission.rb +81 -0
  146. data/test-unit/test/test-pending.rb +70 -0
  147. data/test-unit/test/test-priority.rb +119 -0
  148. data/test-unit/test/test-testcase.rb +507 -0
  149. data/test-unit/test/test_assertions.rb +1082 -0
  150. data/test-unit/test/test_error.rb +26 -0
  151. data/test-unit/test/test_failure.rb +33 -0
  152. data/test-unit/test/test_testresult.rb +113 -0
  153. data/test-unit/test/test_testsuite.rb +129 -0
  154. data/test-unit/test/testunit-test-util.rb +14 -0
  155. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  156. data/test-unit/test/util/test-method-owner-finder.rb +38 -0
  157. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  158. data/test-unit/test/util/test_observable.rb +102 -0
  159. data/test-unit/test/util/test_procwrapper.rb +36 -0
  160. data/test/asl-test-utils.rb +276 -0
  161. data/test/command.rb +67 -0
  162. data/test/config.yaml.sample +17 -0
  163. data/test/run-test.rb +20 -0
  164. data/test/test_asl_groupadd.rb +69 -0
  165. data/test/test_asl_groupdel.rb +88 -0
  166. data/test/test_asl_groupmod.rb +259 -0
  167. data/test/test_asl_groupshow.rb +21 -0
  168. data/test/test_asl_passwd.rb +126 -0
  169. data/test/test_asl_populate.rb +92 -0
  170. data/test/test_asl_purge.rb +21 -0
  171. data/test/test_asl_useradd.rb +712 -0
  172. data/test/test_asl_userdel.rb +75 -0
  173. data/test/test_asl_usermod.rb +549 -0
  174. data/test/test_asl_usershow.rb +27 -0
  175. data/test/test_entry.rb +21 -0
  176. data/test/test_group.rb +21 -0
  177. data/test/test_password.rb +51 -0
  178. data/test/test_samba_encrypt.rb +35 -0
  179. data/test/test_user_home_directory.rb +43 -0
  180. 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