inspec/examples/profile/libraries/gordon_config.rb

60 lines
1.3 KiB
Ruby
Raw Normal View History

require "yaml"
2015-12-14 13:23:41 +00:00
# Custom resource based on the InSpec resource DSL
class ExampleConfig < Inspec.resource(1)
name "example_config"
2015-12-14 13:23:41 +00:00
supports platform: "unix"
supports platform: "windows"
desc "
Example's resource description ...
"
example "
describe example_config do
its('version') { should eq('1.0') }
its('file_size') { should > 1 }
end
"
# Load the configuration file on initialization
2015-12-14 13:23:41 +00:00
def initialize
@params = {}
@path = "/tmp/example/config.yaml"
2015-12-14 13:23:41 +00:00
@file = inspec.file(@path)
unless @file.file?
raise Inspec::Exceptions::ResourceSkipped, "Can't find file `#{@path}`"
end
2015-12-14 13:23:41 +00:00
# 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(",")
2015-12-14 13:23:41 +00:00
end
# Expose all parameters
2015-12-14 13:23:41 +00:00
def method_missing(name)
@params[name.to_s]
2015-12-14 13:23:41 +00:00
end
end