diff options
author | Nick Lewis <nick@puppetlabs.com> | 2011-08-09 13:04:37 -0700 |
---|---|---|
committer | Jacob Helwig <jacob@puppetlabs.com> | 2011-08-19 13:52:59 -0700 |
commit | a32c8be4b32cfbc0588648e56e9194f3a75bbaa6 (patch) | |
tree | 7086e7db0c6168d7b71b994934bd9979a4049075 /spec/unit/provider/group/windows_adsi_spec.rb | |
parent | 4f7170a0fd7d77d7d9941001cdb7dbcb0662d6b4 (diff) | |
download | puppet-a32c8be4b32cfbc0588648e56e9194f3a75bbaa6.tar.gz puppet-a32c8be4b32cfbc0588648e56e9194f3a75bbaa6.tar.xz puppet-a32c8be4b32cfbc0588648e56e9194f3a75bbaa6.zip |
(#8409) Add a default group provider for Windows
This provider, windows_adsi, uses the Puppet::Util::ADSI module to manage
groups. It can only manage group existence and memberships, but is fully
functional in those regards.
Based on work by: Joel Rosario <joel.r@.internal.directi.com>
Based on work by: Cameron Thomas <cameron@puppetlabs.com>
Reviewed-By: Matt Robinson <matt@puppetlabs.com>
(cherry picked from commit 01f09f5f395bab66b90a4e81e958aa89025977b4)
Diffstat (limited to 'spec/unit/provider/group/windows_adsi_spec.rb')
-rw-r--r-- | spec/unit/provider/group/windows_adsi_spec.rb | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/spec/unit/provider/group/windows_adsi_spec.rb b/spec/unit/provider/group/windows_adsi_spec.rb new file mode 100644 index 000000000..7faaa1a8c --- /dev/null +++ b/spec/unit/provider/group/windows_adsi_spec.rb @@ -0,0 +1,79 @@ +#!/usr/bin/env ruby + +require 'spec_helper' + +describe Puppet::Type.type(:group).provider(:windows_adsi) do + let(:resource) do + Puppet::Type.type(:group).new( + :title => 'testers', + :provider => :windows_adsi + ) + end + + let(:provider) { resource.provider } + + let(:connection) { stub 'connection' } + + before :each do + Puppet::Util::ADSI.stubs(:computer_name).returns('testcomputername') + Puppet::Util::ADSI.stubs(:connect).returns connection + end + + describe ".instances" do + it "should enumerate all groups" do + names = ['group1', 'group2', 'group3'] + stub_groups = names.map{|n| stub(:name => n)} + + connection.stubs(:execquery).with("select * from win32_group").returns stub_groups + + described_class.instances.map(&:name).should =~ names + end + end + + describe "when managing members" do + it "should be able to provide a list of members" do + provider.group.stubs(:members).returns ['user1', 'user2', 'user3'] + + provider.members.should =~ ['user1', 'user2', 'user3'] + end + + it "should be able to set group members" do + provider.group.stubs(:members).returns ['user1', 'user2'] + + provider.group.expects(:remove_members).with('user1') + provider.group.expects(:add_members).with('user3') + + provider.members = ['user2', 'user3'] + end + end + + it "should be able to create a group" do + resource[:members] = ['user1', 'user2'] + + group = stub 'group' + Puppet::Util::ADSI::Group.expects(:create).with('testers').returns group + + group.expects(:set_members).with(['user1', 'user2']) + + provider.create + end + + it "should be able to test whether a group exists" do + Puppet::Util::ADSI.stubs(:connect).returns stub('connection') + provider.should be_exists + + Puppet::Util::ADSI.stubs(:connect).returns nil + provider.should_not be_exists + end + + it "should be able to delete a group" do + connection.expects(:Delete).with('group', 'testers') + + provider.delete + end + + it "should warn when trying to manage the gid property" do + provider.expects(:warning).with { |msg| msg =~ /No support for managing property gid/ } + provider.send(:gid=, 500) + end +end |