Merge pull request #774 from chef/chris-rock/os-helper-methods

add helper methods for os resource
This commit is contained in:
Dominik Richter 2016-05-31 01:06:21 +02:00
commit 584eee4d2f
3 changed files with 59 additions and 2 deletions

View file

@ -7,9 +7,17 @@ module Inspec::Resources
name 'os' name 'os'
desc 'Use the os InSpec audit resource to test the platform on which the system is running.' desc 'Use the os InSpec audit resource to test the platform on which the system is running.'
example " example "
describe os[:family] do describe os.family do
it { should eq 'redhat' } it { should eq 'redhat' }
end end
describe os.redhat? do
it { should eq true }
end
describe os.linux? do
it { should eq true }
end
" "
# reuse helper methods from backend # reuse helper methods from backend
@ -25,6 +33,15 @@ module Inspec::Resources
inspec.backend.os[name] inspec.backend.os[name]
end end
# add helper methods for easy access of properties
# allows users to use os.name, os.family, os.release, os.arch
%w{name family release arch}.each do |property|
define_method(property.to_sym) do
inspec.backend.os[property.to_sym]
end
end
# helper to collect a hash object easily
def params def params
{ {
name: inspec.backend.os[:name], name: inspec.backend.os[:name],

View file

@ -51,7 +51,7 @@ class MockLoader
ubuntu1204: { family: 'ubuntu', release: '12.04', arch: 'x86_64' }, ubuntu1204: { family: 'ubuntu', release: '12.04', arch: 'x86_64' },
ubuntu1404: { family: 'ubuntu', release: '14.04', arch: 'x86_64' }, ubuntu1404: { family: 'ubuntu', release: '14.04', arch: 'x86_64' },
ubuntu1504: { family: 'ubuntu', release: '15.04', arch: 'x86_64' }, ubuntu1504: { family: 'ubuntu', release: '15.04', arch: 'x86_64' },
windows: { family: 'windows', release: nil, arch: nil }, windows: { family: 'windows', release: '6.2.9200', arch: 'x86_64' },
wrlinux: { family: 'wrlinux', release: '7.0(3)I2(2)', arch: 'x86_64' }, wrlinux: { family: 'wrlinux', release: '7.0(3)I2(2)', arch: 'x86_64' },
solaris11: { family: "solaris", release: '11', arch: 'i386'}, solaris11: { family: "solaris", release: '11', arch: 'i386'},
solaris10: { family: "solaris", release: '10', arch: 'i386'}, solaris10: { family: "solaris", release: '10', arch: 'i386'},

View file

@ -0,0 +1,40 @@
# encoding: utf-8
# author: Christoph Hartmann
# author: Dominik Richter
require 'helper'
require 'inspec/resource'
describe 'Inspec::Resources::Os' do
it 'verify os parsing on CentOS' do
resource = MockLoader.new(:centos7).load_resource('os')
_(resource.name).must_equal nil
_(resource.family).must_equal 'redhat'
_(resource.release).must_equal '7.1.1503'
_(resource.arch).must_equal 'x86_64'
end
it 'read env variable on Windows' do
resource = MockLoader.new(:windows).load_resource('os')
_(resource.name).must_equal nil
_(resource.family).must_equal 'windows'
_(resource.release).must_equal '6.2.9200'
_(resource.arch).must_equal 'x86_64'
end
it 'verify os parsing on Debian' do
resource = MockLoader.new(:debian8).load_resource('os')
_(resource.name).must_equal nil
_(resource.family).must_equal 'debian'
_(resource.release).must_equal '8'
_(resource.arch).must_equal 'x86_64'
end
it 'verify os parsing on Ubuntu' do
resource = MockLoader.new(:ubuntu1504).load_resource('os')
_(resource.name).must_equal nil
_(resource.family).must_equal 'ubuntu'
_(resource.release).must_equal '15.04'
_(resource.arch).must_equal 'x86_64'
end
end