summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-05-01 03:14:09 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2007-05-01 03:14:09 +0000
commit64382700d8bb42d281cea47078c53dce33e0c2cb (patch)
tree207a415461127af0b6598aba807673f6ec59329f /test
parentc9de332e8ab75f234d79e2dc8a3fcd2949a1f224 (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.rb4
-rwxr-xr-xtest/ral/providers/provider.rb35
-rwxr-xr-xtest/ral/providers/user.rb2
-rwxr-xr-xtest/ral/providers/user/useradd.rb17
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