serverspec-ruby19 2.24.3

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.
Files changed (205) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +19 -0
  5. data/Gemfile +8 -0
  6. data/Guardfile +4 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +26 -0
  9. data/Rakefile +30 -0
  10. data/WINDOWS_SUPPORT.md +118 -0
  11. data/appveyor.yml +56 -0
  12. data/bin/serverspec-init +7 -0
  13. data/lib/serverspec.rb +63 -0
  14. data/lib/serverspec/commands/base.rb +7 -0
  15. data/lib/serverspec/helper.rb +8 -0
  16. data/lib/serverspec/helper/type.rb +26 -0
  17. data/lib/serverspec/matcher.rb +39 -0
  18. data/lib/serverspec/matcher/be_enabled.rb +13 -0
  19. data/lib/serverspec/matcher/be_enforcing.rb +10 -0
  20. data/lib/serverspec/matcher/be_executable.rb +13 -0
  21. data/lib/serverspec/matcher/be_installed.rb +13 -0
  22. data/lib/serverspec/matcher/be_listening.rb +13 -0
  23. data/lib/serverspec/matcher/be_mounted.rb +15 -0
  24. data/lib/serverspec/matcher/be_permissive.rb +10 -0
  25. data/lib/serverspec/matcher/be_reachable.rb +17 -0
  26. data/lib/serverspec/matcher/be_readable.rb +13 -0
  27. data/lib/serverspec/matcher/be_resolvable.rb +9 -0
  28. data/lib/serverspec/matcher/be_running.rb +13 -0
  29. data/lib/serverspec/matcher/be_writable.rb +13 -0
  30. data/lib/serverspec/matcher/belong_to_group.rb +5 -0
  31. data/lib/serverspec/matcher/belong_to_primary_group.rb +5 -0
  32. data/lib/serverspec/matcher/contain.rb +28 -0
  33. data/lib/serverspec/matcher/have_entry.rb +14 -0
  34. data/lib/serverspec/matcher/have_rule.rb +17 -0
  35. data/lib/serverspec/matcher/have_site_application.rb +18 -0
  36. data/lib/serverspec/matcher/have_site_bindings.rb +22 -0
  37. data/lib/serverspec/matcher/have_virtual_dir.rb +14 -0
  38. data/lib/serverspec/power_assert.rb +14 -0
  39. data/lib/serverspec/setup.rb +338 -0
  40. data/lib/serverspec/subject.rb +12 -0
  41. data/lib/serverspec/type/base.rb +30 -0
  42. data/lib/serverspec/type/bond.rb +11 -0
  43. data/lib/serverspec/type/bridge.rb +11 -0
  44. data/lib/serverspec/type/cgroup.rb +17 -0
  45. data/lib/serverspec/type/command.rb +20 -0
  46. data/lib/serverspec/type/cron.rb +15 -0
  47. data/lib/serverspec/type/default_gateway.rb +15 -0
  48. data/lib/serverspec/type/docker_base.rb +29 -0
  49. data/lib/serverspec/type/docker_container.rb +27 -0
  50. data/lib/serverspec/type/docker_image.rb +4 -0
  51. data/lib/serverspec/type/file.rb +133 -0
  52. data/lib/serverspec/type/fstab.rb +11 -0
  53. data/lib/serverspec/type/group.rb +11 -0
  54. data/lib/serverspec/type/host.rb +21 -0
  55. data/lib/serverspec/type/iis_app_pool.rb +43 -0
  56. data/lib/serverspec/type/iis_website.rb +40 -0
  57. data/lib/serverspec/type/interface.rb +27 -0
  58. data/lib/serverspec/type/ip6tables.rb +13 -0
  59. data/lib/serverspec/type/ipfilter.rb +11 -0
  60. data/lib/serverspec/type/ipnat.rb +11 -0
  61. data/lib/serverspec/type/iptables.rb +11 -0
  62. data/lib/serverspec/type/kernel_module.rb +7 -0
  63. data/lib/serverspec/type/linux_audit_system.rb +45 -0
  64. data/lib/serverspec/type/linux_kernel_parameter.rb +10 -0
  65. data/lib/serverspec/type/lxc.rb +15 -0
  66. data/lib/serverspec/type/mail_alias.rb +7 -0
  67. data/lib/serverspec/type/mysql_config.rb +10 -0
  68. data/lib/serverspec/type/package.rb +66 -0
  69. data/lib/serverspec/type/php_config.rb +10 -0
  70. data/lib/serverspec/type/port.rb +40 -0
  71. data/lib/serverspec/type/ppa.rb +11 -0
  72. data/lib/serverspec/type/process.rb +27 -0
  73. data/lib/serverspec/type/routing_table.rb +11 -0
  74. data/lib/serverspec/type/selinux.rb +19 -0
  75. data/lib/serverspec/type/selinux_module.rb +11 -0
  76. data/lib/serverspec/type/service.rb +52 -0
  77. data/lib/serverspec/type/user.rb +43 -0
  78. data/lib/serverspec/type/windows_feature.rb +7 -0
  79. data/lib/serverspec/type/windows_hot_fix.rb +7 -0
  80. data/lib/serverspec/type/windows_registry_key.rb +19 -0
  81. data/lib/serverspec/type/windows_scheduled_task.rb +7 -0
  82. data/lib/serverspec/type/x509_certificate.rb +76 -0
  83. data/lib/serverspec/type/x509_private_key.rb +21 -0
  84. data/lib/serverspec/type/yumrepo.rb +11 -0
  85. data/lib/serverspec/type/zfs.rb +29 -0
  86. data/lib/serverspec/version.rb +3 -0
  87. data/serverspec.gemspec +28 -0
  88. data/spec/helper/type_spec.rb +6 -0
  89. data/spec/spec_helper.rb +28 -0
  90. data/spec/type/aix/file_spec.rb +31 -0
  91. data/spec/type/aix/group_spec.rb +7 -0
  92. data/spec/type/aix/package_spec.rb +7 -0
  93. data/spec/type/aix/port_spec.rb +20 -0
  94. data/spec/type/aix/service_spec.rb +12 -0
  95. data/spec/type/aix/user_spec.rb +16 -0
  96. data/spec/type/arch/file_spec.rb +15 -0
  97. data/spec/type/arch/package_spec.rb +19 -0
  98. data/spec/type/arch/service_spec.rb +9 -0
  99. data/spec/type/base/command_spec.rb +67 -0
  100. data/spec/type/base/cron_spec.rb +11 -0
  101. data/spec/type/base/default_gateway_spec.rb +11 -0
  102. data/spec/type/base/file_spec.rb +356 -0
  103. data/spec/type/base/group_spec.rb +11 -0
  104. data/spec/type/base/host_spec.rb +47 -0
  105. data/spec/type/base/mail_alias_spec.rb +7 -0
  106. data/spec/type/base/mysql_config_spec.rb +13 -0
  107. data/spec/type/base/package_spec.rb +51 -0
  108. data/spec/type/base/php_config_spec.rb +33 -0
  109. data/spec/type/base/port_spec.rb +34 -0
  110. data/spec/type/base/process_spec.rb +35 -0
  111. data/spec/type/base/routing_table_spec.rb +63 -0
  112. data/spec/type/base/service_spec.rb +49 -0
  113. data/spec/type/base/user_spec.rb +44 -0
  114. data/spec/type/darwin/file_spec.rb +41 -0
  115. data/spec/type/darwin/package_spec.rb +19 -0
  116. data/spec/type/darwin/port_spec.rb +27 -0
  117. data/spec/type/darwin/service_spec.rb +16 -0
  118. data/spec/type/debian/package_spec.rb +23 -0
  119. data/spec/type/debian/service_spec.rb +11 -0
  120. data/spec/type/fedora/service_spec.rb +15 -0
  121. data/spec/type/fedora15/service_spec.rb +15 -0
  122. data/spec/type/fedora20/service_spec.rb +15 -0
  123. data/spec/type/freebsd/file_spec.rb +29 -0
  124. data/spec/type/freebsd/package_spec.rb +19 -0
  125. data/spec/type/freebsd/port_spec.rb +27 -0
  126. data/spec/type/freebsd/service_spec.rb +8 -0
  127. data/spec/type/freebsd10/package_spec.rb +19 -0
  128. data/spec/type/gentoo/package_spec.rb +7 -0
  129. data/spec/type/gentoo/service_spec.rb +12 -0
  130. data/spec/type/linux/bond_spec.rb +12 -0
  131. data/spec/type/linux/bridge_spec.rb +12 -0
  132. data/spec/type/linux/cgroup_spec.rb +13 -0
  133. data/spec/type/linux/docker_container_pre_1_8_spec.rb +124 -0
  134. data/spec/type/linux/docker_container_spec.rb +126 -0
  135. data/spec/type/linux/docker_image_spec.rb +94 -0
  136. data/spec/type/linux/file_spec.rb +27 -0
  137. data/spec/type/linux/fstab_spec.rb +31 -0
  138. data/spec/type/linux/interface_spec.rb +30 -0
  139. data/spec/type/linux/ip6tables_spec.rb +19 -0
  140. data/spec/type/linux/iptables_spec.rb +11 -0
  141. data/spec/type/linux/kernel_module_spec.rb +7 -0
  142. data/spec/type/linux/linux_audit_system_spec.rb +139 -0
  143. data/spec/type/linux/linux_kernel_parameter_spec.rb +33 -0
  144. data/spec/type/linux/lxc_container_spec.rb +12 -0
  145. data/spec/type/linux/selinux_module_spec.rb +11 -0
  146. data/spec/type/linux/selinux_spec.rb +23 -0
  147. data/spec/type/linux/x509_certificate_spec.rb +62 -0
  148. data/spec/type/linux/x509_private_key_spec.rb +31 -0
  149. data/spec/type/linux/zfs_spec.rb +15 -0
  150. data/spec/type/nixos/package_spec.rb +15 -0
  151. data/spec/type/nixos/service_spec.rb +9 -0
  152. data/spec/type/openbsd/file_spec.rb +134 -0
  153. data/spec/type/openbsd/interface_spec.rb +21 -0
  154. data/spec/type/openbsd/mail_alias_spec.rb +7 -0
  155. data/spec/type/openbsd/package_spec.rb +11 -0
  156. data/spec/type/openbsd/port_spec.rb +7 -0
  157. data/spec/type/openbsd/service_spec.rb +13 -0
  158. data/spec/type/openbsd/user_spec.rb +12 -0
  159. data/spec/type/opensuse/service_spec.rb +16 -0
  160. data/spec/type/plamo/package_spec.rb +8 -0
  161. data/spec/type/plamo/service_spec.rb +8 -0
  162. data/spec/type/redhat/file_spec.rb +19 -0
  163. data/spec/type/redhat/package_spec.rb +23 -0
  164. data/spec/type/redhat/service_spec.rb +11 -0
  165. data/spec/type/redhat/yumrepo_spec.rb +11 -0
  166. data/spec/type/redhat5/iptables_spec.rb +11 -0
  167. data/spec/type/redhat7/service_spec.rb +9 -0
  168. data/spec/type/smartos/package_spec.rb +19 -0
  169. data/spec/type/smartos/service_spec.rb +16 -0
  170. data/spec/type/solaris/cron_spec.rb +11 -0
  171. data/spec/type/solaris/file_spec.rb +15 -0
  172. data/spec/type/solaris/group_spec.rb +7 -0
  173. data/spec/type/solaris/host_spec.rb +19 -0
  174. data/spec/type/solaris/ipfilter_spec.rb +7 -0
  175. data/spec/type/solaris/ipnat_spec.rb +7 -0
  176. data/spec/type/solaris/package_spec.rb +7 -0
  177. data/spec/type/solaris/port_spec.rb +34 -0
  178. data/spec/type/solaris/service_spec.rb +16 -0
  179. data/spec/type/solaris/user_spec.rb +16 -0
  180. data/spec/type/solaris/zfs_spec.rb +15 -0
  181. data/spec/type/solaris10/file_spec.rb +313 -0
  182. data/spec/type/solaris10/group_spec.rb +8 -0
  183. data/spec/type/solaris10/host_spec.rb +16 -0
  184. data/spec/type/solaris10/package_spec.rb +8 -0
  185. data/spec/type/solaris10/user_spec.rb +8 -0
  186. data/spec/type/suse/package_spec.rb +23 -0
  187. data/spec/type/suse/service_spec.rb +11 -0
  188. data/spec/type/ubuntu/ppa_spec.rb +11 -0
  189. data/spec/type/ubuntu/service_spec.rb +7 -0
  190. data/spec/type/windows/command_spec.rb +64 -0
  191. data/spec/type/windows/feature_spec.rb +17 -0
  192. data/spec/type/windows/file_spec.rb +120 -0
  193. data/spec/type/windows/group_spec.rb +23 -0
  194. data/spec/type/windows/host_spec.rb +32 -0
  195. data/spec/type/windows/hot_fix_spec.rb +22 -0
  196. data/spec/type/windows/iis_app_pool_spec.rb +17 -0
  197. data/spec/type/windows/iis_webisite_spec.rb +16 -0
  198. data/spec/type/windows/package_spec.rb +10 -0
  199. data/spec/type/windows/port_spec.rb +25 -0
  200. data/spec/type/windows/registry_key_spec.rb +58 -0
  201. data/spec/type/windows/scheduled_task_spec.rb +9 -0
  202. data/spec/type/windows/service_spec.rb +30 -0
  203. data/spec/type/windows/user_spec.rb +33 -0
  204. data/wercker.yml +1 -0
  205. metadata +450 -0
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, :family => 'arch'
4
+
5
+ describe service('sshd') do
6
+ it { should be_enabled }
7
+ it { should be_running }
8
+ end
9
+
@@ -0,0 +1,67 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, :family => 'base'
4
+
5
+ describe command('cat /etc/resolv.conf') do
6
+ let(:stdout) { "nameserver 127.0.0.1\r\n" }
7
+ its(:stdout) { should match /nameserver 127.0.0.1/ }
8
+ end
9
+
10
+ describe 'complete matching of stdout' do
11
+ context command('cat /etc/resolv.conf') do
12
+ let(:stdout) { "foocontent-should-be-includedbar\r\n" }
13
+ its(:stdout) { should_not eq 'content-should-be-included' }
14
+ end
15
+ end
16
+
17
+ describe 'regexp matching of stdout' do
18
+ context command('cat /etc/resolv.conf') do
19
+ let(:stdout) { "nameserver 127.0.0.1\r\n" }
20
+ its(:stdout) { should match /127\.0\.0\.1/ }
21
+ end
22
+ end
23
+
24
+ describe command('cat /etc/resolv.conf') do
25
+ let(:stderr) { "No such file or directory\r\n" }
26
+ its(:stderr) { should match /No such file or directory/ }
27
+ end
28
+
29
+ describe 'complete matching of stderr' do
30
+ context command('cat /etc/resolv.conf') do
31
+ let(:stderr) { "No such file or directory\r\n" }
32
+ its(:stdout) { should_not eq 'file' }
33
+ end
34
+ end
35
+
36
+ describe 'regexp matching of stderr' do
37
+ context command('cat /etc/resolv.conf') do
38
+ let(:stderr) { "No such file or directory\r\n" }
39
+ its(:stderr) { should match /file/ }
40
+ end
41
+ end
42
+
43
+ describe command('cat /etc/resolv.conf') do
44
+ its(:exit_status) { should eq 0 }
45
+ end
46
+
47
+ describe command('ls -al /') do
48
+ let(:stdout) { <<EOF
49
+ total 88
50
+ drwxr-xr-x 23 root root 4096 Oct 10 17:19 .
51
+ drwxr-xr-x 23 root root 4096 Oct 10 17:19 ..
52
+ drwxr-xr-x 2 root root 4096 Sep 11 16:43 bin
53
+ drwxr-xr-x 3 root root 4096 Sep 23 18:14 boot
54
+ drwxr-xr-x 14 root root 4260 Oct 14 16:14 dev
55
+ drwxr-xr-x 104 root root 4096 Oct 14 17:34 etc
56
+ drwxr-xr-x 8 root root 4096 Oct 1 15:09 home
57
+ EOF
58
+ }
59
+
60
+ its(:stdout) { should match /bin/ }
61
+ its(:stdout) { should eq stdout }
62
+ its(:stdout) { should contain('4260') }
63
+ its(:stdout) { should contain('4260').from('bin').to('home') }
64
+ its(:stdout) { should contain('4260').after('bin') }
65
+ its(:stdout) { should contain('4260').before('home') }
66
+ its(:stdout) { should_not contain('4260').before('bin') }
67
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, :family => 'base'
4
+
5
+ describe cron do
6
+ it { should have_entry '* * * * * /usr/local/bin/batch.sh' }
7
+ end
8
+
9
+ describe cron do
10
+ it { should have_entry('* * * * * /usr/local/bin/batch.sh').with_user('root') }
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, :family => 'base'
4
+
5
+ describe default_gateway do
6
+ let(:stdout) { "default via 192.168.1.1 dev eth1 \r\n" }
7
+ its(:ipaddress) { should eq '192.168.1.1' }
8
+ its(:interface) { should eq 'eth1' }
9
+ its(:ipaddress) { should_not eq '192.168.1.2' }
10
+ its(:interface) { should_not eq 'eth0' }
11
+ end
@@ -0,0 +1,356 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, {:family => 'base'}
4
+
5
+ describe file('/etc/ssh/sshd_config') do
6
+ it { should be_file }
7
+ end
8
+
9
+ describe file('/etc/ssh') do
10
+ it { should be_directory }
11
+ end
12
+
13
+ describe file('/var/run/unicorn.sock') do
14
+ it { should be_socket }
15
+ end
16
+
17
+ describe file('/dev/disk0') do
18
+ it { should be_block_device }
19
+ end
20
+
21
+ describe file('/dev/ttys0') do
22
+ it { should be_character_device }
23
+ end
24
+
25
+ describe file('/var/run/pure-ftpd/pure-ftpd.upload.pipe') do
26
+ it { should be_pipe }
27
+ end
28
+
29
+ describe file('/bin/sh') do
30
+ it { should be_symlink }
31
+ end
32
+
33
+ describe file('/bin/sh') do
34
+ it { should exist }
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 contain /^This is the sshd server system-wide configuration file/ }
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('Gemfile') do
50
+ it { should contain('rspec').after(/^group :test do/) }
51
+ end
52
+
53
+ describe file('Gemfile') do
54
+ it { should contain('rspec').before(/^end/) }
55
+ end
56
+
57
+ describe file('/etc/passwd') do
58
+ it { should be_mode 644 }
59
+ end
60
+
61
+ describe file('/etc/passwd') do
62
+ it { should be_owned_by 'root' }
63
+ end
64
+
65
+ describe file('/etc/passwd') do
66
+ it { should be_grouped_into 'root' }
67
+ end
68
+
69
+ describe file('/etc/pam.d/system-auth') do
70
+ it { should be_linked_to '/etc/pam.d/system-auth-ac' }
71
+ end
72
+
73
+ describe file('/dev') do
74
+ let(:stdout) { "755\r\n" }
75
+ it { should be_readable }
76
+ end
77
+
78
+ describe file('/dev') do
79
+ let(:stdout) { "333\r\n" }
80
+ it { should_not be_readable }
81
+ end
82
+
83
+ describe file('/dev') do
84
+ let(:stdout) { "400\r\n" }
85
+ it { should be_readable.by('owner') }
86
+ end
87
+
88
+ describe file('/dev') do
89
+ let(:stdout) { "044\r\n" }
90
+ it { should_not be_readable.by('owner') }
91
+ end
92
+
93
+ describe file('/dev') do
94
+ let(:stdout) { "040\r\n" }
95
+ it { should be_readable.by('group') }
96
+ end
97
+
98
+ describe file('/dev') do
99
+ let(:stdout) { "404\r\n" }
100
+ it { should_not be_readable.by('group') }
101
+ end
102
+
103
+ describe file('/dev') do
104
+ let(:stdout) { "044\r\n" }
105
+ it { should be_readable.by('others') }
106
+ end
107
+
108
+ describe file('/dev') do
109
+ let(:stdout) { "443\r\n" }
110
+ it { should_not be_readable.by('others') }
111
+ end
112
+
113
+ describe file('/dev') do
114
+ let(:stdout) { "755\r\n" }
115
+ it { should be_writable }
116
+ end
117
+
118
+ describe file('/dev') do
119
+ let(:stdout) { "555\r\n" }
120
+ it { should_not be_writable }
121
+ end
122
+
123
+ describe file('/dev') do
124
+ let(:stdout) { "200\r\n" }
125
+ it { should be_writable.by('owner') }
126
+ end
127
+
128
+ describe file('/dev') do
129
+ let(:stdout) { "555\r\n" }
130
+ it { should_not be_writable.by('owner') }
131
+ end
132
+
133
+ describe file('/dev') do
134
+ let(:stdout) { "030\r\n" }
135
+ it { should be_writable.by('group') }
136
+ end
137
+
138
+ describe file('/dev') do
139
+ let(:stdout) { "555\r\n" }
140
+ it { should_not be_writable.by('group') }
141
+ end
142
+
143
+ describe file('/dev') do
144
+ let(:stdout) { "666\r\n" }
145
+ it { should be_writable.by('others') }
146
+ end
147
+
148
+ describe file('/dev') do
149
+ let(:stdout) { "555\r\n" }
150
+ it { should_not be_writable.by('others') }
151
+ end
152
+
153
+
154
+ describe file('/dev') do
155
+ let(:stdout) { "755\r\n" }
156
+ it { should be_executable }
157
+ end
158
+
159
+ describe file('/dev') do
160
+ let(:stdout) { "666\r\n" }
161
+ it { should_not be_executable }
162
+ end
163
+
164
+ describe file('/dev') do
165
+ let(:stdout) { "100\r\n" }
166
+ it { should be_executable.by('owner') }
167
+ end
168
+
169
+ describe file('/dev') do
170
+ let(:stdout) { "666\r\n" }
171
+ it { should_not be_executable.by('owner') }
172
+ end
173
+
174
+ describe file('/dev') do
175
+ let(:stdout) { "070\r\n" }
176
+ it { should be_executable.by('group') }
177
+ end
178
+
179
+ describe file('/dev') do
180
+ let(:stdout) { "666\r\n" }
181
+ it { should_not be_executable.by('group') }
182
+ end
183
+
184
+ describe file('/dev') do
185
+ let(:stdout) { "001\r\n" }
186
+ it { should be_executable.by('others') }
187
+ end
188
+
189
+ describe file('/dev') do
190
+ let(:stdout) { "666\r\n" }
191
+ it { should_not be_executable.by('others') }
192
+ end
193
+
194
+ describe file('/') do
195
+ it { should be_mounted }
196
+ end
197
+
198
+ describe file('/') do
199
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
200
+ it { should be_mounted.with( :type => 'ext4' ) }
201
+ end
202
+
203
+ describe file('/') do
204
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
205
+ it { should be_mounted.with( :type => 'ext4', :options => { :rw => true } ) }
206
+ end
207
+
208
+ describe file('/') do
209
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
210
+ it { should be_mounted.with( :type => 'ext4', :options => { :mode => 620 } ) }
211
+ end
212
+
213
+ describe file('/') do
214
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
215
+ it { should be_mounted.with( :type => 'ext4', :device => '/dev/mapper/VolGroup-lv_root' ) }
216
+ end
217
+
218
+ describe file('/') do
219
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
220
+ it { should_not be_mounted.with( :type => 'xfs' ) }
221
+ end
222
+
223
+ describe file('/') do
224
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
225
+ it { should_not be_mounted.with( :type => 'ext4', :options => { :rw => false } ) }
226
+ end
227
+
228
+ describe file('/') do
229
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
230
+ it { should_not be_mounted.with( :type => 'ext4', :options => { :mode => 600 } ) }
231
+ end
232
+
233
+ describe file('/') do
234
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
235
+ it { should_not be_mounted.with( :type => 'xfs', :device => '/dev/mapper/VolGroup-lv_root' ) }
236
+ end
237
+
238
+ describe file('/') do
239
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
240
+ it { should_not be_mounted.with( :type => 'ext4', :device => '/dev/mapper/VolGroup-lv_r00t' ) }
241
+ end
242
+
243
+ describe file('/') do
244
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
245
+ it do
246
+ should be_mounted.only_with(
247
+ :device => '/dev/mapper/VolGroup-lv_root',
248
+ :type => 'ext4',
249
+ :options => {
250
+ :rw => true,
251
+ :mode => 620,
252
+ }
253
+ )
254
+ end
255
+ end
256
+
257
+ describe file('/') do
258
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
259
+ it do
260
+ should_not be_mounted.only_with(
261
+ :device => '/dev/mapper/VolGroup-lv_root',
262
+ :type => 'ext4',
263
+ :options => {
264
+ :rw => true,
265
+ :mode => 620,
266
+ :bind => true,
267
+ }
268
+ )
269
+ end
270
+ end
271
+
272
+ describe file('/') do
273
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
274
+ it do
275
+ should_not be_mounted.only_with(
276
+ :device => '/dev/mapper/VolGroup-lv_root',
277
+ :type => 'ext4',
278
+ :options => {
279
+ :rw => true,
280
+ }
281
+ )
282
+ end
283
+ end
284
+
285
+ describe file('/') do
286
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
287
+ it do
288
+ should_not be_mounted.only_with(
289
+ :device => '/dev/mapper/VolGroup-lv_roooooooooot',
290
+ :type => 'ext4',
291
+ :options => {
292
+ :rw => true,
293
+ :mode => 620,
294
+ }
295
+ )
296
+ end
297
+ end
298
+
299
+ describe file('/etc/invalid-mount') do
300
+ let(:stdout) { "/dev/mapper/VolGroup-lv_root on / type ext4 (rw,mode=620)\r\n" }
301
+ it { should_not be_mounted.only_with( :type => 'ext4' ) }
302
+ end
303
+
304
+ describe file('/etc/services') do
305
+ let(:stdout) { "35435ea447c19f0ea5ef971837ab9ced\n" }
306
+ its(:md5sum) { should eq '35435ea447c19f0ea5ef971837ab9ced' }
307
+ end
308
+
309
+ describe file('invalid-file') do
310
+ its(:md5sum) { should_not eq 'INVALIDMD5CHECKSUM' }
311
+ end
312
+
313
+ describe file('/etc/services') do
314
+ let(:stdout) {"0c3feee1353a8459f8c7d84885e6bc602ef853751ffdbce3e3b6dfa1d345fc7a" }
315
+ its(:sha256sum) { should eq '0c3feee1353a8459f8c7d84885e6bc602ef853751ffdbce3e3b6dfa1d345fc7a' }
316
+ end
317
+
318
+ describe file('invalid-file') do
319
+ its(:sha256sum) { should_not eq 'INVALIDSHA256CHECKSUM' }
320
+ end
321
+
322
+ describe file('/etc/passwd') do
323
+ let(:stdout) {<<EOF
324
+ root:x:0:0:root:/root:/bin/bash
325
+ bin:x:1:1:bin:/bin:/sbin/nologin
326
+ daemon:x:2:2:daemon:/sbin:/sbin/nologin
327
+ sync:x:5:0:sync:/sbin:/bin/sync
328
+ shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
329
+ halt:x:7:0:halt:/sbin:/sbin/halt
330
+ mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
331
+ operator:x:11:0:operator:/root:/sbin/nologin
332
+ nobody:x:99:99:Nobody:/:/sbin/nologin
333
+ dbus:x:81:81:System message bus:/:/sbin/nologin
334
+ EOF
335
+ }
336
+
337
+ its(:content) { should match /root:x:0:0/ }
338
+ end
339
+
340
+ describe file('/etc/passwd') do
341
+ let(:stdout) { Time.now.to_i.to_s }
342
+ its(:mtime) { should > DateTime.now - 1 }
343
+ end
344
+
345
+ describe file('/etc/passwod') do
346
+ let(:stdout) { 100.to_s }
347
+ its(:size) { should > 0 }
348
+ end
349
+
350
+ describe file('/etc/passwd') do
351
+ it 'be_immutable is not implemented in base class' do
352
+ expect {
353
+ should be_immutable
354
+ }.to raise_exception
355
+ end
356
+ end