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'
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' )
srv = { name : 'dhcp' , description : 'DHCP Client' , installed : true , running : true , enabled : true , type : 'windows' }
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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' )
2015-09-25 11:25:17 +02:00
srv = { name : 'ssh' , description : nil , installed : true , running : true , enabled : true , type : 'upstart' }
2015-09-23 22:32:31 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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' )
srv = { name : 'ssh' , description : nil , installed : true , running : true , enabled : true , type : 'upstart' }
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'sshd.service' , description : 'OpenSSH server daemon' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " sshd.service " , " Names " = > " sshd.service " , " Description " = > " OpenSSH server daemon " , " LoadState " = > " loaded " , " UnitFileState " = > " enabled " , " SubState " = > " running " } }
2015-09-25 10:31:42 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'sshd.service' , description : 'OpenSSH server daemon' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " sshd.service " , " Names " = > " sshd.service " , " Description " = > " OpenSSH server daemon " , " LoadState " = > " loaded " , " UnitFileState " = > " enabled " , " SubState " = > " running " } }
2016-01-20 14:33:24 +01:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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-02-14 18:18:40 +01:00
srv = { name : 'sshd' , description : nil , installed : true , running : true , enabled : true , runlevels : runlevels , type : 'sysv' }
2015-09-25 11:47:59 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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-02-14 18:18:40 +01:00
srv = { name : 'sshd' , description : nil , installed : true , running : true , enabled : true , runlevels : runlevels , type : 'sysv' }
2016-01-20 15:54:36 +01:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'sshd.service' , description : 'OpenSSH server daemon' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " sshd.service " , " Names " = > " sshd.service " , " Description " = > " OpenSSH server daemon " , " LoadState " = > " loaded " , " UnitFileState " = > " enabled " , " SubState " = > " running " } }
2015-09-25 12:48:21 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'sshd.service' , description : 'OpenSSH server daemon' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " sshd.service " , " Names " = > " sshd.service " , " Description " = > " OpenSSH server daemon " , " LoadState " = > " loaded " , " UnitFileState " = > " enabled " , " SubState " = > " running " } }
2016-01-21 11:41:48 +01:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'dbus.service' , description : 'D-Bus System Message Bus' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " dbus.service " , " Names " = > " messagebus.service dbus.service " , " Description " = > " D-Bus System Message Bus " , " LoadState " = > " loaded " , " UnitFileState " = > " static " , " SubState " = > " running " } }
2016-04-13 14:44:28 -05:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
end
2015-09-25 12:53:40 +02:00
# freebsd
it 'verify freebsd10 package parsing' do
resource = MockLoader . new ( :freebsd10 ) . load_resource ( 'service' , 'sendmail' )
srv = { name : 'sendmail' , description : nil , installed : true , running : true , enabled : true , type : 'bsd-init' }
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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' )
srv = { name : 'sendmail' , description : nil , installed : true , running : true , enabled : true , type : 'bsd-init' }
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'sshd.service' , description : 'OpenSSH server daemon' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " sshd.service " , " Names " = > " sshd.service " , " Description " = > " OpenSSH server daemon " , " LoadState " = > " loaded " , " UnitFileState " = > " enabled " , " SubState " = > " running " } }
2015-09-24 23:37:31 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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-02-14 18:18:40 +01:00
srv = { name : 'sshd' , description : nil , installed : true , running : true , enabled : true , runlevels : runlevels , type : 'sysv' }
2015-09-25 11:47:59 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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 12:22:56 +01:00
srv = { name : 'sshd.service' , description : 'OpenSSH server daemon' , installed : true , running : true , enabled : true , type : 'systemd' , :properties = > { " Id " = > " sshd.service " , " Names " = > " sshd.service " , " Description " = > " OpenSSH server daemon " , " LoadState " = > " loaded " , " UnitFileState " = > " enabled " , " SubState " = > " running " } }
2015-09-24 23:32:46 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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' )
2015-09-25 11:51:21 +02:00
srv = { name : 'org.openbsd.ssh-agent' , description : nil , installed : true , running : true , enabled : true , type : 'darwin' }
2015-09-25 12:51:12 +02:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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' )
srv = { name : 'com.apple.FilesystemUI' , description : nil , installed : true , running : false , enabled : true , type : 'darwin' }
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal false
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' )
srv = { name : 'org.openbsd.ssh-agent' , description : nil , installed : true , running : true , enabled : true , type : 'darwin' }
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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-02-14 18:18:40 +01:00
srv = { name : 'sshd' , description : nil , installed : true , running : true , enabled : true , runlevels : runlevels , type : 'sysv' }
2015-12-02 22:08:49 -05:00
_ ( resource . info ) . must_equal srv
_ ( resource . installed? ) . must_equal true
_ ( resource . enabled? ) . must_equal true
_ ( resource . running? ) . must_equal true
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' )
_ ( resource . installed? ) . must_equal false
_ ( resource . info ) . must_equal nil
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