#!/usr/bin/env ruby
#
# Created by Luke Kanies on 2006-11-07.
# Copyright (c) 2006. All rights reserved.
$:.unshift("../lib").unshift("../../lib") if __FILE__ =~ /\.rb$/
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
{:gr => nonrootgroup, :pw => nonrootuser}.each do |space, obj|
if space == :gr
id = :gid
else
id = :uid
end
[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)
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
obj.retrieve
id = obj.is(: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.is(: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
# $Id: posixtest.rb 2178 2007-02-07 23:56:59Z luke $
syntax highlighted by Code2HTML, v. 0.9.1