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
|
require 'spec_helper'
require 'puppet/file_serving/mount/plugins'
describe Puppet::FileServing::Mount::Plugins do
before do
@mount = Puppet::FileServing::Mount::Plugins.new("plugins")
@environment = double('environment', :module => nil)
@options = { :recurse => true }
@request = double('request', :environment => @environment, :options => @options)
end
describe "when finding files" do
it "should use the provided environment to find the modules" do
expect(@environment).to receive(:modules).and_return([])
@mount.find("foo", @request)
end
it "should return nil if no module can be found with a matching plugin" do
mod = double('module')
allow(mod).to receive(:plugin).with("foo/bar").and_return(nil)
allow(@environment).to receive(:modules).and_return([mod])
expect(@mount.find("foo/bar", @request)).to be_nil
end
it "should return the file path from the module" do
mod = double('module')
allow(mod).to receive(:plugin).with("foo/bar").and_return("eh")
allow(@environment).to receive(:modules).and_return([mod])
expect(@mount.find("foo/bar", @request)).to eq("eh")
end
end
describe "when searching for files" do
it "should use the node's environment to find the modules" do
expect(@environment).to receive(:modules).at_least(:once).and_return([])
allow(@environment).to receive(:modulepath).and_return(["/tmp/modules"])
@mount.search("foo", @request)
end
it "should return modulepath if no modules can be found that have plugins" do
mod = double('module')
allow(mod).to receive(:plugins?).and_return(false)
allow(@environment).to receive(:modules).and_return([])
allow(@environment).to receive(:modulepath).and_return(["/"])
expect(@options).to receive(:[]=).with(:recurse, false)
expect(@mount.search("foo/bar", @request)).to eq(["/"])
end
it "should return the default search module path if no modules can be found that have plugins and modulepath is invalid" do
mod = double('module')
allow(mod).to receive(:plugins?).and_return(false)
allow(@environment).to receive(:modules).and_return([])
allow(@environment).to receive(:modulepath).and_return([])
expect(@mount.search("foo/bar", @request)).to eq([Puppet[:codedir]])
end
it "should return the plugin paths for each module that has plugins" do
one = double('module', :plugins? => true, :plugin_directory => "/one")
two = double('module', :plugins? => true, :plugin_directory => "/two")
allow(@environment).to receive(:modules).and_return([one, two])
expect(@mount.search("foo/bar", @request)).to eq(%w{/one /two})
end
end
end
|