#!/usr/bin/env ruby
$:.unshift("../../lib") if __FILE__ =~ /\.rb$/
require 'puppettest'
require 'mocha'
require 'puppet/network/handler/facts'
class TestFactsHandler < Test::Unit::TestCase
include PuppetTest::ServerTest
def setup
super
@class = Puppet::Network::Handler.handler(:facts)
@@client_facts = {}
unless Puppet::Util::FactStore.store(:testing)
Puppet::Util::FactStore.newstore(:testing) do
def get(node)
@@client_facts[node]
end
def set(node, facts)
@@client_facts[node] = facts
end
end
end
Puppet[:factstore] = :testing
@handler = @class.new
@facts = {:a => :b, :c => :d}
@name = "foo"
@backend = @handler.instance_variable_get("@backend")
end
def teardown
@@client_facts.clear
end
def test_strip_internal
@facts[:_puppet_one] = "yay"
@facts[:_puppet_two] = "boo"
@facts[:_puppetthree] = "foo"
newfacts = nil
assert_nothing_raised("Could not call strip_internal") do
newfacts = @handler.send(:strip_internal, @facts)
end
[:_puppet_one, :_puppet_two, :_puppetthree].each do |name|
assert(@facts.include?(name), "%s was removed in strip_internal from original hash" % name)
end
[:_puppet_one, :_puppet_two].each do |name|
assert(! newfacts.include?(name), "%s was not removed in strip_internal" % name)
end
assert_equal("foo", newfacts[:_puppetthree], "_puppetthree was removed in strip_internal")
end
def test_add_internal
newfacts = nil
assert_nothing_raised("Could not call strip_internal") do
newfacts = @handler.send(:add_internal, @facts)
end
assert_instance_of(Time, newfacts[:_puppet_timestamp], "Did not set timestamp in add_internal")
assert(! @facts.include?(:_puppet_timestamp), "Modified original hash in add_internal")
end
def test_set
newfacts = @facts.dup
newfacts[:_puppet_timestamp] = Time.now
@handler.expects(:add_internal).with(@facts).returns(newfacts)
@backend.expects(:set).with(@name, newfacts).returns(nil)
assert_nothing_raised("Could not set facts") do
assert_nil(@handler.set(@name, @facts), "handler.set did not return nil")
end
end
def test_get
prefacts = @facts.dup
prefacts[:_puppet_timestamp] = Time.now
@@client_facts[@name] = prefacts
@handler.expects(:strip_internal).with(prefacts).returns(@facts)
@backend.expects(:get).with(@name).returns(prefacts)
assert_nothing_raised("Could not retrieve facts") do
assert_equal(@facts, @handler.get(@name), "did not get correct answer from handler.get")
end
@handler = @class.new
assert_nothing_raised("Failed to call 'get' with no stored facts") do
@handler.get("nosuchname")
end
end
def test_store_date
time = Time.now
@facts[:_puppet_timestamp] = time
@handler.expects(:get).with(@name).returns(@facts)
assert_equal(time.to_i, @handler.store_date(@name), "Did not retrieve timestamp correctly")
end
end
# $Id: facts.rb 2457 2007-05-03 05:24:13Z luke $
syntax highlighted by Code2HTML, v. 0.9.1