blob: bd2ed38555644c9aba43e9e307678426aba883d8 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
#!/usr/bin/env ruby
require 'spec_helper'
require 'puppet/configurer'
require 'puppet/configurer/plugin_handler'
class PluginHandlerTester
include Puppet::Configurer::PluginHandler
end
describe Puppet::Configurer::PluginHandler do
before do
@pluginhandler = PluginHandlerTester.new
# PluginHandler#load_plugin has an extra-strong rescue clause
# this mock is to make sure that we don't silently ignore errors
Puppet.expects(:err).never
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::Configurer::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::Configurer::Downloader.expects(:new).with("plugin", "pdest", "psource", "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
FileTest.stubs(:exist?).returns true
downloader = mock 'downloader'
Puppet::Configurer::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
FileTest.stubs(:exist?).returns true
@pluginhandler.expects(:load).with("foo")
@pluginhandler.load_plugin("foo")
end
it "should not try to load files that don't exist" do
FileTest.expects(:exist?).with("foo").returns false
@pluginhandler.expects(:load).never
@pluginhandler.load_plugin("foo")
end
it "should not try to load directories" do
FileTest.stubs(:exist?).returns true
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
FileTest.stubs(:exist?).returns true
@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
FileTest.stubs(:exist?).returns true
@pluginhandler.expects(:load).with("foo").raises LoadError.new("eh")
Puppet.expects(:err)
@pluginhandler.load_plugin("foo")
end
end
|