diff options
Diffstat (limited to 'spec/unit/file_serving')
-rwxr-xr-x | spec/unit/file_serving/base.rb | 124 | ||||
-rwxr-xr-x | spec/unit/file_serving/content.rb | 4 |
2 files changed, 126 insertions, 2 deletions
diff --git a/spec/unit/file_serving/base.rb b/spec/unit/file_serving/base.rb new file mode 100755 index 000000000..9d900e30a --- /dev/null +++ b/spec/unit/file_serving/base.rb @@ -0,0 +1,124 @@ +#!/usr/bin/env ruby + +require File.dirname(__FILE__) + '/../../spec_helper' + +require 'puppet/file_serving/base' + +describe Puppet::FileServing::Base do + it "should accept a key in the form of a URI" do + Puppet::FileServing::Base.new("puppet://host/module/dir/file").key.should == "puppet://host/module/dir/file" + end + + it "should allow specification of whether links should be managed" do + Puppet::FileServing::Base.new("puppet://host/module/dir/file", :links => :manage).links.should == :manage + end + + it "should consider :ignore links equivalent to :manage links" do + Puppet::FileServing::Base.new("puppet://host/module/dir/file", :links => :ignore).links.should == :manage + end + + it "should fail if :links is set to anything other than :manage, :follow, or :ignore" do + proc { Puppet::FileServing::Base.new("puppet://host/module/dir/file", :links => :else) }.should raise_error(ArgumentError) + end + + it "should default to :manage for :links" do + Puppet::FileServing::Base.new("puppet://host/module/dir/file").links.should == :manage + end + + it "should allow specification of a path" do + FileTest.stubs(:exists?).returns(true) + Puppet::FileServing::Base.new("puppet://host/module/dir/file", :path => "/my/file").path.should == "/my/file" + end + + it "should allow specification of a relative path" do + FileTest.stubs(:exists?).returns(true) + Puppet::FileServing::Base.new("puppet://host/module/dir/file", :relative_path => "my/file").relative_path.should == "my/file" + end + + it "should have a means of determining if the file exists" do + Puppet::FileServing::Base.new("blah").should respond_to(:exist?) + end + + it "should correctly indicate if the file is present" do + File.expects(:lstat).with("/my/file").returns(mock("stat")) + Puppet::FileServing::Base.new("blah", :path => "/my/file").exist?.should be_true + end + + it "should correctly indicate if the file is asbsent" do + File.expects(:lstat).with("/my/file").raises RuntimeError + Puppet::FileServing::Base.new("blah", :path => "/my/file").exist?.should be_false + end + + describe "when setting the base path" do + before do + @file = Puppet::FileServing::Base.new("puppet://host/module/dir/file") + end + + it "should require that the base path be fully qualified" do + FileTest.stubs(:exists?).returns(true) + proc { @file.path = "unqualified/file" }.should raise_error(ArgumentError) + end + end + + describe "when setting the relative path" do + it "should require that the relative path be unqualified" do + @file = Puppet::FileServing::Base.new("puppet://host/module/dir/file") + FileTest.stubs(:exists?).returns(true) + proc { @file.relative_path = "/qualified/file" }.should raise_error(ArgumentError) + end + end + + describe "when determining the full file path" do + before do + @file = Puppet::FileServing::Base.new("mykey", :path => "/this/file") + end + + it "should return the path if there is no relative path" do + @file.full_path.should == "/this/file" + end + + it "should return the path if the relative_path is set to ''" do + @file.relative_path = "" + @file.full_path.should == "/this/file" + end + + it "should return the path joined with the relative path if there is a relative path and it is not set to '/' or ''" do + @file.relative_path = "not/qualified" + @file.full_path.should == "/this/file/not/qualified" + end + + it "should should fail if there is no path set" do + @file = Puppet::FileServing::Base.new("not/qualified") + proc { @file.full_path }.should raise_error(ArgumentError) + end + end + + describe "when stat'ing files" do + before do + @file = Puppet::FileServing::Base.new("mykey", :path => "/this/file") + end + + it "should stat the file's full path" do + @file.stubs(:full_path).returns("/this/file") + File.expects(:lstat).with("/this/file").returns stub("stat", :ftype => "file") + @file.stat + end + + it "should fail if the file does not exist" do + @file.stubs(:full_path).returns("/this/file") + File.expects(:lstat).with("/this/file").raises(Errno::ENOENT) + proc { @file.stat }.should raise_error(Errno::ENOENT) + end + + it "should use :lstat if :links is set to :manage" do + File.expects(:lstat).with("/this/file").returns stub("stat", :ftype => "file") + @file.stat + end + + it "should use :stat if :links is set to :follow" do + File.expects(:stat).with("/this/file").returns stub("stat", :ftype => "file") + @file.links = :follow + @file.stat + end + end +end diff --git a/spec/unit/file_serving/content.rb b/spec/unit/file_serving/content.rb index b747ced78..82353d23d 100755 --- a/spec/unit/file_serving/content.rb +++ b/spec/unit/file_serving/content.rb @@ -5,8 +5,8 @@ require File.dirname(__FILE__) + '/../../spec_helper' require 'puppet/file_serving/content' describe Puppet::FileServing::Content do - it "should should be a subclass of FileBase" do - Puppet::FileServing::Content.superclass.should equal(Puppet::FileServing::FileBase) + it "should should be a subclass of Base" do + Puppet::FileServing::Content.superclass.should equal(Puppet::FileServing::Base) end it "should indirect file_content" do |