mirror of
https://github.com/inspec/inspec
synced 2024-11-10 07:04:15 +00:00
CFINSPEC-79: Add unit test and its related changes for lxc resource
Signed-off-by: Sonu Saha <sonu.saha@progress.com>
This commit is contained in:
parent
41ddceaa85
commit
36bf43f350
4 changed files with 33 additions and 14 deletions
|
@ -14,10 +14,11 @@ module Inspec::Resources
|
|||
|
||||
# Resource initialization.
|
||||
def initialize(container_name)
|
||||
skip_resource "The `lxc` resource is not yet available on your OS." unless inspec.os.linux?
|
||||
@container_name = container_name
|
||||
@lxc_info_cmd = lxc_info_cmd
|
||||
return if inspec.os.linux?
|
||||
|
||||
@container_info = []
|
||||
skip_resource "The `lxc` resource is not supported on your OS yet."
|
||||
end
|
||||
|
||||
def resource_id
|
||||
|
@ -29,12 +30,15 @@ module Inspec::Resources
|
|||
end
|
||||
|
||||
def exists?
|
||||
@lxc_info_cmd.exit_status.to_i == 0
|
||||
return false if defined?(@container_info)
|
||||
|
||||
lxc_info_cmd.exit_status.to_i == 0
|
||||
end
|
||||
|
||||
def running?
|
||||
exists?
|
||||
@container_info = @lxc_info_cmd.stdout.split(":").map(&:strip)
|
||||
return false if defined?(@container_info)
|
||||
|
||||
@container_info = lxc_info_cmd.stdout.split(":").map(&:strip)
|
||||
@container_info[0] == "Status" && @container_info[1] == "Running"
|
||||
end
|
||||
|
||||
|
@ -46,7 +50,7 @@ module Inspec::Resources
|
|||
return cmd if inspec.command(cmd).exist?
|
||||
end
|
||||
|
||||
raise Inspec::Exceptions::ResourceFailed, "Could not find `iptables`"
|
||||
raise Inspec::Exceptions::ResourceFailed, "Could not find `lxc`"
|
||||
end
|
||||
|
||||
def lxc_info_cmd
|
||||
|
|
1
test/fixtures/cmd/lxcinfo
vendored
Normal file
1
test/fixtures/cmd/lxcinfo
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
Status: Running
|
|
@ -375,6 +375,9 @@ class MockLoader
|
|||
# ipfilter
|
||||
"/usr/sbin/ipfstat -io" => cmd.call("ipfstat-io"),
|
||||
%{type "/usr/sbin/ipfstat"} => empty.call,
|
||||
# lxc
|
||||
"/usr/sbin/lxc info my-ubuntu-container | grep -i Status" => cmd.call("lxcinfo"),
|
||||
%{sh -c 'type "/usr/sbin/lxc"'} => empty.call,
|
||||
# apache_conf
|
||||
"sh -c 'find /etc/apache2/ports.conf -type f -maxdepth 1'" => cmd.call("find-apache2-ports-conf"),
|
||||
"sh -c 'find /etc/httpd/conf.d/*.conf -type f -maxdepth 1'" => cmd.call("find-httpd-ssl-conf"),
|
||||
|
|
|
@ -2,17 +2,28 @@
|
|||
require "inspec/globals"
|
||||
# ... we can find the core test unit helper file
|
||||
require "#{Inspec.src_root}/test/helper"
|
||||
|
||||
require_relative "../../../lib/inspec/resource"
|
||||
# Load (require) the resource library file
|
||||
require_relative "../../../lib/inspec/resources/lxc"
|
||||
|
||||
describe Inspec::Resources::Lxc do
|
||||
it "works correctly with the constructor on the platform" do
|
||||
# Add contructor arguments to load_resource if needed
|
||||
resource = MockLoader.new("linux".to_sym).load_resource("lxc")
|
||||
describe "Inspec::Resources::Lxc" do
|
||||
# ubuntu
|
||||
it "verify lxc resource on ubuntu" do
|
||||
resource = MockLoader.new(:ubuntu).load_resource("lxc", "my-ubuntu-container")
|
||||
_(resource.exists?).must_equal true
|
||||
_(resource.running?).must_equal true
|
||||
end
|
||||
|
||||
_(resource.has_bells?).must_equal true
|
||||
_(resource.shoe_size).must_equal 42
|
||||
_(resource.resource_id).must_equal "something special"
|
||||
# windows
|
||||
it "verify lxc resource on windows" do
|
||||
resource = MockLoader.new(:windows).load_resource("lxc", "my-ubuntu-container")
|
||||
_(resource.exists?).must_equal false
|
||||
_(resource.running?).must_equal false
|
||||
end
|
||||
|
||||
# undefined
|
||||
it "verify lxc resource on unsupported os" do
|
||||
resource = MockLoader.new(:undefined).load_resource("lxc", "my-ubuntu-container")
|
||||
_(resource.exists?).must_equal false
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue