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,202 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- def shared_file_permission_tests(method_under_test)
9
- it 'returns false if the file does not exist' do
10
- resource.stubs(:exist?).returns(false)
11
- resource.send(method_under_test, nil, nil).must_equal(false)
12
- end
13
-
14
- it 'returns the value of #file_permission_granted?' do
15
- resource.stubs(:exist?).returns(true)
16
- resource.stubs(:file_permission_granted?).returns('test_result')
17
- resource.send(method_under_test, nil, nil).must_equal('test_result')
18
- end
19
- end
20
-
21
- describe Inspec::Resources::FileResource do
22
- let(:resource) { load_resource('file', '/fakepath/fakefile') }
23
-
24
- describe '#readable?' do
25
- shared_file_permission_tests(:readable?)
26
- end
27
-
28
- describe '#writable?' do
29
- shared_file_permission_tests(:writable?)
30
- end
31
-
32
- describe '#executable?' do
33
- shared_file_permission_tests(:executable?)
34
- end
35
-
36
- describe '#basename' do
37
- it 'returns the basename' do
38
- resource.stubs(:basename).returns('fakefile')
39
- resource.basename.must_equal('fakefile')
40
- end
41
- end
42
-
43
- describe '#to_s' do
44
- it 'returns a properly formatted string' do
45
- resource.to_s.must_equal('File /fakepath/fakefile')
46
- end
47
- end
48
-
49
- describe '#file_permission_granted?' do
50
- describe 'when not on a unix OS' do
51
- it 'raises an exception' do
52
- MockLoader.mock_os(resource, :windows)
53
- proc { resource.send(:file_permission_granted?, 'flag', nil, nil) }.must_raise(RuntimeError)
54
- end
55
- end
56
-
57
- describe 'when on a unix OS' do
58
- before do
59
- MockLoader.mock_os(resource, :centos7)
60
- end
61
-
62
- describe 'when no user is provided' do
63
- it 'checks file permission by mask' do
64
- resource.expects(:check_file_permission_by_mask).with('usergroup', 'flag')
65
- resource.send(:file_permission_granted?, 'flag', 'usergroup', nil)
66
- end
67
- end
68
-
69
- describe 'when a user is provided' do
70
- it 'checks file permission by user' do
71
- resource.expects(:check_file_permission_by_user).with('user', 'flag')
72
- resource.send(:file_permission_granted?, 'flag', nil, 'user')
73
- end
74
- end
75
- end
76
- end
77
-
78
- describe '#check_file_permission_by_mask' do
79
- describe 'when no mask is returned' do
80
- let(:file) { stub(unix_mode_mask: nil) }
81
-
82
- it 'raises an exception' do
83
- file = stub(unix_mode_mask: nil)
84
- resource.stubs(:file).returns(file)
85
- proc { resource.send(:check_file_permission_by_mask, 'usergroup', 'flag') }.must_raise(RuntimeError)
86
- end
87
- end
88
-
89
- describe 'when a mask is returned' do
90
- describe 'when the bitwise AND returns a non-zero' do
91
- let(:file) { stub(unix_mode_mask: 292, mode: 420) }
92
- it 'returns true' do
93
- resource.stubs(:file).returns(file)
94
- resource.send(:check_file_permission_by_mask, 'usergroup', 'flag').must_equal(true)
95
- end
96
- end
97
-
98
- describe 'when the bitwise AND returns zero' do
99
- let(:file) { stub(unix_mode_mask: 73, mode: 420) }
100
- it 'returns false' do
101
- resource.stubs(:file).returns(file)
102
- resource.send(:check_file_permission_by_mask, 'usergroup', 'flag').must_equal(false)
103
- end
104
- end
105
- end
106
- end
107
-
108
- describe 'check_file_permission_by_user' do
109
- describe 'when on linux' do
110
- before do
111
- MockLoader.mock_os(resource, :centos7)
112
- end
113
-
114
- it 'executes a properly formatted command' do
115
- MockLoader.mock_command(resource,
116
- 'su -s /bin/sh -c "test -flag /fakepath/fakefile" user',
117
- exit_status: 0)
118
- resource.send(:check_file_permission_by_user, 'user', 'flag')
119
- end
120
-
121
- it 'returns true when the cmd exits 0' do
122
- MockLoader.mock_command(resource, 'su -s /bin/sh -c "test -flag /fakepath/fakefile" user', exit_status: 0)
123
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal(true)
124
- end
125
-
126
- it 'returns false when the cmd exits non-zero' do
127
- MockLoader.mock_command(resource, 'su -s /bin/sh -c "test -flag /fakepath/fakefile" user', exit_status: 1)
128
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal(false)
129
- end
130
- end
131
-
132
- describe 'when on freebsd' do
133
- before do
134
- MockLoader.mock_os(resource, :freebsd10)
135
- end
136
-
137
- it 'executes a properly formatted command' do
138
- MockLoader.mock_command(resource, 'sudo -u user test -flag /fakepath/fakefile', exit_status: 0)
139
- resource.send(:check_file_permission_by_user, 'user', 'flag')
140
- end
141
-
142
- it 'returns true when the cmd exits 0' do
143
- MockLoader.mock_command(resource, 'sudo -u user test -flag /fakepath/fakefile', exit_status: 0)
144
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal(true)
145
- end
146
-
147
- it 'returns false when the cmd exits non-zero' do
148
- MockLoader.mock_command(resource, 'sudo -u user test -flag /fakepath/fakefile', exit_status: 1)
149
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal(false)
150
- end
151
- end
152
-
153
- describe 'when on hpux' do
154
- before do
155
- MockLoader.mock_os(resource, :hpux)
156
- end
157
-
158
- it 'executes a properly formatted command' do
159
- MockLoader.mock_command(resource, "su user -c \"test -flag /fakepath/fakefile\"", exit_status: 0)
160
- resource.send(:check_file_permission_by_user, 'user', 'flag')
161
- end
162
-
163
- it 'returns true when the cmd exits 0' do
164
- MockLoader.mock_command(resource, "su user -c \"test -flag /fakepath/fakefile\"", exit_status: 0)
165
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal(true)
166
- end
167
-
168
- it 'returns false when the cmd exits non-zero' do
169
- MockLoader.mock_command(resource, "su user -c \"test -flag /fakepath/fakefile\"", exit_status: 1)
170
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal(false)
171
- end
172
- end
173
-
174
- describe 'when not on linux or freebsd' do
175
- before do
176
- MockLoader.mock_os(resource, :undefined)
177
- end
178
-
179
- it 'returns an error string' do
180
- resource.send(:check_file_permission_by_user, 'user', 'flag').must_equal('The `file` resource does not support `by_user` on your OS.')
181
- end
182
- end
183
- end
184
-
185
- describe '#usergroup_for' do
186
- it 'returns "other" if "others" is provided' do
187
- resource.send(:usergroup_for, 'others', nil).must_equal('other')
188
- end
189
-
190
- it 'returns "all" if no usergroup or user is specified' do
191
- resource.send(:usergroup_for, nil, nil).must_equal('all')
192
- end
193
-
194
- it 'returns nil if the usergroup is nil and a user is specified' do
195
- resource.send(:usergroup_for, nil, 'user').must_equal(nil)
196
- end
197
-
198
- it 'returns the passed-in usergroup if usergroup is not nil and user is nil' do
199
- resource.send(:usergroup_for, 'mygroup', nil).must_equal('mygroup')
200
- end
201
- end
202
- end
@@ -1,20 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::Gem' do
9
- it 'verify gem package detail parsing' do
10
- resource = load_resource('gem', 'rubocop')
11
- pkg = {
12
- name: 'rubocop',
13
- version: '0.33.0',
14
- type: 'gem',
15
- installed: true,
16
- }
17
- _(resource.installed?).must_equal true
18
- _(resource.info).must_equal pkg
19
- end
20
- end
@@ -1,96 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::Group' do
9
-
10
- # ubuntu 14.04
11
- it 'verify group on ubuntu' do
12
- resource = MockLoader.new(:ubuntu1404).load_resource('group', 'root')
13
- _(resource.exists?).must_equal true
14
- _(resource.gid).must_equal 0
15
- _(resource.has_gid?(0)).must_equal true
16
- end
17
-
18
- it 'verify group on ubuntu with UPPER CASE' do
19
- resource = MockLoader.new(:ubuntu1404).load_resource('group', 'ROOT')
20
- _(resource.exists?).must_equal true
21
- _(resource.gid).must_equal 0
22
- _(resource.has_gid?(0)).must_equal true
23
- end
24
-
25
- # ubuntu with non-existent group
26
- it 'verify group on ubuntu' do
27
- resource = MockLoader.new(:ubuntu1404).load_resource('group', 'nogroup')
28
- _(resource.exists?).must_equal false
29
- _(resource.gid).must_equal nil
30
- _(resource.has_gid?(0)).must_equal false
31
- end
32
-
33
- # mac
34
- it 'verify group on mac' do
35
- resource = MockLoader.new(:osx104).load_resource('group', 'root')
36
- _(resource.exists?).must_equal true
37
- _(resource.gid).must_equal 0
38
- _(resource.has_gid?(0)).must_equal true
39
- end
40
-
41
- # freebsd
42
- it 'verify group on freebsd' do
43
- resource = MockLoader.new(:freebsd10).load_resource('group', 'root')
44
- _(resource.exists?).must_equal true
45
- _(resource.gid).must_equal 0
46
- _(resource.has_gid?(0)).must_equal true
47
- end
48
-
49
- # windows with local group
50
- it 'verify group on windows' do
51
- resource = MockLoader.new(:windows).load_resource('group', 'Administrators')
52
- _(resource.exists?).must_equal true
53
- _(resource.gid).must_equal nil
54
- _(resource.has_gid?(0)).must_equal false
55
- end
56
-
57
- it 'verify group on windows' do
58
- resource = MockLoader.new(:windows).load_resource('group', 'Administrators', 'WIN-K0AKLED332V')
59
- _(resource.exists?).must_equal true
60
- _(resource.gid).must_equal nil
61
- _(resource.has_gid?(0)).must_equal false
62
- end
63
-
64
- # windows with domain group
65
- it 'verify domain group on windows' do
66
- resource = MockLoader.new(:windows).load_resource('group', 'Domain Admins', 'EXAMPLE')
67
- _(resource.exists?).must_equal true
68
- _(resource.gid).must_equal nil
69
- _(resource.has_gid?(0)).must_equal false
70
- end
71
-
72
- # windows with domain group
73
- it 'verify domain group on windows wiht lower case' do
74
- resource = MockLoader.new(:windows).load_resource('group', 'domain admins', 'example')
75
- _(resource.exists?).must_equal true
76
- _(resource.gid).must_equal nil
77
- _(resource.has_gid?(0)).must_equal false
78
- end
79
-
80
- # windows non-existent group
81
- it 'verify non-existing group on windows' do
82
- resource = MockLoader.new(:windows).load_resource('group', 'dhcp')
83
- _(resource.exists?).must_equal false
84
- _(resource.gid).must_equal nil
85
- _(resource.has_gid?(0)).must_equal false
86
- end
87
-
88
- # undefined
89
- it 'verify package handling on unsupported os' do
90
- resource = MockLoader.new(:undefined).load_resource('group', 'root')
91
- _(resource.exists?).must_equal false
92
- _(resource.gid).must_equal nil
93
- _(resource.has_gid?(0)).must_equal false
94
- end
95
-
96
- end
@@ -1,29 +0,0 @@
1
- # encoding: utf-8
2
- # author: Thomas Cate
3
-
4
- require 'helper'
5
- require 'inspec/resource'
6
-
7
- describe 'Inspec::Resources::GrubConfig' do
8
-
9
- it 'verify kernel include' do
10
- resource = MockLoader.new(:centos6).load_resource('grub_conf')
11
- _(resource.kernel).must_be_kind_of Array
12
- end
13
-
14
- it 'verify initrd include' do
15
- resource = MockLoader.new(:centos6).load_resource('grub_conf')
16
- _(resource.initrd).must_be_kind_of String
17
- end
18
-
19
- it 'verify default' do
20
- resource = MockLoader.new(:centos6).load_resource('grub_conf')
21
- _(resource.default).must_equal '0'
22
- end
23
-
24
- it 'verify timeout' do
25
- resource = MockLoader.new(:centos6).load_resource('grub_conf')
26
- _(resource.timeout).must_equal '5'
27
- end
28
-
29
- end
@@ -1,38 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::Host' do
9
-
10
- it 'check host on ubuntu' do
11
- resource = MockLoader.new(:ubuntu1404).load_resource('host', 'example.com')
12
- _(resource.resolvable?).must_equal true
13
- _(resource.reachable?).must_equal true
14
- _(resource.ipaddress).must_equal ['2606:2800:220:1:248:1893:25c8:1946']
15
- end
16
-
17
- it 'check host on centos 7' do
18
- resource = MockLoader.new(:centos7).load_resource('host', 'example.com')
19
- _(resource.resolvable?).must_equal true
20
- _(resource.reachable?).must_equal true
21
- _(resource.ipaddress).must_equal ['2606:2800:220:1:248:1893:25c8:1946']
22
- end
23
-
24
- it 'check host on windows' do
25
- resource = MockLoader.new(:windows).load_resource('host', 'microsoft.com')
26
- _(resource.resolvable?).must_equal true
27
- _(resource.reachable?).must_equal false
28
- _(resource.ipaddress).must_equal ['134.170.185.46', '134.170.188.221']
29
- end
30
-
31
- it 'check host on unsupported os' do
32
- resource = MockLoader.new(:undefined).load_resource('host', 'example.com')
33
- _(resource.resolvable?).must_equal false
34
- _(resource.reachable?).must_equal false
35
- _(resource.ipaddress).must_equal nil
36
- end
37
-
38
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::InetdConf' do
9
- it 'verify limits.conf config parsing' do
10
- resource = load_resource('inetd_conf')
11
- _(resource.send('shell')).must_equal nil
12
- _(resource.send('login')).must_equal nil
13
- _(resource.send('ftp')).must_equal %w{stream tcp nowait root /usr/sbin/in.ftpd in.ftpd}
14
- end
15
- end
@@ -1,16 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::Ini' do
9
-
10
- it 'check ini parsing on ubuntu' do
11
- resource = MockLoader.new(:ubuntu1404).load_resource('ini', 'rootwrap.conf')
12
- result = {"DEFAULT"=>{"filters_path"=>"/etc/cinder/rootwrap.d,/usr/share/cinder/rootwrap", "exec_dirs"=>"/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin"}}
13
- _(resource.params).must_equal result
14
- _(resource.value(['DEFAULT','exec_dirs'])).must_equal '/sbin,/usr/sbin,/bin,/usr/bin,/usr/local/bin,/usr/local/sbin'
15
- end
16
- end
@@ -1,54 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::Interface' do
9
-
10
- # ubuntu 14.04
11
- it 'verify interface on ubuntu' do
12
- resource = MockLoader.new(:ubuntu1404).load_resource('interface', 'eth0')
13
- _(resource.exists?).must_equal true
14
- _(resource.up?).must_equal true
15
- _(resource.speed).must_equal 10000
16
- end
17
-
18
- it 'verify invalid interface on ubuntu' do
19
- resource = MockLoader.new(:ubuntu1404).load_resource('interface', 'eth1')
20
- _(resource.exists?).must_equal false
21
- _(resource.up?).must_equal false
22
- _(resource.speed).must_equal nil
23
- end
24
-
25
- it 'verify interface on windows' do
26
- resource = MockLoader.new(:windows).load_resource('interface', 'ethernet0')
27
- _(resource.exists?).must_equal true
28
- _(resource.up?).must_equal false
29
- _(resource.speed).must_equal 0
30
- end
31
-
32
- it 'verify interface on windows' do
33
- resource = MockLoader.new(:windows).load_resource('interface', 'vEthernet (Intel(R) PRO 1000 MT Network Connection - Virtual Switch)')
34
- _(resource.exists?).must_equal true
35
- _(resource.up?).must_equal true
36
- _(resource.speed).must_equal 10000000
37
- end
38
-
39
- it 'verify invalid interface on windows' do
40
- resource = MockLoader.new(:windows).load_resource('interface', 'eth1')
41
- _(resource.exists?).must_equal false
42
- _(resource.up?).must_equal false
43
- _(resource.speed).must_equal nil
44
- end
45
-
46
- # undefined
47
- it 'verify interface on unsupported os' do
48
- resource = MockLoader.new(:undefined).load_resource('interface', 'eth0')
49
- _(resource.exists?).must_equal false
50
- _(resource.up?).must_equal false
51
- _(resource.speed).must_equal nil
52
- end
53
-
54
- end
@@ -1,35 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::Iptables' do
9
-
10
- # ubuntu 14.04
11
- it 'verify iptables on ubuntu' do
12
- resource = MockLoader.new(:ubuntu1404).load_resource('iptables')
13
- _(resource.has_rule?('-P OUTPUT ACCEPT')).must_equal true
14
- _(resource.has_rule?('-P OUTPUT DROP')).must_equal false
15
- end
16
-
17
- it 'verify iptables with comments on ubuntu' do
18
- resource = MockLoader.new(:ubuntu1404).load_resource('iptables')
19
- _(resource.has_rule?('-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m state --state NEW -m comment --comment "http like its 1990" -j ACCEPT')).must_equal true
20
- end
21
-
22
- it 'verify iptables on windows' do
23
- resource = MockLoader.new(:windows).load_resource('iptables')
24
- _(resource.has_rule?('-P OUTPUT ACCEPT')).must_equal false
25
- _(resource.has_rule?('-P OUTPUT DROP')).must_equal false
26
- end
27
-
28
- # undefined
29
- it 'verify iptables on unsupported os' do
30
- resource = MockLoader.new(:undefined).load_resource('iptables')
31
- _(resource.has_rule?('-P OUTPUT ACCEPT')).must_equal false
32
- _(resource.has_rule?('-P OUTPUT DROP')).must_equal false
33
- end
34
-
35
- end
@@ -1,36 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::JSON' do
9
- describe 'when loading a valid json' do
10
- let (:resource) { load_resource('json', 'policyfile.lock.json') }
11
-
12
- it 'gets params as a hashmap' do
13
- _(resource.params).must_be_kind_of Hash
14
- end
15
-
16
- it 'retrieves nil if a param is missing' do
17
- _(resource.params['missing']).must_be_nil
18
- end
19
-
20
- it 'retrieves params by name' do
21
- _(resource.send('name')).must_equal 'demo'
22
- end
23
-
24
- it 'retrieves an array by name' do
25
- _(resource.send('run_list')).must_equal %w{a b}
26
- end
27
-
28
- it 'doesnt resolve dot-notation names' do
29
- _(resource.send('x.y.z')).must_be_nil
30
- end
31
-
32
- it 'doesnt resolve symbol-notation names' do
33
- _(resource.send(:'x.y.z')).must_be_nil
34
- end
35
- end
36
- end
@@ -1,23 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::KernelModule' do
9
- it 'verify kernel_module parsing' do
10
- resource = load_resource('kernel_module', 'bridge')
11
- _(resource.loaded?).must_equal true
12
- end
13
-
14
- it 'verify kernel_module parsing' do
15
- resource = load_resource('kernel_module', 'bridges')
16
- _(resource.loaded?).must_equal false
17
- end
18
-
19
- it 'verify kernel_module parsing' do
20
- resource = load_resource('kernel_module', 'dhcp')
21
- _(resource.loaded?).must_equal false
22
- end
23
- end
@@ -1,13 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::KernelParameter' do
9
- it 'verify kernel_parameter parsing' do
10
- resource = load_resource('kernel_parameter', 'net.ipv4.conf.all.forwarding')
11
- _(resource.value).must_equal 1
12
- end
13
- end
@@ -1,14 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::LimitsConf' do
9
- it 'verify limits.conf config parsing' do
10
- resource = load_resource('limits_conf')
11
- _(resource.send('*')).must_equal [['soft', 'core', '0'], ['hard', 'rss', '10000']]
12
- _(resource.send('ftp')).must_equal [["hard", "nproc", "0"]]
13
- end
14
- end
@@ -1,16 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe 'Inspec::Resources::LoginDef' do
9
- it 'verify login.def config parsing' do
10
- resource = load_resource('login_defs')
11
- _(resource.UMASK).must_equal '022'
12
- _(resource.PASS_MIN_DAYS).must_equal '0'
13
- _(resource.PASS_WARN_AGE).must_equal '7'
14
- _(resource.USERDEL_CMD).must_equal nil
15
- end
16
- end
@@ -1,26 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
- require 'inspec/resource'
7
-
8
- describe Inspec::Resources::FileResource do
9
- let(:root_resource) { load_resource('mount', '/') }
10
-
11
- it 'parses the mount data properly' do
12
- root_resource.send(:device).must_equal('/dev/xvda1')
13
- root_resource.send(:type).must_equal('ext4')
14
- root_resource.send(:options).must_equal(['rw','discard'])
15
- root_resource.send(:count).must_equal(1)
16
- end
17
-
18
- let(:iso_resource) { load_resource('mount', '/mnt/iso-disk') }
19
-
20
- it 'parses the mount data properly' do
21
- iso_resource.send(:device).must_equal('/root/alpine-3.3.0-x86_64_2.iso')
22
- iso_resource.send(:type).must_equal('iso9660')
23
- iso_resource.send(:options).must_equal(['ro'])
24
- iso_resource.send(:count).must_equal(2)
25
- end
26
- end
@@ -1,14 +0,0 @@
1
- # encoding: utf-8
2
- # author: Christoph Hartmann
3
- # author: Dominik Richter
4
-
5
- require 'helper'
6
-
7
- describe 'Inspec::Resources::MysqlConf' do
8
- it 'verify mysql.conf config parsing' do
9
- resource = load_resource('mysql_conf', '/etc/mysql/my.cnf')
10
- _(resource.client['port']).must_equal '3306'
11
- _(resource.mysqld['user']).must_equal 'mysql'
12
- _(resource.mysqld['key_buffer_size']).must_equal '16M'
13
- end
14
- end