mirror of
https://github.com/inspec/inspec
synced 2024-12-23 11:33:14 +00:00
128 lines
5.3 KiB
Ruby
128 lines
5.3 KiB
Ruby
|
require_relative "helper"
|
||
|
|
||
|
class PluginManagerCliSearch < Minitest::Test
|
||
|
include CorePluginFunctionalHelper
|
||
|
include PluginManagerHelpers
|
||
|
|
||
|
# TODO: Thor can't hide options, but we wish it could.
|
||
|
# def test_search_include_fixture_hidden_option
|
||
|
# result = run_inspec_process_with_this_plugin('plugin help search')
|
||
|
# refute_includes result.stdout, '--include-test-fixture'
|
||
|
# end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_full_name_no_options
|
||
|
result = run_inspec_process("plugin search --include-test-fixture inspec-test-fixture")
|
||
|
|
||
|
assert_includes result.stdout, "inspec-test-fixture", "Search result should contain the gem name"
|
||
|
assert_includes result.stdout, "1 plugin(s) found", "Search result should find 1 plugin"
|
||
|
line = result.stdout.split("\n").grep(/inspec-test-fixture/).first
|
||
|
assert_match(/\s*inspec-test-fixture\s+\((\d+\.\d+\.\d+){1}\)/, line, "Plugin line should include name and exactly one version")
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_stub_name_no_options
|
||
|
result = run_inspec_process("plugin search --include-test-fixture inspec-test-")
|
||
|
|
||
|
assert_includes result.stdout, "inspec-test-fixture", "Search result should contain the gem name"
|
||
|
assert_includes result.stdout, "1 plugin(s) found", "Search result should find 1 plugin"
|
||
|
|
||
|
line = result.stdout.split("\n").grep(/inspec-test-fixture/).first
|
||
|
assert_match(/\s*inspec-test-fixture\s+\((\d+\.\d+\.\d+){1}\)/, line, "Plugin line should include name and exactly one version")
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_full_name_and_exact_option
|
||
|
result = run_inspec_process("plugin search --exact --include-test-fixture inspec-test-fixture")
|
||
|
|
||
|
assert_includes result.stdout, "inspec-test-fixture", "Search result should contain the gem name"
|
||
|
assert_includes result.stdout, "1 plugin(s) found", "Search result should find 1 plugin"
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
|
||
|
# TODO: split
|
||
|
result = run_inspec_process("plugin search -e --include-test-fixture inspec-test-fixture")
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_stub_name_and_exact_option
|
||
|
result = run_inspec_process("plugin search --exact --include-test-fixture inspec-test-")
|
||
|
|
||
|
assert_includes result.stdout, "0 plugin(s) found", "Search result should find 0 plugins"
|
||
|
|
||
|
assert_exit_code 2, result
|
||
|
|
||
|
# TODO: split
|
||
|
result = run_inspec_process("plugin search -e --include-test-fixture inspec-test-")
|
||
|
|
||
|
assert_exit_code 2, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_full_name_and_all_option
|
||
|
result = run_inspec_process("plugin search --all --include-test-fixture inspec-test-fixture")
|
||
|
assert_includes result.stdout, "inspec-test-fixture", "Search result should contain the gem name"
|
||
|
assert_includes result.stdout, "1 plugin(s) found", "Search result should find 1 plugin"
|
||
|
|
||
|
line = result.stdout.split("\n").grep(/inspec-test-fixture/).first
|
||
|
assert_match(/\s*inspec-test-fixture\s+\((\d+\.\d+\.\d+(,\s)?){2,}\)/, line, "Plugin line should include name and at least two versions")
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
|
||
|
# TODO: split
|
||
|
result = run_inspec_process("plugin search -a --include-test-fixture inspec-test-fixture")
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_gem_with_missing_prefix
|
||
|
result = run_inspec_process("plugin search --include-test-fixture test-fixture")
|
||
|
assert_exit_code 1, result
|
||
|
assert_includes result.stdout, "All inspec plugins must begin with either 'inspec-' or 'train-'"
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_gem_that_does_not_exist
|
||
|
result = run_inspec_process("plugin search --include-test-fixture inspec-test-fixture-nonesuch")
|
||
|
|
||
|
assert_includes result.stdout, "0 plugin(s) found", "Search result should find 0 plugins"
|
||
|
|
||
|
assert_exit_code 2, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_full_name_no_options_and_train_name
|
||
|
result = run_inspec_process("plugin search --include-test-fixture train-test-fixture")
|
||
|
|
||
|
assert_includes result.stdout, "train-test-fixture", "Search result should contain the gem name"
|
||
|
assert_includes result.stdout, "1 plugin(s) found", "Search result should find 1 plugin"
|
||
|
line = result.stdout.split("\n").grep(/train-test-fixture/).first
|
||
|
assert_match(/\s*train-test-fixture\s+\((\d+\.\d+\.\d+){1}\)/, line, "Plugin line should include name and exactly one version")
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
end
|
||
|
|
||
|
def test_search_omit_excluded_inspec_plugins
|
||
|
result = run_inspec_process("plugin search --include-test-fixture inspec-")
|
||
|
|
||
|
assert_includes result.stdout, "inspec-test-fixture", "Search result should contain the test gem"
|
||
|
%w{
|
||
|
inspec-core
|
||
|
inspec-multi-server
|
||
|
}.each do |plugin_name|
|
||
|
refute_includes result.stdout, plugin_name, "Search result should not contain excluded gems"
|
||
|
end
|
||
|
|
||
|
assert_exit_code 0, result
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_full_name_no_options_filter_fixtures
|
||
|
result = run_inspec_process("plugin search inspec-test-fixture")
|
||
|
refute_includes result.stdout, "inspec-test-fixture", "Search result should not contain the fixture gem name"
|
||
|
end
|
||
|
|
||
|
def test_search_for_a_real_gem_with_full_name_no_options_filter_fixtures_train
|
||
|
result = run_inspec_process("plugin search train-test-fixture")
|
||
|
refute_includes result.stdout, "train-test-fixture", "Search result should not contain the fixture gem name"
|
||
|
end
|
||
|
end
|