serverspec 0.9.1 → 0.9.2

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.
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe group('root') do
6
+ it { should exist }
7
+ its(:command) { should eq "getent group | grep -wq -- root" }
8
+ end
9
+
10
+ describe group('invalid-group') do
11
+ it { should_not exist }
12
+ end
13
+
14
+ describe group('root') do
15
+ it { should have_gid 0 }
16
+ its(:command) { should eq "getent group | grep -w -- \\^root | cut -f 3 -d ':' | grep -w -- 0" }
17
+ end
18
+
19
+ describe group('root') do
20
+ it { should_not have_gid 'invalid-gid' }
21
+ end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe host('127.0.0.1') do
6
+ it { should be_resolvable }
7
+ its(:command) { should eq "getent hosts 127.0.0.1" }
8
+ end
9
+
10
+ describe host('invalid-name') do
11
+ it { should_not be_resolvable }
12
+ end
13
+
14
+ describe host('127.0.0.1') do
15
+ it { should be_resolvable.by('hosts') }
16
+ its(:command) { should eq "grep -w -- 127.0.0.1 /etc/hosts" }
17
+ end
18
+
19
+ describe host('invalid-name') do
20
+ it { should_not be_resolvable.by('hosts') }
21
+ end
22
+
23
+ describe host('127.0.0.1') do
24
+ it { should be_resolvable.by('dns') }
25
+ its(:command) { should eq "nslookup -timeout=1 127.0.0.1" }
26
+ end
27
+
28
+ describe host('invalid-name') do
29
+ it { should_not be_resolvable.by('dns') }
30
+ end
31
+
32
+ describe host('127.0.0.1') do
33
+ it { should be_reachable }
34
+ its(:command) { should eq "ping -n 127.0.0.1 -w 5 -c 2" }
35
+ end
36
+
37
+ describe host('invalid-host') do
38
+ it { should_not be_reachable }
39
+ end
40
+
41
+ describe host('127.0.0.1') do
42
+ it { should be_reachable.with(:proto => "icmp", :timeout=> 1) }
43
+ its(:command) { should eq "ping -n 127.0.0.1 -w 1 -c 2" }
44
+ end
45
+
46
+ describe host('127.0.0.1') do
47
+ it { should be_reachable.with(:proto => "tcp", :port => 22, :timeout=> 1) }
48
+ its(:command) { should eq "nc -vvvvzt 127.0.0.1 22 -w 1" }
49
+ end
50
+
51
+ describe host('127.0.0.1') do
52
+ it { should be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
53
+ its(:command) { should eq "nc -vvvvzu 127.0.0.1 53 -w 1" }
54
+ end
55
+
56
+ describe host('invalid-host') do
57
+ it { should_not be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
58
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe interface('eth0') do
6
+ let(:stdout) { '1000' }
7
+ its(:speed) { should eq 1000 }
8
+ its(:command) { should eq "ethtool eth0 | grep Speed | gawk '{print gensub(/Speed: ([0-9]+)Mb\\/s/,\"\\\\1\",\"\")}'" }
9
+ end
10
+
11
+ describe interface('eth0') do
12
+ it { should have_ipv4_address("192.168.10.10") }
13
+ its(:command) { should eq "ip addr show eth0 | grep 'inet 192\\.168\\.10\\.10/'" }
14
+ end
15
+
16
+ describe interface('eth0') do
17
+ it { should have_ipv4_address("192.168.10.10/24") }
18
+ its(:command) { should eq "ip addr show eth0 | grep 'inet 192\\.168\\.10\\.10/24 '" }
19
+ end
20
+
21
+ describe interface('invalid-interface') do
22
+ let(:stdout) { '1000' }
23
+ its(:speed) { should_not eq 100 }
24
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe iptables do
6
+ it { should have_rule '-P INPUT ACCEPT' }
7
+ its(:command) { should eq "iptables -S | grep -- -P\\ INPUT\\ ACCEPT" }
8
+ end
9
+
10
+ describe iptables do
11
+ it { should_not have_rule 'invalid-rule' }
12
+ end
13
+
14
+ describe iptables do
15
+ it { should have_rule('-P INPUT ACCEPT').with_table('mangle').with_chain('INPUT') }
16
+ its(:command) { should eq "iptables -t mangle -S INPUT | grep -- -P\\ INPUT\\ ACCEPT" }
17
+ end
18
+
19
+ describe iptables do
20
+ it { should_not have_rule('invalid-rule').with_table('mangle').with_chain('INPUT') }
21
+ end
@@ -0,0 +1,12 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe kernel_module('lp') do
6
+ it { should be_loaded }
7
+ its(:command) { should eq "lsmod | grep ^lp" }
8
+ end
9
+
10
+ describe kernel_module('invalid-module') do
11
+ it { should_not be_loaded }
12
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe linux_kernel_parameter('net.ipv4.tcp_syncookies') do
6
+ let(:stdout) { "1\n" }
7
+ its(:value) { should eq 1 }
8
+ its(:command) { should eq "/sbin/sysctl -q -n net.ipv4.tcp_syncookies" }
9
+ end
10
+
11
+ describe linux_kernel_parameter('net.ipv4.tcp_syncookies') do
12
+ let(:stdout) { "1\n" }
13
+ its(:value) { should_not eq 2 }
14
+ end
15
+
16
+ describe linux_kernel_parameter('kernel.osrelease') do
17
+ let(:stdout) { "2.6.32-131.0.15.el6.x86_64\n" }
18
+ its(:value) { should eq "2.6.32-131.0.15.el6.x86_64" }
19
+ its(:command) { should eq "/sbin/sysctl -q -n kernel.osrelease" }
20
+ end
21
+
22
+ describe linux_kernel_parameter('kernel.osrelease') do
23
+ let(:stdout) { "2.6.32-131.0.15.el6.x86_64\n" }
24
+ its(:value) { should_not eq "2.6.32-131.0.15.el6.i386" }
25
+ end
26
+
27
+ describe linux_kernel_parameter('net.ipv4.tcp_wmem') do
28
+ let(:stdout) { "4096 16384 4194304\n" }
29
+ its(:value) { should match /16384/ }
30
+ its(:command) { should eq "/sbin/sysctl -q -n net.ipv4.tcp_wmem" }
31
+ end
32
+
33
+ describe linux_kernel_parameter('net.ipv4.tcp_wmem') do
34
+ let(:stdout) { "4096 16384 4194304\n" }
35
+ its(:value) { should_not match /123456/ }
36
+ end
@@ -0,0 +1,94 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe package('httpd') do
6
+ it { should be_installed }
7
+ its(:command) { should eq "rpm -q httpd" }
8
+ end
9
+
10
+ describe package('invalid-package') do
11
+ it { should_not be_installed }
12
+ end
13
+
14
+ package('invalid-package') do
15
+ it { should_not be_installed.by('rpm') }
16
+ end
17
+
18
+ describe package('httpd') do
19
+ it { should be_installed.with_version('2.2.15-28.el6') }
20
+ its(:command) { should eq "rpm -q httpd | grep -w -- 2.2.15-28.el6" }
21
+ end
22
+
23
+ describe package('httpd') do
24
+ it { should be_installed.by('rpm').with_version('2.2.15-28.el6') }
25
+ its(:command) { should eq "rpm -q httpd | grep -w -- 2.2.15-28.el6" }
26
+ end
27
+
28
+ describe package('httpd') do
29
+ it { should_not be_installed.with_version('invalid-version') }
30
+ end
31
+
32
+ describe package('jekyll') do
33
+ it { should be_installed.by('gem') }
34
+ its(:command) { should eq "gem list --local | grep -w -- \\^jekyll" }
35
+ end
36
+
37
+ describe package('invalid-gem') do
38
+ it { should_not be_installed.by('gem') }
39
+ end
40
+
41
+ describe package('jekyll') do
42
+ it { should be_installed.by('gem').with_version('1.1.1') }
43
+ its(:command) { should eq "gem list --local | grep -w -- \\^jekyll | grep -w -- 1.1.1" }
44
+ end
45
+
46
+ describe package('jekyll') do
47
+ it { should_not be_installed.by('gem').with_version('invalid-version') }
48
+ end
49
+
50
+ describe package('bower') do
51
+ it { should be_installed.by('npm') }
52
+ its(:command) { should eq "npm ls bower -g" }
53
+ end
54
+
55
+ describe package('invalid-npm-package') do
56
+ it { should_not be_installed.by('npm') }
57
+ end
58
+
59
+ describe package('bower') do
60
+ it { should be_installed.by('npm').with_version('0.9.2') }
61
+ its(:command) { should eq "npm ls bower -g | grep -w -- 0.9.2" }
62
+ end
63
+
64
+ describe package('bower') do
65
+ it { should_not be_installed.by('npm').with_version('invalid-version') }
66
+ end
67
+
68
+
69
+ describe package('mongo') do
70
+ it { should be_installed.by('pecl') }
71
+ its(:command) { should eq "pecl list | grep -w -- \\^mongo" }
72
+ end
73
+
74
+ describe package('invalid-pecl') do
75
+ it { should_not be_installed.by('pecl') }
76
+ end
77
+
78
+ describe package('mongo') do
79
+ it { should be_installed.by('pecl').with_version('1.4.1') }
80
+ its(:command) { should eq "pecl list | grep -w -- \\^mongo | grep -w -- 1.4.1" }
81
+ end
82
+
83
+ describe package('mongo') do
84
+ it { should_not be_installed.by('pecl').with_version('invalid-version') }
85
+ end
86
+
87
+ describe package('supervisor') do
88
+ it { should be_installed.by('pip').with_version('3.0') }
89
+ its(:command) { should eq "pip list | grep -w -- \\^supervisor | grep -w -- 3.0" }
90
+ end
91
+
92
+ describe package('invalid-pip') do
93
+ it { should_not be_installed.by('pip').with_version('invalid-version') }
94
+ end
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe php_config('default_mimetype') do
6
+ let(:stdout) { 'text/html' }
7
+ its(:value) { should eq 'text/html' }
8
+ its(:command) { should eq "php -r 'echo get_cfg_var( \"default_mimetype\" );'" }
9
+ end
10
+
11
+ describe php_config('default_mimetype') do
12
+ let(:stdout) { 'text/html' }
13
+ its(:value) { should_not eq 'text/plain' }
14
+ end
15
+
16
+ describe php_config('session.cache_expire') do
17
+ let(:stdout) { '180' }
18
+ its(:value) { should eq 180 }
19
+ its(:command) { should eq "php -r 'echo get_cfg_var( \"session.cache_expire\" );'" }
20
+ end
21
+
22
+ describe php_config('session.cache_expire') do
23
+ let(:stdout) { '180' }
24
+ its(:value) { should_not eq 360 }
25
+ end
26
+
27
+ describe php_config('mbstring.http_output_conv_mimetypes') do
28
+ let(:stdout) { 'application' }
29
+ its(:value) { should match /application/ }
30
+ its(:command) { should eq "php -r 'echo get_cfg_var( \"mbstring.http_output_conv_mimetypes\" );'" }
31
+ end
32
+
33
+ describe php_config('mbstring.http_output_conv_mimetypes') do
34
+ let(:stdout) { 'application' }
35
+ its(:value) { should_not match /html/ }
36
+ end
@@ -0,0 +1,30 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe port(80) do
6
+ it { should be_listening }
7
+ its(:command) { should eq 'netstat -tunl | grep -- :80\\ ' }
8
+ end
9
+
10
+ describe port('invalid') do
11
+ it { should_not be_listening }
12
+ end
13
+
14
+ describe port(80) do
15
+ it { should be_listening.with("tcp") }
16
+ its(:command) { should eq 'netstat -tunl | grep -- \\^tcp\\ .\\*:80\\ ' }
17
+ end
18
+
19
+ describe port(123) do
20
+ it { should be_listening.with("udp") }
21
+ its(:command) { should eq 'netstat -tunl | grep -- \\^udp\\ .\\*:123\\ ' }
22
+ end
23
+
24
+ describe port(80) do
25
+ it {
26
+ expect {
27
+ should be_listening.with('not implemented')
28
+ }.to raise_error(ArgumentError, %r/\A`be_listening` matcher doesn\'t support/)
29
+ }
30
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ include Serverspec::Helper::RedHat
4
+
5
+ describe routing_table do
6
+ let(:stdout) { "192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.10 \r\ndefault via 192.168.100.1 dev eth0 \r\n" }
7
+ it { should have_entry( :destination => '192.168.100.0/24' ) }
8
+ its(:command) { should eq "ip route | grep -E '^192.168.100.0/24 |^default '" }
9
+ end
10
+
11
+ describe routing_table do
12
+ let(:stdout) { "192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.10 \r\ndefault via 192.168.100.1 dev eth0 \r\n" }
13
+ it { should_not have_entry( :destination => '192.168.100.100/24' ) }
14
+ its(:command) { should eq "ip route | grep -E '^192.168.100.100/24 |^default '" }
15
+ end
16
+
17
+ describe routing_table do
18
+ let(:stdout) { "192.168.100.0/24 dev eth1 proto kernel scope link src 192.168.100.10 \r\ndefault via 192.168.100.1 dev eth0 \r\n" }
19
+ it do
20
+ should have_entry(
21
+ :destination => '192.168.100.0/24',
22
+ :gateway => '192.168.100.1'
23
+ )
24
+ end
25
+
26
+ it do
27
+ should have_entry(
28
+ :destination => '192.168.100.0/24',
29
+ :gateway => '192.168.100.1',
30
+ :interface => 'eth1'
31
+ )
32
+ end
33
+
34
+ it do
35
+ should_not have_entry(
36
+ :gateway => '192.168.100.1',
37
+ :interface => 'eth1'
38
+ )
39
+ end
40
+
41
+ it do
42
+ should_not have_entry(
43
+ :destination => '192.168.100.0/32',
44
+ :gateway => '192.168.100.1',
45
+ :interface => 'eth1'
46
+ )
47
+ end
48
+ end
49
+
50
+ describe routing_table do
51
+ let(:stdout) { "192.168.200.0/24 via 192.168.200.1 dev eth0 \r\ndefault via 192.168.100.1 dev eth0 \r\n" }
52
+ it { should have_entry( :destination => '192.168.200.0/24' ) }
53
+ it { should_not have_entry( :destination => '192.168.200.200/24' ) }
54
+
55
+ it do
56
+ should have_entry(
57
+ :destination => '192.168.200.0/24',
58
+ :gateway => '192.168.200.1'
59
+ )
60
+ end
61
+
62
+ it do
63
+ should have_entry(
64
+ :destination => '192.168.200.0/24',
65
+ :gateway => '192.168.200.1',
66
+ :interface => 'eth0'
67
+ )
68
+ end
69
+
70
+ it do
71
+ should_not have_entry(
72
+ :gateway => '192.168.200.1',
73
+ :interface => 'eth0'
74
+ )
75
+ end
76
+
77
+ it do
78
+ should_not have_entry(
79
+ :destination => '192.168.200.0/32',
80
+ :gateway => '192.168.200.1',
81
+ :interface => 'eth0'
82
+ )
83
+ end
84
+ end
85
+
86
+ describe routing_table do
87
+ let(:stdout) { "default via 10.0.2.2 dev eth0 \r\n" }
88
+ it { should have_entry( :destination => 'default' ) }
89
+ it { should_not have_entry( :destination => 'defaulth' ) }
90
+
91
+ it do
92
+ should have_entry(
93
+ :destination => 'default',
94
+ :gateway => '10.0.2.2'
95
+ )
96
+ end
97
+
98
+ it do
99
+ should have_entry(
100
+ :destination => 'default',
101
+ :gateway => '10.0.2.2',
102
+ :interface => 'eth0'
103
+ )
104
+ end
105
+
106
+ it do
107
+ should_not have_entry(
108
+ :gateway => '10.0.2.2',
109
+ :interface => 'eth0'
110
+ )
111
+ end
112
+
113
+ it do
114
+ should_not have_entry(
115
+ :destination => 'default',
116
+ :gateway => '10.0.2.1',
117
+ :interface => 'eth0'
118
+ )
119
+ end
120
+ end