summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Mundrawala <jdmundrawala@gmail.com>2015-08-19 15:37:16 -0700
committerJay Mundrawala <jdmundrawala@gmail.com>2015-08-19 16:56:58 -0700
commit10dd756954b1154a4a7828e829165ecdb4ca9ea4 (patch)
tree70ebec6c7393c930a273a6a6e4935acc81f5769b
parent214771ccc2564d3bf866fc5d0590cfa84d24df5f (diff)
downloadchef-jdm/3411.tar.gz
use group name instead of sid for `current_resource` in the group resource on windowsjdm/3411
Using the SID makes things look not so nice from a reporting perspective
-rw-r--r--lib/chef/provider/group/windows.rb12
-rw-r--r--spec/unit/provider/group/windows_spec.rb12
2 files changed, 21 insertions, 3 deletions
diff --git a/lib/chef/provider/group/windows.rb b/lib/chef/provider/group/windows.rb
index 46d8afc7f6..bd4c064462 100644
--- a/lib/chef/provider/group/windows.rb
+++ b/lib/chef/provider/group/windows.rb
@@ -39,7 +39,9 @@ class Chef
members = nil
begin
- members = @net_group.local_get_members
+ members = current_group_user_sids.map do |sid|
+ sid.account_name
+ end
rescue => e
@group_exists = false
Chef::Log.debug("#{@new_resource} group does not exist")
@@ -81,7 +83,7 @@ class Chef
def has_current_group_member?(member)
member_sid = local_group_name_to_sid(member)
- @current_resource.members.include?(member_sid)
+ current_group_user_sids.any?{|s| s.to_s == member_sid}
end
def remove_group
@@ -92,6 +94,12 @@ class Chef
locally_qualified_name = group_name.include?("\\") ? group_name : "#{ENV['COMPUTERNAME']}\\#{group_name}"
Chef::ReservedNames::Win32::Security.lookup_account_name(locally_qualified_name)[1].to_s
end
+
+ def current_group_user_sids
+ @sids ||= @net_group.local_get_members.map do |member|
+ Chef::ReservedNames::Win32::Security::SID.from_string_sid(member)
+ end
+ end
end
end
end
diff --git a/spec/unit/provider/group/windows_spec.rb b/spec/unit/provider/group/windows_spec.rb
index 23dfa8315f..b88d3d81a4 100644
--- a/spec/unit/provider/group/windows_spec.rb
+++ b/spec/unit/provider/group/windows_spec.rb
@@ -50,15 +50,16 @@ describe Chef::Provider::Group::Windows do
before do
@new_resource.members([ "us" ])
@current_resource = Chef::Resource::Group.new("staff")
- @current_resource.members [ "all", "your", "base" ]
allow(Chef::Util::Windows::NetGroup).to receive(:new).and_return(@net_group)
allow(@net_group).to receive(:local_add_members)
allow(@net_group).to receive(:local_set_members)
allow(@provider).to receive(:local_group_name_to_sid)
+ allow(@provider).to receive(:current_group_user_sids)
@provider.current_resource = @current_resource
end
+ let(:members) { [ "all", "your", "base" ] }
it "should call @net_group.local_set_members" do
allow(@new_resource).to receive(:append).and_return(false)
expect(@net_group).to receive(:local_set_members).with(@new_resource.members)
@@ -68,7 +69,16 @@ describe Chef::Provider::Group::Windows do
it "should call @net_group.local_add_members" do
allow(@new_resource).to receive(:append).and_return(true)
expect(@net_group).to receive(:local_add_members).with(@new_resource.members)
+ expect(@provider).to receive(:current_group_user_sids).and_return(
+ members.map do |member|
+ instance_double("SID", :to_s => "S-1-#{member}", :account_name => member)
+ end
+ )
@provider.manage_group
+
+ members.each do |member|
+ expect(@provider.current_resource.members.include?(member))
+ end
end
end