2015-10-06 16:55:44 +00:00
# encoding: utf-8
# author: Christoph Hartmann
# author: Dominik Richter
2015-09-14 13:15:32 +00:00
require 'helper'
2015-10-26 03:04:18 +00:00
require 'inspec/resource'
2016-05-06 15:38:56 +00:00
require 'hashie'
2015-09-14 13:15:32 +00:00
2015-10-26 03:04:18 +00:00
describe 'Inspec::Resources::Service' do
2016-02-14 17:18:40 +00:00
let ( :runlevels ) { { 0 = > false , 1 = > false , 2 = > true , 3 = > true , 4 = > true , 5 = > true , 6 = > false } }
2015-09-14 13:15:32 +00:00
2015-09-22 16:33:05 +00:00
# windows
2015-09-23 14:30:48 +00:00
it 'verify service parsing' do
resource = MockLoader . new ( :windows ) . load_resource ( 'service' , 'dhcp' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'windows'
_ ( resource . name ) . must_equal 'dhcp'
_ ( resource . description ) . must_equal 'DHCP Client'
2015-09-23 14:30:48 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-08-23 20:31:10 +00:00
_ ( resource . startmode ) . must_equal 'Auto'
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-23 14:30:48 +00:00
end
2015-09-23 20:32:31 +00:00
2015-09-25 08:31:42 +00:00
# ubuntu 14.04 with upstart
2015-09-23 20:32:31 +00:00
it 'verify ubuntu package parsing' do
resource = MockLoader . new ( :ubuntu1404 ) . load_resource ( 'service' , 'ssh' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'upstart'
_ ( resource . name ) . must_equal 'ssh'
_ ( resource . description ) . must_equal nil
2015-09-23 20:32:31 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-23 20:32:31 +00:00
end
2015-09-25 10:48:21 +00:00
2016-01-20 14:54:36 +00:00
it 'verify ubuntu package parsing with default upstart_service' do
resource = MockLoader . new ( :ubuntu1404 ) . load_resource ( 'upstart_service' , 'ssh' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'upstart'
_ ( resource . name ) . must_equal 'ssh'
_ ( resource . description ) . must_equal nil
2016-01-20 14:54:36 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
_ ( resource . params . UnitFileState ) . must_equal nil
2016-01-20 14:54:36 +00:00
end
2015-09-25 08:31:42 +00:00
# ubuntu 15.04 with systemd
it 'verify ubuntu package parsing' do
resource = MockLoader . new ( :ubuntu1504 ) . load_resource ( 'service' , 'sshd' )
2016-07-05 17:39:25 +00:00
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
2016-05-06 15:38:56 +00:00
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
2015-09-25 08:31:42 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
_ ( resource . params . SubState ) . must_equal 'running'
2015-09-25 08:31:42 +00:00
end
2016-01-20 14:54:36 +00:00
it 'verify ubuntu package parsing with default systemd_service' do
2016-01-20 13:33:24 +00:00
resource = MockLoader . new ( :ubuntu1504 ) . load_resource ( 'systemd_service' , 'sshd' )
2016-07-05 17:39:25 +00:00
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
2016-05-06 15:38:56 +00:00
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
2016-01-20 13:33:24 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2016-01-20 13:33:24 +00:00
end
2016-10-08 21:03:59 +00:00
# linux mint 17 with upstart
it 'verify mint package parsing' do
resource = MockLoader . new ( :mint17 ) . load_resource ( 'service' , 'ssh' )
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'upstart'
_ ( resource . name ) . must_equal 'ssh'
_ ( resource . description ) . must_equal nil
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
_ ( resource . params ) . must_equal params
end
it 'verify mint package parsing with default upstart_service' do
resource = MockLoader . new ( :mint17 ) . load_resource ( 'upstart_service' , 'ssh' )
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'upstart'
_ ( resource . name ) . must_equal 'ssh'
_ ( resource . description ) . must_equal nil
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
_ ( resource . params ) . must_equal params
_ ( resource . params . UnitFileState ) . must_equal nil
end
# mint 18 with systemd
it 'verify mint package parsing' do
resource = MockLoader . new ( :mint18 ) . load_resource ( 'service' , 'sshd' )
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
_ ( resource . params ) . must_equal params
_ ( resource . params . SubState ) . must_equal 'running'
end
it 'verify mint package parsing with default systemd_service' do
resource = MockLoader . new ( :mint18 ) . load_resource ( 'systemd_service' , 'sshd' )
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
_ ( resource . params ) . must_equal params
end
2016-01-20 14:54:36 +00:00
# centos 6 with sysv
2015-09-25 09:47:59 +00:00
it 'verify centos 6 package parsing' do
resource = MockLoader . new ( :centos6 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2015-09-25 09:47:59 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
_ ( resource . params . SubState ) . must_equal nil
2015-09-25 09:47:59 +00:00
end
2016-01-20 14:54:36 +00:00
it 'verify centos 6 package parsing with default sysv_service' do
resource = MockLoader . new ( :centos6 ) . load_resource ( 'sysv_service' , 'sshd' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2016-01-20 14:54:36 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2016-01-20 14:54:36 +00:00
end
2015-09-25 10:48:21 +00:00
# centos 7 with systemd
2015-09-25 09:51:21 +00:00
it 'verify centos 7 package parsing' do
2015-09-25 10:48:21 +00:00
resource = MockLoader . new ( :centos7 ) . load_resource ( 'service' , 'sshd' )
2016-07-05 17:39:25 +00:00
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
2016-05-06 15:38:56 +00:00
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
2015-09-25 10:48:21 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-25 10:48:21 +00:00
end
2015-09-24 21:32:46 +00:00
2016-01-21 10:41:48 +00:00
it 'verify centos 7 package parsing with systemd_service and service_ctl override' do
resource = MockLoader . new ( :centos7 ) . load_resource ( 'systemd_service' , 'sshd' , '/path/to/systemctl' )
2016-07-05 17:39:25 +00:00
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'UnitFileState' = > 'enabled' , 'SubState' = > 'running' } )
2016-05-06 15:38:56 +00:00
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
2016-01-21 10:41:48 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2016-01-21 10:41:48 +00:00
end
2016-04-13 19:44:28 +00:00
it 'verify centos 7 package parsing with static loaded service' do
resource = MockLoader . new ( :centos7 ) . load_resource ( 'service' , 'dbus' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { 'Description' = > 'D-Bus System Message Bus' , 'Id' = > 'dbus.service' , 'LoadState' = > 'loaded' , 'Names' = > 'messagebus.service dbus.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'static' } )
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'dbus.service'
_ ( resource . description ) . must_equal 'D-Bus System Message Bus'
2016-04-13 19:44:28 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
_ ( resource . params . UnitFileState ) . must_equal 'static'
2016-04-13 19:44:28 +00:00
end
2015-09-25 10:53:40 +00:00
# freebsd
it 'verify freebsd10 package parsing' do
resource = MockLoader . new ( :freebsd10 ) . load_resource ( 'service' , 'sendmail' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'bsd-init'
_ ( resource . name ) . must_equal 'sendmail'
_ ( resource . description ) . must_equal nil
2015-09-25 10:53:40 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-25 10:53:40 +00:00
end
2016-01-20 14:54:36 +00:00
it 'verify freebsd10 package parsing with default bsd_service' do
resource = MockLoader . new ( :freebsd10 ) . load_resource ( 'bsd_service' , 'sendmail' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'bsd-init'
_ ( resource . name ) . must_equal 'sendmail'
_ ( resource . description ) . must_equal nil
2016-01-20 14:54:36 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2016-01-20 14:54:36 +00:00
end
2015-09-24 21:37:31 +00:00
# arch linux with systemd
it 'verify arch linux package parsing' do
resource = MockLoader . new ( :arch ) . load_resource ( 'service' , 'sshd' )
2016-07-05 17:39:25 +00:00
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
2016-05-06 15:38:56 +00:00
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
2015-09-24 21:37:31 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-24 21:37:31 +00:00
end
2015-09-25 09:47:59 +00:00
# debian 7 with systemv
it 'verify debian 7 package parsing' do
resource = MockLoader . new ( :debian7 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2015-09-25 09:47:59 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-25 09:47:59 +00:00
end
2015-09-24 21:32:46 +00:00
# debian 8 with systemd
2016-01-20 14:54:36 +00:00
it 'verify debian 8 package parsing' do
2015-09-25 09:50:48 +00:00
resource = MockLoader . new ( :debian8 ) . load_resource ( 'service' , 'sshd' )
2016-07-05 17:39:25 +00:00
params = Hashie :: Mash . new ( { 'ActiveState' = > 'active' , 'Description' = > 'OpenSSH server daemon' , 'Id' = > 'sshd.service' , 'LoadState' = > 'loaded' , 'Names' = > 'sshd.service' , 'SubState' = > 'running' , 'UnitFileState' = > 'enabled' } )
2016-05-06 15:38:56 +00:00
_ ( resource . type ) . must_equal 'systemd'
_ ( resource . name ) . must_equal 'sshd.service'
_ ( resource . description ) . must_equal 'OpenSSH server daemon'
2015-09-24 21:32:46 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-24 21:32:46 +00:00
end
2015-09-25 10:51:12 +00:00
# macos test
2016-01-20 14:54:36 +00:00
it 'verify mac osx package parsing' do
2015-09-25 10:51:12 +00:00
resource = MockLoader . new ( :osx104 ) . load_resource ( 'service' , 'ssh' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'darwin'
_ ( resource . name ) . must_equal 'org.openbsd.ssh-agent'
_ ( resource . description ) . must_equal nil
2015-09-25 10:51:12 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-09-25 10:51:12 +00:00
end
2016-01-22 10:52:06 +00:00
it 'verify mac osx package parsing with not-running service' do
resource = MockLoader . new ( :osx104 ) . load_resource ( 'service' , 'FilesystemUI' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'darwin'
_ ( resource . name ) . must_equal 'com.apple.FilesystemUI'
_ ( resource . description ) . must_equal nil
2016-01-22 10:52:06 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal false
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2016-01-22 10:52:06 +00:00
end
2016-01-20 14:54:36 +00:00
it 'verify mac osx package parsing with default launchd_service' do
resource = MockLoader . new ( :osx104 ) . load_resource ( 'launchd_service' , 'ssh' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'darwin'
_ ( resource . name ) . must_equal 'org.openbsd.ssh-agent'
_ ( resource . description ) . must_equal nil
2016-01-20 14:54:36 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2016-01-20 14:54:36 +00:00
end
2015-12-03 03:08:49 +00:00
# wrlinux
it 'verify wrlinux package parsing' do
resource = MockLoader . new ( :wrlinux ) . load_resource ( 'service' , 'sshd' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2015-12-03 03:08:49 +00:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 15:38:56 +00:00
_ ( resource . params ) . must_equal params
2015-12-03 03:08:49 +00:00
end
2016-01-20 14:54:36 +00:00
2015-09-23 14:32:51 +00:00
# unknown OS
it 'verify package handling on unsupported os' do
resource = MockLoader . new ( :undefined ) . load_resource ( 'service' , 'dhcp' )
2016-05-06 15:38:56 +00:00
params = Hashie :: Mash . new ( { } )
2015-09-23 14:32:51 +00:00
_ ( resource . installed? ) . must_equal false
2016-05-06 15:38:56 +00:00
_ ( resource . description ) . must_equal nil
_ ( resource . params ) . must_equal params
2015-09-23 14:32:51 +00:00
end
2016-02-14 17:37:20 +00:00
# runlevel detection
describe 'runlevels on centos 6 (system V)' do
let ( :service ) { MockLoader . new ( :centos6 ) . load_resource ( 'service' , 'sshd' ) }
it 'grabs all runlevels' do
service . runlevels . keys . must_equal [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ]
end
it 'grabs runlevels via filter nil' do
service . runlevels ( nil ) . keys . must_equal [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ]
end
it 'grabs runlevels by number' do
service . runlevels ( 3 ) . keys . must_equal [ 3 ]
end
it 'grabs runlevels by multiple numbers' do
service . runlevels ( 3 , 4 , 8 ) . keys . must_equal [ 3 , 4 ]
end
it 'grabs runlevels via regex' do
service . runlevels ( / [5-9] / ) . keys . must_equal [ 5 , 6 ]
end
it 'checks enabled true if all services are enabled' do
service . runlevels ( 2 , 4 ) . enabled? . must_equal true
end
it 'checks enabled false if some services are not enabled' do
service . runlevels ( 1 , 4 ) . enabled? . must_equal false
end
it 'checks disabled true if all services are disabled' do
service . runlevels ( 0 , 1 ) . disabled? . must_equal true
end
it 'checks disabled false if some services are not disabled' do
service . runlevels ( 0 , 4 ) . enabled? . must_equal false
end
end
2015-09-14 13:15:32 +00:00
end