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(...)'?
>
> + 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.
>
> +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.
>
> + 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
-~----------~----~----~----~------~----~------~--~---