inspec/test/unit/plugin/v1/resource_test.rb
Clinton Wolfe 811318f2f8 Plugins API v2: Loader, Base API, and Test Harness (#3278)
* Functional tests for userdir option
* Accepts --config-dir CLI option
* Actually loads a config file from the config dir, more cases to test
* Able to load config and verify contents from config-dir
* Functional tests to ensure precedence for config options
* Enable setting config dir via env var
* .inspec, not .inspec.d
* Begin converting PluginCtl to PluginLoader/Registry
* Able to load and partially validate the plugins.json file
* More work on the plugin loader
* Break the world, move next gen stuff to plugin/
* Be sure to require base cli in bundled plugins
* Move test file
* Revert changes to v1 plugin, so we can have a separate one
* Checkpoint commit
* Move v2 plugin work to v2 area
* Move plugins v1 code into an isolated directory
* rubocop fixes
* Rip out the stuff about a user-dir config file, just use a plugin file
* Two psuedocode test file
* Working base API, moock plugin type, and loader.
* Adjust load path to be more welcoming
* Silence circular depencency warning, which was breaking a unit test
* Linting
* Fix plugin type registry, add tests to cover
* Feedback from Jerry

Signed-off-by: Clinton Wolfe <clintoncwolfe@gmail.com>
2018-08-16 18:16:32 -04:00

87 lines
2.2 KiB
Ruby

require 'helper'
describe Inspec::Plugins::Resource do
let(:base) { Inspec::Plugins::Resource }
describe '#name' do
it "won't register a nil resource" do
Class.new(base) do name nil; end
Inspec::Resource.registry.keys.wont_include nil
Inspec::Resource.registry.keys.wont_include ''
end
it "will register a valid name" do
Class.new(base) do name 'hello'; end
Inspec::Resource.registry['hello'].wont_be :nil?
end
end
def create(&block)
random_name = (0...50).map { (65 + rand(26)).chr }.join
Class.new(base) do
name random_name
instance_eval(&block)
end
Inspec::Resource.registry[random_name]
end
describe '#desc' do
it "will register a description" do
expected = rand.to_s
create { desc expected }.desc.must_equal expected
end
it "can change the description" do
c = create { desc rand.to_s }
c.desc(x = rand.to_s)
c.desc.must_equal x
end
end
describe '#example' do
it "will register a description" do
expected = rand.to_s
create { example expected }.example.must_equal expected
end
it "can change the description" do
c = create { example rand.to_s }
c.example(x = rand.to_s)
c.example.must_equal x
end
end
describe 'supported platform' do
def supports_meta(supports)
Inspec::Resource.supports['os'] = supports
load_resource('os')
end
it 'loads a profile which supports multiple families' do
m = supports_meta([
{ os_family: 'windows' },
{ os_family: 'unix' }
])
m.check_supports.must_equal true
Inspec::Resource.supports['os'] = nil
end
it 'loads a profile which supports multiple names' do
m = supports_meta([
{ os_family: 'windows', os_name: 'windows_2000'},
{ os_family: 'unix', os_name: 'ubuntu' }
])
m.check_supports.must_equal true
Inspec::Resource.supports['os'] = nil
end
it 'reject a profile which supports multiple families' do
m = supports_meta([
{ os_family: 'windows' },
{ os_family: 'redhat' }
])
m.check_supports.must_equal false
Inspec::Resource.supports['os'] = nil
end
end
end