summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/indirector/request.rb51
-rwxr-xr-xspec/unit/indirector/request_spec.rb95
2 files changed, 2 insertions, 144 deletions
diff --git a/lib/puppet/indirector/request.rb b/lib/puppet/indirector/request.rb
index 1918a3fb5..fd8d654dd 100644
--- a/lib/puppet/indirector/request.rb
+++ b/lib/puppet/indirector/request.rb
@@ -14,51 +14,6 @@ class Puppet::Indirector::Request
OPTION_ATTRIBUTES = [:ip, :node, :authenticated, :ignore_terminus, :ignore_cache, :instance, :environment]
- def self.from_pson(json)
- raise ArgumentError, "No indirection name provided in json data" unless indirection_name = json['type']
- raise ArgumentError, "No method name provided in json data" unless method = json['method']
- raise ArgumentError, "No key provided in json data" unless key = json['key']
-
- request = new(indirection_name, method, key, json['attributes'])
-
- if instance = json['instance']
- klass = Puppet::Indirector::Indirection.instance(request.indirection_name).model
- if instance.is_a?(klass)
- request.instance = instance
- else
- request.instance = klass.from_pson(instance)
- end
- end
-
- request
- end
-
- def to_pson(*args)
- result = {
- 'document_type' => 'Puppet::Indirector::Request',
- 'data' => {
- 'type' => indirection_name,
- 'method' => method,
- 'key' => key
- }
- }
- data = result['data']
- attributes = {}
- OPTION_ATTRIBUTES.each do |key|
- next unless value = send(key)
- attributes[key] = value
- end
-
- options.each do |opt, value|
- attributes[opt] = value
- end
-
- data['attributes'] = attributes unless attributes.empty?
- data['instance'] = instance if instance
-
- result.to_pson(*args)
- end
-
# Is this an authenticated request?
def authenticated?
# Double negative, so we just get true or false
@@ -106,11 +61,9 @@ class Puppet::Indirector::Request
self.indirection_name = indirection_name
self.method = method
- options = options.inject({}) { |hash, ary| hash[ary[0].to_sym] = ary[1]; hash }
-
set_attributes(options)
- @options = options
+ @options = options.inject({}) { |hash, ary| hash[ary[0].to_sym] = ary[1]; hash }
if key_or_instance.is_a?(String) || key_or_instance.is_a?(Symbol)
key = key_or_instance
@@ -200,7 +153,7 @@ class Puppet::Indirector::Request
def set_attributes(options)
OPTION_ATTRIBUTES.each do |attribute|
- if options.include?(attribute.to_sym)
+ if options.include?(attribute)
send(attribute.to_s + "=", options[attribute])
options.delete(attribute)
end
diff --git a/spec/unit/indirector/request_spec.rb b/spec/unit/indirector/request_spec.rb
index ba7dc815e..87b9af438 100755
--- a/spec/unit/indirector/request_spec.rb
+++ b/spec/unit/indirector/request_spec.rb
@@ -301,99 +301,4 @@ describe Puppet::Indirector::Request do
lambda { @request.query_string }.should raise_error(ArgumentError)
end
end
-
- describe "when converting to json" do
- before do
- @request = Puppet::Indirector::Request.new(:facts, :find, "foo")
- end
-
- it "should produce a hash with the document_type set to 'request'" do
- @request.should set_json_document_type_to("Puppet::Indirector::Request")
- end
-
- it "should set the 'key'" do
- @request.should set_json_attribute("key").to("foo")
- end
-
- it "should include an attribute for its indirection name" do
- @request.should set_json_attribute("type").to("facts")
- end
-
- it "should include a 'method' attribute set to its method" do
- @request.should set_json_attribute("method").to("find")
- end
-
- it "should add all attributes under the 'attributes' attribute" do
- @request.ip = "127.0.0.1"
- @request.should set_json_attribute("attributes", "ip").to("127.0.0.1")
- end
-
- it "should add all options under the 'attributes' attribute" do
- @request.options["opt"] = "value"
- PSON.parse(@request.to_pson)["data"]['attributes']['opt'].should == "value"
- end
-
- it "should include the instance if provided" do
- facts = Puppet::Node::Facts.new("foo")
- @request.instance = facts
- PSON.parse(@request.to_pson)["data"]['instance'].should be_instance_of(Puppet::Node::Facts)
- end
- end
-
- describe "when converting from json" do
- before do
- @request = Puppet::Indirector::Request.new(:facts, :find, "foo")
- @klass = Puppet::Indirector::Request
- @format = Puppet::Network::FormatHandler.format('pson')
- end
-
- def from_json(json)
- @format.intern(Puppet::Indirector::Request, json)
- end
-
- it "should set the 'key'" do
- from_json(@request.to_pson).key.should == "foo"
- end
-
- it "should fail if no key is provided" do
- json = PSON.parse(@request.to_pson)
- json['data'].delete("key")
- lambda { from_json(json.to_pson) }.should raise_error(ArgumentError)
- end
-
- it "should set its indirector name" do
- from_json(@request.to_pson).indirection_name.should == :facts
- end
-
- it "should fail if no type is provided" do
- json = PSON.parse(@request.to_pson)
- json['data'].delete("type")
- lambda { from_json(json.to_pson) }.should raise_error(ArgumentError)
- end
-
- it "should set its method" do
- from_json(@request.to_pson).method.should == "find"
- end
-
- it "should fail if no method is provided" do
- json = PSON.parse(@request.to_pson)
- json['data'].delete("method")
- lambda { from_json(json.to_pson) }.should raise_error(ArgumentError)
- end
-
- it "should initialize with all attributes and options" do
- @request.ip = "127.0.0.1"
- @request.options["opt"] = "value"
- result = from_json(@request.to_pson)
- result.options[:opt].should == "value"
- result.ip.should == "127.0.0.1"
- end
-
- it "should set its instance as an instance if one is provided" do
- facts = Puppet::Node::Facts.new("foo")
- @request.instance = facts
- result = from_json(@request.to_pson)
- result.instance.should be_instance_of(Puppet::Node::Facts)
- end
- end
end