diff --git a/lib/puppet/provider/group/groupadd_win.rb
b/lib/puppet/provider/group/groupadd_win.rb
new file mode 100644
index 0000000..6d15d9d
--- /dev/null
+++ b/lib/puppet/provider/group/groupadd_win.rb
@@ -0,0 +1,38 @@
+Puppet::Type.type(:group).provide :groupadd_win do
+    desc "Group management for windows"
+
+    confine :true => Puppet.features.windows?
+    require 'puppet/util/windows_system'
+
+    has_features :manages_members
+
+    def group
+        @group = Puppet::Util::Windows::Group.new(name) unless defined?(@group)
+        @group
+    end
+
+    def name
+        @resource[:name]
+    end
+
+    def members
+        group.members
+    end
+
+    def members=(members)
+        group.set_members(members)
+    end
+
+    def create
+        @group = Puppet::Util::Windows::Group.create(name)
+        @group.set_members(@resource[:members])
+    end
+
+    def exists?
+        Puppet::Util::Windows::Group.exists?(name)
+    end
+
+    def delete
+        Puppet::Util::Windows::Group.delete(name)
+    end
+end
diff --git a/spec/integration/provider/group/groupadd_win.rb
b/spec/integration/provider/group/groupadd_win.rb
new file mode 100644
index 0000000..11ea597
--- /dev/null
+++ b/spec/integration/provider/group/groupadd_win.rb
@@ -0,0 +1,47 @@
+#!/usr/bin/env ruby
+
+require File.dirname(__FILE__) + '/../../../spec_helper'
+
+describe "Provider for windows groups" do
+    confine :true => Puppet.features.windows?
+
+    require 'windowstest'
+    include WindowsTest
+
+    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
+
+        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/unit/provider/group/groupadd_win.rb
b/spec/unit/provider/group/groupadd_win.rb
new file mode 100644
index 0000000..30d3b9f
--- /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.exists?.should be_true
+
+        
Puppet::Util::Windows::Group.expects(:exists?).with('testgroup').returns
false
+        @provider.exists?.should be_false
+    end
+end

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