2015-10-06 18:55:44 +02:00
# encoding: utf-8
# author: Christoph Hartmann
# author: Dominik Richter
2015-09-14 15:15:32 +02:00
require 'helper'
2015-10-26 04:04:18 +01:00
require 'inspec/resource'
2016-05-06 16:38:56 +01:00
require 'hashie'
2015-09-14 15:15:32 +02:00
2015-10-26 04:04:18 +01:00
describe 'Inspec::Resources::Service' do
2016-02-14 18:18:40 +01:00
let ( :runlevels ) { { 0 = > false , 1 = > false , 2 = > true , 3 = > true , 4 = > true , 5 = > true , 6 = > false } }
2015-09-14 15:15:32 +02:00
2015-09-22 18:33:05 +02:00
# windows
2015-09-23 16:30:48 +02:00
it 'verify service parsing' do
resource = MockLoader . new ( :windows ) . load_resource ( 'service' , 'dhcp' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'windows'
_ ( resource . name ) . must_equal 'dhcp'
_ ( resource . description ) . must_equal 'DHCP Client'
2015-09-23 16:30:48 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-23 16:30:48 +02:00
end
2015-09-23 22:32:31 +02:00
2015-09-25 10:31:42 +02:00
# ubuntu 14.04 with upstart
2015-09-23 22:32:31 +02:00
it 'verify ubuntu package parsing' do
resource = MockLoader . new ( :ubuntu1404 ) . load_resource ( 'service' , 'ssh' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'upstart'
_ ( resource . name ) . must_equal 'ssh'
_ ( resource . description ) . must_equal nil
2015-09-23 22:32:31 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-23 22:32:31 +02:00
end
2015-09-25 12:48:21 +02:00
2016-01-20 15:54:36 +01:00
it 'verify ubuntu package parsing with default upstart_service' do
resource = MockLoader . new ( :ubuntu1404 ) . load_resource ( 'upstart_service' , 'ssh' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'upstart'
_ ( resource . name ) . must_equal 'ssh'
_ ( resource . description ) . must_equal nil
2016-01-20 15:54:36 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
_ ( resource . params . UnitFileState ) . must_equal nil
2016-01-20 15:54:36 +01:00
end
2015-09-25 10:31:42 +02:00
# ubuntu 15.04 with systemd
it 'verify ubuntu package parsing' do
resource = MockLoader . new ( :ubuntu1504 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { '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'
2015-09-25 10:31:42 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
_ ( resource . params . SubState ) . must_equal 'running'
2015-09-25 10:31:42 +02:00
end
2016-01-20 15:54:36 +01:00
it 'verify ubuntu package parsing with default systemd_service' do
2016-01-20 14:33:24 +01:00
resource = MockLoader . new ( :ubuntu1504 ) . load_resource ( 'systemd_service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { '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'
2016-01-20 14:33:24 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2016-01-20 14:33:24 +01:00
end
2016-01-20 15:54:36 +01:00
# centos 6 with sysv
2015-09-25 11:47:59 +02:00
it 'verify centos 6 package parsing' do
resource = MockLoader . new ( :centos6 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2015-09-25 11:47:59 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
_ ( resource . params . SubState ) . must_equal nil
2015-09-25 11:47:59 +02:00
end
2016-01-20 15:54:36 +01:00
it 'verify centos 6 package parsing with default sysv_service' do
resource = MockLoader . new ( :centos6 ) . load_resource ( 'sysv_service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2016-01-20 15:54:36 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2016-01-20 15:54:36 +01:00
end
2015-09-25 12:48:21 +02:00
# centos 7 with systemd
2015-09-25 11:51:21 +02:00
it 'verify centos 7 package parsing' do
2015-09-25 12:48:21 +02:00
resource = MockLoader . new ( :centos7 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { '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'
2015-09-25 12:48:21 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-25 12:48:21 +02:00
end
2015-09-24 23:32:46 +02:00
2016-01-21 11:41:48 +01: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-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { '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'
2016-01-21 11:41:48 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2016-01-21 11:41:48 +01:00
end
2016-04-13 14:44:28 -05:00
it 'verify centos 7 package parsing with static loaded service' do
resource = MockLoader . new ( :centos7 ) . load_resource ( 'service' , 'dbus' )
2016-05-06 16:38:56 +01: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 14:44:28 -05:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
_ ( resource . params . UnitFileState ) . must_equal 'static'
2016-04-13 14:44:28 -05:00
end
2015-09-25 12:53:40 +02:00
# freebsd
it 'verify freebsd10 package parsing' do
resource = MockLoader . new ( :freebsd10 ) . load_resource ( 'service' , 'sendmail' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'bsd-init'
_ ( resource . name ) . must_equal 'sendmail'
_ ( resource . description ) . must_equal nil
2015-09-25 12:53:40 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-25 12:53:40 +02:00
end
2016-01-20 15:54:36 +01:00
it 'verify freebsd10 package parsing with default bsd_service' do
resource = MockLoader . new ( :freebsd10 ) . load_resource ( 'bsd_service' , 'sendmail' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'bsd-init'
_ ( resource . name ) . must_equal 'sendmail'
_ ( resource . description ) . must_equal nil
2016-01-20 15:54:36 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2016-01-20 15:54:36 +01:00
end
2015-09-24 23:37:31 +02:00
# arch linux with systemd
it 'verify arch linux package parsing' do
resource = MockLoader . new ( :arch ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { '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'
2015-09-24 23:37:31 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-24 23:37:31 +02:00
end
2015-09-25 11:47:59 +02:00
# debian 7 with systemv
it 'verify debian 7 package parsing' do
resource = MockLoader . new ( :debian7 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2015-09-25 11:47:59 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-25 11:47:59 +02:00
end
2015-09-24 23:32:46 +02:00
# debian 8 with systemd
2016-01-20 15:54:36 +01:00
it 'verify debian 8 package parsing' do
2015-09-25 11:50:48 +02:00
resource = MockLoader . new ( :debian8 ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { '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'
2015-09-24 23:32:46 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-24 23:32:46 +02:00
end
2015-09-25 12:51:12 +02:00
# macos test
2016-01-20 15:54:36 +01:00
it 'verify mac osx package parsing' do
2015-09-25 12:51:12 +02:00
resource = MockLoader . new ( :osx104 ) . load_resource ( 'service' , 'ssh' )
2016-05-06 16:38:56 +01: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 12:51:12 +02:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-09-25 12:51:12 +02:00
end
2016-01-22 11:52:06 +01:00
it 'verify mac osx package parsing with not-running service' do
resource = MockLoader . new ( :osx104 ) . load_resource ( 'service' , 'FilesystemUI' )
2016-05-06 16:38:56 +01: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 11:52:06 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal false
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2016-01-22 11:52:06 +01:00
end
2016-01-20 15:54:36 +01:00
it 'verify mac osx package parsing with default launchd_service' do
resource = MockLoader . new ( :osx104 ) . load_resource ( 'launchd_service' , 'ssh' )
2016-05-06 16:38:56 +01: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 15:54:36 +01:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2016-01-20 15:54:36 +01:00
end
2015-12-02 22:08:49 -05:00
# wrlinux
it 'verify wrlinux package parsing' do
resource = MockLoader . new ( :wrlinux ) . load_resource ( 'service' , 'sshd' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
_ ( resource . type ) . must_equal 'sysv'
_ ( resource . name ) . must_equal 'sshd'
_ ( resource . description ) . must_equal nil
2015-12-02 22:08:49 -05:00
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
2016-05-06 16:38:56 +01:00
_ ( resource . params ) . must_equal params
2015-12-02 22:08:49 -05:00
end
2016-01-20 15:54:36 +01:00
2015-09-23 16:32:51 +02:00
# unknown OS
it 'verify package handling on unsupported os' do
resource = MockLoader . new ( :undefined ) . load_resource ( 'service' , 'dhcp' )
2016-05-06 16:38:56 +01:00
params = Hashie :: Mash . new ( { } )
2015-09-23 16:32:51 +02:00
_ ( resource . installed? ) . must_equal false
2016-05-06 16:38:56 +01:00
_ ( resource . description ) . must_equal nil
_ ( resource . params ) . must_equal params
2015-09-23 16:32:51 +02:00
end
2016-02-14 18:37:20 +01: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 15:15:32 +02:00
end