From: Joel Rosario <[email protected]>

Signed-off-by: James Turnbull <[email protected]>
---
Local-branch: tickets/master/6693
 spec/unit/provider/group/groupadd_win.rb |   55 +++++++++++++++++++++
 spec/unit/provider/user/useradd_win.rb   |   79 ++++++++++++++++++++++++++++++
 2 files changed, 134 insertions(+), 0 deletions(-)
 create mode 100644 spec/unit/provider/group/groupadd_win.rb
 create mode 100644 spec/unit/provider/user/useradd_win.rb

diff --git a/spec/unit/provider/group/groupadd_win.rb 
b/spec/unit/provider/group/groupadd_win.rb
new file mode 100644
index 0000000..1b8d4c1
--- /dev/null
+++ b/spec/unit/provider/group/groupadd_win.rb
@@ -0,0 +1,55 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "Group management for Windows: useradd_win" do
+    confine :true => Puppet.features.windows?
+    
+    before(:each) do
+        @resource = stub('resource')
+        @resource.stubs(:[]).with(:name).returns('testgroup')
+        
+        provider_class = Puppet::Type.type(:group).provider(:groupadd_win)
+        @provider = provider_class.new(@resource)
+        
+        @group_mock = mock('group')
+        @provider.stubs(:group).returns @group_mock
+    end
+
+    it 'should be able to provide a list of members' do
+        expected_members = ['user1', 'user2']
+        @group_mock.expects(:members).returns expected_members
+
+        members = @provider.members
+        members.length.should be_eql(2)
+        expected_members.each {|member| members.include?(member).should 
be_true }
+    end
+    
+    it 'should be able to set group members' do
+        members = ['user1', 'user2']
+        @group_mock.expects(:set_members).with(members)
+        @provider.members = members
+    end
+    
+    it 'should be able to create a group' do
+        
Puppet::Util::Windows::Group.expects(:create).with('testgroup').returns 
@group_mock
+        members = ['user1', 'user2']
+        @resource.expects(:[]).with(:members).returns members
+        @group_mock.expects(:set_members).with(members)
+        
+        @provider.create
+    end
+
+    it 'should be able to delete a group' do
+        Puppet::Util::Windows::Group.expects(:delete).with('testgroup')
+        @provider.delete
+    end
+    
+    it 'should be able to verify that a group exists' do
+        
Puppet::Util::Windows::Group.expects(:exists?).with('testgroup').returns true
+        @provider.should be_exists
+        
+        
Puppet::Util::Windows::Group.expects(:exists?).with('testgroup').returns false
+        @provider.should_not be_exists
+    end
+end
diff --git a/spec/unit/provider/user/useradd_win.rb 
b/spec/unit/provider/user/useradd_win.rb
new file mode 100644
index 0000000..321cb8e
--- /dev/null
+++ b/spec/unit/provider/user/useradd_win.rb
@@ -0,0 +1,79 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "User management for Windows: useradd_win" do
+    confine :true => Puppet.features.windows?
+    
+    before(:each) do
+        @resource = stub('resource')
+        @resource.stubs(:[]).with(:name).returns('testuser')
+        @resource.stubs(:[]).with(:password).returns('pwd')
+
+        provider_class = Puppet::Type.type(:user).provider(:useradd_win)
+        @provider = provider_class.new(@resource)
+
+        @user_mock = mock('user')
+        @provider.stubs(:user).returns @user_mock
+    end
+
+    it 'should be able to verify a users password using User::password_is?' do
+        @user_mock.expects(:password_is?).with('pwd').returns true
+        @provider.password.should be_eql('pwd')
+        
+        @user_mock.expects(:password_is?).with('pwd').returns false
+        @provider.password.should be_eql('')
+    end
+    
+    it 'should be able to set a users password using User::password' do
+        @user_mock.expects(:password=).with('pwd')
+        @provider.password = 'pwd'
+    end
+    
+    describe 'when asked for a list of groups of which the user is a member' do
+        it 'should return the list of groups as a csv' do
+            @user_mock.expects(:groups).returns ['group1', 'group2', 'group3']
+            @provider.groups.should be_eql('group1,group2,group3')
+        end
+        
+        it 'should return :absent if any error is raised while fetching the 
list' do
+            @user_mock.expects(:groups).raises("ERROR")
+            @provider.groups.should be_eql(:absent)
+        end
+    end
+    
+    it 'should be able to add a user to a set of groups' do
+        @resource.expects(:[]).with(:membership).returns(:minimum)
+        @user_mock.expects(:set_groups).with('group1,group2', true)
+        
+        @provider.groups = 'group1,group2'
+        
+        @resource.expects(:[]).with(:membership).returns(:inclusive)
+        @user_mock.expects(:set_groups).with('group1,group2', false)
+        
+        @provider.groups = 'group1,group2'
+    end
+    
+    it 'should be able to create a user' do
+        @resource.expects(:[]).with(:groups).returns('group1,group2')
+        @resource.expects(:[]).with(:membership).returns(:minimum)
+        
+        Puppet::Util::Windows::User.expects(:create).with('testuser', 
'pwd').returns @user_mock
+        @user_mock.expects(:set_groups).with('group1,group2', true)
+        
+        @provider.create
+    end
+    
+    it 'should be able to test whether a user exists' do
+        Puppet::Util::Windows::User.expects(:exists?).with('testuser').returns 
true
+        @provider.should be_exists
+
+        Puppet::Util::Windows::User.expects(:exists?).with('testuser').returns 
false
+        @provider.should_not be_exists
+    end
+    
+    it 'should be able to delete a user' do
+        Puppet::Util::Windows::User.expects(:delete).with('testuser')
+        @provider.delete
+    end
+end
-- 
1.7.1

-- 
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.

Reply via email to