On Tue, Jun 2, 2009 at 8:12 PM, Luke Kanies<[email protected]> wrote:
>
> On May 24, 2009, at 10:51 AM, joel r wrote:
>
>>
>> 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])
>
> Can't this just do 'group.set_members(...)'?

The reason I used @group there was that I thought it would be easier
to understand. @group has just been set one line above, and we're
still in context of creating the group.

>
>>
>> +    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
>
> Is this much scaffolding really required for the testing?  It's hard
> to see what the tests are here, because nearly all of the actual code
> is in the helper module, rather than here.

As mentioned in an earlier mail, I've reduced dependence of the tests
on the helper module. I await your comments.

>>
>> +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
>
> You can also do '@provider.should be_exists' or '@provider.should_not
> be_exists' - rspec provides those as automatic helpers.  It's not very
> good English, but you get better logs if the test fails.

done.

>
>>
>> +    end
>> +end
>
>
> --
> My definition of an expert in any field is a person who knows enough
> about what's really going on to be scared. -- P. J. Plauger
> ---------------------------------------------------------------------
> Luke Kanies | http://reductivelabs.com | http://madstop.com
>
>
> >
>

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