inspec 0.30.0 → 0.31.0

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 (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,42 +0,0 @@
1
- # encoding: utf-8
2
-
3
- unless os.windows?
4
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__} because we are not on Windows.\033[0m"
5
- return
6
- end
7
-
8
- script = <<-EOH
9
- Write-Output 'hello'
10
- EOH
11
-
12
- # Write-Output comes with a newline
13
- describe powershell(script) do
14
- its('stdout') { should eq "hello\r\n" }
15
- its('stderr') { should eq '' }
16
- end
17
-
18
- # remove whitespace \r\n from stdout
19
- describe powershell(script) do
20
- its('strip') { should eq "hello" }
21
- end
22
-
23
- # legacy test with `script` resource
24
- describe script(script) do
25
- its('stdout') { should eq "hello\r\n" }
26
- its('stderr') { should eq '' }
27
- end
28
-
29
- # -NoNewLine only works in powershell 5
30
- # @see https://blogs.technet.microsoft.com/heyscriptingguy/2015/08/07/the-powershell-5-nonewline-parameter/
31
- describe powershell("'hello' | Write-Host -NoNewLine") do
32
- its('stdout') { should eq 'hello' }
33
- its('stderr') { should eq '' }
34
- end
35
-
36
- # test stderr
37
- describe powershell("Write-Error \"error\"") do
38
- its('stdout') { should eq '' }
39
- # this is an xml error for now, if the script is run via WinRM
40
- # @see https://github.com/WinRb/WinRM/issues/106
41
- # its('stderr') { should eq 'error' }
42
- end
@@ -1,109 +0,0 @@
1
- # encoding: utf-8
2
-
3
- unless os.windows?
4
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__} because we are not on Windows.\033[0m"
5
- return
6
- end
7
-
8
- describe registry_key('HKLM\System\Test') do
9
- it { should exist }
10
- it { should have_value('test') }
11
- it { should have_property('binary value', :binary) }
12
- it { should have_property('Binary value', :binary) }
13
- it { should have_property('string value') }
14
- it { should have_property('String value') }
15
- it { should have_property('dword value', :dword) }
16
- it { should have_property_value('multistring value', :multi_string, ['test', 'multi','string','data']) }
17
- it { should have_property_value('Multistring Value', :multi_string, ['test', 'multi','string','data']) }
18
- it { should have_property_value('qword value', :qword, 0) }
19
- it { should have_property_value('Qword value', :qword, 0) }
20
- it { should have_property_value('binary value', :binary, 'dfa0f066') }
21
- it { should have_property_value('Binary value', :binary, 'dfa0f066') }
22
- end
23
-
24
- # serverspec compatability
25
- describe windows_registry_key('HKLM\System\Test') do
26
- it { should exist }
27
- it { should have_value('test') }
28
- it { should have_property('string value') }
29
- it { should have_property('binary value', :type_binary) }
30
- it { should have_property('dword value', :type_dword) }
31
- it { should have_property_value('multistring value', :type_multistring, ['test', 'multi','string','data']) }
32
- it { should have_property_value('qword value', :type_qword, 0) }
33
- it { should have_property_value('binary value', :type_binary, 'dfa0f066') }
34
- end
35
-
36
- describe registry_key('HKLM\Software\Policies\Microsoft\Windows\EventLog\System') do
37
- it { should exist }
38
- its('MaxSize') { should_not eq nil }
39
- end
40
-
41
- describe registry_key('HKLM\System\CurrentControlSet\Control\Session Manager') do
42
- it { should exist }
43
- it { should_not have_property_value('SafeDllSearchMode', :type_dword, 0) }
44
- # case-insensitive test
45
- it { should_not have_property_value('safedllsearchmode', :type_dword, 0) }
46
- end
47
-
48
- describe registry_key('HKLM\System\CurrentControlSet\Services\LanManServer\Parameters') do
49
- it { should exist }
50
- its('NullSessionShares') { should eq [''] }
51
- end
52
-
53
- describe registry_key('HKLM\Software\Policies\Microsoft\Internet Explorer\Main') do
54
- it { should exist }
55
- its('Isolation64Bit') { should eq 1 }
56
- # check that its is case-insensitive
57
- its('isolation64bit') { should eq 1 }
58
- end
59
-
60
- describe registry_key('HKLM\System\CurrentControlSet\Control\Lsa\MSV1_0') do
61
- it { should exist }
62
- its('NTLMMinServerSec') { should eq 537_395_200 }
63
- its('NtlmMinServerSec') { should eq 537_395_200 }
64
- end
65
-
66
- describe registry_key('HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services') do
67
- it { should exist }
68
- its('MinEncryptionLevel') { should eq 3 }
69
- end
70
-
71
- # test option hash
72
- describe registry_key({
73
- hive: 'HKLM',
74
- key: 'SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services'
75
- }) do
76
- it { should exist }
77
- its('MinEncryptionLevel') { should eq 3 }
78
- end
79
-
80
- describe registry_key({
81
- hive: 'HKEY_LOCAL_MACHINE',
82
- key: 'SOFTWARE\Microsoft\SystemCertificates\Root\Certificates\8C941B34EA1EA6ED9AE2BC54CF687252B4C9B561'
83
- }) do
84
- it { should exist }
85
- end
86
-
87
- # test regular expressions in our match
88
- describe registry_key({
89
- hive: 'HKEY_LOCAL_MACHINE',
90
- key: 'SOFTWARE\Microsoft\Windows NT\CurrentVersion'
91
- }) do
92
- its('ProductName') { should match /^[a-zA-Z0-9\(\)\s]*2012\s[rR]2[a-zA-Z0-9\(\)\s]*$/ }
93
- end
94
-
95
- # verify all children via a regular expression
96
- control 'regex-test' do
97
- title "Ensure 'Always install with elevated privileges' is set to 'Disabled'"
98
- children = registry_key({
99
- hive: 'HKEY_USERS'
100
- }).children(/^S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]{3,}\\Software\\Policies\\Microsoft\\Windows\\Installer/)
101
- describe children do
102
- it { should_not eq []}
103
- end
104
- children.each { |key|
105
- describe registry_key(key) do
106
- its('AlwaysInstallElevated') { should cmp 0 }
107
- end
108
- }
109
- end
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- unless os.windows?
4
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__} because we are not on Windows.\033[0m"
5
- return
6
- end
7
-
8
- describe security_policy do
9
- its('EnableAdminAccount') { should eq 1 }
10
- its('EnableGuestAccount') { should eq 0 }
11
- end
@@ -1,128 +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
- # based on operating system we select the available service
8
- if ['centos', 'fedora', 'freebsd', 'opensuse'].include?(os[:family])
9
- # CentOS, Fedora
10
- unavailable_service = 'ssh'
11
- available_service = 'sshd'
12
- elsif ['debian'].include?(os[:family])
13
- # Debian
14
- unavailable_service = 'clamav'
15
- available_service = 'ssh'
16
- elsif ['ubuntu'].include?(os[:family])
17
- # Ubuntu
18
- unavailable_service = 'sshd'
19
- available_service = 'ssh'
20
- elsif os.windows?
21
- # Ubuntu
22
- unavailable_service = 'sshd'
23
- available_service = 'dhcp'
24
- elsif ['aix'].include?(os[:family])
25
- unavailable_service = 'clamav'
26
- available_service = 'xntpd'
27
- elsif os.solaris?
28
- unavailable_service = 'clamav'
29
- available_service = 'ssh'
30
- end
31
-
32
- describe service(unavailable_service) do
33
- it { should_not be_enabled }
34
- it { should_not be_installed }
35
- it { should_not be_running }
36
- end
37
-
38
- describe service(available_service) do
39
- it { should be_enabled }
40
- it { should be_installed }
41
- it { should be_running }
42
- end
43
-
44
- # extra test for ubuntu upstart with systemv service
45
- if os[:family] == 'ubuntu' && os[:release] == '12.04'
46
- describe upstart_service('ssh') do
47
- it { should be_enabled }
48
- it { should be_installed }
49
- it { should be_running }
50
- end
51
- end
52
-
53
- # extra tests for alt. runit on centos with runit_service
54
- if os[:family] == 'centos' && os[:release].to_i >= 6
55
- describe runit_service('running-runit-service') do
56
- it { should be_enabled }
57
- it { should be_installed }
58
- it { should be_running }
59
- end
60
-
61
- describe runit_service('not-running-runit-service') do
62
- it { should be_enabled }
63
- it { should be_installed }
64
- it { should_not be_running }
65
- end
66
-
67
- describe runit_service('not-enabled-runit-service') do
68
- it { should_not be_enabled }
69
- it { should be_installed }
70
- it { should_not be_running }
71
- end
72
-
73
- # alt. ctl location
74
- describe runit_service('running-runit-service', '/opt/chef/embedded/sbin/sv') do
75
- it { should be_enabled }
76
- it { should be_installed }
77
- it { should be_running }
78
- end
79
-
80
- describe runit_service('unknown') do
81
- it { should_not be_enabled }
82
- it { should_not be_installed }
83
- it { should_not be_running }
84
- end
85
-
86
- describe upstart_service('upstart-running') do
87
- it { should_not be_enabled }
88
- it { should be_installed }
89
- it { should be_running }
90
- end
91
-
92
- describe upstart_service('upstart-enabled-and-running') do
93
- it { should be_enabled }
94
- it { should be_installed }
95
- it { should be_running }
96
- its('type') { should be 'upstart' }
97
- its('name') { should be 'upstart-enabled-and-running' }
98
- its('description') { should be nil }
99
- end
100
-
101
- describe upstart_service('upstart-enabled-not-running') do
102
- it { should be_enabled }
103
- it { should be_installed }
104
- it { should_not be_running }
105
- end
106
-
107
- describe upstart_service('unknown') do
108
- it { should_not be_enabled }
109
- it { should_not be_installed }
110
- it { should_not be_running }
111
- its('type') { should be nil }
112
- end
113
- end
114
-
115
- # extra tests for sys-v runlevels
116
- if os[:family] == 'centos' && os[:release].to_i <= 6
117
- describe service('sshd').runlevels do
118
- its('keys') { should include(2) }
119
- end
120
-
121
- describe service('sshd').runlevels(2, 4) do
122
- it { should be_enabled }
123
- end
124
-
125
- describe service('sshd').runlevels(0, 1) do
126
- it { should_not be_enabled }
127
- end
128
- end
@@ -1,96 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if ['centos', 'redhat', 'fedora', 'opensuse', 'debian', 'ubuntu'].include?(os[:family])
4
- userinfo = {
5
- name: 'root',
6
- group: 'root',
7
- uid: 0,
8
- gid: 0,
9
- groups: ["root"],
10
- home: '/root',
11
- shell: '/bin/bash',
12
- }
13
-
14
- # different groupset for centos 5
15
- userinfo[:groups] = ["root", "bin", "daemon", "sys", "adm", "disk", "wheel"] \
16
- if os[:release].to_i == 5
17
- elsif ['freebsd'].include?(os[:family])
18
- userinfo = {
19
- name: 'root',
20
- group: 'wheel',
21
- uid: 0,
22
- gid: 0,
23
- groups: "wheel", # at least this group should be there
24
- home: '/root',
25
- shell: '/bin/csh',
26
- }
27
- elsif os.windows?
28
- userinfo = {
29
- name: 'Administrator',
30
- group: nil,
31
- uid: nil,
32
- gid: nil,
33
- groups: nil,
34
- home: nil,
35
- shell: nil,
36
- }
37
- elsif os[:family] == 'aix'
38
- userinfo = {
39
- name: 'bin',
40
- group: 'bin',
41
- uid: 2,
42
- gid: 2,
43
- groups: "adm", # at least this group should be there
44
- home: '/bin',
45
- shell: nil,
46
- #mindays: 0,
47
- #maxdays: 0,
48
- warndays: 0,
49
- }
50
- elsif os.solaris?
51
- if os[:release].to_i > 10
52
- userinfo = {
53
- name: 'root',
54
- group: 'root',
55
- uid: 0,
56
- gid: 0,
57
- groups: "sys", # at least this group should be there
58
- home: '/root',
59
- shell: '/usr/bin/bash',
60
- }
61
- else
62
- userinfo = {
63
- name: 'root',
64
- group: 'root',
65
- uid: 0,
66
- gid: 0,
67
- groups: "sys", # at least this group should be there
68
- home: '/',
69
- shell: '/sbin/sh',
70
- }
71
- end
72
- else
73
- userinfo = {}
74
- end
75
-
76
- if os.windows?
77
- describe user(userinfo[:name]) do
78
- it { should exist }
79
- end
80
- else
81
- describe user(userinfo[:name]) do
82
- it { should exist }
83
- userinfo.each do |k, v|
84
- next if k.to_sym == :name
85
-
86
- # check that the user is part of the groups
87
- if k.to_s == 'groups'
88
- # TODO: do not run those tests on docker yet
89
- its(k) { should include v } unless ENV['DOCKER']
90
- # default eq comparison
91
- else
92
- its(k) { should eq v }
93
- end
94
- end
95
- end
96
- end
@@ -1,22 +0,0 @@
1
- # encoding: utf-8
2
-
3
- return unless os.windows?
4
-
5
- # script that may have multiple lines
6
- vbscript = <<-EOH
7
- WScript.Echo "hello"
8
- EOH
9
-
10
- describe vbscript(vbscript) do
11
- its('stdout') { should eq "hello\r\n" }
12
- end
13
-
14
- # remove whitespace \r\n from stdout
15
- describe vbscript(vbscript) do
16
- its('strip') { should eq "hello" }
17
- end
18
-
19
- # ensure that we do not require a newline
20
- describe vbscript("Wscript.Stdout.Write \"hello\"") do
21
- its('stdout') { should eq 'hello' }
22
- end
@@ -1,66 +0,0 @@
1
- # encoding: utf-8
2
-
3
- unless os.windows?
4
- STDERR.puts "\033[1;33mTODO: Not running #{__FILE__} because we are not on Windows.\033[0m"
5
- return
6
- end
7
-
8
- # Get-WmiObject win32_service or Get-WmiObject -class win32_service
9
- # returns an array of service objects
10
- describe wmi({class: 'win32_service'}) do
11
- its('DisplayName') { should include 'Windows Remote Management (WS-Management)'}
12
- end
13
-
14
- # Use win32_service with filter, it returns a single service object
15
- describe wmi({
16
- class: 'win32_service',
17
- filter: "name like '%winrm%'"
18
- }) do
19
- its('Status') { should cmp 'ok' }
20
- its('State') { should cmp 'Running' }
21
- its('ExitCode') { should cmp 0 }
22
- its('DisplayName') { should eq 'Windows Remote Management (WS-Management)'}
23
- end
24
-
25
- # TODO: this works on domain controllers only
26
- describe wmi({
27
- class: 'RSOP_SecuritySettingNumeric',
28
- namespace: 'root\\rsop\\computer',
29
- filter: 'KeyName = \'MinimumPasswordAge\' And precedence=1'
30
- }) do
31
- its('Setting') { should eq 1 }
32
- end
33
-
34
- # new syntax
35
- describe wmi({
36
- namespace: 'root\rsop\computer',
37
- query: "SELECT Setting FROM RSOP_SecuritySettingBoolean WHERE KeyName='LSAAnonymousNameLookup' AND Precedence=1"
38
- }) do
39
- its('Setting') { should eq false }
40
- end
41
-
42
- describe wmi({
43
- namespace: 'root\cimv2',
44
- query: 'SELECT filesystem FROM win32_logicaldisk WHERE drivetype=3'
45
- }).params.values.join do
46
- it { should eq 'NTFS' }
47
- end
48
-
49
- # deprecated syntax
50
- describe wmi('win32_service') do
51
- its('DisplayName') { should include 'Windows Remote Management (WS-Management)'}
52
- end
53
-
54
- describe wmi('RSOP_SecuritySettingNumeric', {
55
- namespace: 'root\\rsop\\computer',
56
- filter: 'KeyName = \'MinimumPasswordAge\' And precedence=1'
57
- }) do
58
- its('Setting') { should eq 1 }
59
- its('setting') { should eq 1 }
60
- end
61
-
62
- describe wmi('win32_service', {
63
- filter: "name like '%winrm%'"
64
- }) do
65
- its('DisplayName') { should eq 'Windows Remote Management (WS-Management)'}
66
- end
@@ -1,11 +0,0 @@
1
- # encoding: utf-8
2
-
3
- if os.unix?
4
- filename = '/tmp/example.yml'
5
- else
6
- filename = 'c:/windows/temp/example.yml'
7
- end
8
-
9
- describe yaml(filename) do
10
- its(['driver','name']) { should eq('vagrant') }
11
- end
@@ -1,33 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- describe command('echo hello') do
6
- its('stdout') { should eq "hello\n" }
7
- its('stderr') { should eq '' }
8
- its('exit_status') { should eq 0 }
9
- end
10
-
11
- describe command('>&2 echo error') do
12
- its('stdout') { should eq '' }
13
- its('stderr') { should eq "error\n" }
14
- its('exit_status') { should eq 0 }
15
- end
16
-
17
- describe command('exit 123') do
18
- its('stdout') { should eq '' }
19
- its('stderr') { should eq '' }
20
- its('exit_status') { should eq 123 }
21
- end
22
-
23
- describe command('/bin/sh').exist? do
24
- it { should eq true }
25
- end
26
-
27
- describe command('sh').exist? do
28
- it { should eq true }
29
- end
30
-
31
- describe command('this is not existing').exist? do
32
- it { should eq false }
33
- end
@@ -1,45 +0,0 @@
1
- # encoding: utf-8
2
- # author: Dominik Richter
3
- # author: Christoph Hartmann
4
-
5
- describe command('echo hello') do
6
- its('stdout') { should eq "hello\n" }
7
- end
8
-
9
- describe 'describe + it + expect' do
10
- it 'should echo something' do
11
- out = rand.to_s
12
- expect(command("echo -n #{out}").stdout).to eq(out)
13
- end
14
- end
15
-
16
- describe 'describe and expect without it' do
17
- it 'will raise an error' do
18
- expect(proc{
19
- describe rand.to_s do
20
- expect(true).to eq(true)
21
- end
22
- }).to raise_error StandardError
23
- end
24
- end
25
-
26
- rule 'rule + describe' do
27
- out = rand.to_s
28
- describe command("echo -n #{out}") do
29
- its('stdout') { should eq out }
30
- end
31
- end
32
-
33
- rule 'rule + describe + it + expect' do
34
- out = rand.to_s
35
- describe 'a rule' do
36
- it 'must echo something' do
37
- expect(command("echo -n #{out}").stdout).to eq(out)
38
- end
39
- end
40
- end
41
-
42
- rule 'rule + expect only' do
43
- out = rand.to_s
44
- expect(command("echo -n #{out}").stdout).to eq(out)
45
- end