Sha256: 926e4906c07762da8a83bc4fbb1a470bc478e732a571eacf87fceb57344ed3b9
Contents?: true
Size: 1.42 KB
Versions: 4
Compression:
Stored size: 1.42 KB
Contents
# encoding: utf-8 # author: Christoph Hartmann # author: Dominik Richter # Parses a json document # Usage: # describe json('policyfile.lock.json') do # its('cookbook_locks.omnibus.version') { should eq('2.2.0') } # end class JsonConfig < Inspec.resource(1) name 'json' # make params readable attr_reader :params def initialize(path) @path = path @file_content = inspec.file(@path).content @params = parse(@file_content) end def parse(content) require 'json' JSON.parse(content) end def extract_value(keys, value) key = keys.shift return nil if key.nil? # check if key is a num, try to extract from array if key.to_i.to_s == key value = value[key.to_i] # if value is an array, iterate over each child elsif value.is_a?(Array) value = value.map { |i| extract_value([key], i) } # normal value extraction else value = value[key].nil? ? nil : value[key] end # check if further keys exist if !keys.first.nil? return extract_value(keys.clone, value) else return value end end # Shorthand to retrieve a parameter name via `#its`. # Example: describe json('file') { its('paramX') { should eq 'Y' } } # # @param [String] name name of the field to retrieve # @return [Object] the value stored at this position def method_missing(name) @params[name.to_s] end def to_s "Json #{@path}" end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
inspec-0.9.3 | lib/resources/json.rb |
inspec-0.9.2 | lib/resources/json.rb |
inspec-0.9.1 | lib/resources/json.rb |
inspec-0.9.0 | lib/resources/json.rb |