serverspec 2.0.0.beta8 → 2.0.0.beta9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +24 -2
- data/lib/serverspec/setup.rb +6 -8
- data/lib/serverspec/type/cgroup.rb +1 -0
- data/lib/serverspec/type/command.rb +1 -1
- data/lib/serverspec/type/cron.rb +1 -1
- data/lib/serverspec/type/default_gateway.rb +2 -2
- data/lib/serverspec/type/file.rb +21 -17
- data/lib/serverspec/type/group.rb +2 -2
- data/lib/serverspec/type/host.rb +3 -3
- data/lib/serverspec/type/iis_app_pool.rb +2 -2
- data/lib/serverspec/type/iis_website.rb +5 -5
- data/lib/serverspec/type/interface.rb +1 -1
- data/lib/serverspec/type/ipfilter.rb +1 -1
- data/lib/serverspec/type/ipnat.rb +1 -1
- data/lib/serverspec/type/iptables.rb +1 -1
- data/lib/serverspec/type/kernel_module.rb +1 -1
- data/lib/serverspec/type/lxc.rb +2 -2
- data/lib/serverspec/type/mail_alias.rb +1 -1
- data/lib/serverspec/type/package.rb +2 -7
- data/lib/serverspec/type/port.rb +1 -1
- data/lib/serverspec/type/ppa.rb +2 -2
- data/lib/serverspec/type/routing_table.rb +1 -1
- data/lib/serverspec/type/selinux.rb +3 -3
- data/lib/serverspec/type/service.rb +7 -15
- data/lib/serverspec/type/user.rb +12 -6
- data/lib/serverspec/type/windows_feature.rb +1 -1
- data/lib/serverspec/type/windows_hot_fix.rb +1 -1
- data/lib/serverspec/type/windows_registry_key.rb +4 -4
- data/lib/serverspec/type/windows_scheduled_task.rb +1 -1
- data/lib/serverspec/type/yumrepo.rb +2 -2
- data/lib/serverspec/type/zfs.rb +2 -2
- data/lib/serverspec/version.rb +1 -1
- data/serverspec.gemspec +1 -1
- data/spec/spec_helper.rb +11 -0
- data/spec/type/aix/file_spec.rb +35 -0
- data/spec/type/aix/group_spec.rb +15 -0
- data/spec/type/aix/package_spec.rb +15 -0
- data/spec/type/aix/port_spec.rb +37 -0
- data/spec/type/aix/service_spec.rb +23 -0
- data/spec/type/aix/user_spec.rb +32 -0
- data/spec/type/arch/file_spec.rb +32 -0
- data/spec/type/arch/package_spec.rb +31 -0
- data/spec/type/arch/service_spec.rb +13 -0
- data/spec/type/{command_spec.rb → base/command_spec.rb} +1 -3
- data/spec/type/{cron_spec.rb → base/cron_spec.rb} +5 -1
- data/spec/type/{default_gateway_spec.rb → base/default_gateway_spec.rb} +1 -1
- data/spec/type/{file_spec.rb → base/file_spec.rb} +23 -24
- data/spec/type/{group_spec.rb → base/group_spec.rb} +5 -1
- data/spec/type/{host_spec.rb → base/host_spec.rb} +5 -1
- data/spec/type/{mail_alias_spec.rb → base/mail_alias_spec.rb} +5 -1
- data/spec/type/{package_spec.rb → base/package_spec.rb} +3 -32
- data/spec/type/{php_config_spec.rb → base/php_config_spec.rb} +1 -1
- data/spec/type/{port_spec.rb → base/port_spec.rb} +5 -1
- data/spec/type/{process_spec.rb → base/process_spec.rb} +5 -1
- data/spec/type/{routing_table_spec.rb → base/routing_table_spec.rb} +5 -1
- data/spec/type/{service_spec.rb → base/service_spec.rb} +5 -25
- data/spec/type/{user_spec.rb → base/user_spec.rb} +5 -1
- data/spec/type/darwin/file_spec.rb +43 -0
- data/spec/type/darwin/package_spec.rb +24 -0
- data/spec/type/darwin/port_spec.rb +37 -0
- data/spec/type/darwin/service_spec.rb +32 -0
- data/spec/type/debian/package_spec.rb +39 -0
- data/spec/type/debian/service_spec.rb +23 -0
- data/spec/type/fedora/service_spec.rb +19 -0
- data/spec/type/fedora15/service_spec.rb +19 -0
- data/spec/type/fedora20/service_spec.rb +19 -0
- data/spec/type/freebsd/file_spec.rb +11 -0
- data/spec/type/freebsd/package_spec.rb +31 -0
- data/spec/type/freebsd/port_spec.rb +37 -0
- data/spec/type/freebsd/service_spec.rb +16 -0
- data/spec/type/freebsd10/package_spec.rb +31 -0
- data/spec/type/gentoo/package_spec.rb +16 -0
- data/spec/type/gentoo/service_spec.rb +24 -0
- data/spec/type/{cgroup_spec.rb → linux/cgroup_spec.rb} +1 -1
- data/spec/type/linux/file_spec.rb +38 -0
- data/spec/type/{interface_spec.rb → linux/interface_spec.rb} +5 -1
- data/spec/type/{iptables_spec.rb → linux/iptables_spec.rb} +6 -2
- data/spec/type/linux/kernel_module_spec.rb +15 -0
- data/spec/type/{linux_kernel_parameter_spec.rb → linux/linux_kernel_parameter_spec.rb} +1 -1
- data/spec/type/{lxc_spec.rb → linux/lxc_container_spec.rb} +5 -1
- data/spec/type/{selinux_spec.rb → linux/selinux_spec.rb} +5 -1
- data/spec/type/{zfs_spec.rb → linux/zfs_spec.rb} +5 -1
- data/spec/type/nixos/package_spec.rb +31 -0
- data/spec/type/nixos/service_spec.rb +13 -0
- data/spec/type/openbsd/file_spec.rb +174 -0
- data/spec/type/openbsd/interface_spec.rb +25 -0
- data/spec/type/openbsd/mail_alias_spec.rb +15 -0
- data/spec/type/openbsd/package_spec.rb +24 -0
- data/spec/type/openbsd/port_spec.rb +11 -0
- data/spec/type/openbsd/service_spec.rb +24 -0
- data/spec/type/openbsd/user_spec.rb +24 -0
- data/spec/type/opensuse/service_spec.rb +32 -0
- data/spec/type/plamo/package_spec.rb +16 -0
- data/spec/type/plamo/service_spec.rb +16 -0
- data/spec/type/redhat/file_spec.rb +36 -0
- data/spec/type/redhat/package_spec.rb +39 -0
- data/spec/type/redhat/service_spec.rb +23 -0
- data/spec/type/{yumrepo_spec.rb → redhat/yumrepo_spec.rb} +5 -1
- data/spec/type/redhat5/iptables_spec.rb +23 -0
- data/spec/type/redhat7/service_spec.rb +13 -0
- data/spec/type/smartos/package_spec.rb +31 -0
- data/spec/type/smartos/service_spec.rb +32 -0
- data/spec/type/solaris/cron_spec.rb +23 -0
- data/spec/type/solaris/file_spec.rb +33 -0
- data/spec/type/solaris/group_spec.rb +15 -0
- data/spec/type/solaris/host_spec.rb +31 -0
- data/spec/type/solaris/ipfilter_spec.rb +11 -0
- data/spec/type/solaris/ipnat_spec.rb +11 -0
- data/spec/type/solaris/package_spec.rb +15 -0
- data/spec/type/solaris/port_spec.rb +37 -0
- data/spec/type/solaris/service_spec.rb +32 -0
- data/spec/type/solaris/user_spec.rb +32 -0
- data/spec/type/solaris/zfs_spec.rb +19 -0
- data/spec/type/solaris10/file_spec.rb +391 -0
- data/spec/type/solaris10/group_spec.rb +16 -0
- data/spec/type/solaris10/host_spec.rb +24 -0
- data/spec/type/solaris10/package_spec.rb +15 -0
- data/spec/type/solaris10/user_spec.rb +16 -0
- data/spec/type/suse/package_spec.rb +39 -0
- data/spec/type/suse/service_spec.rb +23 -0
- data/spec/type/ubuntu/ppa_spec.rb +23 -0
- data/spec/type/ubuntu/service_spec.rb +15 -0
- data/spec/type/windows/command_spec.rb +65 -0
- data/spec/type/windows/feature_spec.rb +13 -0
- data/spec/type/windows/file_spec.rb +161 -0
- data/spec/type/windows/group_spec.rb +31 -0
- data/spec/type/windows/host_spec.rb +56 -0
- data/spec/type/windows/hot_fix_spec.rb +26 -0
- data/spec/type/windows/iis_app_pool_spec.rb +18 -0
- data/spec/type/windows/iis_webisite_spec.rb +30 -0
- data/spec/type/windows/package_spec.rb +14 -0
- data/spec/type/windows/port_spec.rb +33 -0
- data/spec/type/windows/registry_key_spec.rb +62 -0
- data/spec/type/windows/scheduled_task_spec.rb +13 -0
- data/spec/type/windows/service_spec.rb +42 -0
- data/spec/type/windows/user_spec.rb +45 -0
- metadata +208 -50
- data/spec/type/kernel_module_spec.rb +0 -11
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('host').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Host) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe host('127.0.0.1') do
|
|
10
|
+
it { should be_reachable }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe host('invalid-host') do
|
|
14
|
+
it { should_not be_reachable }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe host('127.0.0.1') do
|
|
18
|
+
it { should be_reachable.with(:proto => "icmp", :timeout=> 1) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe host('127.0.0.1') do
|
|
22
|
+
it { should be_reachable.with(:proto => "tcp", :port => 22, :timeout=> 1) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe host('127.0.0.1') do
|
|
26
|
+
it { should be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe host('invalid-host') do
|
|
30
|
+
it { should_not be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
|
|
31
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('ipfilter').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Ipfilter) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe ipfilter do
|
|
10
|
+
it { should have_rule 'pass in quick on lo0 all' }
|
|
11
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('ipfilter').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Ipfilter) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe ipnat do
|
|
10
|
+
it { should have_rule 'map net1 192.168.0.0/24 -> 0.0.0.0/32' }
|
|
11
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('package').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Package) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe package('httpd') do
|
|
10
|
+
it { should be_installed }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe package('invalid-package') do
|
|
14
|
+
it { should_not be_installed }
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('port').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Port) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe Serverspec::Type::Port do
|
|
10
|
+
describe port(80) do
|
|
11
|
+
it { should be_listening }
|
|
12
|
+
|
|
13
|
+
it('protocol: tcp') { should be_listening.with('tcp') }
|
|
14
|
+
|
|
15
|
+
it 'invalid protocol raises error' do
|
|
16
|
+
expect {
|
|
17
|
+
should be_listening.with('not implemented')
|
|
18
|
+
}.to raise_error(ArgumentError, %r/\A`be_listening` matcher doesn\'t support/)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it('on: 127.0.0.1') do
|
|
22
|
+
should be_listening.on('127.0.0.1')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it 'invalid local address raises error' do
|
|
26
|
+
expect{ should be_listening.on('') }.to raise_error(ArgumentError)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
describe port('invalid') do
|
|
31
|
+
it { should_not be_listening }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
describe port(123) do
|
|
35
|
+
it { should be_listening.with("udp") }
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('service').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Service) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe service('sshd') do
|
|
10
|
+
it { should be_enabled }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe service('invalid-service') do
|
|
14
|
+
it { should_not be_enabled }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe service('sshd') do
|
|
18
|
+
it { should be_running }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe service('invalid-service') do
|
|
22
|
+
it { should_not be_running }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe service('sshd') do
|
|
26
|
+
it { should have_property :foo => 'bar' }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe service('invalid-service') do
|
|
30
|
+
it { should_not have_property :foo => 'bar' }
|
|
31
|
+
end
|
|
32
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('user').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::User) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe user('root') do
|
|
10
|
+
it { should belong_to_group 'root' }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe user('root') do
|
|
14
|
+
it { should_not belong_to_group 'invalid-group' }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe user('root') do
|
|
18
|
+
it { should have_login_shell '/bin/bash' }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe user('root') do
|
|
22
|
+
it { should_not have_login_shell 'invalid-login-shell' }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe user('root') do
|
|
26
|
+
it { should have_home_directory '/root' }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe user('root') do
|
|
30
|
+
it { should_not have_home_directory 'invalid-home-directory' }
|
|
31
|
+
end
|
|
32
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris'
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('zfs').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::Base::Zfs) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe zfs('rpool') do
|
|
10
|
+
it { should exist }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe zfs('rpool') do
|
|
14
|
+
it { should have_property 'mountpoint' => '/rpool' }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe zfs('rpool') do
|
|
18
|
+
it { should have_property 'mountpoint' => '/rpool', 'compression' => 'off' }
|
|
19
|
+
end
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris', :release => 10
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('file').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::V10::File) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe file('/etc/ssh/sshd_config') do
|
|
10
|
+
it { should be_file }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe file('/etc/invalid_file') do
|
|
14
|
+
it { should_not be_file }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe file('/etc/ssh') do
|
|
18
|
+
it { should be_directory }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe file('/etc/invalid_directory') do
|
|
22
|
+
it { should_not be_directory }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe file('/var/run/unicorn.sock') do
|
|
26
|
+
it { should be_socket }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe file('/etc/invalid_socket') do
|
|
30
|
+
it { should_not be_socket }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe file('/etc/ssh/sshd_config') do
|
|
34
|
+
it { should contain 'This is the sshd server system-wide configuration file' }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe file('/etc/ssh/sshd_config') do
|
|
38
|
+
it { should contain /^This is the sshd server system-wide configuration file/ }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe file('/etc/ssh/sshd_config') do
|
|
42
|
+
it { should_not contain 'This is invalid text!!' }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
describe file('Gemfile') do
|
|
46
|
+
it { should contain('rspec').from(/^group :test do/).to(/^end/) }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe file('/etc/ssh/sshd_config') do
|
|
50
|
+
it { should_not contain('This is invalid text!!').from(/^group :test do/).to(/^end/) }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe file('Gemfile') do
|
|
54
|
+
it { should contain('rspec').after(/^group :test do/) }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
describe file('/etc/ssh/sshd_config') do
|
|
58
|
+
it { should_not contain('This is invalid text!!').after(/^group :test do/) }
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe file('Gemfile') do
|
|
62
|
+
it { should contain('rspec').before(/^end/) }
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
describe file('/etc/ssh/sshd_config') do
|
|
66
|
+
it { should_not contain('This is invalid text!!').before(/^end/) }
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
describe file('/etc/passwd') do
|
|
70
|
+
it { should be_mode 644 }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe file('/etc/passwd') do
|
|
74
|
+
it { should_not be_mode 'invalid' }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
describe file('/etc/passwd') do
|
|
78
|
+
it { should be_owned_by 'root' }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe file('/etc/passwd') do
|
|
82
|
+
it { should_not be_owned_by 'invalid-owner' }
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe file('/etc/passwd') do
|
|
86
|
+
it { should be_grouped_into 'root' }
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
describe file('/etc/passwd') do
|
|
90
|
+
it { should_not be_grouped_into 'invalid-group' }
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe file('/etc/pam.d/system-auth') do
|
|
94
|
+
it { should be_linked_to '/etc/pam.d/system-auth-ac' }
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe file('dummy-link') do
|
|
98
|
+
it { should_not be_linked_to '/invalid/target' }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
describe file('/dev') do
|
|
102
|
+
let(:stdout) { "755\r\n" }
|
|
103
|
+
it { should be_readable }
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
describe file('/dev') do
|
|
107
|
+
let(:stdout) { "333\r\n" }
|
|
108
|
+
it { should_not be_readable }
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
describe file('/dev') do
|
|
112
|
+
let(:stdout) { "400\r\n" }
|
|
113
|
+
it { should be_readable.by('owner') }
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
describe file('/dev') do
|
|
117
|
+
let(:stdout) { "044\r\n" }
|
|
118
|
+
it { should_not be_readable.by('owner') }
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
describe file('/dev') do
|
|
122
|
+
let(:stdout) { "040\r\n" }
|
|
123
|
+
it { should be_readable.by('group') }
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
describe file('/dev') do
|
|
127
|
+
let(:stdout) { "404\r\n" }
|
|
128
|
+
it { should_not be_readable.by('group') }
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
describe file('/dev') do
|
|
132
|
+
let(:stdout) { "044\r\n" }
|
|
133
|
+
it { should be_readable.by('others') }
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
describe file('/dev') do
|
|
137
|
+
let(:stdout) { "443\r\n" }
|
|
138
|
+
it { should_not be_readable.by('others') }
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
describe file('/dev') do
|
|
142
|
+
let(:stdout) { "755\r\n" }
|
|
143
|
+
it { should be_writable }
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
describe file('/dev') do
|
|
147
|
+
let(:stdout) { "555\r\n" }
|
|
148
|
+
it { should_not be_writable }
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
describe file('/dev') do
|
|
152
|
+
let(:stdout) { "200\r\n" }
|
|
153
|
+
it { should be_writable.by('owner') }
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
describe file('/dev') do
|
|
157
|
+
let(:stdout) { "555\r\n" }
|
|
158
|
+
it { should_not be_writable.by('owner') }
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
describe file('/dev') do
|
|
162
|
+
let(:stdout) { "030\r\n" }
|
|
163
|
+
it { should be_writable.by('group') }
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
describe file('/dev') do
|
|
167
|
+
let(:stdout) { "555\r\n" }
|
|
168
|
+
it { should_not be_writable.by('group') }
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
describe file('/dev') do
|
|
172
|
+
let(:stdout) { "666\r\n" }
|
|
173
|
+
it { should be_writable.by('others') }
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
describe file('/dev') do
|
|
177
|
+
let(:stdout) { "555\r\n" }
|
|
178
|
+
it { should_not be_writable.by('others') }
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
describe file('/dev') do
|
|
183
|
+
let(:stdout) { "755\r\n" }
|
|
184
|
+
it { should be_executable }
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
describe file('/dev') do
|
|
188
|
+
let(:stdout) { "666\r\n" }
|
|
189
|
+
it { should_not be_executable }
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
describe file('/dev') do
|
|
193
|
+
let(:stdout) { "100\r\n" }
|
|
194
|
+
it { should be_executable.by('owner') }
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
describe file('/dev') do
|
|
198
|
+
let(:stdout) { "666\r\n" }
|
|
199
|
+
it { should_not be_executable.by('owner') }
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
describe file('/dev') do
|
|
203
|
+
let(:stdout) { "070\r\n" }
|
|
204
|
+
it { should be_executable.by('group') }
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
describe file('/dev') do
|
|
208
|
+
let(:stdout) { "666\r\n" }
|
|
209
|
+
it { should_not be_executable.by('group') }
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
describe file('/dev') do
|
|
213
|
+
let(:stdout) { "001\r\n" }
|
|
214
|
+
it { should be_executable.by('others') }
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
describe file('/dev') do
|
|
218
|
+
let(:stdout) { "666\r\n" }
|
|
219
|
+
it { should_not be_executable.by('others') }
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
describe file('/') do
|
|
223
|
+
it { should be_mounted }
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
describe file('/etc/invalid-mount') do
|
|
227
|
+
it { should_not be_mounted }
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
describe file('/') do
|
|
231
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
232
|
+
it { should be_mounted.with( :type => 'ext4' ) }
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
describe file('/') do
|
|
236
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
237
|
+
it { should be_mounted.with( :type => 'ext4', :options => { :rw => true } ) }
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
describe file('/') do
|
|
241
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
242
|
+
it { should be_mounted.with( :type => 'ext4', :options => { :mode => 620 } ) }
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
describe file('/') do
|
|
246
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
247
|
+
it { should be_mounted.with( :type => 'ext4', :device => '/dev/mapper/VolGroup-lv_root' ) }
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
describe file('/') do
|
|
251
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
252
|
+
it { should_not be_mounted.with( :type => 'xfs' ) }
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
describe file('/') do
|
|
256
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
257
|
+
it { should_not be_mounted.with( :type => 'ext4', :options => { :rw => false } ) }
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
describe file('/') do
|
|
261
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
262
|
+
it { should_not be_mounted.with( :type => 'ext4', :options => { :mode => 600 } ) }
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
describe file('/') do
|
|
266
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
267
|
+
it { should_not be_mounted.with( :type => 'xfs', :device => '/dev/mapper/VolGroup-lv_root' ) }
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
describe file('/') do
|
|
271
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
272
|
+
it { should_not be_mounted.with( :type => 'ext4', :device => '/dev/mapper/VolGroup-lv_r00t' ) }
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
describe file('/etc/invalid-mount') do
|
|
276
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
277
|
+
it { should_not be_mounted.with( :type => 'ext4' ) }
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
describe file('/') do
|
|
281
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
282
|
+
it do
|
|
283
|
+
should be_mounted.only_with(
|
|
284
|
+
:device => '/dev/mapper/VolGroup-lv_root',
|
|
285
|
+
:type => 'ext4',
|
|
286
|
+
:options => {
|
|
287
|
+
:rw => true,
|
|
288
|
+
:mode => 620,
|
|
289
|
+
}
|
|
290
|
+
)
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
describe file('/') do
|
|
295
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
296
|
+
it do
|
|
297
|
+
should_not be_mounted.only_with(
|
|
298
|
+
:device => '/dev/mapper/VolGroup-lv_root',
|
|
299
|
+
:type => 'ext4',
|
|
300
|
+
:options => {
|
|
301
|
+
:rw => true,
|
|
302
|
+
:mode => 620,
|
|
303
|
+
:bind => true,
|
|
304
|
+
}
|
|
305
|
+
)
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
describe file('/') do
|
|
310
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
311
|
+
it do
|
|
312
|
+
should_not be_mounted.only_with(
|
|
313
|
+
:device => '/dev/mapper/VolGroup-lv_root',
|
|
314
|
+
:type => 'ext4',
|
|
315
|
+
:options => {
|
|
316
|
+
:rw => true,
|
|
317
|
+
}
|
|
318
|
+
)
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
describe file('/') do
|
|
323
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
324
|
+
it do
|
|
325
|
+
should_not be_mounted.only_with(
|
|
326
|
+
:device => '/dev/mapper/VolGroup-lv_roooooooooot',
|
|
327
|
+
:type => 'ext4',
|
|
328
|
+
:options => {
|
|
329
|
+
:rw => true,
|
|
330
|
+
:mode => 620,
|
|
331
|
+
}
|
|
332
|
+
)
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
describe file('/etc/invalid-mount') do
|
|
337
|
+
let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
|
|
338
|
+
it { should_not be_mounted.only_with( :type => 'ext4' ) }
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
describe file('/etc/services') do
|
|
342
|
+
it { should match_md5checksum '35435ea447c19f0ea5ef971837ab9ced' }
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
describe file('invalid-file') do
|
|
346
|
+
it { should_not match_md5checksum 'INVALIDMD5CHECKSUM' }
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
describe file('/etc/services') do
|
|
350
|
+
it { should match_sha256checksum '0c3feee1353a8459f8c7d84885e6bc602ef853751ffdbce3e3b6dfa1d345fc7a' }
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
describe file('invalid-file') do
|
|
354
|
+
it { should_not match_sha256checksum 'INVALIDSHA256CHECKSUM' }
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
describe file('/etc/passwd') do
|
|
358
|
+
let(:stdout) {<<EOF
|
|
359
|
+
root:x:0:0:root:/root:/bin/bash
|
|
360
|
+
bin:x:1:1:bin:/bin:/sbin/nologin
|
|
361
|
+
daemon:x:2:2:daemon:/sbin:/sbin/nologin
|
|
362
|
+
sync:x:5:0:sync:/sbin:/bin/sync
|
|
363
|
+
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
|
|
364
|
+
halt:x:7:0:halt:/sbin:/sbin/halt
|
|
365
|
+
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
|
|
366
|
+
operator:x:11:0:operator:/root:/sbin/nologin
|
|
367
|
+
nobody:x:99:99:Nobody:/:/sbin/nologin
|
|
368
|
+
dbus:x:81:81:System message bus:/:/sbin/nologin
|
|
369
|
+
EOF
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
its(:content) { should match /root:x:0:0/ }
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
describe file('/etc/passwd') do
|
|
376
|
+
let(:stdout) { Time.now.to_i.to_s }
|
|
377
|
+
its(:mtime) { should > DateTime.now.prev_day(1) }
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
describe file('/etc/passwod') do
|
|
381
|
+
let(:stdout) { 100.to_s }
|
|
382
|
+
its(:size) { should > 0 }
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
describe file('/etc/passwd') do
|
|
386
|
+
it 'be_immutable is not implemented in base class' do
|
|
387
|
+
expect {
|
|
388
|
+
should be_immutable
|
|
389
|
+
}.to raise_error(Specinfra::Command::Base::NotImplementedError)
|
|
390
|
+
end
|
|
391
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris', :release => 10
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('group').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::V10::Group) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe group('root') do
|
|
10
|
+
it { should exist }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe group('invalid-group') do
|
|
14
|
+
it { should_not exist }
|
|
15
|
+
end
|
|
16
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris', :release => 10
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('host').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::V10::Host) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe host('127.0.0.1') do
|
|
10
|
+
it { should be_reachable }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe host('invalid-host') do
|
|
14
|
+
it { should_not be_reachable }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe host('127.0.0.1') do
|
|
18
|
+
it { should be_reachable.with(:proto => "icmp", :timeout=> 1) }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe host('127.0.0.1') do
|
|
22
|
+
it { should be_reachable.with(:proto => "tcp", :port => 22, :timeout=> 1) }
|
|
23
|
+
end
|
|
24
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris', :release => 10
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('package').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::V10::Package) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe package('httpd') do
|
|
10
|
+
it { should be_installed }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe package('invalid-package') do
|
|
14
|
+
it { should_not be_installed }
|
|
15
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
set :os, :family => 'solaris', :release => 10
|
|
4
|
+
|
|
5
|
+
describe commands.command_class('user').create do
|
|
6
|
+
it { should be_an_instance_of(Specinfra::Command::Solaris::V10::User) }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe user('root') do
|
|
10
|
+
it { should have_authorized_key 'XXXXXXXXXXXXXXX' }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe user('root') do
|
|
14
|
+
it { should_not have_authorized_key 'invalid-key' }
|
|
15
|
+
end
|
|
16
|
+
|