Signed-off-by: Paul Nasrat <[EMAIL PROTECTED]>
---
spec/unit/network/handler/fileserver.rb | 133 +++++++++++++++++++++++++++++++
1 files changed, 133 insertions(+), 0 deletions(-)
create mode 100644 spec/unit/network/handler/fileserver.rb
diff --git a/spec/unit/network/handler/fileserver.rb
b/spec/unit/network/handler/fileserver.rb
new file mode 100644
index 0000000..9cde963
--- /dev/null
+++ b/spec/unit/network/handler/fileserver.rb
@@ -0,0 +1,133 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+require 'puppet/network/handler/fileserver'
+
+
+describe Puppet::Network::Handler do
+ require 'tmpdir'
+
+ def create_file(filename)
+ File.open(filename, "w") { |f| f.puts filename}
+ end
+
+ def create_nested_file()
+ dirname = File.join(@basedir, "nested_dir")
+ Dir.mkdir(dirname)
+ file = File.join(dirname, "nested_dir_file")
+ create_file(file)
+ end
+
+ before do
+ @basedir = File.join("/tmp", "test_network_handler")
+ Dir.mkdir(@basedir)
+ @file = File.join(@basedir, "aFile")
+ @link = File.join(@basedir, "aLink")
+ create_file(@file)
+ @mount = Puppet::Network::Handler::FileServer::Mount.new("some_path",
@basedir)
+ end
+
+ it "should list a single directory" do
+ @mount.list("/", false, false).should == [["/", "directory"]]
+ end
+
+ it "should list a file within a directory when given the file path" do
+ @mount.list("/aFile", false, "false").should == [["/", "file"]]
+ end
+
+ it "should return nil for a non-existent path" do
+ @mount.list("/no_such_file", false, false).should be(nil)
+ end
+
+ it "should list a symbolic link as a file when given the link path" do
+ File.symlink(@file, @link)
+ @mount.list("/aLink", false, false).should == [["/", "file"]]
+ end
+
+ it "should return nil for a dangling symbolic link when given the link
path" do
+ File.symlink("/some/where", @link)
+ @mount.list("/aLink", false, false).should be(nil)
+ end
+
+ it "should list directory contents of a flat directory structure when
asked to recurse" do
+ list = @mount.list("/", true, false)
+ list.should include(["/aFile", "file"])
+ list.should include(["/", "directory"])
+ list.should have(2).items
+ end
+
+ it "should list the contents of a nested directory" do
+ create_nested_file()
+ list = @mount.list("/", true, false)
+ list.sort.should == [ ["/aFile", "file"], ["/", "directory"] ,
+ ["/nested_dir", "directory"],
["/nested_dir/nested_dir_file", "file"]].sort
+ end
+
+ it "should list the contents of a directory ignoring files that match" do
+ create_nested_file()
+ list = @mount.list("/", true, "*File")
+ list.sort.should == [ ["/", "directory"] ,
+ ["/nested_dir", "directory"],
["/nested_dir/nested_dir_file", "file"]].sort
+ end
+
+ it "should list the contents of a directory ignoring directories that
match" do
+ create_nested_file()
+ list = @mount.list("/", true, "*nested_dir")
+ list.sort.should == [ ["/aFile", "file"], ["/", "directory"] ].sort
+ end
+
+ it "should list the contents of a directory ignoring all ignore patterns
that match" do
+ create_nested_file()
+ list = @mount.list("/", true, ["*File" , "*nested_dir"])
+ list.should == [ ["/", "directory"] ]
+ end
+
+ it "should list the directory when recursing to a depth of zero" do
+ create_nested_file()
+ list = @mount.list("/", 0, false)
+ list.should == [["/", "directory"]]
+ end
+
+ it "should list the base directory and files and nested directory to a
depth of one" do
+ create_nested_file()
+ list = @mount.list("/", 1, false)
+ list.sort.should == [ ["/aFile", "file"], ["/nested_dir",
"directory"], ["/", "directory"] ].sort
+ end
+
+ it "should list the base directory and files and nested directory to a
depth of two" do
+ create_nested_file()
+ list = @mount.list("/", 2, false)
+ list.sort.should == [ ["/aFile", "file"], ["/", "directory"] ,
+ ["/nested_dir", "directory"],
["/nested_dir/nested_dir_file", "file"]].sort
+ end
+
+ it "should list the base directory and files and nested directory to a
depth greater than the directory structure" do
+ create_nested_file()
+ list = @mount.list("/", 42, false)
+ list.sort.should == [ ["/aFile", "file"], ["/", "directory"] ,
+ ["/nested_dir", "directory"],
["/nested_dir/nested_dir_file", "file"]].sort
+ end
+
+ it "should list a valid symbolic link as a file when recursing base dir" do
+ File.symlink(@file, @link)
+ list = @mount.list("/", true, false)
+ list.sort.should == [ ["/", "directory"], ["/aFile", "file"],
["/aLink", "file"] ].sort
+ end
+
+ it "should not error when a dangling symlink is present" do
+ File.symlink("/some/where", @link)
+ lambda { @mount.list("/", true, false) }.should_not raise_error
+ end
+
+ it "should return the directory contents of valid entries when a dangling
symlink is present" do
+ File.symlink("/some/where", @link)
+ list = @mount.list("/", true, false)
+ list.sort.should == [ ["/aFile", "file"], ["/", "directory"] ].sort
+ end
+
+ after do
+ FileUtils.rm_rf(@basedir)
+ end
+
+end
\ No newline at end of file
--
1.5.3.4
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Puppet Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/puppet-dev?hl=en
-~----------~----~----~----~------~----~------~--~---