From: Joel Rosario <[email protected]>

Signed-off-by: James Turnbull <[email protected]>
---
Local-branch: tickets/master/6693
 spec/integration/provider/group/groupadd_win.rb |   29 ++++--
 spec/integration/provider/user/useradd_win.rb   |   45 ++++++---
 spec/lib/windowstest.rb                         |  116 +++++++----------------
 3 files changed, 80 insertions(+), 110 deletions(-)

diff --git a/spec/integration/provider/group/groupadd_win.rb 
b/spec/integration/provider/group/groupadd_win.rb
index 11ea597..0de01ce 100644
--- a/spec/integration/provider/group/groupadd_win.rb
+++ b/spec/integration/provider/group/groupadd_win.rb
@@ -7,41 +7,48 @@ describe "Provider for windows groups" do
 
     require 'windowstest'
     include WindowsTest
+    
+    Puppet::Type.type(:user).provider(:useradd_win)
+
+    before(:each) do
+        @users_to_delete = []
+        @groups_to_delete = []
+    end
+    
+    after(:each) do
+        delete_test_users
+        delete_test_groups
+    end   
 
     def group_provider(resource_configuration)
-        #provider = Puppet::Type::Group::ProviderGroupadd_win.new
         provider = Puppet::Type.type(:group).provider(:groupadd_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
+        delete_group_later groupname
 
         expected_members = ["test1", "test2"]
-        mkusers(expected_members)
+        create_test_users expected_members
 
         provider = group_provider :name => groupname, :members => ['test1', 
'test2']
         provider.create
 
-        should_have_no_missing_member(group(groupname), expected_members)
+        group(groupname).members.sort.should be_eql(expected_members.sort)
     end
 
     it 'should set a groups members' do
         groupname = "randomgroup"
         expected_members = ["test1", "test2"]
 
-        testgroup = mkgroup(groupname)
-        mkusers(expected_members)
+        testgroup = create_test_groups(groupname)
+        create_test_users(expected_members)
 
         provider = group_provider :name => groupname, :members => ['test1', 
'test2']
         provider.members = ['test1', 'test2']
 
-        should_have_no_missing_member(testgroup, expected_members)
+        group(groupname).members.sort.should be_eql(expected_members.sort)
     end
 end
diff --git a/spec/integration/provider/user/useradd_win.rb 
b/spec/integration/provider/user/useradd_win.rb
index 55cd094..41be784 100644
--- a/spec/integration/provider/user/useradd_win.rb
+++ b/spec/integration/provider/user/useradd_win.rb
@@ -8,23 +8,29 @@ describe "Provider for windows users" do
     require 'windowstest'
     include WindowsTest
 
+    before(:each) do
+        @users_to_delete = []
+        @groups_to_delete = []
+    end
+    
+    after(:each) do
+        delete_test_users
+        delete_test_groups
+    end   
+
     def user_provider(resource_configuration)
         provider = Puppet::Type.type(:user).provider(:useradd_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
+    it 'should create a user with the given password and group membership' do
         expected_groups = ["randomgroup1", "randomgroup2"]
         username = "testuser"
         password = "1234"
 
-        mkgroups(expected_groups)
-        register_user username
+        create_test_groups(expected_groups)
+        delete_user_later username
 
         provider = user_provider :name => username, :password => password, 
:groups => expected_groups.join(",")
         provider.create
@@ -32,19 +38,21 @@ describe "Provider for windows users" do
         testuser = user(username)
         testuser.password_is?(password).should be_true
 
-        groups = testuser.groups
+        users_groups = testuser.groups
 
-        expected_groups.each {|expected_group| 
groups.include?(expected_group).should be_true }
-        expected_groups.length.should be_eql(groups.length)
+        users_groups.sort.should be_eql(expected_groups.sort)
     end
 
     describe "when a user belongs to groups named randomgroup1, randomgroup2," 
do
-        before(:all) do
+        before do
+            @users_to_delete = []
+            @groups_to_delete = []
+
             expected_groups = ["randomgroup1", "randomgroup2"]
             username = "testuser"
 
-            mkgroups expected_groups
-            mkuser username
+            create_test_groups expected_groups
+            create_test_users username
 
             @provider = user_provider :name => username
             @provider.groups = expected_groups.join(",")
@@ -53,9 +61,14 @@ describe "Provider for windows users" do
             groups.length.should be_eql(expected_groups.length)
             groups.each {|group| expected_groups.include?(group).should 
be_true }
         end
-        
+
+        after do
+            delete_test_users
+            delete_test_groups
+        end
+
         describe "after setting membership to randomgroup1 only, " do
-            before(:all) do
+            before do
                 @provider.groups = "randomgroup1"
             end
             
@@ -72,7 +85,7 @@ describe "Provider for windows users" do
         username = "testuser"
         password = "11112222"
 
-        testuser = mkuser username, password
+        testuser = create_test_user username, password
 
         provider = user_provider :name => username, :password => password
         provider.password = password
diff --git a/spec/lib/windowstest.rb b/spec/lib/windowstest.rb
index 8bd9d3e..d160fda 100644
--- a/spec/lib/windowstest.rb
+++ b/spec/lib/windowstest.rb
@@ -4,107 +4,57 @@ 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
+    def group(name)
+        Group.new(name)
     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
+    def user(name)
+        User.new(name)
     end
 
-    class Users < List
-        include Puppet::Util::Windows
-
-        def destroy
-            @list.each {|user|
-                begin
-                    User.delete(user)
-                rescue
-                    puts "User #{user} not found"
-                end
-            }
+    def create_test_groups(groupnames)
+        list = groupnames.collect do |name|
+            group = Puppet::Util::Windows::Group.create(name)
+            delete_group_later name
+            group
         end
-    end
-
-    def helper_users
-        @users = Users.new if @users == nil
-        @users
-    end
 
-    def helper_groups
-        @groups = Groups.new if @groups == nil
-        @groups
+        return list[0] if list.length == 1
+        return list
     end
 
-    def clear
-        helper_groups.clear
-        helper_users.clear
+    def create_test_user(username, password)
+        user = Puppet::Util::Windows::User.create(username, password)
+        @users_to_delete << username
+        return user
     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 create_test_users(*usernames)
+        password = "qwertyuiop"
+        
+        list = usernames.flatten.collect do |name|
+            create_test_user(name, password)
+        end
 
-    def mkgroups(names)
-        names.collect {|name| mkgroup name }
+        return list[0] if list.length == 1
+        return list
     end
 
-    def group(name)
-        Group.new(name)
-    end
-
-    def user(name)
-        User.new(name)
+    def delete_test_users
+        @users_to_delete.each {|name| Puppet::Util::Windows::User.delete(name) 
}
+        @users_to_delete = []
     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") }
+    def delete_test_groups
+        @groups_to_delete.each {|name| 
Puppet::Util::Windows::Group.delete(name) }
+        @groups_to_delete = []
     end
 
-    def should_have_no_missing_member(testgroup, expected_members)
-        members = testgroup.members
-        expected_members.each {|member| members.include?(member).should 
be_true }
+    def delete_group_later(groupname)
+        @groups_to_delete << groupname
     end
 
-    def teardown
-        clear
+    def delete_user_later(username)
+        @users_to_delete << username
     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