inspec/examples/profile/libraries/gordon_config.rb
Jerry Aldrich 4731d95abd docs: Update example resource (#2904)
* Change `skip_resource` to use raise
* Add `supports` lines to example resource
* Change to rescue `StandardError` vs `Exception`
* Change raise to use `e.message` vs `$!`
* Remove redundant returns
* Change `File.exists?` to `File.exist?`
* Update shasum in tests

Signed-off-by: Jerry Aldrich <jerryaldrichiii@gmail.com>
2018-04-05 08:50:49 -04:00

59 lines
1.3 KiB
Ruby

require 'yaml'
# Custom resource based on the InSpec resource DSL
class GordonConfig < Inspec.resource(1)
name 'gordon_config'
supports platform: 'unix'
supports platform: 'windows'
desc "
Gordon's resource description ...
"
example "
describe gordon_config do
its('version') { should eq('1.0') }
its('file_size') { should > 1 }
end
"
# Load the configuration file on initialization
def initialize
@params = {}
@path = '/tmp/gordon/config.yaml'
@file = inspec.file(@path)
unless @file.file?
raise Inspec::Exceptions::ResourceSkipped, "Can't find file `#{@path}`"
end
# Protect from invalid YAML content
begin
@params = YAML.load(@file.content)
# Add two extra matchers
@params['file_size'] = @file.size
@params['file_path'] = @path
@params['ruby'] = 'RUBY IS HERE TO HELP ME!'
rescue StandardError => e
raise Inspec::Exceptions::ResourceSkipped, "#{@file}: #{e.message}"
end
end
# Example method called by 'it { should exist }'
# Returns true or false from the 'File.exist?' method
def exists?
File.exist?(@path)
end
# Example matcher for the number of commas in the file
def comma_count
text = @file.content
text.count(',')
end
# Expose all parameters
def method_missing(name)
@params[name.to_s]
end
end