diff options
-rwxr-xr-x | lib/puppet/type/user.rb | 3 | ||||
-rwxr-xr-x | spec/unit/type/user.rb | 24 |
2 files changed, 25 insertions, 2 deletions
diff --git a/lib/puppet/type/user.rb b/lib/puppet/type/user.rb index 571781d5a..bb0a86fd0 100755 --- a/lib/puppet/type/user.rb +++ b/lib/puppet/type/user.rb @@ -272,7 +272,7 @@ module Puppet current_value = :absent if absent - prophash[property] = :absent + prophash[property] = :absent else current_value = property.retrieve prophash[property] = current_value @@ -280,7 +280,6 @@ module Puppet if property.name == :ensure and current_value == :absent absent = true -# next end prophash } diff --git a/spec/unit/type/user.rb b/spec/unit/type/user.rb index 8fe16901e..51c6dd801 100755 --- a/spec/unit/type/user.rb +++ b/spec/unit/type/user.rb @@ -48,6 +48,30 @@ describe user do end end + describe "when retrieving all current values" do + before do + @user = user.create(:name => "foo", :uid => 10, :gid => 10) + @properties = {} + end + + it "should return a hash containing values for all set properties" do + values = @user.retrieve + [@user.property(:uid), @user.property(:gid)].each { |property| values.should be_include(property) } + end + + it "should set all values to :absent if the user is absent" do + @user.property(:ensure).expects(:retrieve).returns :absent + @user.property(:uid).expects(:retrieve).never + @user.retrieve[@user.property(:uid)].should == :absent + end + + it "should include the result of retrieving each property's current value if the user is present" do + @user.property(:ensure).expects(:retrieve).returns :present + @user.property(:uid).expects(:retrieve).returns 15 + @user.retrieve[@user.property(:uid)].should == 15 + end + end + describe "when managing the ensure property" do before do @ensure = user.attrclass(:ensure).new(:resource => @resource) |