serverspec 0.6.16 → 0.6.17
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/lib/serverspec/backend/exec.rb +16 -0
- data/lib/serverspec/commands/base.rb +9 -1
- data/lib/serverspec/helper/configuration.rb +1 -0
- data/lib/serverspec/type/service.rb +9 -1
- data/lib/serverspec/version.rb +1 -1
- data/spec/backend/exec/configuration_spec.rb +12 -8
- data/spec/backend/ssh/configuration_spec.rb +21 -14
- data/spec/darwin/command_spec.rb +41 -6
- data/spec/darwin/commands_spec.rb +1 -8
- data/spec/darwin/cron_spec.rb +16 -3
- data/spec/darwin/default_gateway_spec.rb +11 -2
- data/spec/darwin/host_spec.rb +52 -6
- data/spec/darwin/port_spec.rb +7 -2
- data/spec/darwin/routing_table_spec.rb +115 -2
- data/spec/darwin/service_spec.rb +2 -0
- data/spec/debian/command_spec.rb +41 -6
- data/spec/debian/commands_spec.rb +5 -11
- data/spec/debian/cron_spec.rb +16 -3
- data/spec/debian/default_gateway_spec.rb +11 -2
- data/spec/debian/host_spec.rb +52 -6
- data/spec/debian/interface_spec.rb +9 -2
- data/spec/debian/iptables_spec.rb +16 -3
- data/spec/debian/linux_kernel_parameter_spec.rb +31 -4
- data/spec/debian/port_spec.rb +7 -2
- data/spec/debian/routing_table_spec.rb +115 -2
- data/spec/debian/service_spec.rb +3 -0
- data/spec/gentoo/command_spec.rb +41 -6
- data/spec/gentoo/commands_spec.rb +1 -11
- data/spec/gentoo/cron_spec.rb +16 -3
- data/spec/gentoo/default_gateway_spec.rb +11 -2
- data/spec/gentoo/host_spec.rb +52 -6
- data/spec/gentoo/interface_spec.rb +9 -2
- data/spec/gentoo/iptables_spec.rb +16 -3
- data/spec/gentoo/linux_kernel_parameter_spec.rb +31 -4
- data/spec/gentoo/port_spec.rb +7 -2
- data/spec/gentoo/routing_table_spec.rb +120 -0
- data/spec/gentoo/service_spec.rb +2 -0
- data/spec/redhat/command_spec.rb +41 -6
- data/spec/redhat/commands_spec.rb +5 -11
- data/spec/redhat/cron_spec.rb +16 -3
- data/spec/redhat/default_gateway_spec.rb +11 -2
- data/spec/redhat/host_spec.rb +52 -6
- data/spec/redhat/interface_spec.rb +9 -2
- data/spec/redhat/iptables_spec.rb +16 -3
- data/spec/redhat/linux_kernel_parameter_spec.rb +31 -4
- data/spec/redhat/port_spec.rb +7 -2
- data/spec/redhat/routing_table_spec.rb +115 -2
- data/spec/redhat/service_spec.rb +3 -0
- data/spec/smartos/commands_spec.rb +1 -30
- data/spec/solaris/command_spec.rb +41 -6
- data/spec/solaris/commands_spec.rb +1 -35
- data/spec/solaris/cron_spec.rb +16 -3
- data/spec/solaris/default_gateway_spec.rb +11 -2
- data/spec/solaris/host_spec.rb +52 -6
- data/spec/solaris/port_spec.rb +7 -2
- data/spec/solaris/routing_table_spec.rb +115 -2
- data/spec/solaris/service_spec.rb +2 -0
- data/spec/spec_helper.rb +36 -2
- data/spec/support/shared_commands_examples.rb +11 -69
- data/spec/support/shared_service_examples.rb +48 -0
- metadata +4 -20
- data/spec/support/shared_command_examples.rb +0 -77
- data/spec/support/shared_cron_examples.rb +0 -23
- data/spec/support/shared_default_gateway_examples.rb +0 -13
- data/spec/support/shared_host_examples.rb +0 -53
- data/spec/support/shared_interface_examples.rb +0 -12
- data/spec/support/shared_iptables_examples.rb +0 -23
- data/spec/support/shared_linux_kernel_parameter_examples.rb +0 -41
- data/spec/support/shared_port_examples.rb +0 -11
- data/spec/support/shared_routing_table_examples.rb +0 -118
@@ -1,77 +0,0 @@
|
|
1
|
-
shared_examples_for 'support command return_stdout matcher' do |name, content|
|
2
|
-
describe 'return_stdout' do
|
3
|
-
describe command(name) do
|
4
|
-
let(:stdout) { "#{content}\r\n" }
|
5
|
-
it { should return_stdout(content) }
|
6
|
-
end
|
7
|
-
|
8
|
-
describe command(name) do
|
9
|
-
let(:stdout) { "foo#{content}bar\r\n" }
|
10
|
-
it { should_not return_stdout(content) }
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
describe command('invalid-command') do
|
15
|
-
let(:stdout) { "foo bar\r\n" }
|
16
|
-
it { should_not return_stdout(content) }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
shared_examples_for 'support command return_stdout matcher with regexp' do |name, content|
|
22
|
-
describe 'return_stdout' do
|
23
|
-
describe command(name) do
|
24
|
-
let(:stdout) { "foo#{content}bar\r\n" }
|
25
|
-
it { should return_stdout(content) }
|
26
|
-
end
|
27
|
-
|
28
|
-
describe command(name) do
|
29
|
-
let(:stdout) { "foobar\r\n" }
|
30
|
-
it { should_not return_stdout(content) }
|
31
|
-
end
|
32
|
-
|
33
|
-
describe command('invalid-command') do
|
34
|
-
it { should_not return_stdout(content) }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
shared_examples_for 'support command return_stderr matcher' do |name, content|
|
40
|
-
describe 'return_stderr' do
|
41
|
-
describe command(name) do
|
42
|
-
let(:stdout) { "#{content}\r\n" }
|
43
|
-
it { should return_stderr(content) }
|
44
|
-
end
|
45
|
-
|
46
|
-
describe command(name) do
|
47
|
-
let(:stdout) { "No such file or directory\r\n" }
|
48
|
-
it { should_not return_stderr(content) }
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
shared_examples_for 'support command return_stderr matcher with regexp' do |name, content|
|
54
|
-
describe 'return_stderr' do
|
55
|
-
describe command(name) do
|
56
|
-
let(:stdout) { "cat: /foo: No such file or directory\r\n" }
|
57
|
-
it { should return_stdout(content) }
|
58
|
-
end
|
59
|
-
|
60
|
-
describe command(name) do
|
61
|
-
let(:stdout) { "foobar\r\n" }
|
62
|
-
it { should_not return_stdout(content) }
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
shared_examples_for 'support command return_exit_status matcher' do |name, status|
|
68
|
-
describe 'return_exit_status' do
|
69
|
-
describe command(name) do
|
70
|
-
it { should return_exit_status(status) }
|
71
|
-
end
|
72
|
-
|
73
|
-
describe command('invalid-command') do
|
74
|
-
it { should_not return_exit_status(status) }
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
shared_examples_for 'support cron have_entry matcher' do |entry|
|
2
|
-
describe 'have_cron_entry' do
|
3
|
-
describe cron do
|
4
|
-
it { should have_entry entry }
|
5
|
-
end
|
6
|
-
|
7
|
-
describe cron do
|
8
|
-
it { should_not have_entry 'invalid entry' }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
shared_examples_for 'support cron have_entry with user matcher' do |entry, user|
|
14
|
-
describe 'have_cron_entry' do
|
15
|
-
describe cron do
|
16
|
-
it { should have_entry(entry).with_user(user) }
|
17
|
-
end
|
18
|
-
|
19
|
-
describe cron do
|
20
|
-
it { should_not have_entry('invalid entry').with_user(user) }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
shared_examples_for 'support default gateway matcher' do
|
2
|
-
describe 'default_gateway' do
|
3
|
-
let(:stdout) { "default via 192.168.1.1 dev eth1 \r\n" }
|
4
|
-
|
5
|
-
describe default_gateway do
|
6
|
-
its(:ipaddress) { should eq '192.168.1.1' }
|
7
|
-
its(:interface) { should eq 'eth1' }
|
8
|
-
|
9
|
-
its(:ipaddress) { should_not eq '192.168.1.2' }
|
10
|
-
its(:interface) { should_not eq 'eth0' }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
shared_examples_for 'support host be_resolvable matcher' do |name|
|
2
|
-
describe 'be_resolvable' do
|
3
|
-
describe host(name) do
|
4
|
-
it { should be_resolvable }
|
5
|
-
end
|
6
|
-
|
7
|
-
describe host('invalid-name') do
|
8
|
-
it { should_not be_resolvable }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
|
14
|
-
shared_examples_for 'support host be_resolvable by matcher' do |name, type|
|
15
|
-
describe 'be_resolvable.by' do
|
16
|
-
describe host(name) do
|
17
|
-
it { should be_resolvable.by(type) }
|
18
|
-
end
|
19
|
-
|
20
|
-
describe host('invalid-name') do
|
21
|
-
it { should_not be_resolvable.by(type) }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
shared_examples_for 'support host be_reachable matcher' do |name|
|
27
|
-
describe 'be_reachable' do
|
28
|
-
context host(name) do
|
29
|
-
it { should be_reachable }
|
30
|
-
end
|
31
|
-
|
32
|
-
describe host('invalid-host') do
|
33
|
-
it { should_not be_reachable }
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
shared_examples_for 'support host be_reachable with matcher' do |name|
|
39
|
-
describe 'be_reachable.with' do
|
40
|
-
context host(name) do
|
41
|
-
it { should be_reachable.with(:proto => "icmp", :timeout=> 1) }
|
42
|
-
end
|
43
|
-
context host(name) do
|
44
|
-
it { should be_reachable.with(:proto => "tcp", :port => 22, :timeout=> 1) }
|
45
|
-
end
|
46
|
-
context host(name) do
|
47
|
-
it { should be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
|
48
|
-
end
|
49
|
-
context host('invalid-host') do
|
50
|
-
it { should_not be_reachable.with(:proto => "udp", :port => 53, :timeout=> 1) }
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
shared_examples_for 'support interface matcher' do |name|
|
2
|
-
describe 'interface' do
|
3
|
-
let(:stdout) { '1000' }
|
4
|
-
describe interface(name) do
|
5
|
-
its(:speed) { should eq 1000 }
|
6
|
-
end
|
7
|
-
|
8
|
-
describe interface('invalid-interface') do
|
9
|
-
its(:speed) { should_not eq 100 }
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
shared_examples_for 'support iptables have_rule matcher' do |rule|
|
2
|
-
describe 'have_rule' do
|
3
|
-
describe iptables do
|
4
|
-
it { should have_rule rule }
|
5
|
-
end
|
6
|
-
|
7
|
-
describe iptables do
|
8
|
-
it { should_not have_rule 'invalid-rule' }
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
shared_examples_for 'support iptables have_rule with_table and with_chain matcher' do |rule, table, chain|
|
14
|
-
describe 'have_rule with_table and with_chain' do
|
15
|
-
describe iptables do
|
16
|
-
it { should have_rule(rule).with_table(table).with_chain(chain) }
|
17
|
-
end
|
18
|
-
|
19
|
-
describe iptables do
|
20
|
-
it { should_not have_rule('invalid-rule').with_table(table).with_chain(chain) }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
shared_examples_for 'support explicit linux kernel parameter checking with integer' do |param, value|
|
2
|
-
describe 'linux kernel parameter' do
|
3
|
-
let(:stdout) { "#{value}\n" }
|
4
|
-
|
5
|
-
context linux_kernel_parameter(param) do
|
6
|
-
its(:value) { should eq value }
|
7
|
-
end
|
8
|
-
|
9
|
-
context linux_kernel_parameter(param) do
|
10
|
-
its(:value) { should_not eq value + 1 }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
shared_examples_for 'support explicit linux kernel parameter checking with string' do |param, value|
|
16
|
-
describe 'linux kernel parameter' do
|
17
|
-
let(:stdout) { "#{value}\n" }
|
18
|
-
|
19
|
-
context linux_kernel_parameter(param) do
|
20
|
-
its(:value) { should eq value }
|
21
|
-
end
|
22
|
-
|
23
|
-
context linux_kernel_parameter(param) do
|
24
|
-
its(:value) { should_not eq value + '_suffix' }
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
shared_examples_for 'support explicit linux kernel parameter checking with regexp' do |param, regexp|
|
30
|
-
describe 'linux kernel parameter' do
|
31
|
-
let(:stdout) { "4096 16384 4194304\n" }
|
32
|
-
|
33
|
-
context linux_kernel_parameter(param) do
|
34
|
-
its(:value) { should match regexp }
|
35
|
-
end
|
36
|
-
|
37
|
-
context linux_kernel_parameter(param) do
|
38
|
-
its(:value) { should_not match /invalid-string/ }
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
shared_examples_for 'support routing table have_entry matcher' do
|
2
|
-
describe 'routing table have_entry pattern #1' do
|
3
|
-
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" }
|
4
|
-
|
5
|
-
context routing_table do
|
6
|
-
it { should have_entry( :destination => '192.168.100.0/24' ) }
|
7
|
-
it { should_not have_entry( :destination => '192.168.100.100/24' ) }
|
8
|
-
|
9
|
-
it do
|
10
|
-
should have_entry(
|
11
|
-
:destination => '192.168.100.0/24',
|
12
|
-
:gateway => '192.168.100.1'
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
it do
|
17
|
-
should have_entry(
|
18
|
-
:destination => '192.168.100.0/24',
|
19
|
-
:gateway => '192.168.100.1',
|
20
|
-
:interface => 'eth1'
|
21
|
-
)
|
22
|
-
end
|
23
|
-
|
24
|
-
it do
|
25
|
-
should_not have_entry(
|
26
|
-
:gateway => '192.168.100.1',
|
27
|
-
:interface => 'eth1'
|
28
|
-
)
|
29
|
-
end
|
30
|
-
|
31
|
-
it do
|
32
|
-
should_not have_entry(
|
33
|
-
:destination => '192.168.100.0/32',
|
34
|
-
:gateway => '192.168.100.1',
|
35
|
-
:interface => 'eth1'
|
36
|
-
)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe 'routing table have_entry pattern #2' do
|
42
|
-
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" }
|
43
|
-
|
44
|
-
context routing_table do
|
45
|
-
it { should have_entry( :destination => '192.168.200.0/24' ) }
|
46
|
-
it { should_not have_entry( :destination => '192.168.200.200/24' ) }
|
47
|
-
|
48
|
-
it do
|
49
|
-
should have_entry(
|
50
|
-
:destination => '192.168.200.0/24',
|
51
|
-
:gateway => '192.168.200.1'
|
52
|
-
)
|
53
|
-
end
|
54
|
-
|
55
|
-
it do
|
56
|
-
should have_entry(
|
57
|
-
:destination => '192.168.200.0/24',
|
58
|
-
:gateway => '192.168.200.1',
|
59
|
-
:interface => 'eth0'
|
60
|
-
)
|
61
|
-
end
|
62
|
-
|
63
|
-
it do
|
64
|
-
should_not have_entry(
|
65
|
-
:gateway => '192.168.200.1',
|
66
|
-
:interface => 'eth0'
|
67
|
-
)
|
68
|
-
end
|
69
|
-
|
70
|
-
it do
|
71
|
-
should_not have_entry(
|
72
|
-
:destination => '192.168.200.0/32',
|
73
|
-
:gateway => '192.168.200.1',
|
74
|
-
:interface => 'eth0'
|
75
|
-
)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
describe 'routing table have_entry #3' do
|
81
|
-
let(:stdout) { "default via 10.0.2.2 dev eth0 \r\n" }
|
82
|
-
|
83
|
-
context routing_table do
|
84
|
-
it { should have_entry( :destination => 'default' ) }
|
85
|
-
it { should_not have_entry( :destination => 'defaulth' ) }
|
86
|
-
|
87
|
-
it do
|
88
|
-
should have_entry(
|
89
|
-
:destination => 'default',
|
90
|
-
:gateway => '10.0.2.2'
|
91
|
-
)
|
92
|
-
end
|
93
|
-
|
94
|
-
it do
|
95
|
-
should have_entry(
|
96
|
-
:destination => 'default',
|
97
|
-
:gateway => '10.0.2.2',
|
98
|
-
:interface => 'eth0'
|
99
|
-
)
|
100
|
-
end
|
101
|
-
|
102
|
-
it do
|
103
|
-
should_not have_entry(
|
104
|
-
:gateway => '10.0.2.2',
|
105
|
-
:interface => 'eth0'
|
106
|
-
)
|
107
|
-
end
|
108
|
-
|
109
|
-
it do
|
110
|
-
should_not have_entry(
|
111
|
-
:destination => 'default',
|
112
|
-
:gateway => '10.0.2.1',
|
113
|
-
:interface => 'eth0'
|
114
|
-
)
|
115
|
-
end
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|