summaryrefslogtreecommitdiffstats
path: root/spec/unit/node
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2007-09-12 15:32:25 -0500
committerLuke Kanies <luke@madstop.com>2007-09-12 15:32:25 -0500
commita6fe70054f4fb3efe4d558ffdd244917ca1c6f9c (patch)
tree6b8dbf7f3f2779254174b0829412a5365ad6ebed /spec/unit/node
parent1459c507ddccff2a2a6fbadd4c880c023b5e9893 (diff)
downloadpuppet-a6fe70054f4fb3efe4d558ffdd244917ca1c6f9c.tar.gz
puppet-a6fe70054f4fb3efe4d558ffdd244917ca1c6f9c.tar.xz
puppet-a6fe70054f4fb3efe4d558ffdd244917ca1c6f9c.zip
Another intermediate commit. The node and fact classes are now functional and are used instead of the network handlers, which have been removed. There are some failing tests as a result, but I want to get this code committed before I massage the rest of the system to make it work again.
Diffstat (limited to 'spec/unit/node')
-rwxr-xr-xspec/unit/node/facts.rb25
-rwxr-xr-xspec/unit/node/node.rb20
2 files changed, 33 insertions, 12 deletions
diff --git a/spec/unit/node/facts.rb b/spec/unit/node/facts.rb
index c7fc65f38..c677c1d2e 100755
--- a/spec/unit/node/facts.rb
+++ b/spec/unit/node/facts.rb
@@ -6,11 +6,12 @@ require 'puppet/node/facts'
describe Puppet::Node::Facts, " when indirecting" do
before do
- Puppet[:fact_store] = "test_store"
- @terminus_class = mock 'terminus_class'
@terminus = mock 'terminus'
- @terminus_class.expects(:new).returns(@terminus)
- Puppet::Indirector.expects(:terminus).with(:facts, :test_store).returns(@terminus_class)
+ Puppet::Indirector.terminus(:facts, Puppet[:fact_store].intern).stubs(:new).returns(@terminus)
+
+ # We have to clear the cache so that the facts ask for our terminus stub,
+ # instead of anything that might be cached.
+ Puppet::Indirector::Indirection.clear_cache
end
it "should redirect to the specified fact store for retrieval" do
@@ -19,7 +20,19 @@ describe Puppet::Node::Facts, " when indirecting" do
end
it "should redirect to the specified fact store for storage" do
- @terminus.expects(:put).with(:my_facts)
- Puppet::Node::Facts.put(:my_facts)
+ @terminus.expects(:post).with(:my_facts)
+ Puppet::Node::Facts.post(:my_facts)
+ end
+
+ after do
+ mocha_verify
+ Puppet::Indirector::Indirection.clear_cache
+ end
+end
+
+describe Puppet::Node::Facts, " when storing and retrieving" do
+ it "should add metadata to the facts" do
+ facts = Puppet::Node::Facts.new("me", "one" => "two", "three" => "four")
+ facts.values[:_timestamp].should be_instance_of(Time)
end
end
diff --git a/spec/unit/node/node.rb b/spec/unit/node/node.rb
index a6cc1e301..9342dc5ce 100755
--- a/spec/unit/node/node.rb
+++ b/spec/unit/node/node.rb
@@ -85,32 +85,40 @@ end
describe Puppet::Node, " when merging facts" do
before do
@node = Puppet::Node.new("testnode")
+ Puppet::Node::Facts.stubs(:get).with(@node.name).returns(Puppet::Node::Facts.new(@node.name, "one" => "c", "two" => "b"))
end
it "should prefer parameters already set on the node over facts from the node" do
@node.parameters = {"one" => "a"}
- @node.fact_merge("one" => "c")
+ @node.fact_merge
@node.parameters["one"].should == "a"
end
it "should add passed parameters to the parameter list" do
@node.parameters = {"one" => "a"}
- @node.fact_merge("two" => "b")
+ @node.fact_merge
@node.parameters["two"].should == "b"
end
+
+ it "should accept arbitrary parameters to merge into its parameters" do
+ @node.parameters = {"one" => "a"}
+ @node.merge "two" => "three"
+ @node.parameters["two"].should == "three"
+ end
end
describe Puppet::Node, " when indirecting" do
before do
- Puppet[:node_source] = :test_source
- @terminus_class = mock 'terminus_class'
@terminus = mock 'terminus'
- @terminus_class.expects(:new).returns(@terminus)
- Puppet::Indirector.expects(:terminus).with(:node, :test_source).returns(@terminus_class)
+ Puppet::Indirector.terminus(:node, Puppet[:node_source]).stubs(:new).returns(@terminus)
end
it "should redirect to the specified node source" do
@terminus.expects(:get).with(:my_node)
Puppet::Node.get(:my_node)
end
+
+ after do
+ Puppet::Indirector::Indirection.clear_cache
+ end
end