CFINSPEC-80: Define aliased_to matcher and add unit test

Signed-off-by: Sonu Saha <sonu.saha@progress.com>
This commit is contained in:
Sonu Saha 2022-03-30 17:26:15 +05:30
parent f1f0ecb631
commit 65f4766bec
4 changed files with 19 additions and 15 deletions

View file

@ -32,16 +32,11 @@ module Inspec::Resources
"mail_alias #{resource_id}" "mail_alias #{resource_id}"
end end
def is_aliased_to?(alias_value) def aliased_to?(alias_value)
# positive or negative expectations specific to this resource instance cmd = inspec.command("cat /etc/aliases | grep #{@alias_key}")
true raise Inspec::Exceptions::ResourceFailed, "#{@alias_key} is not a valid key in the aliases" if cmd.exit_status.to_i != 0
end
private alias_value == cmd.stdout.split(":").map(&:strip)[1]
# Methods to help the resource's public methods
def helper_method
# Add anything you need here
end end
end end
end end

1
test/fixtures/cmd/mail-alias vendored Normal file
View file

@ -0,0 +1 @@
daemon: root

View file

@ -383,6 +383,8 @@ class MockLoader
"cgget -n -r cpuset.cpus carrotking" => cmd.call("cgget-n-r"), "cgget -n -r cpuset.cpus carrotking" => cmd.call("cgget-n-r"),
"cgget -n -r memory.stat carrotking" => cmd.call("cgget-n-r-stat"), "cgget -n -r memory.stat carrotking" => cmd.call("cgget-n-r-stat"),
%{sh -c 'type "cgget"'} => empty.call, %{sh -c 'type "cgget"'} => empty.call,
# mail_alias
"cat /etc/aliases | grep daemon" => cmd.call("mail-alias"),
# apache_conf # apache_conf
"sh -c 'find /etc/apache2/ports.conf -type f -maxdepth 1'" => cmd.call("find-apache2-ports-conf"), "sh -c 'find /etc/apache2/ports.conf -type f -maxdepth 1'" => cmd.call("find-apache2-ports-conf"),
"sh -c 'find /etc/httpd/conf.d/*.conf -type f -maxdepth 1'" => cmd.call("find-httpd-ssl-conf"), "sh -c 'find /etc/httpd/conf.d/*.conf -type f -maxdepth 1'" => cmd.call("find-httpd-ssl-conf"),

View file

@ -3,18 +3,24 @@ require "#{Inspec.src_root}/test/helper"
require_relative "../../../lib/inspec/resources/mail_alias" require_relative "../../../lib/inspec/resources/mail_alias"
describe Inspec::Resources::Mailalias do describe Inspec::Resources::Mailalias do
it "check mail alias on ubuntu" do it "check mail_alias on ubuntu" do
resource = MockLoader.new(:ubuntu).load_resource("mail_alias", "daemon") resource = MockLoader.new(:ubuntu).load_resource("mail_alias", "daemon")
_(resource.is_aliased_to?("root")).must_equal true _(resource.aliased_to?("root")).must_equal true
end end
it "check mail alias on macos" do it "check mail_alias on macos" do
resource = MockLoader.new(:macos10_10).load_resource("mail_alias", "daemon") resource = MockLoader.new(:macos10_10).load_resource("mail_alias", "daemon")
_(resource.is_aliased_to?("root")).must_equal true _(resource.aliased_to?("root")).must_equal true
end end
it "check mail alias on freebsd" do it "check mail_alias on freebsd" do
resource = MockLoader.new(:freebsd11).load_resource("mail_alias", "daemon") resource = MockLoader.new(:freebsd11).load_resource("mail_alias", "daemon")
_(resource.is_aliased_to?("root")).must_equal true _(resource.aliased_to?("root")).must_equal true
end
it "check mail_alias on ubuntu with a key that is not included as an alias" do
resource = MockLoader.new(:ubuntu).load_resource("mail_alias", "cheesecake")
ex = _ { resource.aliased_to?("root") }.must_raise(Inspec::Exceptions::ResourceFailed)
_(ex.message).must_include "cheesecake is not a valid key in the aliases"
end end
end end