inspec 0.30.0 → 0.31.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -2
  3. data/Gemfile +2 -1
  4. data/docs/cli.rst +1 -17
  5. data/docs/resources.rst +128 -0
  6. data/docs/shell.rst +130 -0
  7. data/inspec.gemspec +3 -4
  8. data/lib/bundles/inspec-compliance/.kitchen.yml +0 -1
  9. data/lib/bundles/inspec-compliance/README.md +8 -3
  10. data/lib/bundles/inspec-compliance/api.rb +21 -6
  11. data/lib/bundles/inspec-compliance/bootstrap.sh +13 -9
  12. data/lib/bundles/inspec-compliance/cli.rb +23 -19
  13. data/lib/bundles/inspec-compliance/target.rb +1 -0
  14. data/lib/bundles/inspec-compliance/test/integration/default/cli.rb +42 -5
  15. data/lib/bundles/inspec-init/cli.rb +9 -0
  16. data/lib/bundles/inspec-supermarket/cli.rb +9 -0
  17. data/lib/bundles/inspec-supermarket/target.rb +2 -1
  18. data/lib/fetchers/local.rb +5 -2
  19. data/lib/fetchers/url.rb +1 -0
  20. data/lib/inspec/base_cli.rb +2 -1
  21. data/lib/inspec/cli.rb +14 -5
  22. data/lib/inspec/dependencies/dependency_set.rb +38 -0
  23. data/lib/inspec/dependencies/requirement.rb +103 -0
  24. data/lib/inspec/{dependencies.rb → dependencies/resolver.rb} +13 -132
  25. data/lib/inspec/dependencies/vendor_index.rb +98 -0
  26. data/lib/inspec/plugins/source_reader.rb +4 -0
  27. data/lib/inspec/profile.rb +2 -2
  28. data/lib/inspec/resource.rb +2 -0
  29. data/lib/inspec/runner.rb +13 -1
  30. data/lib/inspec/runner_mock.rb +4 -0
  31. data/lib/inspec/runner_rspec.rb +6 -2
  32. data/lib/inspec/shell.rb +22 -1
  33. data/lib/inspec/version.rb +1 -1
  34. data/lib/resources/iis_site.rb +107 -0
  35. data/lib/resources/port.rb +11 -4
  36. data/lib/resources/ssh_conf.rb +10 -2
  37. data/lib/resources/ssl.rb +94 -0
  38. data/lib/resources/xinetd.rb +11 -2
  39. data/lib/utils/parser.rb +6 -1
  40. metadata +17 -561
  41. data/lib/utils/hash_map.rb +0 -37
  42. data/tasks/maintainers.rb +0 -213
  43. data/test/bench/startup/startup.flat.txt +0 -1005
  44. data/test/bench/startup/startup.graph.html +0 -71958
  45. data/test/bench/startup/startup.grind.dat +0 -101602
  46. data/test/bench/startup/startup.stack.html +0 -24516
  47. data/test/bench/startup.flat.txt +0 -998
  48. data/test/bench/startup.graph.html +0 -71420
  49. data/test/bench/startup.grind.dat +0 -103554
  50. data/test/bench/startup.stack.html +0 -25015
  51. data/test/cookbooks/os_prepare/attributes/default.rb +0 -2
  52. data/test/cookbooks/os_prepare/files/empty.iso +0 -0
  53. data/test/cookbooks/os_prepare/files/example.csv +0 -7
  54. data/test/cookbooks/os_prepare/files/example.ini +0 -6
  55. data/test/cookbooks/os_prepare/files/example.json +0 -12
  56. data/test/cookbooks/os_prepare/files/example.yml +0 -7
  57. data/test/cookbooks/os_prepare/metadata.rb +0 -13
  58. data/test/cookbooks/os_prepare/recipes/_runit_service_centos.rb +0 -34
  59. data/test/cookbooks/os_prepare/recipes/_upstart_service_centos.rb +0 -25
  60. data/test/cookbooks/os_prepare/recipes/apache.rb +0 -14
  61. data/test/cookbooks/os_prepare/recipes/apt.rb +0 -20
  62. data/test/cookbooks/os_prepare/recipes/auditctl.rb +0 -8
  63. data/test/cookbooks/os_prepare/recipes/default.rb +0 -29
  64. data/test/cookbooks/os_prepare/recipes/file.rb +0 -46
  65. data/test/cookbooks/os_prepare/recipes/iptables.rb +0 -13
  66. data/test/cookbooks/os_prepare/recipes/json_yaml_csv_ini.rb +0 -34
  67. data/test/cookbooks/os_prepare/recipes/mount.rb +0 -33
  68. data/test/cookbooks/os_prepare/recipes/package.rb +0 -25
  69. data/test/cookbooks/os_prepare/recipes/postgres.rb +0 -20
  70. data/test/cookbooks/os_prepare/recipes/prep_container.rb +0 -15
  71. data/test/cookbooks/os_prepare/recipes/registry_key.rb +0 -87
  72. data/test/cookbooks/os_prepare/recipes/service.rb +0 -19
  73. data/test/cookbooks/os_prepare/templates/default/sv-default-svlog-run.erb +0 -2
  74. data/test/docker_run.rb +0 -162
  75. data/test/docker_test.rb +0 -58
  76. data/test/functional/helper.rb +0 -37
  77. data/test/functional/inheritance_test.rb +0 -62
  78. data/test/functional/inspec_archive_test.rb +0 -80
  79. data/test/functional/inspec_compliance_test.rb +0 -61
  80. data/test/functional/inspec_exec_json_test.rb +0 -122
  81. data/test/functional/inspec_exec_jsonmin_test.rb +0 -59
  82. data/test/functional/inspec_exec_test.rb +0 -123
  83. data/test/functional/inspec_json_profile_test.rb +0 -103
  84. data/test/functional/inspec_test.rb +0 -91
  85. data/test/helper.rb +0 -329
  86. data/test/integration/default/_debug_spec.rb +0 -8
  87. data/test/integration/default/apache_conf_spec.rb +0 -21
  88. data/test/integration/default/apt_spec.rb +0 -37
  89. data/test/integration/default/auditd_rules_spec.rb +0 -32
  90. data/test/integration/default/cmp_matcher_spec.rb +0 -115
  91. data/test/integration/default/csv_spec.rb +0 -11
  92. data/test/integration/default/etc_group_spec.rb +0 -29
  93. data/test/integration/default/file_spec.rb +0 -195
  94. data/test/integration/default/group_spec.rb +0 -59
  95. data/test/integration/default/ini_spec.rb +0 -11
  96. data/test/integration/default/iptables_spec.rb +0 -29
  97. data/test/integration/default/json_spec.rb +0 -11
  98. data/test/integration/default/kernel_module_spec.rb +0 -23
  99. data/test/integration/default/kernel_parameter_spec.rb +0 -60
  100. data/test/integration/default/mount_spec.rb +0 -19
  101. data/test/integration/default/os_spec.rb +0 -13
  102. data/test/integration/default/package_spec.rb +0 -30
  103. data/test/integration/default/port_spec.rb +0 -27
  104. data/test/integration/default/postgres_session_spec.rb +0 -13
  105. data/test/integration/default/powershell_spec.rb +0 -42
  106. data/test/integration/default/registry_key_spec.rb +0 -109
  107. data/test/integration/default/secpol_spec.rb +0 -11
  108. data/test/integration/default/service_spec.rb +0 -128
  109. data/test/integration/default/user_spec.rb +0 -96
  110. data/test/integration/default/vbscript_spec.rb +0 -22
  111. data/test/integration/default/wmi_spec.rb +0 -66
  112. data/test/integration/default/yaml_spec.rb +0 -11
  113. data/test/resource/command_test.rb +0 -33
  114. data/test/resource/dsl_test.rb +0 -45
  115. data/test/resource/file_test.rb +0 -146
  116. data/test/resource/ssh_config.rb +0 -9
  117. data/test/resource/sshd_config.rb +0 -9
  118. data/test/test-extra.yaml +0 -11
  119. data/test/test.yaml +0 -11
  120. data/test/unit/control_test.rb +0 -58
  121. data/test/unit/fetchers/local_test.rb +0 -67
  122. data/test/unit/fetchers/mock_test.rb +0 -43
  123. data/test/unit/fetchers/tar_test.rb +0 -36
  124. data/test/unit/fetchers/url_test.rb +0 -152
  125. data/test/unit/fetchers/zip_test.rb +0 -36
  126. data/test/unit/fetchers_test.rb +0 -65
  127. data/test/unit/metadata_test.rb +0 -137
  128. data/test/unit/mock/cmd/$env-PATH +0 -1
  129. data/test/unit/mock/cmd/Get-NetAdapter +0 -24
  130. data/test/unit/mock/cmd/GetUserAccount +0 -33
  131. data/test/unit/mock/cmd/GetWin32Group +0 -23
  132. data/test/unit/mock/cmd/Resolve-DnsName +0 -26
  133. data/test/unit/mock/cmd/Test-NetConnection +0 -4
  134. data/test/unit/mock/cmd/auditctl +0 -3
  135. data/test/unit/mock/cmd/auditctl-legacy +0 -7
  136. data/test/unit/mock/cmd/auditctl-s +0 -8
  137. data/test/unit/mock/cmd/auditpol +0 -2
  138. data/test/unit/mock/cmd/brew-info-jq +0 -1
  139. data/test/unit/mock/cmd/chage-l-root +0 -7
  140. data/test/unit/mock/cmd/dpkg-s-curl +0 -21
  141. data/test/unit/mock/cmd/dscl +0 -5
  142. data/test/unit/mock/cmd/env +0 -1
  143. data/test/unit/mock/cmd/etc-apt +0 -7
  144. data/test/unit/mock/cmd/find-apache2-conf-enabled +0 -1
  145. data/test/unit/mock/cmd/find-apache2-ports-conf +0 -1
  146. data/test/unit/mock/cmd/find-etc-rc-d-name-S +0 -12
  147. data/test/unit/mock/cmd/find-net-interface +0 -9
  148. data/test/unit/mock/cmd/find-xinetd.d +0 -2
  149. data/test/unit/mock/cmd/gem-list-local-a-q-rubocop +0 -1
  150. data/test/unit/mock/cmd/get-net-tcpconnection +0 -24
  151. data/test/unit/mock/cmd/get-netadapter-binding-bridge +0 -4
  152. data/test/unit/mock/cmd/get-package-firefox +0 -30
  153. data/test/unit/mock/cmd/get-package-ruby +0 -18
  154. data/test/unit/mock/cmd/get-service-dhcp +0 -10
  155. data/test/unit/mock/cmd/get-windows-feature +0 -7
  156. data/test/unit/mock/cmd/get-wmiobject +0 -9
  157. data/test/unit/mock/cmd/getent-hosts-example.com +0 -1
  158. data/test/unit/mock/cmd/getent-passwd-jfolmer +0 -1
  159. data/test/unit/mock/cmd/getent-passwd-root +0 -1
  160. data/test/unit/mock/cmd/hpux-netstat-inet +0 -10
  161. data/test/unit/mock/cmd/hpux-netstat-inet6 +0 -11
  162. data/test/unit/mock/cmd/id-chartmann +0 -1
  163. data/test/unit/mock/cmd/id-jfolmer +0 -1
  164. data/test/unit/mock/cmd/id-root +0 -1
  165. data/test/unit/mock/cmd/initctl--version +0 -5
  166. data/test/unit/mock/cmd/initctl-show-config-ssh +0 -3
  167. data/test/unit/mock/cmd/initctl-status-ssh +0 -1
  168. data/test/unit/mock/cmd/iptables-s +0 -6
  169. data/test/unit/mock/cmd/launchctl-list +0 -3
  170. data/test/unit/mock/cmd/logins-x +0 -4
  171. data/test/unit/mock/cmd/ls-1-etc-init.d +0 -2
  172. data/test/unit/mock/cmd/ls-sys-class-net-br +0 -2
  173. data/test/unit/mock/cmd/lsmod +0 -2
  174. data/test/unit/mock/cmd/lsof-nP-i-FpctPn +0 -63
  175. data/test/unit/mock/cmd/mount +0 -1
  176. data/test/unit/mock/cmd/mount-multiple +0 -2
  177. data/test/unit/mock/cmd/netstat-an.utf8 +0 -13
  178. data/test/unit/mock/cmd/netstat-tulpen +0 -6
  179. data/test/unit/mock/cmd/npm-ls-g--json-bower +0 -9
  180. data/test/unit/mock/cmd/pacman-qi-curl +0 -21
  181. data/test/unit/mock/cmd/ping-example.com +0 -6
  182. data/test/unit/mock/cmd/pip-show-jinja2 +0 -11
  183. data/test/unit/mock/cmd/pkg-info-system-file-system-zfs +0 -8
  184. data/test/unit/mock/cmd/pkginfo-l-SUNWzfsr +0 -7
  185. data/test/unit/mock/cmd/ps-aux +0 -5
  186. data/test/unit/mock/cmd/ps-auxZ +0 -3
  187. data/test/unit/mock/cmd/pw-usershow-root-7 +0 -1
  188. data/test/unit/mock/cmd/reg_schedule +0 -6
  189. data/test/unit/mock/cmd/rpm-qia-curl +0 -24
  190. data/test/unit/mock/cmd/s11-netstat-an-finet-finet6 +0 -32
  191. data/test/unit/mock/cmd/sbin_sysctl +0 -1
  192. data/test/unit/mock/cmd/secedit-export +0 -7
  193. data/test/unit/mock/cmd/service-e +0 -2
  194. data/test/unit/mock/cmd/service-sendmail-onestatus +0 -3
  195. data/test/unit/mock/cmd/service-sshd-status +0 -1
  196. data/test/unit/mock/cmd/sockstat +0 -5
  197. data/test/unit/mock/cmd/success +0 -0
  198. data/test/unit/mock/cmd/swlist-l-product +0 -1
  199. data/test/unit/mock/cmd/systemctl-show-all-dbus +0 -6
  200. data/test/unit/mock/cmd/systemctl-show-all-sshd +0 -7
  201. data/test/unit/mock/cmd/win32_product +0 -8
  202. data/test/unit/mock/cmd/yum-repolist-all +0 -52
  203. data/test/unit/mock/files/apache2.conf +0 -14
  204. data/test/unit/mock/files/auditd.conf +0 -4
  205. data/test/unit/mock/files/bond0 +0 -37
  206. data/test/unit/mock/files/etcgroup +0 -3
  207. data/test/unit/mock/files/example.csv +0 -6
  208. data/test/unit/mock/files/grub.conf +0 -21
  209. data/test/unit/mock/files/inetd.conf +0 -2
  210. data/test/unit/mock/files/kitchen.yml +0 -7
  211. data/test/unit/mock/files/limits.conf +0 -5
  212. data/test/unit/mock/files/login.defs +0 -5
  213. data/test/unit/mock/files/mysql.conf +0 -8
  214. data/test/unit/mock/files/mysql2.conf +0 -2
  215. data/test/unit/mock/files/ntp.conf +0 -5
  216. data/test/unit/mock/files/passwd +0 -2
  217. data/test/unit/mock/files/policyfile.lock.json +0 -12
  218. data/test/unit/mock/files/ports.conf +0 -6
  219. data/test/unit/mock/files/rootwrap.conf +0 -7
  220. data/test/unit/mock/files/serve-cgi-bin.conf +0 -20
  221. data/test/unit/mock/files/shadow +0 -2
  222. data/test/unit/mock/files/ssh_config +0 -5
  223. data/test/unit/mock/files/sshd_config +0 -7
  224. data/test/unit/mock/files/sysctl.conf +0 -7
  225. data/test/unit/mock/files/xinetd.conf +0 -9
  226. data/test/unit/mock/files/xinetd.d/.gitkeep +0 -0
  227. data/test/unit/mock/files/xinetd.d_chargen-dgram +0 -9
  228. data/test/unit/mock/files/xinetd.d_chargen-stream +0 -9
  229. data/test/unit/mock/profiles/complete-metadata/inspec.yml +0 -7
  230. data/test/unit/mock/profiles/complete-profile/controls/filesystem_spec.rb +0 -16
  231. data/test/unit/mock/profiles/complete-profile/inspec.yml +0 -10
  232. data/test/unit/mock/profiles/complete-profile/libraries/testlib.rb +0 -1
  233. data/test/unit/mock/profiles/empty-metadata/inspec.yml +0 -0
  234. data/test/unit/mock/profiles/legacy-complete-metadata/metadata.rb +0 -7
  235. data/test/unit/mock/profiles/legacy-complete-metadata/test/.gitkeep +0 -0
  236. data/test/unit/mock/profiles/legacy-empty-metadata/controls/.gitkeep +0 -0
  237. data/test/unit/mock/profiles/legacy-empty-metadata/metadata.rb +0 -0
  238. data/test/unit/mock/profiles/legacy-simple-metadata/metadata.rb +0 -1
  239. data/test/unit/mock/profiles/legacy-simple-metadata/test/.gitkeep +0 -0
  240. data/test/unit/mock/profiles/library/controls/filesystem_spec.rb +0 -7
  241. data/test/unit/mock/profiles/library/inspec.yml +0 -10
  242. data/test/unit/mock/profiles/library/libraries/gordonlib.rb +0 -2
  243. data/test/unit/mock/profiles/library/libraries/testlib.rb +0 -12
  244. data/test/unit/mock/profiles/resource-tiny/inspec.yml +0 -10
  245. data/test/unit/mock/profiles/resource-tiny/libraries/resource.rb +0 -3
  246. data/test/unit/mock/profiles/simple-metadata/inspec.yml +0 -1
  247. data/test/unit/mock/profiles/skippy-profile-os/controls/one.rb +0 -3
  248. data/test/unit/mock/profiles/skippy-profile-os/inspec.yml +0 -5
  249. data/test/unit/mock/profiles/spec_only/specfile.rb +0 -11
  250. data/test/unit/mock/profiles/supported_inspec/inspec.yml +0 -2
  251. data/test/unit/mock/profiles/unsupported_inspec/inspec.yml +0 -2
  252. data/test/unit/objects_test.rb +0 -65
  253. data/test/unit/plugin_test.rb +0 -44
  254. data/test/unit/plugins/resource_test.rb +0 -60
  255. data/test/unit/profile_context_test.rb +0 -345
  256. data/test/unit/profile_test.rb +0 -252
  257. data/test/unit/resources/apache_conf_test.rb +0 -31
  258. data/test/unit/resources/apt_test.rb +0 -46
  259. data/test/unit/resources/audit_policy_test.rb +0 -13
  260. data/test/unit/resources/auditd_conf_test.rb +0 -15
  261. data/test/unit/resources/auditd_rules_test.rb +0 -91
  262. data/test/unit/resources/bash_test.rb +0 -29
  263. data/test/unit/resources/bond_test.rb +0 -24
  264. data/test/unit/resources/bridge_test.rb +0 -56
  265. data/test/unit/resources/csv_test.rb +0 -35
  266. data/test/unit/resources/etc_group_test.rb +0 -37
  267. data/test/unit/resources/file_test.rb +0 -202
  268. data/test/unit/resources/gem_test.rb +0 -20
  269. data/test/unit/resources/group_test.rb +0 -96
  270. data/test/unit/resources/grub_conf_test.rb +0 -29
  271. data/test/unit/resources/host_test.rb +0 -38
  272. data/test/unit/resources/inetd_conf_test.rb +0 -15
  273. data/test/unit/resources/ini_test.rb +0 -16
  274. data/test/unit/resources/interface_test.rb +0 -54
  275. data/test/unit/resources/iptables_test.rb +0 -35
  276. data/test/unit/resources/json_test.rb +0 -36
  277. data/test/unit/resources/kernel_module_test.rb +0 -23
  278. data/test/unit/resources/kernel_parameter_test.rb +0 -13
  279. data/test/unit/resources/limits_conf_test.rb +0 -14
  280. data/test/unit/resources/login_def_test.rb +0 -16
  281. data/test/unit/resources/mount_test.rb +0 -26
  282. data/test/unit/resources/mysql_conf_test.rb +0 -14
  283. data/test/unit/resources/npm_test.rb +0 -20
  284. data/test/unit/resources/ntp_conf_test.rb +0 -16
  285. data/test/unit/resources/oneget_test.rb +0 -45
  286. data/test/unit/resources/os_env_test.rb +0 -18
  287. data/test/unit/resources/os_test.rb +0 -40
  288. data/test/unit/resources/package_test.rb +0 -87
  289. data/test/unit/resources/parse_config_test.rb +0 -26
  290. data/test/unit/resources/passwd_test.rb +0 -111
  291. data/test/unit/resources/pip_test.rb +0 -15
  292. data/test/unit/resources/port_test.rb +0 -165
  293. data/test/unit/resources/powershell_test.rb +0 -32
  294. data/test/unit/resources/processes_test.rb +0 -72
  295. data/test/unit/resources/registry_key_test.rb +0 -18
  296. data/test/unit/resources/security_policy_test.rb +0 -16
  297. data/test/unit/resources/service_test.rb +0 -305
  298. data/test/unit/resources/shadow_test.rb +0 -67
  299. data/test/unit/resources/ssh_conf_test.rb +0 -33
  300. data/test/unit/resources/user_test.rb +0 -124
  301. data/test/unit/resources/vbscript_test.rb +0 -18
  302. data/test/unit/resources/windows_feature.rb +0 -17
  303. data/test/unit/resources/wmi_test.rb +0 -42
  304. data/test/unit/resources/xinetd_test.rb +0 -60
  305. data/test/unit/resources/yaml_test.rb +0 -34
  306. data/test/unit/resources/yum_test.rb +0 -68
  307. data/test/unit/shell_detector_test.rb +0 -78
  308. data/test/unit/source_reader_test.rb +0 -17
  309. data/test/unit/source_readers/flat_test.rb +0 -61
  310. data/test/unit/source_readers/inspec_test.rb +0 -38
  311. data/test/unit/utils/filter_array_test.rb +0 -59
  312. data/test/unit/utils/filter_table_test.rb +0 -177
  313. data/test/unit/utils/find_files_test.rb +0 -23
  314. data/test/unit/utils/passwd_parser_test.rb +0 -32
  315. data/test/unit/utils/simpleconfig_test.rb +0 -80
  316. data/test/unit/utils/solaris_netstat_parser.rb +0 -124
@@ -1,115 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if os.linux?
4
- # uses the `cmp` matcher instead of the eq matcher
5
- describe sshd_config do
6
- its('Port') { should eq '22' }
7
- its('Port') { should_not eq 22 }
8
-
9
- its('Port') { should cmp '22' }
10
- its('Port') { should cmp 22 }
11
- its('Port') { should cmp 22.0 }
12
- its('Port') { should_not cmp 22.1 }
13
-
14
- its('LogLevel') { should eq 'VERBOSE' }
15
- its('LogLevel') { should_not eq 'verbose'}
16
-
17
- its('LogLevel') { should cmp 'VERBOSE' }
18
- its('LogLevel') { should cmp 'verbose' }
19
- its('LogLevel') { should cmp 'VerBose' }
20
- end
21
-
22
- describe passwd.passwords.uniq do
23
- it { should eq ['x'] }
24
- it { should cmp ['x'] }
25
- it { should cmp 'x' }
26
- end
27
-
28
- describe passwd.usernames do
29
- it { should include 'root' }
30
- it { should_not cmp 'root' }
31
- end
32
-
33
- len = passwd.passwords.length
34
- describe len do
35
- it { should cmp len.to_s }
36
- end
37
-
38
- describe 122 do
39
- it { should cmp 122 }
40
- it { should cmp < 133 }
41
- it { should cmp > 111 }
42
- it { should_not cmp < 122 }
43
- it { should_not cmp > 122 }
44
- it { should cmp <= 122 }
45
- it { should cmp >= 122 }
46
- it { should cmp >= -666 }
47
- it { should_not cmp <= 111 }
48
- it { should_not cmp >= 133 }
49
- it { should cmp /122/ }
50
- it { should_not cmp /133/ }
51
- end
52
-
53
- describe 0o640 do
54
- it { should cmp 0o640 }
55
- it { should cmp > 100 }
56
- it { should_not cmp <= 0 }
57
- it { should cmp == '416' }
58
- it { should cmp /416$/ }
59
- end
60
-
61
- describe '12' do
62
- it { should cmp 12 }
63
- it { should cmp < 13 }
64
- it { should cmp > 11 }
65
- it { should_not cmp < 12 }
66
- it { should_not cmp > 12 }
67
- it { should cmp <= 12 }
68
- it { should cmp >= 12 }
69
- it { should cmp >= -666 }
70
- it { should_not cmp <= 11 }
71
- it { should_not cmp >= 13 }
72
- end
73
-
74
- # Don't compare octal to number
75
- describe '07' do
76
- it { should_not cmp 7 }
77
- end
78
-
79
- describe 'some 123' do
80
- it { should cmp 'some 123' }
81
- it { should cmp /^SOME\s\d+(1|2|3)3/i }
82
- it { should_not cmp /^SOME/ }
83
- end
84
-
85
- describe ['some-array'] do
86
- it { should cmp 'some-array' }
87
- it { should cmp /.+/ }
88
- it { should_not cmp /^SOME/ }
89
- end
90
-
91
- describe '' do
92
- it { should_not cmp >= 3 }
93
- it { should_not cmp < 3 }
94
- it { should_not cmp /.+/ }
95
- end
96
-
97
- describe nil do
98
- it { should cmp nil }
99
- it { should_not cmp >= 3 }
100
- it { should_not cmp < 3 }
101
- it { should_not cmp /something/ }
102
- end
103
-
104
- describe true do
105
- it { should cmp 'true' }
106
- it { should cmp 'True' }
107
- it { should cmp true }
108
- end
109
-
110
- describe false do
111
- it { should cmp 'false' }
112
- it { should cmp 'False' }
113
- it { should cmp false }
114
- end
115
- end
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if os.unix?
4
- filename = '/tmp/example.csv'
5
- else
6
- filename = 'c:/windows/temp/example.csv'
7
- end
8
-
9
- describe csv(filename) do
10
- its('name') { should eq(['addressable', 'ast', 'astrolabe', 'berkshelf']) }
11
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if ENV['DOCKER']
4
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
5
- return
6
- end
7
-
8
- # lets define our own group
9
- root_group = 'root'
10
-
11
- if os[:family] == 'aix'
12
- root_group = 'system'
13
- elsif os[:family] == 'freebsd'
14
- root_group = 'wheel'
15
- elsif os.solaris?
16
- root_group = 'sys'
17
- end
18
-
19
- if os.unix?
20
- describe etc_group do
21
- its('gids') { should_not contain_duplicates }
22
- its('groups') { should include root_group }
23
- its('users') { should include 'root' }
24
- end
25
-
26
- describe etc_group.where(name: root_group) do
27
- its('users') { should include 'root' }
28
- end
29
- end
@@ -1,195 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- if os[:family] == 'freebsd'
8
- filedata = {
9
- user: 'root',
10
- group: 'wheel',
11
- dir_content: "\u0003\u0000",
12
- dir_md5sum: '598f4fe64aefab8f00bcbea4c9239abf',
13
- dir_sha256sum: '9b4fb24edd6d1d8830e272398263cdbf026b97392cc35387b991dc0248a628f9',
14
- }
15
- elsif os[:family] == 'aix'
16
- filedata = {
17
- user: 'root',
18
- group: 'system',
19
- dir_content: nil,
20
- dir_md5sum: nil,
21
- dir_sha256sum: nil,
22
- }
23
- elsif os.solaris?
24
- filedata = {
25
- user: 'root',
26
- group: 'sys',
27
- dir_content: nil,
28
- dir_md5sum: nil,
29
- dir_sha256sum: nil,
30
- }
31
- else
32
- filedata = {
33
- user: 'root',
34
- group: 'root',
35
- dir_content: nil,
36
- dir_md5sum: nil,
37
- dir_sha256sum: nil,
38
- }
39
- end
40
-
41
- if os.unix?
42
-
43
- # test regular file
44
- describe file('/tmp/file') do
45
- it { should exist }
46
- it { should be_file }
47
-
48
- it { should_not be_directory }
49
- it { should_not be_block_device }
50
- it { should_not be_character_device }
51
- it { should_not be_pipe }
52
- it { should_not be_socket }
53
- it { should_not be_symlink }
54
- it { should_not be_mounted }
55
-
56
- # check owner
57
- it { should be_owned_by filedata[:user] }
58
- it { should be_grouped_into filedata[:group] }
59
-
60
- # it { should have_mode }
61
- its('mode') { should eq 00765 }
62
- it { should be_mode 00765 }
63
- its('mode') { should cmp 0765 }
64
- its('mode') { should_not cmp 0777 }
65
- its('suid') { should eq false }
66
- its('sgid') { should eq false }
67
- its('sticky') { should eq false }
68
-
69
- it { should be_readable }
70
- it { should be_readable.by('owner') }
71
- it { should be_readable.by('group') }
72
- it { should be_readable.by('other') }
73
- it { should be_readable.by_user(filedata[:user]) }
74
- it { should_not be_readable.by_user('noroot') }
75
- # for server spec compatibility
76
- it { should be_readable.by('others') }
77
-
78
- it { should be_writable }
79
- it { should be_writable.by('owner') }
80
- it { should be_writable.by('group') }
81
- it { should_not be_writable.by('other') }
82
- it { should be_writable.by_user(filedata[:user]) }
83
- # it { should_not be_writable.by_user('noroot') }
84
- # for server spec compatibility
85
- it { should_not be_writable.by('others') }
86
-
87
- it { should be_executable }
88
- it { should be_executable.by('owner') }
89
- it { should_not be_executable.by('group') }
90
- it { should be_executable.by('other') }
91
- it { should be_executable.by_user(filedata[:user]) }
92
- # it { should_not be_executable.by_user('noroot') }
93
- # for server spec compatibility
94
- it { should be_executable.by('others') }
95
-
96
- # test extended linux attributes
97
- # it { should be_immutable }
98
-
99
- its('content') { should eq 'hello world' }
100
- its('content') { should match('world') }
101
- its('size') { should eq 11 }
102
- its('md5sum') { should eq '5eb63bbbe01eeed093cb22bb8f5acdc3' }
103
- its('sha256sum') { should eq 'b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9' }
104
- its('product_version') { should eq nil }
105
- its('file_version') { should eq nil }
106
- its('basename') { should cmp 'file' }
107
- its('path') { should cmp '/tmp/file' }
108
-
109
- its('owner') { should eq filedata[:user] }
110
- its('group') { should eq filedata[:group] }
111
- its('type') { should eq :file }
112
- end
113
-
114
- describe file('/tmp/file') do
115
- its('suid') { should eq true }
116
- its('sgid') { should eq true }
117
- its('sticky') { should eq true }
118
- end
119
-
120
- describe file('/tmp/folder') do
121
- it { should exist }
122
- it { should be_directory }
123
-
124
- it { should_not be_file }
125
- it { should_not be_block_device }
126
- it { should_not be_character_device }
127
- it { should_not be_pipe }
128
- it { should_not be_socket }
129
- it { should_not be_symlink }
130
-
131
- its('content') { should eq filedata[:dir_content] }
132
- its('md5sum') { should eq filedata[:dir_md5sum] }
133
- its('sha256sum') { should eq filedata[:dir_sha256sum] }
134
- its('product_version') { should eq nil }
135
- its('file_version') { should eq nil }
136
- its('basename') { should cmp 'folder' }
137
- its('path') { should cmp '/tmp/folder' }
138
-
139
- its('owner') { should eq filedata[:user] }
140
- its('group') { should eq filedata[:group] }
141
- its('type') { should eq :directory }
142
- end
143
- end
144
-
145
- # check file mount on linux
146
- if os.linux?
147
- # for server spec compatibility
148
- # Do not use `.with` or `.only_with`, this syntax is deprecated and will be removed
149
- # in InSpec version 1
150
- describe file('/mnt/iso-disk') do
151
- it { should be_mounted }
152
- it { should be_mounted.with( :type => 'iso9660' ) }
153
- it { should be_mounted.with( :type => 'iso9660', :options => { :ro => true } ) }
154
- it { should be_mounted.with( :type => 'iso9660', :device => '/tmp/empty.iso' ) }
155
- it { should_not be_mounted.with( :type => 'ext4' ) }
156
- it { should_not be_mounted.with( :type => 'xfs' ) }
157
- end
158
-
159
- # compare with exact match
160
- # also see mount_spec.rb
161
- describe file('/mnt/iso-disk') do
162
- it { should be_mounted.only_with( {
163
- :device=>"/tmp/empty.iso",
164
- :type=>"iso9660",
165
- :options=>{
166
- :ro=>true}
167
- })
168
- }
169
- end
170
- end
171
-
172
- if os.windows?
173
- describe file('C:\Windows') do
174
- it { should exist }
175
- it { should be_directory }
176
- its('basename') { should cmp 'Windows' }
177
- its('path') { should cmp "C:\\Windows" }
178
- end
179
-
180
- describe file('C:\\Test Directory\\test file.txt') do
181
- it { should exist }
182
- it { should be_file }
183
- end
184
-
185
- describe file('C:\\Test Directory') do
186
- it { should exist }
187
- it { should be_directory }
188
- end
189
-
190
- describe file("C:/Program Files (x86)/Windows NT/Accessories/wordpad.exe") do
191
- it { should exist }
192
- # Only works on Windows 2012 R2
193
- its('file_version') { should eq '6.3.9600.17415' }
194
- end
195
- end
@@ -1,59 +0,0 @@
1
- # encoding: utf-8
2
-
3
- # test root group on linux
4
- if os.linux?
5
- describe group('root') do
6
- it { should exist }
7
- its('gid') { should eq 0 }
8
- end
9
-
10
- describe group('noroot') do
11
- it { should_not exist }
12
- its('gid') { should eq nil }
13
- end
14
- elsif os[:family] == 'freebsd'
15
- describe group('wheel') do
16
- it { should exist }
17
- its('gid') { should eq 0 }
18
- end
19
-
20
- describe group('root') do
21
- it { should_not exist }
22
- its('gid') { should eq nil }
23
- end
24
-
25
- describe group('noroot') do
26
- it { should_not exist }
27
- its('gid') { should eq nil }
28
- end
29
- elsif os[:family] == 'aix'
30
- describe group('system') do
31
- it { should exist }
32
- its('gid') { should eq 0 }
33
- end
34
-
35
- describe group('bin') do
36
- it { should exist }
37
- its('gid') { should eq 2 }
38
- end
39
-
40
- describe group('noroot') do
41
- it { should_not exist }
42
- its('gid') { should eq nil }
43
- end
44
- elsif os.solaris?
45
- describe group('root') do
46
- it { should exist }
47
- its('gid') { should eq 0 }
48
- end
49
-
50
- describe group('bin') do
51
- it { should exist }
52
- its('gid') { should eq 2 }
53
- end
54
-
55
- describe group('noroot') do
56
- it { should_not exist }
57
- its('gid') { should eq nil }
58
- end
59
- end
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if os.unix?
4
- filename = '/tmp/example.ini'
5
- else
6
- filename = 'c:/windows/temp/example.ini'
7
- end
8
-
9
- describe ini(filename) do
10
- its(['client','port']) { should eq('3306') }
11
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- case os[:family]
8
- when 'ubuntu', 'fedora'
9
- describe iptables do
10
- it { should have_rule('-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW -m comment --comment "http on 80" -j ACCEPT') }
11
- it { should_not have_rule('-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT') }
12
-
13
- # single-word comments have their quotes dropped
14
- it { should have_rule('-A derby-cognos-web -p tcp -m tcp --dport 80 -m comment --comment derby-cognos-web -j ACCEPT') }
15
- end
16
- when 'rhel', 'centos'
17
- describe iptables do
18
- it { should have_rule('-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW -m comment --comment "http on 80" -j ACCEPT') }
19
- it { should_not have_rule('-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT') }
20
- end
21
-
22
- describe iptables do
23
- it { should have_rule('-A derby-cognos-web -p tcp -m tcp --dport 80 -m comment --comment "derby-cognos-web" -j ACCEPT') }
24
- end if os[:release] == 6
25
-
26
- describe iptables do
27
- it { should have_rule('-A derby-cognos-web -p tcp -m tcp --dport 80 -m comment --comment derby-cognos-web -j ACCEPT') }
28
- end if os[:release] == 7
29
- end
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if os.unix?
4
- filename = '/tmp/example.json'
5
- else
6
- filename = 'c:/windows/temp/example.json'
7
- end
8
-
9
- describe json(filename) do
10
- its(['cookbook_locks','omnibus','version']) { should eq('2.2.0') }
11
- end
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- if !os.linux?
8
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__} because we are not on linux.\033[0m"
9
- return
10
- end
11
-
12
- # Test kernel modules on all linux systems
13
- describe kernel_module('video') do
14
- it { should be_loaded }
15
- end
16
-
17
- describe kernel_module('bridge') do
18
- it { should_not be_loaded }
19
- end
20
-
21
- describe kernel_module('dhcp') do
22
- it { should_not be_loaded }
23
- end
@@ -1,60 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- # prepare values
8
- if ['ubuntu', 'centos', 'fedora', 'opensuse', 'debian'].include?(os[:family])
9
- test_values = {
10
- kernel_panic: 0,
11
- ip_local_port_range: "32768\t61000",
12
- forwarding: 0,
13
- sched_autogroup_enabled: 1,
14
- nf_log: 'NONE',
15
- }
16
-
17
- # configue parameter derivations for different OS
18
- test_values[:sched_autogroup_enabled] = 0 if ['centos', 'debian'].include?(os[:family])
19
-
20
- if (os[:family] == 'ubuntu' && os[:release].to_f == 10.04) ||
21
- (os[:family] == 'debian' && os[:release].to_i == 6) ||
22
- (os[:family] == 'centos' && os[:release].to_i == 5) ||
23
- (os[:family] == 'opensuse')
24
- test_values[:sched_autogroup_enabled] = nil
25
- end
26
-
27
- test_values[:nf_log] = nil if os[:family] == 'centos' && os[:release].to_i == 5
28
- test_values[:kernel_panic] = 90 if os[:family] == 'opensuse'
29
-
30
- else
31
- test_values = {}
32
- end
33
-
34
- # test on all linux systems
35
- if os.linux?
36
- describe kernel_parameter('kernel.panic') do
37
- its('value') { should eq test_values[:kernel_panic] }
38
- end
39
-
40
- describe kernel_parameter('net.netfilter.nf_log.0') do
41
- its('value') { should eq test_values[:nf_log] }
42
- end
43
-
44
- describe kernel_parameter('kernel.sched_autogroup_enabled') do
45
- its('value') { should eq test_values[:sched_autogroup_enabled] }
46
- end
47
-
48
- describe kernel_parameter('net.ipv4.ip_local_port_range') do
49
- its('value') { should eq test_values[:ip_local_port_range] }
50
- end
51
-
52
- describe kernel_parameter('net.ipv4.conf.all.forwarding') do
53
- its('value') { should eq test_values[:forwarding] }
54
- end
55
-
56
- # serverspec compatability
57
- describe linux_kernel_parameter('net.ipv4.conf.all.forwarding') do
58
- its('value') { should eq test_values[:forwarding] }
59
- end
60
- end
@@ -1,19 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- if !os.linux?
8
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__} because we are not on linux.\033[0m"
9
- return
10
- end
11
-
12
- # instead of `.with` or `.only_with` we recommend to use the `mount` resource
13
- describe mount '/mnt/iso-disk' do
14
- it { should be_mounted }
15
- its('count') { should eq 1 }
16
- its('device') { should eq '/tmp/empty.iso' }
17
- its('type') { should eq 'iso9660' }
18
- its('options') { should eq ['ro'] }
19
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
-
3
- family = os[:family]
4
-
5
- # use symbol
6
- describe os[:family] do
7
- it { should eq family }
8
- end
9
-
10
- # use string
11
- describe os['family'] do
12
- it { should eq family }
13
- end
@@ -1,30 +0,0 @@
1
- # encoding: utf-8
2
-
3
- case os[:family]
4
- when 'centos', 'fedora', 'opensuse', 'debian', 'ubuntu'
5
- describe package('curl') do
6
- it { should be_installed }
7
- end
8
- when 'aix'
9
- describe package('bos.rte') do
10
- it { should be_installed }
11
- its('version') { should match /^(6|7)[.|\d]+\d$/ }
12
- end
13
- when 'solaris'
14
- if os[:release] == '11'
15
- pkg = 'system/file-system/zfs'
16
- ver = /^0\.5.+$/
17
- else
18
- pkg = 'SUNWzfsr'
19
- ver = /^11\.10.+$/
20
- end
21
-
22
- describe package(pkg) do
23
- it { should be_installed }
24
- its('version') { should match ver }
25
- end
26
- end
27
-
28
- describe package('nginx') do
29
- it { should_not be_installed }
30
- end
@@ -1,27 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- # check that ssh runs
8
- if os.unix?
9
- describe port(22) do
10
- it { should be_listening }
11
- its('protocols') { should include('tcp') }
12
- its('protocols') { should_not include('udp') }
13
- end
14
-
15
- describe port(65432) do
16
- it { should_not be_listening }
17
- end
18
- end
19
-
20
- # extra test for linux
21
- if os.linux?
22
- describe port(22) do
23
- its('processes') { should include 'sshd' }
24
- its('protocols') { should include 'tcp' }
25
- its('addresses') {should include '0.0.0.0'}
26
- end
27
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
- if ENV['DOCKER']
3
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__.split("/").last} because we are running in docker\033[0m"
4
- return
5
- end
6
-
7
- # postgres-server is installed on these platforms
8
- if ['ubuntu', 'centos'].include? os['family']
9
- postgres = postgres_session('postgres', 'inspec')
10
- describe postgres.query('show ssl;') do
11
- its('output') { should eq 'on' }
12
- end
13
- end