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)
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