diff options
author | James Turnbull <james@lovedthanlost.net> | 2008-10-08 14:00:35 +1100 |
---|---|---|
committer | James Turnbull <james@lovedthanlost.net> | 2008-10-08 14:01:24 +1100 |
commit | d803096c9a69e0c15548d1ab0d9136c7de234d07 (patch) | |
tree | 101c6f56793f186e6126bc9488ed0143c7f3ea87 | |
parent | a3f34f94420a2e14716aaffcc0aa112803895e46 (diff) | |
download | puppet-d803096c9a69e0c15548d1ab0d9136c7de234d07.tar.gz puppet-d803096c9a69e0c15548d1ab0d9136c7de234d07.tar.xz puppet-d803096c9a69e0c15548d1ab0d9136c7de234d07.zip |
Add new set of unit tests for selmodule type
-rw-r--r-- | spec/unit/other/selinux.rb | 35 | ||||
-rw-r--r-- | spec/unit/provider/selmodule-example.pp | bin | 0 -> 256 bytes | |||
-rwxr-xr-x | spec/unit/provider/selmodule.rb | 63 | ||||
-rwxr-xr-x | spec/unit/type/selmodule.rb | 18 |
4 files changed, 81 insertions, 35 deletions
diff --git a/spec/unit/other/selinux.rb b/spec/unit/other/selinux.rb deleted file mode 100644 index 6f8fcb051..000000000 --- a/spec/unit/other/selinux.rb +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby - -require File.dirname(__FILE__) + '/../../spec_helper' - -require 'puppet/type/selmodule' - -describe Puppet.type(:selmodule), " when checking policy modules" do - before :each do - @module = Puppet::Type::Selmodule.create( - :name => "foo", - :selmoduledir => "/some/path", - :selmodulepath => "/some/path/foo.pp", - :syncversion => true) - end - it "should be able to access :name" do - @module[:name].should == "foo" - end - it "should be able to access :selmoduledir" do - @module[:selmoduledir].should == "/some/path" - end - it "should be able to access :selmodulepath" do - @module[:selmodulepath].should == "/some/path/foo.pp" - end - it "should be able to access :syncversion" do - @module.property(:syncversion).should == :true - end - it "should set the syncversion value to false" do - @module[:syncversion] = :false - @module.property(:syncversion).should == :false - end - after :each do - Puppet::Type::Selmodule.clear() - end -end - diff --git a/spec/unit/provider/selmodule-example.pp b/spec/unit/provider/selmodule-example.pp Binary files differnew file mode 100644 index 000000000..28166ca40 --- /dev/null +++ b/spec/unit/provider/selmodule-example.pp diff --git a/spec/unit/provider/selmodule.rb b/spec/unit/provider/selmodule.rb new file mode 100755 index 000000000..640e94646 --- /dev/null +++ b/spec/unit/provider/selmodule.rb @@ -0,0 +1,63 @@ +#!/usr/bin/env ruby + +# Note: This unit test depends on having a sample SELinux policy file +# in the same directory as this test called selmodule-example.pp +# with version 1.5.0. The provided selmodule-example.pp is the first +# 256 bytes taken from /usr/share/selinux/targeted/nagios.pp on Fedora 9 + +Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") } + +provider_class = Puppet::Type.type(:selmodule).provider(:semodule) + +describe provider_class do + before :each do + @resource = stub("resource", :name => "foo") + @resource.stubs(:[]).returns "foo" + @provider = provider_class.new(@resource) + end + + describe "exists? method" do + it "should find a module if it is already loaded" do + @provider.expects(:execpipe).with("/usr/sbin/semodule --list").yields ["bar\t1.2.3\n", "foo\t4.4.4\n", "bang\t1.0.0\n"] + @provider.exists?.should == :true + end + + it "should return nil if not loaded" do + @provider.expects(:execpipe).with("/usr/sbin/semodule --list").yields ["bar\t1.2.3\n", "bang\t1.0.0\n"] + @provider.exists?.should be_nil + end + + it "should return nil if no modules are loaded" do + @provider.expects(:execpipe).with("/usr/sbin/semodule --list").yields [] + @provider.exists?.should be_nil + end + end + + describe "selmodversion_file" do + it "should return 1.5.0 for the example policy file" do + @provider.expects(:selmod_name_to_filename).returns "#{File.dirname(__FILE__)}/selmodule-example.pp" + @provider.selmodversion_file.should == "1.5.0" + end + end + + describe "syncversion" do + it "should return :true if loaded and file modules are in sync" do + @provider.expects(:selmodversion_loaded).returns "1.5.0" + @provider.expects(:selmodversion_file).returns "1.5.0" + @provider.syncversion.should == :true + end + + it "should return :false if loaded and file modules are not in sync" do + @provider.expects(:selmodversion_loaded).returns "1.4.0" + @provider.expects(:selmodversion_file).returns "1.5.0" + @provider.syncversion.should == :false + end + + it "should return before checking file version if no loaded policy" do + @provider.expects(:selmodversion_loaded).returns nil + @provider.syncversion.should == :false + end + + end + +end diff --git a/spec/unit/type/selmodule.rb b/spec/unit/type/selmodule.rb new file mode 100755 index 000000000..f14bea9d3 --- /dev/null +++ b/spec/unit/type/selmodule.rb @@ -0,0 +1,18 @@ +#!/usr/bin/env ruby + +Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") } + +describe Puppet::Type.type(:selmodule), "when validating attributes" do + [:name, :selmoduledir, :selmodulepath].each do |param| + it "should have a #{param} parameter" do + Puppet::Type.type(:selmodule).attrtype(param).should == :param + end + end + + [:ensure, :syncversion].each do |param| + it "should have a #{param} property" do + Puppet::Type.type(:selmodule).attrtype(param).should == :property + end + end +end + |