1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
|
#!/usr/bin/env ruby
#
# Created by Luke Kanies on 2006-11-07.
# Copyright (c) 2006. All rights reserved.
require File.dirname(__FILE__) + '/../lib/puppettest'
require 'puppettest'
require 'puppet/util/posix'
class TestPosixUtil < Test::Unit::TestCase
include PuppetTest
include Puppet::Util::POSIX
def mk_posix_resource(type, obj)
field = idfield(type)
res = Puppet::Type.type(type).create(
:name => obj.name,
field => obj.send(field)
)
res.setdefaults
res
end
def test_get_posix_field
{:group => nonrootgroup, :passwd => nonrootuser}.each do |space, obj|
id = Puppet::Util.idfield(space)
[obj.name, obj.send(id), obj.send(id).to_s].each do |test|
value = nil
assert_nothing_raised do
value = get_posix_field(space, :name, test)
end
assert_equal(obj.name, value, "did not get correct value from get_posix_field")
end
end
end
def test_get_provider_value
user = nonrootuser
obj = mk_posix_resource(:user, user)
assert_nothing_raised do
assert_equal(user.uid, get_provider_value(:user, :uid, user.uid))
assert_equal(user.name, get_provider_value(:user, :name, user.name))
end
end
def test_gid_and_uid
{:user => nonrootuser, :group => nonrootgroup}.each do |type, obj|
method = idfield(type)
# First make sure we get it back with both name and id with no object
[obj.name, obj.send(method)].each do |value|
assert_equal(obj.send(method), send(method, value))
end
# Now make a Puppet resource and make sure we get it from that.
resource = mk_posix_resource(type, obj)
[obj.name, obj.send(method)].each do |value|
assert_equal(obj.send(method), send(method, value))
end
end
end
def test_util_methods
assert(Puppet::Util.respond_to?(:uid), "util does not have methods")
end
# First verify we can convert a known user
def test_gidbyname
%x{groups}.split(" ").each { |group|
gid = nil
assert_nothing_raised {
gid = Puppet::Util.gid(group)
}
assert(gid, "Could not retrieve gid for %s" % group)
}
end
# Then verify we can retrieve a known group by gid
def test_gidbyid
%x{groups}.split(" ").each { |group|
obj = Puppet.type(:group).create(
:name => group,
:check => [:gid]
)
obj.setdefaults
current = obj.retrieve
id = nil
current.find { |prop, value| id = value if prop.name == :gid }
gid = nil
assert_nothing_raised {
gid = Puppet::Util.gid(id)
}
assert(gid, "Could not retrieve gid for %s" % group)
assert_equal(id, gid, "Got mismatched ids")
}
end
# Finally, verify that we can find groups by id even if we don't
# know them
def test_gidbyunknownid
gid = nil
group = Puppet::Util::SUIDManager.gid
assert_nothing_raised {
gid = Puppet::Util.gid(group)
}
assert(gid, "Could not retrieve gid for %s" % group)
assert_equal(group, gid, "Got mismatched ids")
end
def user
require 'etc'
unless defined? @user
obj = Etc.getpwuid(Puppet::Util::SUIDManager.uid)
@user = obj.name
end
return @user
end
# And do it all over again for users
# First verify we can convert a known user
def test_uidbyname
user = user()
uid = nil
assert_nothing_raised {
uid = Puppet::Util.uid(user)
}
assert(uid, "Could not retrieve uid for %s" % user)
assert_equal(Puppet::Util::SUIDManager.uid, uid, "UIDs did not match")
end
# Then verify we can retrieve a known user by uid
def test_uidbyid
user = user()
obj = Puppet.type(:user).create(
:name => user,
:check => [:uid]
)
obj.setdefaults
obj.retrieve
id = obj.provider.uid
uid = nil
assert_nothing_raised {
uid = Puppet::Util.uid(id)
}
assert(uid, "Could not retrieve uid for %s" % user)
assert_equal(id, uid, "Got mismatched ids")
end
# Finally, verify that we can find users by id even if we don't
# know them
def test_uidbyunknownid
uid = nil
user = Puppet::Util::SUIDManager.uid
assert_nothing_raised {
uid = Puppet::Util.uid(user)
}
assert(uid, "Could not retrieve uid for %s" % user)
assert_equal(user, uid, "Got mismatched ids")
end
end
|