summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-02-18 17:00:27 -0600
committerLuke Kanies <luke@madstop.com>2009-02-19 17:51:21 -0600
commitbd8d09747fd6c0dce89c17da41eb67ad92823cf7 (patch)
tree52c125acfcc5501c9282010d6ebcbe9ee8880eab
parentd3bc1e8279b6e1d372ab3624982788cde026461d (diff)
downloadpuppet-bd8d09747fd6c0dce89c17da41eb67ad92823cf7.tar.gz
puppet-bd8d09747fd6c0dce89c17da41eb67ad92823cf7.tar.xz
puppet-bd8d09747fd6c0dce89c17da41eb67ad92823cf7.zip
Providing better indirection authorization errors
The errors now include the indirection and key, or the full URI used. Signed-off-by: Luke Kanies <luke@madstop.com>
-rw-r--r--lib/puppet/indirector/indirection.rb2
-rw-r--r--lib/puppet/indirector/request.rb5
-rwxr-xr-xspec/unit/indirector/request.rb8
3 files changed, 14 insertions, 1 deletions
diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb
index 5d8cfe9b5..7ac214cd0 100644
--- a/lib/puppet/indirector/indirection.rb
+++ b/lib/puppet/indirector/indirection.rb
@@ -265,7 +265,7 @@ class Puppet::Indirector::Indirection
return unless terminus.respond_to?(:authorized?)
unless terminus.authorized?(request)
- msg = "Not authorized to call %s on %s" % [request.method, request.key]
+ msg = "Not authorized to call %s on %s" % [request.method, request.to_s]
unless request.options.empty?
msg += " with %s" % request.options.inspect
end
diff --git a/lib/puppet/indirector/request.rb b/lib/puppet/indirector/request.rb
index 8227db174..c6f268ab2 100644
--- a/lib/puppet/indirector/request.rb
+++ b/lib/puppet/indirector/request.rb
@@ -78,6 +78,11 @@ class Puppet::Indirector::Request
method == :search
end
+ def to_s
+ return uri if uri
+ return "/%s/%s" % [indirection_name, key]
+ end
+
private
# Parse the key as a URI, setting attributes appropriately.
diff --git a/spec/unit/indirector/request.rb b/spec/unit/indirector/request.rb
index 12e196f77..dc1e4e39d 100755
--- a/spec/unit/indirector/request.rb
+++ b/spec/unit/indirector/request.rb
@@ -163,4 +163,12 @@ describe Puppet::Indirector::Request do
it "should not be considered plural if the method is not 'search'" do
Puppet::Indirector::Request.new(:myind, :find, :key).should_not be_plural
end
+
+ it "should use its uri, if it has one, as its string representation" do
+ Puppet::Indirector::Request.new(:myind, :find, "foo://bar/baz").to_s.should == "foo://bar/baz"
+ end
+
+ it "should use its indirection name and key, if it has no uri, as its string representation" do
+ Puppet::Indirector::Request.new(:myind, :find, "key") == "/myind/key"
+ end
end