summaryrefslogtreecommitdiffstats
path: root/spec/unit/node
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-01-22 16:51:02 -0600
committerLuke Kanies <luke@madstop.com>2009-02-06 18:08:41 -0600
commite65d7f11dd95ab5432adefeabc3179e9eb5dd050 (patch)
tree52ad7eabbe7b07d5f7496587e40019cbe4e3a76e /spec/unit/node
parent6b4e5f49a8d1d062aefae31a923cff9e3f0d31ba (diff)
downloadpuppet-e65d7f11dd95ab5432adefeabc3179e9eb5dd050.tar.gz
puppet-e65d7f11dd95ab5432adefeabc3179e9eb5dd050.tar.xz
puppet-e65d7f11dd95ab5432adefeabc3179e9eb5dd050.zip
Refactoring how the Facter integration works
I moved all of the extra Fact modifications into the Facts class, and then moved the calls of those new methods into the Facter terminus. Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'spec/unit/node')
-rwxr-xr-xspec/unit/node/facts.rb55
1 files changed, 55 insertions, 0 deletions
diff --git a/spec/unit/node/facts.rb b/spec/unit/node/facts.rb
index 118713b17..a557066b8 100755
--- a/spec/unit/node/facts.rb
+++ b/spec/unit/node/facts.rb
@@ -5,6 +5,61 @@ require File.dirname(__FILE__) + '/../../spec_helper'
require 'puppet/node/facts'
describe Puppet::Node::Facts, "when indirecting" do
+ before do
+ @facts = Puppet::Node::Facts.new("me")
+ end
+
+ it "should be able to convert all fact values to strings" do
+ @facts.values["one"] = 1
+ @facts.stringify
+ @facts.values["one"].should == "1"
+ end
+
+ it "should add the Puppet version as a 'clientversion' fact when adding local facts" do
+ @facts.add_local_facts
+ @facts.values["clientversion"].should == Puppet.version.to_s
+ end
+
+ it "should add the current environment as a fact if one is not set when adding local facts" do
+ @facts.add_local_facts
+ @facts.values["environment"].should == Puppet[:environment]
+ end
+
+ it "should not replace any existing environment fact when adding local facts" do
+ @facts.values["environment"] = "foo"
+ @facts.add_local_facts
+ @facts.values["environment"].should == "foo"
+ end
+
+ it "should be able to downcase fact values" do
+ Puppet.settings.stubs(:value).returns "eh"
+ Puppet.settings.expects(:value).with(:downcasefacts).returns true
+
+ @facts.values["one"] = "Two"
+
+ @facts.downcase_if_necessary
+ @facts.values["one"].should == "two"
+ end
+
+ it "should only try to downcase strings" do
+ Puppet.settings.stubs(:value).returns "eh"
+ Puppet.settings.expects(:value).with(:downcasefacts).returns true
+
+ @facts.values["now"] = Time.now
+
+ @facts.downcase_if_necessary
+ @facts.values["now"].should be_instance_of(Time)
+ end
+
+ it "should not downcase facts if not configured to do so" do
+ Puppet.settings.stubs(:value).returns "eh"
+ Puppet.settings.expects(:value).with(:downcasefacts).returns false
+
+ @facts.values["one"] = "Two"
+ @facts.downcase_if_necessary
+ @facts.values["one"].should == "Two"
+ end
+
describe "when indirecting" do
before do
@indirection = stub 'indirection', :request => mock('request'), :name => :facts