Fix for non-existent member for group resource

Signed-off-by: Nikita Mathur <nikita.mathur@chef.io>
This commit is contained in:
Nikita Mathur 2021-04-19 18:40:34 +05:30
parent ab401b6d64
commit 457e544724
5 changed files with 27 additions and 12 deletions

View file

@ -118,7 +118,7 @@ module Inspec::Resources
end
def members
flatten_entry(group_info, "members")
flatten_entry(group_info, "members") || []
end
def members_array

View file

@ -1,4 +1,5 @@
# comment
root:x:0:
www-data:x:33:www-data,root
GroupWithCaps:x:999:
GroupWithCaps:x:999:
sftpusers:x:1000:sftponly

View file

@ -6,9 +6,9 @@ describe "Inspec::Resources::EtcGroup" do
let(:resource) { load_resource("etc_group") }
it "verify /etc/group config parsing" do
_(resource.gids).must_equal [0, 33, 999]
_(resource.groups).must_equal %w{ root www-data GroupWithCaps }
_(resource.users).must_equal %w{ www-data root }
_(resource.gids).must_equal [0, 33, 999, 1000]
_(resource.groups).must_equal %w{ root www-data GroupWithCaps sftpusers }
_(resource.users).must_equal %w{ www-data root sftponly }
end
it "verify group filter with no users" do

View file

@ -86,7 +86,7 @@ describe "Inspec::Resources::Group" do
resource = MockLoader.new(:windows).load_resource("group", "dhcp")
_(resource.exists?).must_equal false
_(resource.gid).must_be_nil
_(resource.members).must_be_nil
_(resource.members).must_equal []
_(resource.members_array).must_equal []
end
@ -96,4 +96,18 @@ describe "Inspec::Resources::Group" do
_(resource.exists?).must_equal false
_(resource.gid).must_be_nil
end
# centos7
it "verify group on centos7 with members" do
resource = MockLoader.new(:centos7).load_resource("group", "sftpusers")
_(resource.exists?).must_equal true
_(resource.members).must_include "sftponly"
end
# centos with non-existent group member
it "verify non-existent group member on centos" do
resource = MockLoader.new(:centos7).load_resource("group", "root")
_(resource.exists?).must_equal true
_(resource.members).must_equal []
end
end

View file

@ -7,18 +7,18 @@ describe "groups resource on unix platform" do
describe "no arguments" do
it "finds all group names" do
_(resource.names.count).must_equal 3
_(resource.names).must_equal %w{root www-data GroupWithCaps}
_(resource.names.count).must_equal 4
_(resource.names).must_equal %w{root www-data GroupWithCaps sftpusers}
end
it "finds all group gids" do
_(resource.gids.count).must_equal 3
_(resource.gids).must_equal [0, 33, 999]
_(resource.gids.count).must_equal 4
_(resource.gids).must_equal [0, 33, 999, 1000]
end
it "finds no group domains" do
_(resource.domains.count).must_equal 3
_(resource.domains).must_equal [nil, nil, nil]
_(resource.domains.count).must_equal 4
_(resource.domains).must_equal [nil, nil, nil, nil]
end
end