diff options
author | Luke Kanies <luke@madstop.com> | 2008-08-23 21:59:14 -0500 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2008-08-26 22:40:40 -0700 |
commit | 6335b143a312481aaa200f71cd25dffd4f88c8ae (patch) | |
tree | 7faa499dcbf7f1a61deb4c171aa4b36e15c63ff3 | |
parent | 1104edb13926a53ee90685d96700cb03eaeca509 (diff) | |
download | puppet-6335b143a312481aaa200f71cd25dffd4f88c8ae.tar.gz puppet-6335b143a312481aaa200f71cd25dffd4f88c8ae.tar.xz puppet-6335b143a312481aaa200f71cd25dffd4f88c8ae.zip |
Causing the Indirection to fail if a terminus selection hook does not return a value.
Signed-off-by: Luke Kanies <luke@madstop.com>
-rw-r--r-- | lib/puppet/indirector/indirection.rb | 4 | ||||
-rwxr-xr-x | spec/unit/indirector/indirection.rb | 16 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/puppet/indirector/indirection.rb b/lib/puppet/indirector/indirection.rb index e6068a6aa..04c3aed23 100644 --- a/lib/puppet/indirector/indirection.rb +++ b/lib/puppet/indirector/indirection.rb @@ -274,7 +274,9 @@ class Puppet::Indirector::Indirection def prepare(request) # Pick our terminus. if respond_to?(:select_terminus) - terminus_name = select_terminus(request) + unless terminus_name = select_terminus(request) + raise ArgumentError, "Could not determine appropriate terminus for %s" % request + end else terminus_name = terminus_class end diff --git a/spec/unit/indirector/indirection.rb b/spec/unit/indirector/indirection.rb index e52be31e1..166065ecf 100755 --- a/spec/unit/indirector/indirection.rb +++ b/spec/unit/indirector/indirection.rb @@ -34,6 +34,22 @@ describe "Indirection Delegator", :shared => true do @indirection.send(@method, "me") end + it "should fail if the :select_terminus hook does not return a terminus name" do + # Define the method, so our respond_to? hook matches. + class << @indirection + def select_terminus(request) + end + end + + request = stub 'request', :key => "me", :options => {} + + @indirection.stubs(:request).returns request + + @indirection.expects(:select_terminus).with(request).returns nil + + lambda { @indirection.send(@method, "me") }.should raise_error(ArgumentError) + end + it "should choose the terminus returned by the :terminus_class method if no :select_terminus method is available" do @indirection.expects(:terminus_class).returns :test_terminus |