From: Joel Rosario <[email protected]>

Signed-off-by: James Turnbull <[email protected]>
---
Local-branch: tickets/master/6693
 spec/integration/provider/group/groupadd_win.rb |   48 ++++++++++
 spec/integration/provider/user/useradd_win.rb   |   69 ++++++++++++++
 spec/integration/provider/windowstest.rb        |  109 +++++++++++++++++++++++
 3 files changed, 226 insertions(+), 0 deletions(-)
 create mode 100644 spec/integration/provider/group/groupadd_win.rb
 create mode 100644 spec/integration/provider/user/useradd_win.rb
 create mode 100644 spec/integration/provider/windowstest.rb

diff --git a/spec/integration/provider/group/groupadd_win.rb 
b/spec/integration/provider/group/groupadd_win.rb
new file mode 100644
index 0000000..51d1df7
--- /dev/null
+++ b/spec/integration/provider/group/groupadd_win.rb
@@ -0,0 +1,48 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "Provider for windows groups" do
+    confine :true => Puppet.features.windows?
+
+    require File.dirname(__FILE__) + '/../windowstest'
+    require File.dirname(__FILE__) + 
'/../../../../lib/puppet/provider/group/groupadd_win.rb'
+
+    include WindowsTest
+
+    def group_provider(resource_configuration)
+        provider = Puppet::Type::Group::ProviderGroupadd_win.new
+        provider.resource = resource_configuration
+        return provider
+    end
+
+    after(:each) do
+        clear
+    end   
+
+    it 'should create a group with configured members' do
+        groupname = "randomgroup"
+        register_group groupname
+
+        expected_members = ["test1", "test2"]
+        mkusers(expected_members)
+
+        provider = group_provider :name => groupname, :members => ['test1', 
'test2']
+        provider.create
+
+        should_have_no_missing_member(group(groupname), expected_members)
+    end
+
+    it 'should set a groups members' do
+        groupname = "randomgroup"
+        expected_members = ["test1", "test2"]
+
+        testgroup = mkgroup(groupname)
+        mkusers(expected_members)
+
+        provider = group_provider :name => groupname, :members => ['test1', 
'test2']
+        provider.members = ['test1', 'test2']
+
+        should_have_no_missing_member(testgroup, expected_members)
+    end
+end
diff --git a/spec/integration/provider/user/useradd_win.rb 
b/spec/integration/provider/user/useradd_win.rb
new file mode 100644
index 0000000..6b0eac1
--- /dev/null
+++ b/spec/integration/provider/user/useradd_win.rb
@@ -0,0 +1,69 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "Provider for windows users" do
+    confine :true => Puppet.features.windows?
+
+    require File.dirname(__FILE__) + '/../windowstest'
+    require File.dirname(__FILE__) + 
'/../../../../lib/puppet/provider/user/useradd_win.rb'
+
+    include WindowsTest
+
+    def user_provider(resource_configuration)
+        provider = Puppet::Type::User::ProviderUseradd_win.new
+        provider.resource = resource_configuration
+        return provider
+    end
+
+    after(:each) do
+        clear
+    end
+
+    it 'should add a user with the given password and group membership' do
+        expected_groups = ["randomgroup1", "randomgroup2"]
+        username = "testuser"
+        password = "1234"
+
+        mkgroups(expected_groups)
+        register_user username
+
+        provider = user_provider :name => username, :password => password, 
:groups => expected_groups.join(",")
+        provider.create
+
+        testuser = user(username)
+        testuser.password_is?(password).should be_true
+
+        groups = testuser.groups
+
+        expected_groups.each {|expected_group| 
groups.include?(expected_group).should be_true }
+        expected_groups.length.should be_eql(groups.length)
+    end
+
+    it 'should set the group membership of an existing user' do
+        expected_groups = ["randomgroup1", "randomgroup2"]
+        username = "testuser"
+
+        mkgroups expected_groups
+        mkuser username
+
+        provider = user_provider :name => username
+        provider.groups = expected_groups.join(",")
+
+        groups = provider.groups.split(',').collect {|group| group.strip }
+        groups.length.should be_eql(expected_groups.length)
+        groups.each {|group| expected_groups.include?(group).should be_true }
+    end
+
+    it 'should set a users password' do
+        username = "testuser"
+        password = "11112222"
+
+        testuser = mkuser username, password
+
+        provider = user_provider :name => username, :password => password
+        provider.password = password
+
+        testuser.password_is?(password).should be_true
+    end
+end
diff --git a/spec/integration/provider/windowstest.rb 
b/spec/integration/provider/windowstest.rb
new file mode 100644
index 0000000..e667531
--- /dev/null
+++ b/spec/integration/provider/windowstest.rb
@@ -0,0 +1,109 @@
+require File.dirname(__FILE__) + '/../../../lib/puppet/util/windows_system.rb'
+
+module WindowsTest
+    include Puppet::Util::Windows
+
+    class List
+        def initialize
+            @list = []
+        end
+
+        def clear
+            destroy
+            @list = []
+        end
+
+        def register(item)
+            @list << item
+        end
+    end
+
+    class Groups < List
+        include Puppet::Util::Windows
+
+        def destroy
+            @list.each {|group|
+                begin
+                    Group.delete(group)
+                rescue
+                    puts "Group #{group} not found"
+                end
+            }
+        end
+    end
+
+    class Users < List
+        include Puppet::Util::Windows
+
+        def destroy
+            @list.each {|user|
+                begin
+                    User.delete(user)
+                rescue
+                    puts "User #{user} not found"
+                end
+            }
+        end
+    end
+
+    def helper_users
+        @users = Users.new if @users == nil
+        @users
+    end
+
+    def helper_groups
+        @groups = Groups.new if @groups == nil
+        @groups
+    end
+
+    def clear
+        helper_groups.clear
+        helper_users.clear
+    end
+
+    def register_group(name)
+        helper_groups.register name
+    end
+
+    def register_user(name)
+        helper_users.register name
+    end
+
+    def mkuser(name, password = "1234567")
+        User.create(name, password) { register_user name }
+    end
+
+    def mkgroup(name)
+        Group.create(name) { register_group name }
+    end
+
+    def mkusers(names)
+        names.collect {|name| mkuser name }
+    end
+
+    def mkgroups(names)
+        names.collect {|name| mkgroup name }
+    end
+
+    def group(name)
+        Group.new(name)
+    end
+
+    def user(name)
+        User.new(name)
+    end
+
+    def assert_no_missing_member(group, expected_members)
+        members = group.members
+        expected_members.each {|member| assert(members.include?(member), 
"#{member} should be a member") }
+    end
+
+    def should_have_no_missing_member(testgroup, expected_members)
+        members = testgroup.members
+        expected_members.each {|member| members.include?(member).should 
be_true }
+    end
+
+    def teardown
+        clear
+    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