ruby-activeldap 0.7.4 → 0.8.0
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/CHANGES +375 -0
- data/COPYING +340 -0
- data/LICENSE +58 -0
- data/Manifest.txt +33 -0
- data/README +63 -0
- data/Rakefile +37 -0
- data/TODO +31 -0
- data/benchmark/bench-al.rb +152 -0
- data/lib/{activeldap.rb → active_ldap.rb} +280 -263
- data/lib/active_ldap/adaptor/base.rb +29 -0
- data/lib/active_ldap/adaptor/ldap.rb +466 -0
- data/lib/active_ldap/association/belongs_to.rb +38 -0
- data/lib/active_ldap/association/belongs_to_many.rb +40 -0
- data/lib/active_ldap/association/collection.rb +80 -0
- data/lib/active_ldap/association/has_many.rb +48 -0
- data/lib/active_ldap/association/has_many_wrap.rb +56 -0
- data/lib/active_ldap/association/proxy.rb +89 -0
- data/lib/active_ldap/associations.rb +162 -0
- data/lib/active_ldap/attributes.rb +199 -0
- data/lib/active_ldap/base.rb +1343 -0
- data/lib/active_ldap/callbacks.rb +19 -0
- data/lib/active_ldap/command.rb +46 -0
- data/lib/active_ldap/configuration.rb +96 -0
- data/lib/active_ldap/connection.rb +137 -0
- data/lib/{activeldap → active_ldap}/ldap.rb +1 -1
- data/lib/active_ldap/object_class.rb +70 -0
- data/lib/active_ldap/schema.rb +258 -0
- data/lib/{activeldap → active_ldap}/timeout.rb +0 -0
- data/lib/{activeldap → active_ldap}/timeout_stub.rb +0 -0
- data/lib/active_ldap/user_password.rb +92 -0
- data/lib/active_ldap/validations.rb +78 -0
- data/rails/plugin/active_ldap/README +54 -0
- data/rails/plugin/active_ldap/init.rb +6 -0
- data/test/TODO +2 -0
- data/test/al-test-utils.rb +337 -0
- data/test/command.rb +62 -0
- data/test/config.yaml +8 -0
- data/test/config.yaml.sample +6 -0
- data/test/run-test.rb +17 -0
- data/test/test-unit-ext.rb +2 -0
- data/test/test_associations.rb +334 -0
- data/test/test_attributes.rb +71 -0
- data/test/test_base.rb +345 -0
- data/test/test_base_per_instance.rb +32 -0
- data/test/test_bind.rb +53 -0
- data/test/test_callback.rb +35 -0
- data/test/test_connection.rb +38 -0
- data/test/test_connection_per_class.rb +50 -0
- data/test/test_find.rb +36 -0
- data/test/test_groupadd.rb +50 -0
- data/test/test_groupdel.rb +46 -0
- data/test/test_groupls.rb +107 -0
- data/test/test_groupmod.rb +51 -0
- data/test/test_lpasswd.rb +75 -0
- data/test/test_object_class.rb +32 -0
- data/test/test_reflection.rb +173 -0
- data/test/test_schema.rb +166 -0
- data/test/test_user.rb +209 -0
- data/test/test_user_password.rb +93 -0
- data/test/test_useradd-binary.rb +59 -0
- data/test/test_useradd.rb +55 -0
- data/test/test_userdel.rb +48 -0
- data/test/test_userls.rb +86 -0
- data/test/test_usermod-binary-add-time.rb +62 -0
- data/test/test_usermod-binary-add.rb +61 -0
- data/test/test_usermod-binary-del.rb +64 -0
- data/test/test_usermod-lang-add.rb +57 -0
- data/test/test_usermod.rb +56 -0
- data/test/test_validation.rb +38 -0
- metadata +94 -21
- data/lib/activeldap/associations.rb +0 -170
- data/lib/activeldap/base.rb +0 -1456
- data/lib/activeldap/configuration.rb +0 -59
- data/lib/activeldap/schema2.rb +0 -217
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUserPassword < Test::Unit::TestCase
|
4
|
+
priority :must
|
5
|
+
|
6
|
+
priority :normal
|
7
|
+
def test_valid?
|
8
|
+
plain_password = "password"
|
9
|
+
%w(crypt md5 smd5 sha ssha).each do |type|
|
10
|
+
hashed_password = ActiveLdap::UserPassword.send(type, plain_password)
|
11
|
+
assert_send([ActiveLdap::UserPassword, :valid?,
|
12
|
+
plain_password, hashed_password])
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_crypt
|
17
|
+
salt = ".WoUoU9f3IlUx9Hh7D/8y.xA6ziklGib"
|
18
|
+
assert_equal("{CRYPT}.W57FZhV52w0s",
|
19
|
+
ActiveLdap::UserPassword.crypt("password", salt))
|
20
|
+
|
21
|
+
password = "PASSWORD"
|
22
|
+
hashed_password = ActiveLdap::UserPassword.crypt(password)
|
23
|
+
salt = hashed_password.sub(/^\{CRYPT\}/, '')
|
24
|
+
assert_equal(hashed_password,
|
25
|
+
ActiveLdap::UserPassword.crypt(password, salt))
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_extract_salt_for_crypt
|
29
|
+
assert_extract_salt(:crypt, "AB", "ABCDE")
|
30
|
+
assert_extract_salt(:crypt, "$1", "$1")
|
31
|
+
assert_extract_salt(:crypt, "$1$$", "$1$")
|
32
|
+
assert_extract_salt(:crypt, "$1$$", "$1$$")
|
33
|
+
assert_extract_salt(:crypt, "$1$abcdefgh$", "$1$abcdefgh$")
|
34
|
+
assert_extract_salt(:crypt, "$1$abcdefgh$", "$1$abcdefghi$")
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_md5
|
38
|
+
assert_equal("{MD5}X03MO1qnZdYdgyfeuILPmQ==",
|
39
|
+
ActiveLdap::UserPassword.md5("password"))
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_smd5
|
43
|
+
assert_equal("{SMD5}gjz+SUSfZaux99Xsji/No200cGI=",
|
44
|
+
ActiveLdap::UserPassword.smd5("password", "m4pb"))
|
45
|
+
|
46
|
+
password = "PASSWORD"
|
47
|
+
hashed_password = ActiveLdap::UserPassword.smd5(password)
|
48
|
+
salt = Base64.decode64(hashed_password.sub(/^\{SMD5\}/, ''))[-4, 4]
|
49
|
+
assert_equal(hashed_password,
|
50
|
+
ActiveLdap::UserPassword.smd5(password, salt))
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_extract_salt_for_smd5
|
54
|
+
assert_extract_salt(:smd5, nil, Base64.encode64("").chomp)
|
55
|
+
assert_extract_salt(:smd5, nil, Base64.encode64("1").chomp)
|
56
|
+
assert_extract_salt(:smd5, nil, Base64.encode64("12").chomp)
|
57
|
+
assert_extract_salt(:smd5, nil, Base64.encode64("123").chomp)
|
58
|
+
assert_extract_salt(:smd5, "ABCD", Base64.encode64("ABCD").chomp)
|
59
|
+
assert_extract_salt(:smd5, "BCDE", Base64.encode64("ABCDE").chomp)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_sha
|
63
|
+
assert_equal("{SHA}W6ph5Mm5Pz8GgiULbPgzG37mj9g=",
|
64
|
+
ActiveLdap::UserPassword.sha("password"))
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_ssha
|
68
|
+
assert_equal("{SSHA}ipnlCLA1HaK3mm3hyneJIp+Px2h1RGk3",
|
69
|
+
ActiveLdap::UserPassword.ssha("password", "uDi7"))
|
70
|
+
|
71
|
+
password = "PASSWORD"
|
72
|
+
hashed_password = ActiveLdap::UserPassword.ssha(password)
|
73
|
+
salt = Base64.decode64(hashed_password.sub(/^\{SSHA\}/, ''))[-4, 4]
|
74
|
+
assert_equal(hashed_password,
|
75
|
+
ActiveLdap::UserPassword.ssha(password, salt))
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_extract_salt_for_ssha
|
79
|
+
assert_extract_salt(:ssha, nil, Base64.encode64("").chomp)
|
80
|
+
assert_extract_salt(:ssha, nil, Base64.encode64("1").chomp)
|
81
|
+
assert_extract_salt(:ssha, nil, Base64.encode64("12").chomp)
|
82
|
+
assert_extract_salt(:ssha, nil, Base64.encode64("123").chomp)
|
83
|
+
assert_extract_salt(:ssha, "ABCD", Base64.encode64("ABCD").chomp)
|
84
|
+
assert_extract_salt(:ssha, "BCDE", Base64.encode64("ABCDE").chomp)
|
85
|
+
end
|
86
|
+
|
87
|
+
private
|
88
|
+
def assert_extract_salt(type, expected, hashed_password)
|
89
|
+
actual = ActiveLdap::UserPassword.send("extract_salt_for_#{type}",
|
90
|
+
hashed_password)
|
91
|
+
assert_equal(expected, actual)
|
92
|
+
end
|
93
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUseraddBinary < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@examples_dir, "useradd-binary")
|
9
|
+
make_ou("People")
|
10
|
+
@user_class.instance_variable_set("@prefix", "ou=People")
|
11
|
+
end
|
12
|
+
|
13
|
+
priority :must
|
14
|
+
|
15
|
+
priority :normal
|
16
|
+
def test_exist_user
|
17
|
+
make_temporary_user do |user, password|
|
18
|
+
assert(@user_class.exists?(user.uid))
|
19
|
+
assert_equal([false, "User #{user.uid} already exists.\n"],
|
20
|
+
run_command(user.uid, user.cn, user.uid_number))
|
21
|
+
assert(@user_class.exists?(user.uid))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_add_user
|
26
|
+
ensure_delete_user("test-user") do |uid,|
|
27
|
+
assert_useradd_binary_successfully(uid, uid, 10000)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def assert_useradd_binary_successfully(name, cn, uid, *args, &block)
|
33
|
+
_wrap_assertion do
|
34
|
+
assert(!@user_class.exists?(name))
|
35
|
+
args.concat([name, cn, uid])
|
36
|
+
assert_equal([true, ""], run_command(*args, &block))
|
37
|
+
assert(@user_class.exists?(name))
|
38
|
+
|
39
|
+
user = @user_class.find(name)
|
40
|
+
assert_equal(name, user.uid)
|
41
|
+
assert_equal(cn, user.cn)
|
42
|
+
assert_equal(uid.to_s, user.uid_number)
|
43
|
+
assert_equal(uid.to_s, user.gid_number)
|
44
|
+
assert_equal(['person', 'posixAccount', 'shadowAccount',
|
45
|
+
'strongAuthenticationUser'].sort, user.classes.sort)
|
46
|
+
cert = File.read(File.join(@examples_dir, 'example.der'))
|
47
|
+
assert_equal({"binary" => cert}, user.user_certificate)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def assert_useradd_binary_failed(name, cn, uid, message, *args, &block)
|
52
|
+
_wrap_assertion do
|
53
|
+
assert(!@user_class.exists?(name))
|
54
|
+
args.concat([name, cn, uid])
|
55
|
+
assert_equal([false, message], run_command(*args, &block))
|
56
|
+
assert(!@user_class.exists?(name))
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUseradd < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@examples_dir, "useradd")
|
9
|
+
make_ou("People")
|
10
|
+
@user_class.instance_variable_set("@prefix", "ou=People")
|
11
|
+
end
|
12
|
+
|
13
|
+
priority :must
|
14
|
+
|
15
|
+
priority :normal
|
16
|
+
def test_exist_user
|
17
|
+
make_temporary_user do |user, password|
|
18
|
+
assert(@user_class.exists?(user.uid))
|
19
|
+
assert_equal([false, "User #{user.uid} already exists.\n"],
|
20
|
+
run_command(user.uid, user.cn, user.uid_number))
|
21
|
+
assert(@user_class.exists?(user.uid))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_add_user
|
26
|
+
ensure_delete_user("test-user") do |uid,|
|
27
|
+
assert_useradd_successfully(uid, uid, 10000)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def assert_useradd_successfully(name, cn, uid, *args, &block)
|
33
|
+
_wrap_assertion do
|
34
|
+
assert(!@user_class.exists?(name))
|
35
|
+
args.concat([name, cn, uid])
|
36
|
+
assert_equal([true, ""], run_command(*args, &block))
|
37
|
+
assert(@user_class.exists?(name))
|
38
|
+
|
39
|
+
user = @user_class.find(name)
|
40
|
+
assert_equal(name, user.uid)
|
41
|
+
assert_equal(cn, user.cn)
|
42
|
+
assert_equal(uid.to_s, user.uid_number)
|
43
|
+
assert_equal(uid.to_s, user.gid_number)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def assert_useradd_failed(name, cn, uid, message, *args, &block)
|
48
|
+
_wrap_assertion do
|
49
|
+
assert(!@user_class.exists?(name))
|
50
|
+
args.concat([name, cn, uid])
|
51
|
+
assert_equal([false, message], run_command(*args, &block))
|
52
|
+
assert(!@user_class.exists?(name))
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUserdel < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@examples_dir, "userdel")
|
9
|
+
make_ou("People")
|
10
|
+
@user_class.instance_variable_set("@prefix", "ou=People")
|
11
|
+
end
|
12
|
+
|
13
|
+
priority :must
|
14
|
+
|
15
|
+
priority :normal
|
16
|
+
def test_non_exist_user
|
17
|
+
ensure_delete_user("test-user") do |uid,|
|
18
|
+
assert(!@user_class.exists?(uid))
|
19
|
+
assert_equal([false, "User #{uid} doesn't exist.\n"], run_command(uid))
|
20
|
+
assert(!@user_class.exists?(uid))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_delete_user
|
25
|
+
make_temporary_user do |user, password|
|
26
|
+
assert_userdel_successfully(user.uid)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
def assert_userdel_successfully(name, *args, &block)
|
32
|
+
_wrap_assertion do
|
33
|
+
assert(@user_class.exists?(name))
|
34
|
+
args.concat([name])
|
35
|
+
assert_equal([true, ""], run_command(*args, &block))
|
36
|
+
assert(!@user_class.exists?(name))
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def assert_userdel_failed(name, message, *args, &block)
|
41
|
+
_wrap_assertion do
|
42
|
+
assert(@user_class.exists?(name))
|
43
|
+
args.concat([name])
|
44
|
+
assert_equal([false, message], run_command(*args, &block))
|
45
|
+
assert(@user_class.exists?(name))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/test/test_userls.rb
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUserls < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@examples_dir, "userls")
|
9
|
+
make_ou("People")
|
10
|
+
@user_class.instance_variable_set("@prefix", "ou=People")
|
11
|
+
end
|
12
|
+
|
13
|
+
priority :must
|
14
|
+
|
15
|
+
priority :normal
|
16
|
+
def test_non_exist_user
|
17
|
+
ensure_delete_user("test-user") do |uid,|
|
18
|
+
assert(!@user_class.exists?(uid))
|
19
|
+
assert_equal([false, "User #{uid} doesn't exist.\n"], run_command(uid))
|
20
|
+
assert(!@user_class.exists?(uid))
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_list_user_no_group
|
25
|
+
make_temporary_user do |user, password|
|
26
|
+
assert_userls_successfully(user.uid, [])
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_list_user_have_primary_group
|
31
|
+
make_temporary_group do |group|
|
32
|
+
make_temporary_user(:gid_number => group.gid_number) do |user, password|
|
33
|
+
assert_userls_successfully(user.uid, [group])
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_list_user_have_groups
|
39
|
+
make_temporary_group do |group1|
|
40
|
+
make_temporary_group do |group2|
|
41
|
+
options = {:gid_number => group2.gid_number.succ}
|
42
|
+
make_temporary_user(options) do |user, password|
|
43
|
+
user.groups << group1
|
44
|
+
user.groups << group2
|
45
|
+
assert_userls_successfully(user.uid, [group1, group2])
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_list_user_have_groups_and_primary_group
|
52
|
+
make_temporary_group do |group1|
|
53
|
+
make_temporary_user(:gid_number => group1.gid_number) do |user, password|
|
54
|
+
make_temporary_group do |group2|
|
55
|
+
make_temporary_group do |group3|
|
56
|
+
user.groups << group2
|
57
|
+
user.groups << group3
|
58
|
+
assert_userls_successfully(user.uid, [group1, group2, group3])
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
private
|
66
|
+
def assert_userls_successfully(name, groups, *args, &block)
|
67
|
+
_wrap_assertion do
|
68
|
+
assert(@user_class.exists?(name))
|
69
|
+
args.concat([name])
|
70
|
+
user = @user_class.find(name)
|
71
|
+
groups = groups.collect {|g| "#{g.cn}[#{g.gid_number}]"}
|
72
|
+
result = "#{user.to_ldif}Groups: #{groups.join(', ')}\n"
|
73
|
+
assert_equal([true, result], run_command(*args, &block))
|
74
|
+
assert(@user_class.exists?(name))
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def assert_userls_failed(name, message, *args, &block)
|
79
|
+
_wrap_assertion do
|
80
|
+
assert(@user_class.exists?(name))
|
81
|
+
args.concat([name])
|
82
|
+
assert_equal([false, message], run_command(*args, &block))
|
83
|
+
assert(@user_class.exists?(name))
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUsermodBinaryAddTime < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@examples_dir, "usermod-binary-add-time")
|
9
|
+
make_ou("People")
|
10
|
+
@user_class.instance_variable_set("@prefix", "ou=People")
|
11
|
+
end
|
12
|
+
|
13
|
+
priority :must
|
14
|
+
|
15
|
+
priority :normal
|
16
|
+
def test_non_exist_user
|
17
|
+
ensure_delete_user("test-user") do |uid,|
|
18
|
+
assert(!@user_class.exists?(uid))
|
19
|
+
assert_equal([false, "User #{uid} doesn't exist.\n"],
|
20
|
+
run_command(uid, "New CN", 11111))
|
21
|
+
assert(!@user_class.exists?(uid))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_modify_user
|
26
|
+
make_temporary_user do |user, password|
|
27
|
+
assert_usermod_binary_add_time_successfully(user.uid, "New #{user.cn}",
|
28
|
+
user.uid_number.to_i + 100)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def assert_usermod_binary_add_time_successfully(name, cn, uid, *args, &block)
|
34
|
+
_wrap_assertion do
|
35
|
+
assert(@user_class.exists?(name))
|
36
|
+
previous_classes = @user_class.find(name).classes
|
37
|
+
args.concat([name, cn, uid])
|
38
|
+
assert_equal([true, ""], run_command(*args, &block))
|
39
|
+
assert(@user_class.exists?(name))
|
40
|
+
|
41
|
+
user = @user_class.find(name)
|
42
|
+
assert_equal(name, user.uid)
|
43
|
+
assert_equal(cn, user.cn)
|
44
|
+
assert_equal(uid.to_s, user.uid_number)
|
45
|
+
assert_equal(uid.to_s, user.gid_number)
|
46
|
+
assert_equal((previous_classes + ['strongAuthenticationUser']).sort,
|
47
|
+
user.classes.sort)
|
48
|
+
cert = File.read(File.join(@examples_dir, 'example.der'))
|
49
|
+
assert_equal({"binary" => cert}, user.user_certificate)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def assert_usermod_binary_add_time_failed(name, cn, uid, message,
|
54
|
+
*args, &block)
|
55
|
+
_wrap_assertion do
|
56
|
+
assert(@user_class.exists?(name))
|
57
|
+
args.concat([name, cn, uid])
|
58
|
+
assert_equal([false, message], run_command(*args, &block))
|
59
|
+
assert(@user_class.exists?(name))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestUsermodBinaryAdd < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
@command = File.join(@examples_dir, "usermod-binary-add")
|
9
|
+
make_ou("People")
|
10
|
+
@user_class.instance_variable_set("@prefix", "ou=People")
|
11
|
+
end
|
12
|
+
|
13
|
+
priority :must
|
14
|
+
|
15
|
+
priority :normal
|
16
|
+
def test_non_exist_user
|
17
|
+
ensure_delete_user("test-user") do |uid,|
|
18
|
+
assert(!@user_class.exists?(uid))
|
19
|
+
assert_equal([false, "User #{uid} doesn't exist.\n"],
|
20
|
+
run_command(uid, "New CN", 11111))
|
21
|
+
assert(!@user_class.exists?(uid))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_modify_user
|
26
|
+
make_temporary_user do |user, password|
|
27
|
+
assert_usermod_binary_add_successfully(user.uid, "New #{user.cn}",
|
28
|
+
user.uid_number.to_i + 100)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def assert_usermod_binary_add_successfully(name, cn, uid, *args, &block)
|
34
|
+
_wrap_assertion do
|
35
|
+
assert(@user_class.exists?(name))
|
36
|
+
previous_classes = @user_class.find(name).classes
|
37
|
+
args.concat([name, cn, uid])
|
38
|
+
assert_equal([true, ""], run_command(*args, &block))
|
39
|
+
assert(@user_class.exists?(name))
|
40
|
+
|
41
|
+
user = @user_class.find(name)
|
42
|
+
assert_equal(name, user.uid)
|
43
|
+
assert_equal(cn, user.cn)
|
44
|
+
assert_equal(uid.to_s, user.uid_number)
|
45
|
+
assert_equal(uid.to_s, user.gid_number)
|
46
|
+
assert_equal((previous_classes + ['strongAuthenticationUser']).sort,
|
47
|
+
user.classes.sort)
|
48
|
+
cert = File.read(File.join(@examples_dir, 'example.der'))
|
49
|
+
assert_equal({"binary" => cert}, user.user_certificate)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def assert_usermod_binary_add_failed(name, cn, uid, message, *args, &block)
|
54
|
+
_wrap_assertion do
|
55
|
+
assert(@user_class.exists?(name))
|
56
|
+
args.concat([name, cn, uid])
|
57
|
+
assert_equal([false, message], run_command(*args, &block))
|
58
|
+
assert(@user_class.exists?(name))
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|