summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2011-04-12 21:41:06 -0700
committerLuke Kanies <luke@puppetlabs.com>2011-04-14 17:07:33 -0700
commitd3c94e62386ec03617015f6e6269b1de805954ea (patch)
tree3f17612f2bc0fd772d03a808e593afca6f690384 /spec
parent155b16d8de26e5b672202522ef194c6571ec7610 (diff)
downloadpuppet-d3c94e62386ec03617015f6e6269b1de805954ea.tar.gz
puppet-d3c94e62386ec03617015f6e6269b1de805954ea.tar.xz
puppet-d3c94e62386ec03617015f6e6269b1de805954ea.zip
Adding json support to Puppet::Node
Reviewed-by: Daniel Pittman <daniel@puppetlabs.com> Signed-off-by: Luke Kanies <luke@puppetlabs.com>
Diffstat (limited to 'spec')
-rwxr-xr-xspec/unit/node_spec.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/spec/unit/node_spec.rb b/spec/unit/node_spec.rb
index 7d813ba30..af3110f45 100755
--- a/spec/unit/node_spec.rb
+++ b/spec/unit/node_spec.rb
@@ -35,6 +35,69 @@ describe Puppet::Node do
node.environment.name.should == :bar
end
end
+
+ describe "when converting to json" do
+ before do
+ @node = Puppet::Node.new("mynode")
+ end
+
+ it "should provide its name" do
+ PSON.parse(@node.to_pson)['data']['name'].should == "mynode"
+ end
+
+ it "should include the classes if set" do
+ @node.classes = %w{a b c}
+ PSON.parse(@node.to_pson)['data']['classes'].should == %w{a b c}
+ end
+
+ it "should not include the classes if there are none" do
+ PSON.parse(@node.to_pson)['data'].should_not be_include('classes')
+ end
+
+ it "should include parameters if set" do
+ @node.parameters = {"a" => "b", "c" => "d"}
+ PSON.parse(@node.to_pson)['data']['parameters'].should == {"a" => "b", "c" => "d"}
+ end
+
+ it "should not include the parameters if there are none" do
+ PSON.parse(@node.to_pson)['data'].should_not be_include('parameters')
+ end
+
+ it "should include the environment" do
+ @node.environment = "production"
+ PSON.parse(@node.to_pson)['data']['environment'].should == "production"
+ end
+ end
+
+ describe "when converting from json" do
+ before do
+ @node = Puppet::Node.new("mynode")
+ @format = Puppet::Network::FormatHandler.format('pson')
+ end
+
+ def from_json(json)
+ @format.intern(Puppet::Node, json)
+ end
+
+ it "should set its name" do
+ from_json(@node.to_pson).name.should == "mynode"
+ end
+
+ it "should include the classes if set" do
+ @node.classes = %w{a b c}
+ from_json(@node.to_pson).classes.should == %w{a b c}
+ end
+
+ it "should include parameters if set" do
+ @node.parameters = {"a" => "b", "c" => "d"}
+ from_json(@node.to_pson).parameters.should == {"a" => "b", "c" => "d"}
+ end
+
+ it "should include the environment" do
+ @node.environment = "production"
+ from_json(@node.to_pson).environment.name.should == :production
+ end
+ end
end
describe Puppet::Node, "when initializing" do