summaryrefslogtreecommitdiffstats
path: root/spec/unit/agent/plugin_handler.rb
diff options
context:
space:
mode:
authorLuke Kanies <luke@madstop.com>2009-01-22 16:05:43 -0600
committerLuke Kanies <luke@madstop.com>2009-02-06 18:08:40 -0600
commit54faf7825bbffc5a4ca252389305dd23ae8d2d84 (patch)
treec9d059cb83b3f0de52ddc52c33278eb53dd2edd7 /spec/unit/agent/plugin_handler.rb
parent9d76b70c07c86f0041a0e6a1537227de1b619017 (diff)
downloadpuppet-54faf7825bbffc5a4ca252389305dd23ae8d2d84.tar.gz
puppet-54faf7825bbffc5a4ca252389305dd23ae8d2d84.tar.xz
puppet-54faf7825bbffc5a4ca252389305dd23ae8d2d84.zip
Moving fact and plugin handling into modules
This doesn't change functionality, it just simplifies the agent class. I've also started the work to get the catalog handling done using REST/the Indirector. Signed-off-by: Luke Kanies <luke@madstop.com>
Diffstat (limited to 'spec/unit/agent/plugin_handler.rb')
-rwxr-xr-xspec/unit/agent/plugin_handler.rb100
1 files changed, 100 insertions, 0 deletions
diff --git a/spec/unit/agent/plugin_handler.rb b/spec/unit/agent/plugin_handler.rb
new file mode 100755
index 000000000..44603bc6c
--- /dev/null
+++ b/spec/unit/agent/plugin_handler.rb
@@ -0,0 +1,100 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../spec_helper'
+require 'puppet/agent'
+require 'puppet/agent/plugin_handler'
+
+class PluginHandlerTester
+ include Puppet::Agent::PluginHandler
+end
+
+describe Puppet::Agent::PluginHandler do
+ before do
+ @pluginhandler = PluginHandlerTester.new
+ end
+
+ it "should have a method for downloading plugins" do
+ @pluginhandler.should respond_to(:download_plugins)
+ end
+
+ it "should have a boolean method for determining whether plugins should be downloaded" do
+ @pluginhandler.should respond_to(:download_plugins?)
+ end
+
+ it "should download plugins when :pluginsync is true" do
+ Puppet.settings.expects(:value).with(:pluginsync).returns true
+ @pluginhandler.should be_download_plugins
+ end
+
+ it "should not download plugins when :pluginsync is false" do
+ Puppet.settings.expects(:value).with(:pluginsync).returns false
+ @pluginhandler.should_not be_download_plugins
+ end
+
+ it "should not download plugins when downloading is disabled" do
+ Puppet::Agent::Downloader.expects(:new).never
+ @pluginhandler.expects(:download_plugins?).returns false
+ @pluginhandler.download_plugins
+ end
+
+ it "should use an Agent Downloader, with the name, source, destination, and ignore set correctly, to download plugins when downloading is enabled" do
+ downloader = mock 'downloader'
+
+ Puppet.settings.expects(:value).with(:pluginsource).returns "psource"
+ Puppet.settings.expects(:value).with(:plugindest).returns "pdest"
+ Puppet.settings.expects(:value).with(:pluginsignore).returns "pignore"
+
+ Puppet::Agent::Downloader.expects(:new).with("plugin", "psource", "pdest", "pignore").returns downloader
+
+ downloader.expects(:evaluate).returns []
+
+ @pluginhandler.expects(:download_plugins?).returns true
+ @pluginhandler.download_plugins
+ end
+
+ it "should be able to load plugins" do
+ @pluginhandler.should respond_to(:load_plugin)
+ end
+
+ it "should load each downloaded file" do
+ downloader = mock 'downloader'
+
+ Puppet::Agent::Downloader.expects(:new).returns downloader
+
+ downloader.expects(:evaluate).returns %w{one two}
+
+ @pluginhandler.expects(:download_plugins?).returns true
+
+ @pluginhandler.expects(:load_plugin).with("one")
+ @pluginhandler.expects(:load_plugin).with("two")
+
+ @pluginhandler.download_plugins
+ end
+
+ it "should load plugins when asked to do so" do
+ @pluginhandler.expects(:load).with("foo")
+
+ @pluginhandler.load_plugin("foo")
+ end
+
+ it "should not try to load directories" do
+ FileTest.expects(:directory?).with("foo").returns true
+ @pluginhandler.expects(:load).never
+
+ @pluginhandler.load_plugin("foo")
+ end
+
+ it "should warn but not fail if loading a file raises an exception" do
+ @pluginhandler.expects(:load).with("foo").raises "eh"
+
+ Puppet.expects(:err)
+ @pluginhandler.load_plugin("foo")
+ end
+
+ it "should warn but not fail if loading a file raises a LoadError" do
+ @pluginhandler.expects(:load).with("foo").raises LoadError.new("eh")
+
+ Puppet.expects(:err)
+ @pluginhandler.load_plugin("foo")
+ end
+end