Enable programmatic setting of plugin configuration

Signed-off-by: Thomas Heinen <theinen@tecracer.de>
This commit is contained in:
Thomas Heinen 2021-01-26 11:37:34 +01:00
parent 51b9180d12
commit 00975d8a64
2 changed files with 55 additions and 2 deletions

View file

@ -128,12 +128,20 @@ module Inspec
end
#-----------------------------------------------------------------------#
# Fetching Plugin Data
# Handling Plugin Data
#-----------------------------------------------------------------------#
def fetch_plugin_config(plugin_name)
Thor::CoreExt::HashWithIndifferentAccess.new(@plugin_cfg[plugin_name] || {})
end
def set_plugin_config(plugin_name, plugin_config)
@plugin_cfg[plugin_name] = plugin_config
end
def merge_plugin_config(plugin_name, additional_plugin_config)
@plugin_cfg[plugin_name].merge!(additional_plugin_config)
end
# clear the cached config
def self.__reset
@cached_config = nil

View file

@ -460,7 +460,7 @@ describe "Inspec::Config" do
end
# ========================================================================== #
# Fetching Plugin Config
# Handling Plugin Config
# ========================================================================== #
describe "when fetching plugin config" do
let(:cfg) { Inspec::Config.new({}, cfg_io) }
@ -492,6 +492,51 @@ describe "Inspec::Config" do
end
describe "when setting plugin config" do
let(:cfg) { Inspec::Config.new({}, cfg_io) }
let(:cfg_io) { StringIO.new(ConfigTestHelper.fixture(fixture_name)) }
let(:fixture_name) { "basic_1_2" }
let(:desired_settings) { { "test_key_01" => "test_value_02" } }
it "overwrites current configuration" do
cfg.set_plugin_config("inspec-test-plugin", desired_settings)
actual_settings = cfg.fetch_plugin_config("inspec-test-plugin")
assert_equal desired_settings, actual_settings
end
end
describe "when merging plugin config" do
let(:cfg) { Inspec::Config.new({}, cfg_io) }
let(:cfg_io) { StringIO.new(ConfigTestHelper.fixture(fixture_name)) }
let(:fixture_name) { "basic_1_2" }
let(:additional_settings) { { test_key_02: "test_value_02" } }
let(:override_settings) { { test_key_01: "test_value_02" } }
it "preserves current configuration" do
cfg.merge_plugin_config("inspec-test-plugin", additional_settings)
settings = cfg.fetch_plugin_config("inspec-test-plugin")
assert_equal "test_value_01", settings[:test_key_01]
end
it "includes additional configuration" do
cfg.merge_plugin_config("inspec-test-plugin", additional_settings)
settings = cfg.fetch_plugin_config("inspec-test-plugin")
assert_equal "test_value_02", settings[:test_key_02]
end
it "overwrites existing configuration" do
cfg.merge_plugin_config("inspec-test-plugin", override_settings)
settings = cfg.fetch_plugin_config("inspec-test-plugin")
assert_equal "test_value_02", settings[:test_key_01]
end
end
# ========================================================================== #
# Merging Options
# ========================================================================== #