blob: 53f362da668c9687015836be1dc6e4f2b603a0ef (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../../spec_helper'
describe Puppet::Node, " when initializing" do
before do
@node = Puppet::Node.new("testnode")
end
it "should set the node name" do
@node.name.should == "testnode"
end
it "should not allow nil node names" do
proc { Puppet::Node.new(nil) }.should raise_error(ArgumentError)
end
it "should default to an empty parameter hash" do
@node.parameters.should == {}
end
it "should default to an empty class array" do
@node.classes.should == []
end
it "should note its creation time" do
@node.time.should be_instance_of(Time)
end
it "should accept parameters passed in during initialization" do
params = {"a" => "b"}
@node = Puppet::Node.new("testing", :parameters => params)
@node.parameters.should == params
end
it "should accept classes passed in during initialization" do
classes = %w{one two}
@node = Puppet::Node.new("testing", :classes => classes)
@node.classes.should == classes
end
it "should always return classes as an array" do
@node = Puppet::Node.new("testing", :classes => "myclass")
@node.classes.should == ["myclass"]
end
it "should accept the environment during initialization" do
@node = Puppet::Node.new("testing", :environment => "myenv")
@node.environment.should == "myenv"
end
it "should accept names passed in" do
@node = Puppet::Node.new("testing", :names => ["myenv"])
@node.names.should == ["myenv"]
end
end
describe Puppet::Node, " when returning the environment" do
before do
@node = Puppet::Node.new("testnode")
end
it "should return the 'environment' fact if present and there is no explicit environment" do
@node.parameters = {"environment" => "myenv"}
@node.environment.should == "myenv"
end
it "should return the central environment if there is no environment fact nor explicit environment" do
Puppet.config.expects(:[]).with(:environment).returns(:centralenv)
@node.environment.should == :centralenv
end
it "should not use an explicit environment that is an empty string" do
@node.environment == ""
@node.environment.should be_nil
end
it "should not use an environment fact that is an empty string" do
@node.parameters = {"environment" => ""}
@node.environment.should be_nil
end
it "should not use an explicit environment that is an empty string" do
Puppet.config.expects(:[]).with(:environment).returns(nil)
@node.environment.should be_nil
end
end
describe Puppet::Node, " when merging facts" do
before do
@node = Puppet::Node.new("testnode")
Puppet::Node::Facts.stubs(:find).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
@node.parameters["one"].should == "a"
end
it "should add passed parameters to the parameter list" do
@node.parameters = {"one" => "a"}
@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
@terminus = mock 'terminus'
Puppet::Node.stubs(:indirection).returns(@terminus)
end
it "should redirect to the specified node source" do
@terminus.expects(:find).with(:my_node.to_s)
Puppet::Node.find(:my_node.to_s)
end
after do
Puppet::Indirector::Indirection.clear_cache
end
end
|