diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-05-01 03:14:09 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-05-01 03:14:09 +0000 |
| commit | 64382700d8bb42d281cea47078c53dce33e0c2cb (patch) | |
| tree | 207a415461127af0b6598aba807673f6ec59329f /test | |
| parent | c9de332e8ab75f234d79e2dc8a3fcd2949a1f224 (diff) | |
Adding a "supports_parameter?" method to test whether a given provider supports the features required by a given parameter. This is used during attribute instance creation, but its creation was necessicated by test code.
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2444 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'test')
| -rw-r--r-- | test/lib/puppettest/fakes.rb | 4 | ||||
| -rwxr-xr-x | test/ral/providers/provider.rb | 35 | ||||
| -rwxr-xr-x | test/ral/providers/user.rb | 2 | ||||
| -rwxr-xr-x | test/ral/providers/user/useradd.rb | 17 |
4 files changed, 43 insertions, 15 deletions
diff --git a/test/lib/puppettest/fakes.rb b/test/lib/puppettest/fakes.rb index ca47268c8..ec5d88fde 100644 --- a/test/lib/puppettest/fakes.rb +++ b/test/lib/puppettest/fakes.rb @@ -114,6 +114,10 @@ module PuppetTest end end + def self.supports_parameter?(param) + true + end + def self.suitable? true end diff --git a/test/ral/providers/provider.rb b/test/ral/providers/provider.rb index a32934e74..134fe390d 100755 --- a/test/ral/providers/provider.rb +++ b/test/ral/providers/provider.rb @@ -383,6 +383,41 @@ class TestProviderFeatures < Test::Unit::TestCase "Got incorrect feature list for %s" % name) end end + + def test_supports_parameter? + # Make some parameters for each setting + @type.newparam(:neither) {} + @type.newparam(:some, :required_features => :alpha) + @type.newparam(:both, :required_features => [:alpha, :numeric]) + + # and appropriate providers + nope = @type.provide(:nope) {} + maybe = @type.provide(:maybe) { has_features(:alpha) } + yep = @type.provide(:yep) { has_features(:alpha, :numeric) } + + # Now make sure our providers answer correctly. + [nope, maybe, yep].each do |prov| + assert(prov.respond_to?(:supports_parameter?), "%s does not respond to :supports_parameter?" % prov.name) + case prov.name + when :nope: + supported = [:neither] + un = [:some, :both] + when :maybe: + supported = [:neither, :some] + un = [:both] + when :yep: + supported = [:neither, :some, :both] + un = [] + end + + supported.each do |param| + assert(prov.supports_parameter?(param), "%s was not supported by %s" % [param, prov.name]) + end + un.each do |param| + assert(! prov.supports_parameter?(param), "%s was incorrectly supported by %s" % [param, prov.name]) + end + end + end end # $Id$ diff --git a/test/ral/providers/user.rb b/test/ral/providers/user.rb index af4530c7b..12caaad22 100755 --- a/test/ral/providers/user.rb +++ b/test/ral/providers/user.rb @@ -185,6 +185,8 @@ class TestUserProvider < Test::Unit::TestCase Puppet::Type.type(:user).validproperties.each do |property| next if property == :ensure + # This is mostly in place for the 'password' stuff. + next unless user.class.supports_parameter?(property) val = nil assert_nothing_raised { val = user.send(property) diff --git a/test/ral/providers/user/useradd.rb b/test/ral/providers/user/useradd.rb index 97935f4a9..ca917f6c4 100755 --- a/test/ral/providers/user/useradd.rb +++ b/test/ral/providers/user/useradd.rb @@ -178,23 +178,9 @@ class UserAddProviderTest < PuppetTest::TestCase end def test_manages_password - if Facter.value(:kernel) != "Linux" - assert(! @provider.feature?(:manages_passwords), - "Defaulted to managing passwords on %s" % - Facter.value(:kernel)) - - # Now just make sure it's not allowed, and return - setup_user - assert_raise(Puppet::Error, "allowed passwd mgmt on failing host") do - @user[:password] = "yayness" - end + unless @provider.feature?(:manages_passwords) return end - - # Now, test that it works correctly. - assert(@provider.manages_passwords?, - "Defaulted to not managing passwords on %s" % - Facter.value(:kernel)) @vals[:password] = "somethingorother" setup_user @@ -244,6 +230,7 @@ end class UserRootAddProviderTest < PuppetTest::TestCase confine "useradd user provider missing" => Puppet::Type.type(:user).provider(:useradd).suitable? + confine "useradd does not manage passwords" => Puppet::Type.type(:user).provider(:useradd).manages_passwords? confine "not running as root" => (Process.uid == 0) def test_password |
