inspec/test/unit/resources/group_test.rb
Ryan Davis 374e365c02 Modified DarwinGroup to collect all users properly.
I noticed that my profile targeting group "staff" on OSX wasn't
returning *me*. I'm awesome! So that seemed wrong. And it turns out it
is wrong. We were not collecting any users whose primary group was
that group. (almost all regular users are in group staff and they're
all missing).

Signed-off-by: Ryan Davis <zenspider@chef.io>
2019-08-07 20:27:13 -07:00

97 lines
2.9 KiB
Ruby

require "helper"
require "inspec/resources/groups"
describe "Inspec::Resources::Group" do
# ubuntu 14.04
it "verify group on ubuntu" do
resource = MockLoader.new(:ubuntu1404).load_resource("group", "root")
_(resource.exists?).must_equal true
_(resource.gid).must_equal 0
end
it "verify group on ubuntu with mixed case" do
resource = MockLoader.new(:ubuntu1404).load_resource("group", "GroupWithCaps")
_(resource.exists?).must_equal true
_(resource.gid).must_equal 999
end
it "verify group on ubuntu with members" do
resource = MockLoader.new(:ubuntu1404).load_resource("group", "www-data")
_(resource.exists?).must_equal true
_(resource.members).must_equal "www-data,root"
end
# ubuntu with non-existent group
it "verify group on ubuntu" do
resource = MockLoader.new(:ubuntu1404).load_resource("group", "nogroup")
_(resource.exists?).must_equal false
_(resource.gid).must_be_nil
end
# mac
it "verify group on mac" do
resource = MockLoader.new(:osx104).load_resource("group", "root")
_(resource.exists?).must_equal true
_(resource.gid).must_equal 0
end
def unmock(&blk)
require "fetchers/mock"
require "inspec/runner"
# TODO: there is WAY too much magic going on in here
runner = Inspec::Runner.new
runner.add_target("inspec.yml" => "name: inspec-shell")
profile = runner.target_profiles.first
ctx = profile.runner_context
ctx.load blk
end
if osx?
it "actually verifies group on mac" do
resource = unmock { group "staff" }
_(resource.exists?).must_equal true
_(resource.members).must_include "root"
_(resource.members).must_include ENV["LOGNAME"]
end
end
# freebsd
it "verify group on freebsd" do
resource = MockLoader.new(:freebsd10).load_resource("group", "root")
_(resource.exists?).must_equal true
_(resource.gid).must_equal 0
end
# windows with local group
it "verify administrator group on windows" do
resource = MockLoader.new(:windows).load_resource("group", "Administrators")
_(resource.exists?).must_equal true
_(resource.gid).must_equal "S-1-5-32-544"
_(resource.members).must_equal ["Administrators", "Domain Admins"]
end
it "verify power users group on windows" do
resource = MockLoader.new(:windows).load_resource("group", "Power Users")
_(resource.exists?).must_equal true
_(resource.gid).must_equal "S-1-5-32-547"
_(resource.members).must_equal []
end
# windows non-existent group
it "verify non-existing group on windows" do
resource = MockLoader.new(:windows).load_resource("group", "dhcp")
_(resource.exists?).must_equal false
_(resource.gid).must_be_nil
_(resource.members).must_be_nil
end
# undefined
it "verify package handling on unsupported os" do
resource = MockLoader.new(:undefined).load_resource("group", "root")
_(resource.exists?).must_equal false
_(resource.gid).must_be_nil
end
end