inspec 4.3.2 → 4.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +36 -38
  3. data/README.md +37 -21
  4. data/etc/deprecations.json +10 -0
  5. data/etc/plugin_filters.json +8 -0
  6. data/inspec.gemspec +38 -39
  7. data/lib/bundles/inspec-compliance/api.rb +1 -1
  8. data/lib/bundles/inspec-compliance/configuration.rb +1 -1
  9. data/lib/bundles/inspec-compliance/http.rb +1 -1
  10. data/lib/bundles/inspec-compliance/support.rb +1 -1
  11. data/lib/bundles/inspec-compliance/target.rb +1 -1
  12. data/lib/bundles/inspec-supermarket.rb +3 -7
  13. data/lib/bundles/inspec-supermarket/api.rb +10 -13
  14. data/lib/bundles/inspec-supermarket/cli.rb +12 -15
  15. data/lib/bundles/inspec-supermarket/target.rb +7 -11
  16. data/lib/fetchers/git.rb +14 -15
  17. data/lib/fetchers/local.rb +6 -10
  18. data/lib/fetchers/mock.rb +3 -5
  19. data/lib/fetchers/url.rb +42 -44
  20. data/lib/inspec.rb +23 -24
  21. data/lib/inspec/archive/tar.rb +2 -6
  22. data/lib/inspec/archive/zip.rb +3 -7
  23. data/lib/inspec/backend.rb +8 -9
  24. data/lib/inspec/base_cli.rb +64 -65
  25. data/lib/inspec/cached_fetcher.rb +2 -3
  26. data/lib/inspec/cli.rb +136 -97
  27. data/lib/inspec/config.rb +71 -61
  28. data/lib/inspec/control_eval_context.rb +22 -18
  29. data/lib/inspec/dependencies/cache.rb +2 -3
  30. data/lib/inspec/dependencies/dependency_set.rb +2 -3
  31. data/lib/inspec/dependencies/lockfile.rb +8 -9
  32. data/lib/inspec/dependencies/requirement.rb +7 -8
  33. data/lib/inspec/dependencies/resolver.rb +5 -7
  34. data/lib/inspec/describe.rb +2 -6
  35. data/lib/inspec/dist.rb +20 -0
  36. data/lib/inspec/dsl.rb +4 -7
  37. data/lib/inspec/dsl_shared.rb +1 -2
  38. data/lib/inspec/env_printer.rb +11 -12
  39. data/lib/inspec/errors.rb +0 -4
  40. data/lib/inspec/exceptions.rb +0 -1
  41. data/lib/inspec/expect.rb +5 -8
  42. data/lib/inspec/fetcher.rb +7 -10
  43. data/lib/inspec/file_provider.rb +24 -24
  44. data/lib/inspec/formatters.rb +3 -3
  45. data/lib/inspec/formatters/base.rb +8 -8
  46. data/lib/inspec/globals.rb +2 -2
  47. data/lib/inspec/impact.rb +5 -7
  48. data/lib/inspec/input_registry.rb +84 -33
  49. data/lib/inspec/library_eval_context.rb +3 -6
  50. data/lib/inspec/log.rb +1 -5
  51. data/lib/inspec/metadata.rb +17 -16
  52. data/lib/inspec/method_source.rb +5 -9
  53. data/lib/inspec/objects.rb +10 -12
  54. data/lib/inspec/objects/control.rb +7 -9
  55. data/lib/inspec/objects/describe.rb +9 -11
  56. data/lib/inspec/objects/each_loop.rb +1 -3
  57. data/lib/inspec/objects/input.rb +24 -26
  58. data/lib/inspec/objects/list.rb +4 -6
  59. data/lib/inspec/objects/or_test.rb +2 -4
  60. data/lib/inspec/objects/ruby_helper.rb +3 -5
  61. data/lib/inspec/objects/tag.rb +0 -2
  62. data/lib/inspec/objects/test.rb +9 -11
  63. data/lib/inspec/objects/value.rb +3 -5
  64. data/lib/inspec/plugin/v1.rb +2 -2
  65. data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
  66. data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
  67. data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
  68. data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
  69. data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
  70. data/lib/inspec/plugin/v1/plugins.rb +15 -19
  71. data/lib/inspec/plugin/v1/registry.rb +0 -4
  72. data/lib/inspec/plugin/v2.rb +8 -8
  73. data/lib/inspec/plugin/v2/activator.rb +1 -1
  74. data/lib/inspec/plugin/v2/config_file.rb +6 -6
  75. data/lib/inspec/plugin/v2/filter.rb +13 -13
  76. data/lib/inspec/plugin/v2/installer.rb +36 -24
  77. data/lib/inspec/plugin/v2/loader.rb +28 -28
  78. data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
  79. data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
  80. data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
  81. data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
  82. data/lib/inspec/plugin/v2/registry.rb +7 -7
  83. data/lib/inspec/polyfill.rb +0 -3
  84. data/lib/inspec/profile.rb +55 -63
  85. data/lib/inspec/profile_context.rb +27 -30
  86. data/lib/inspec/profile_vendor.rb +6 -9
  87. data/lib/inspec/reporters.rb +24 -24
  88. data/lib/inspec/reporters/automate.rb +17 -19
  89. data/lib/inspec/reporters/base.rb +1 -1
  90. data/lib/inspec/reporters/cli.rb +88 -91
  91. data/lib/inspec/reporters/json.rb +2 -4
  92. data/lib/inspec/reporters/json_automate.rb +1 -3
  93. data/lib/inspec/reporters/json_min.rb +1 -3
  94. data/lib/inspec/reporters/junit.rb +26 -28
  95. data/lib/inspec/reporters/yaml.rb +1 -3
  96. data/lib/inspec/require_loader.rb +0 -4
  97. data/lib/inspec/resource.rb +4 -125
  98. data/lib/inspec/resources.rb +121 -0
  99. data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
  100. data/lib/{resources → inspec/resources}/apache.rb +13 -14
  101. data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
  102. data/lib/{resources → inspec/resources}/apt.rb +17 -17
  103. data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
  104. data/lib/{resources → inspec/resources}/auditd.rb +62 -64
  105. data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
  106. data/lib/{resources → inspec/resources}/bash.rb +6 -8
  107. data/lib/{resources → inspec/resources}/bond.rb +15 -14
  108. data/lib/{resources → inspec/resources}/bridge.rb +8 -8
  109. data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
  110. data/lib/{resources → inspec/resources}/command.rb +11 -10
  111. data/lib/{resources → inspec/resources}/cpan.rb +12 -12
  112. data/lib/{resources → inspec/resources}/cran.rb +9 -9
  113. data/lib/{resources → inspec/resources}/crontab.rb +47 -48
  114. data/lib/{resources → inspec/resources}/csv.rb +5 -5
  115. data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
  116. data/lib/{resources → inspec/resources}/directory.rb +5 -7
  117. data/lib/{resources → inspec/resources}/docker.rb +63 -63
  118. data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
  119. data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
  120. data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
  121. data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
  122. data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
  123. data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
  124. data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
  125. data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
  126. data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
  127. data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
  128. data/lib/{resources → inspec/resources}/file.rb +80 -79
  129. data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
  130. data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
  131. data/lib/{resources → inspec/resources}/gem.rb +12 -12
  132. data/lib/{resources → inspec/resources}/groups.rb +28 -27
  133. data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
  134. data/lib/{resources → inspec/resources}/host.rb +31 -29
  135. data/lib/{resources → inspec/resources}/http.rb +24 -24
  136. data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
  137. data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
  138. data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
  139. data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
  140. data/lib/{resources → inspec/resources}/ini.rb +7 -8
  141. data/lib/{resources → inspec/resources}/interface.rb +30 -30
  142. data/lib/{resources → inspec/resources}/iptables.rb +8 -8
  143. data/lib/{resources → inspec/resources}/json.rb +8 -10
  144. data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
  145. data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
  146. data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
  147. data/lib/{resources → inspec/resources}/ksh.rb +6 -8
  148. data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
  149. data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
  150. data/lib/{resources → inspec/resources}/mount.rb +6 -8
  151. data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
  152. data/lib/inspec/resources/mysql.rb +81 -0
  153. data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
  154. data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
  155. data/lib/{resources → inspec/resources}/nginx.rb +16 -17
  156. data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
  157. data/lib/{resources → inspec/resources}/npm.rb +9 -10
  158. data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
  159. data/lib/{resources → inspec/resources}/oneget.rb +8 -8
  160. data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
  161. data/lib/{resources → inspec/resources}/os.rb +6 -8
  162. data/lib/{resources → inspec/resources}/os_env.rb +11 -12
  163. data/lib/{resources → inspec/resources}/package.rb +66 -65
  164. data/lib/{resources → inspec/resources}/packages.rb +13 -13
  165. data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
  166. data/lib/{resources → inspec/resources}/passwd.rb +18 -19
  167. data/lib/{resources → inspec/resources}/pip.rb +19 -19
  168. data/lib/{resources → inspec/resources}/platform.rb +9 -11
  169. data/lib/{resources → inspec/resources}/port.rb +134 -136
  170. data/lib/{resources → inspec/resources}/postgres.rb +40 -32
  171. data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
  172. data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
  173. data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
  174. data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
  175. data/lib/{resources → inspec/resources}/powershell.rb +17 -13
  176. data/lib/{resources → inspec/resources}/processes.rb +29 -29
  177. data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
  178. data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
  179. data/lib/inspec/resources/script.rb +1 -0
  180. data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
  181. data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
  182. data/lib/{resources → inspec/resources}/service.rb +74 -75
  183. data/lib/{resources → inspec/resources}/shadow.rb +44 -45
  184. data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
  185. data/lib/{resources → inspec/resources}/ssl.rb +28 -29
  186. data/lib/inspec/resources/sys_info.rb +30 -0
  187. data/lib/{resources → inspec/resources}/toml.rb +5 -7
  188. data/lib/{resources → inspec/resources}/users.rb +65 -65
  189. data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
  190. data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
  191. data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
  192. data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
  193. data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
  194. data/lib/{resources → inspec/resources}/wmi.rb +7 -8
  195. data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
  196. data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
  197. data/lib/{resources → inspec/resources}/xml.rb +7 -7
  198. data/lib/{resources → inspec/resources}/yaml.rb +5 -6
  199. data/lib/{resources → inspec/resources}/yum.rb +10 -10
  200. data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
  201. data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
  202. data/lib/inspec/rspec_extensions.rb +24 -8
  203. data/lib/inspec/rule.rb +14 -15
  204. data/lib/inspec/runner.rb +28 -28
  205. data/lib/inspec/runner_mock.rb +1 -5
  206. data/lib/inspec/runner_rspec.rb +18 -20
  207. data/lib/inspec/runtime_profile.rb +2 -5
  208. data/lib/inspec/schema.rb +142 -143
  209. data/lib/inspec/secrets.rb +3 -7
  210. data/lib/inspec/secrets/yaml.rb +3 -5
  211. data/lib/inspec/shell.rb +11 -15
  212. data/lib/inspec/shell_detector.rb +6 -7
  213. data/lib/inspec/source_reader.rb +4 -8
  214. data/lib/inspec/ui.rb +33 -39
  215. data/lib/inspec/ui_table_helper.rb +12 -0
  216. data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
  217. data/lib/{utils → inspec/utils}/convert.rb +0 -4
  218. data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
  219. data/lib/inspec/utils/deprecation.rb +6 -0
  220. data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
  221. data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
  222. data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
  223. data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
  224. data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
  225. data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
  226. data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
  227. data/lib/{utils → inspec/utils}/filter.rb +30 -33
  228. data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
  229. data/lib/{utils → inspec/utils}/find_files.rb +9 -12
  230. data/lib/{utils → inspec/utils}/hash.rb +1 -5
  231. data/lib/inspec/utils/json_log.rb +15 -0
  232. data/lib/inspec/utils/latest_version.rb +13 -0
  233. data/lib/{utils → inspec/utils}/modulator.rb +0 -3
  234. data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
  235. data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
  236. data/lib/{utils → inspec/utils}/parser.rb +45 -45
  237. data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
  238. data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
  239. data/lib/{utils → inspec/utils}/spdx.rb +1 -4
  240. data/lib/{utils → inspec/utils}/spdx.txt +0 -0
  241. data/lib/inspec/utils/telemetry.rb +3 -3
  242. data/lib/inspec/utils/telemetry/collector.rb +30 -9
  243. data/lib/inspec/utils/telemetry/data_series.rb +3 -1
  244. data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
  245. data/lib/inspec/version.rb +1 -1
  246. data/lib/matchers/matchers.rb +22 -25
  247. data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
  248. data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
  249. data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
  250. data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +12 -11
  251. data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
  252. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
  253. data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
  254. data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
  255. data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
  256. data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
  257. data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
  258. data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
  259. data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +12 -14
  260. data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +39 -41
  261. data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +64 -64
  262. data/lib/plugins/inspec-compliance/test/unit/api_test.rb +157 -156
  263. data/lib/plugins/inspec-compliance/test/unit/target_test.rb +85 -85
  264. data/lib/plugins/inspec-habitat/Berksfile +2 -2
  265. data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
  266. data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
  267. data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
  268. data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
  269. data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
  270. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +1 -1
  271. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +8 -8
  272. data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +17 -17
  273. data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +9 -8
  274. data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +14 -14
  275. data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +4 -4
  276. data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +42 -41
  277. data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
  278. data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
  279. data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
  280. data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
  281. data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
  282. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
  283. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
  284. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
  285. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
  286. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
  287. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
  288. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +5 -5
  289. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +1 -3
  290. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +2 -2
  291. data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +2 -2
  292. data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +10 -11
  293. data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +4 -5
  294. data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +10 -11
  295. data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
  296. data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +51 -50
  297. data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +35 -33
  298. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
  299. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
  300. data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
  301. data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +1 -1
  302. data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +281 -271
  303. data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +41 -41
  304. data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +25 -6
  305. data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
  306. data/lib/resource_support/aws.rb +67 -67
  307. data/lib/resource_support/aws/aws_plural_resource_mixin.rb +4 -1
  308. data/lib/resource_support/aws/aws_resource_mixin.rb +4 -3
  309. data/lib/resource_support/aws/aws_singular_resource_mixin.rb +4 -1
  310. data/lib/resources/aws/aws_billing_report.rb +15 -8
  311. data/lib/resources/aws/aws_billing_reports.rb +10 -7
  312. data/lib/resources/aws/aws_cloudtrail_trail.rb +9 -5
  313. data/lib/resources/aws/aws_cloudtrail_trails.rb +9 -5
  314. data/lib/resources/aws/aws_cloudwatch_alarm.rb +9 -5
  315. data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +12 -8
  316. data/lib/resources/aws/aws_config_delivery_channel.rb +13 -9
  317. data/lib/resources/aws/aws_config_recorder.rb +10 -6
  318. data/lib/resources/aws/aws_ebs_volume.rb +12 -8
  319. data/lib/resources/aws/aws_ebs_volumes.rb +9 -5
  320. data/lib/resources/aws/aws_ec2_instance.rb +14 -11
  321. data/lib/resources/aws/aws_ec2_instances.rb +9 -5
  322. data/lib/resources/aws/aws_ecs_cluster.rb +11 -7
  323. data/lib/resources/aws/aws_eks_cluster.rb +13 -9
  324. data/lib/resources/aws/aws_elb.rb +9 -5
  325. data/lib/resources/aws/aws_elbs.rb +9 -5
  326. data/lib/resources/aws/aws_flow_log.rb +17 -13
  327. data/lib/resources/aws/aws_iam_access_key.rb +15 -11
  328. data/lib/resources/aws/aws_iam_access_keys.rb +19 -15
  329. data/lib/resources/aws/aws_iam_group.rb +9 -5
  330. data/lib/resources/aws/aws_iam_groups.rb +9 -5
  331. data/lib/resources/aws/aws_iam_password_policy.rb +13 -10
  332. data/lib/resources/aws/aws_iam_policies.rb +9 -5
  333. data/lib/resources/aws/aws_iam_policy.rb +16 -12
  334. data/lib/resources/aws/aws_iam_role.rb +9 -5
  335. data/lib/resources/aws/aws_iam_root_user.rb +12 -8
  336. data/lib/resources/aws/aws_iam_user.rb +12 -12
  337. data/lib/resources/aws/aws_iam_users.rb +10 -10
  338. data/lib/resources/aws/aws_kms_key.rb +12 -8
  339. data/lib/resources/aws/aws_kms_keys.rb +9 -5
  340. data/lib/resources/aws/aws_rds_instance.rb +11 -8
  341. data/lib/resources/aws/aws_route_table.rb +11 -7
  342. data/lib/resources/aws/aws_route_tables.rb +10 -6
  343. data/lib/resources/aws/aws_s3_bucket.rb +14 -11
  344. data/lib/resources/aws/aws_s3_bucket_object.rb +12 -9
  345. data/lib/resources/aws/aws_s3_buckets.rb +9 -7
  346. data/lib/resources/aws/aws_security_group.rb +16 -12
  347. data/lib/resources/aws/aws_security_groups.rb +12 -8
  348. data/lib/resources/aws/aws_sns_subscription.rb +15 -11
  349. data/lib/resources/aws/aws_sns_topic.rb +10 -6
  350. data/lib/resources/aws/aws_sns_topics.rb +9 -5
  351. data/lib/resources/aws/aws_sqs_queue.rb +18 -14
  352. data/lib/resources/aws/aws_subnet.rb +11 -7
  353. data/lib/resources/aws/aws_subnets.rb +9 -5
  354. data/lib/resources/aws/aws_vpc.rb +10 -6
  355. data/lib/resources/aws/aws_vpcs.rb +9 -5
  356. data/lib/resources/azure/azure_backend.rb +20 -18
  357. data/lib/resources/azure/azure_generic_resource.rb +13 -15
  358. data/lib/resources/azure/azure_resource_group.rb +17 -19
  359. data/lib/resources/azure/azure_virtual_machine.rb +6 -8
  360. data/lib/resources/azure/azure_virtual_machine_data_disk.rb +6 -8
  361. data/lib/source_readers/flat.rb +6 -10
  362. data/lib/source_readers/inspec.rb +8 -12
  363. metadata +141 -142
  364. data/lib/resources/mysql.rb +0 -82
  365. data/lib/resources/sys_info.rb +0 -28
  366. data/lib/utils/deprecation.rb +0 -6
  367. data/lib/utils/json_log.rb +0 -18
  368. data/lib/utils/latest_version.rb +0 -22
@@ -1,7 +1,6 @@
1
- # encoding: utf-8
2
-
3
- require 'hashie'
4
- require 'utils/file_reader'
1
+ require "hashie"
2
+ require "inspec/utils/file_reader"
3
+ require "inspec/utils/simpleconfig"
5
4
 
6
5
  module Inspec::Resources
7
6
  class Runlevels < Hash
@@ -67,10 +66,10 @@ module Inspec::Resources
67
66
  #
68
67
  # TODO: extend the logic to detect the running init system, independently of OS
69
68
  class Service < Inspec.resource(1)
70
- name 'service'
71
- supports platform: 'unix'
72
- supports platform: 'windows'
73
- desc 'Use the service InSpec audit resource to test if the named service is installed, running and/or enabled.'
69
+ name "service"
70
+ supports platform: "unix"
71
+ supports platform: "windows"
72
+ desc "Use the service InSpec audit resource to test if the named service is installed, running and/or enabled."
74
73
  example <<~EXAMPLE
75
74
  describe service('service_name') do
76
75
  it { should be_installed }
@@ -98,7 +97,7 @@ module Inspec::Resources
98
97
  @cache = nil
99
98
  @service_mgmt = select_service_mgmt
100
99
 
101
- return skip_resource 'The `service` resource is not supported on your OS yet.' if @service_mgmt.nil?
100
+ return skip_resource "The `service` resource is not supported on your OS yet." if @service_mgmt.nil?
102
101
  end
103
102
 
104
103
  def select_service_mgmt # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/MethodLength
@@ -132,14 +131,14 @@ module Inspec::Resources
132
131
  if version > 7
133
132
  Systemd.new(inspec, service_ctl)
134
133
  else
135
- SysV.new(inspec, service_ctl || '/usr/sbin/service')
134
+ SysV.new(inspec, service_ctl || "/usr/sbin/service")
136
135
  end
137
136
  elsif %w{redhat fedora centos oracle cloudlinux}.include?(platform)
138
137
  version = os[:release].to_i
139
- if (%w{redhat centos oracle cloudlinux}.include?(platform) && version >= 7) || (platform == 'fedora' && version >= 15)
138
+ if (%w{redhat centos oracle cloudlinux}.include?(platform) && version >= 7) || (platform == "fedora" && version >= 15)
140
139
  Systemd.new(inspec, service_ctl)
141
140
  else
142
- SysV.new(inspec, service_ctl || '/sbin/service')
141
+ SysV.new(inspec, service_ctl || "/sbin/service")
143
142
  end
144
143
  elsif %w{wrlinux}.include?(platform)
145
144
  SysV.new(inspec, service_ctl)
@@ -157,7 +156,7 @@ module Inspec::Resources
157
156
  if os[:release].to_i >= 12
158
157
  Systemd.new(inspec, service_ctl)
159
158
  else
160
- SysV.new(inspec, service_ctl || '/sbin/service')
159
+ SysV.new(inspec, service_ctl || "/sbin/service")
161
160
  end
162
161
  elsif %w{aix}.include?(platform)
163
162
  SrcMstr.new(inspec)
@@ -202,7 +201,7 @@ module Inspec::Resources
202
201
 
203
202
  # get all runlevels that are available and their configuration
204
203
  def runlevels(*args)
205
- return Runlevels.new(self) if info.nil? or info[:runlevels].nil?
204
+ return Runlevels.new(self) if info.nil? || info[:runlevels].nil?
206
205
  Runlevels.from_hash(self, info[:runlevels], args)
207
206
  end
208
207
 
@@ -249,7 +248,7 @@ module Inspec::Resources
249
248
  # @see: http://www.freedesktop.org/software/systemd/man/systemd-system.conf.html
250
249
  class Systemd < ServiceManager
251
250
  def initialize(inspec, service_ctl = nil)
252
- @service_ctl = service_ctl || 'systemctl'
251
+ @service_ctl = service_ctl || "systemctl"
253
252
  super
254
253
  end
255
254
 
@@ -279,19 +278,19 @@ module Inspec::Resources
279
278
  params = SimpleConfig.new(
280
279
  cmd.stdout.chomp,
281
280
  assignment_regex: /^\s*([^=]*?)\s*=\s*(.*?)\s*$/,
282
- multiple_values: false,
281
+ multiple_values: false
283
282
  ).params
284
283
 
285
284
  # LoadState values eg. loaded, not-found
286
- installed = params['LoadState'] == 'loaded'
285
+ installed = params["LoadState"] == "loaded"
287
286
 
288
287
  {
289
- name: params['Id'],
290
- description: params['Description'],
288
+ name: params["Id"],
289
+ description: params["Description"],
291
290
  installed: installed,
292
291
  running: is_active?(service_name),
293
292
  enabled: is_enabled?(service_name),
294
- type: 'systemd',
293
+ type: "systemd",
295
294
  params: params,
296
295
  }
297
296
  end
@@ -312,7 +311,7 @@ module Inspec::Resources
312
311
  installed: true,
313
312
  running: running,
314
313
  enabled: enabled?,
315
- type: 'srcmstr',
314
+ type: "srcmstr",
316
315
  }
317
316
  end
318
317
 
@@ -330,7 +329,7 @@ module Inspec::Resources
330
329
 
331
330
  def enabled_rc_tcpip?
332
331
  inspec.command(
333
- "grep -v ^# /etc/rc.tcpip | grep 'start ' | grep -Eq '(/{0,1}| )#{name} '",
332
+ "grep -v ^# /etc/rc.tcpip | grep 'start ' | grep -Eq '(/{0,1}| )#{name} '"
334
333
  ).exit_status == 0
335
334
  end
336
335
 
@@ -344,7 +343,7 @@ module Inspec::Resources
344
343
  include FileReader
345
344
 
346
345
  def initialize(service_name, service_ctl = nil)
347
- @service_ctl = service_ctl || 'initctl'
346
+ @service_ctl = service_ctl || "initctl"
348
347
  super
349
348
  end
350
349
 
@@ -353,7 +352,7 @@ module Inspec::Resources
353
352
  status = inspec.command("#{service_ctl} status #{service_name}")
354
353
 
355
354
  # fallback for systemv services, those are not handled via `initctl`
356
- return SysV.new(inspec).info(service_name) if status.exit_status.to_i != 0 || status.stdout == ''
355
+ return SysV.new(inspec).info(service_name) if status.exit_status.to_i != 0 || status.stdout == ""
357
356
 
358
357
  # @see: http://upstart.ubuntu.com/cookbook/#job-states
359
358
  # grep for running to indicate the service is there
@@ -366,7 +365,7 @@ module Inspec::Resources
366
365
  installed: true,
367
366
  running: running,
368
367
  enabled: enabled,
369
- type: 'upstart',
368
+ type: "upstart",
370
369
  }
371
370
  end
372
371
 
@@ -388,17 +387,17 @@ module Inspec::Resources
388
387
  end
389
388
 
390
389
  class SysV < ServiceManager
391
- RUNLEVELS = { 0=>false, 1=>false, 2=>false, 3=>false, 4=>false, 5=>false, 6=>false }.freeze
390
+ RUNLEVELS = { 0 => false, 1 => false, 2 => false, 3 => false, 4 => false, 5 => false, 6 => false }.freeze
392
391
 
393
392
  def initialize(service_name, service_ctl = nil)
394
- @service_ctl = service_ctl || 'service'
393
+ @service_ctl = service_ctl || "service"
395
394
  super
396
395
  end
397
396
 
398
397
  def info(service_name)
399
398
  # check if service is installed
400
399
  # read all available services via ls /etc/init.d/
401
- srvlist = inspec.command('ls -1 /etc/init.d/')
400
+ srvlist = inspec.command("ls -1 /etc/init.d/")
402
401
  return nil if srvlist.exit_status != 0
403
402
 
404
403
  # check if the service is in list
@@ -412,9 +411,9 @@ module Inspec::Resources
412
411
  # bash: for i in `find /etc/rc*.d -name S*`; do basename $i | sed -r 's/^S[0-9]+//'; done | sort | uniq
413
412
  enabled_services_cmd = inspec.command('find /etc/rc*.d /etc/init.d/rc*.d -name "S*"').stdout
414
413
  service_line = %r{rc(?<runlevel>[0-6])\.d/S[^/]*?#{Regexp.escape service_name}$}
415
- all_services = enabled_services_cmd.split("\n").map { |line|
414
+ all_services = enabled_services_cmd.split("\n").map do |line|
416
415
  service_line.match(line)
417
- }.compact
416
+ end.compact
418
417
  enabled = !all_services.empty?
419
418
 
420
419
  # Determine a list of runlevels which this service is activated for
@@ -434,7 +433,7 @@ module Inspec::Resources
434
433
  running: running,
435
434
  enabled: enabled,
436
435
  runlevels: runlevels,
437
- type: 'sysv',
436
+ type: "sysv",
438
437
  }
439
438
  end
440
439
  end
@@ -443,7 +442,7 @@ module Inspec::Resources
443
442
  # @see: https://www.freebsd.org/cgi/man.cgi?query=rc.conf&sektion=5
444
443
  class BSDInit < ServiceManager
445
444
  def initialize(service_name, service_ctl = nil)
446
- @service_ctl = service_ctl || 'service'
445
+ @service_ctl = service_ctl || "service"
447
446
  super
448
447
  end
449
448
 
@@ -473,14 +472,14 @@ module Inspec::Resources
473
472
  installed: true,
474
473
  running: running,
475
474
  enabled: enabled,
476
- type: 'bsd-init',
475
+ type: "bsd-init",
477
476
  }
478
477
  end
479
478
  end
480
479
 
481
480
  class Runit < ServiceManager
482
481
  def initialize(service_name, service_ctl = nil)
483
- @service_ctl = service_ctl || 'sv'
482
+ @service_ctl = service_ctl || "sv"
484
483
  super
485
484
  end
486
485
 
@@ -500,7 +499,7 @@ module Inspec::Resources
500
499
  installed: installed,
501
500
  running: running,
502
501
  enabled: enabled,
503
- type: 'runit',
502
+ type: "runit",
504
503
  }
505
504
  end
506
505
  end
@@ -509,7 +508,7 @@ module Inspec::Resources
509
508
  # new launctl on macos 10.10
510
509
  class LaunchCtl < ServiceManager
511
510
  def initialize(service_name, service_ctl = nil)
512
- @service_ctl = service_ctl || 'launchctl'
511
+ @service_ctl = service_ctl || "launchctl"
513
512
  super
514
513
  end
515
514
 
@@ -524,14 +523,14 @@ module Inspec::Resources
524
523
 
525
524
  # extract values from service
526
525
  parsed_srv = /^(?<pid>[0-9-]+)\t(?<exit>[0-9]+)\t(?<name>\S*)$/.match(srv[0])
527
- enabled = !parsed_srv['name'].nil? # it's in the list
526
+ enabled = !parsed_srv["name"].nil? # it's in the list
528
527
 
529
528
  # check if the service is running
530
- pid = parsed_srv['pid']
531
- running = pid != '-'
529
+ pid = parsed_srv["pid"]
530
+ running = pid != "-"
532
531
 
533
532
  # extract service label
534
- srv = parsed_srv['name'] || service_name
533
+ srv = parsed_srv["name"] || service_name
535
534
 
536
535
  {
537
536
  name: srv,
@@ -539,7 +538,7 @@ module Inspec::Resources
539
538
  installed: true,
540
539
  running: running,
541
540
  enabled: enabled,
542
- type: 'darwin',
541
+ type: "darwin",
543
542
  }
544
543
  end
545
544
  end
@@ -590,16 +589,16 @@ module Inspec::Resources
590
589
  end
591
590
 
592
591
  # check that we got a response
593
- return nil if service.nil? || service['Service'].nil?
592
+ return nil if service.nil? || service["Service"].nil?
594
593
 
595
594
  {
596
- name: service['Service']['Name'],
597
- description: service['Service']['DisplayName'],
595
+ name: service["Service"]["Name"],
596
+ description: service["Service"]["DisplayName"],
598
597
  installed: true,
599
598
  running: service_running?(service),
600
599
  enabled: service_enabled?(service),
601
- startmode: service['WMI']['StartMode'],
602
- type: 'windows',
600
+ startmode: service["WMI"]["StartMode"],
601
+ type: "windows",
603
602
  }
604
603
  end
605
604
 
@@ -607,22 +606,22 @@ module Inspec::Resources
607
606
 
608
607
  # detect if service is enabled
609
608
  def service_enabled?(service)
610
- !service['WMI'].nil? &&
611
- !service['WMI']['StartMode'].nil? &&
612
- (service['WMI']['StartMode'] == 'Auto' ||
613
- service['WMI']['StartMode'] == 'Manual')
609
+ !service["WMI"].nil? &&
610
+ !service["WMI"]["StartMode"].nil? &&
611
+ (service["WMI"]["StartMode"] == "Auto" ||
612
+ service["WMI"]["StartMode"] == "Manual")
614
613
  end
615
614
 
616
615
  # detect if service is running
617
616
  def service_running?(service)
618
- !service['Service']['Status'].nil? && service['Service']['Status'] == 4
617
+ !service["Service"]["Status"].nil? && service["Service"]["Status"] == 4
619
618
  end
620
619
  end
621
620
 
622
621
  # Solaris services
623
622
  class Svcs < ServiceManager
624
623
  def initialize(service_name, service_ctl = nil)
625
- @service_ctl = service_ctl || 'svcs'
624
+ @service_ctl = service_ctl || "svcs"
626
625
  super
627
626
  end
628
627
 
@@ -634,20 +633,20 @@ module Inspec::Resources
634
633
  params = SimpleConfig.new(
635
634
  cmd.stdout.chomp,
636
635
  assignment_regex: /^(\w+)\s*(.*)$/,
637
- multiple_values: false,
636
+ multiple_values: false
638
637
  ).params
639
638
 
640
639
  installed = cmd.exit_status == 0
641
- running = installed && (params['state'] == 'online')
642
- enabled = installed && (params['enabled'] == 'true')
640
+ running = installed && (params["state"] == "online")
641
+ enabled = installed && (params["enabled"] == "true")
643
642
 
644
643
  {
645
644
  name: service_name,
646
- description: params['name'],
645
+ description: params["name"],
647
646
  installed: installed,
648
647
  running: running,
649
648
  enabled: enabled,
650
- type: 'svcs',
649
+ type: "svcs",
651
650
  }
652
651
  end
653
652
  end
@@ -655,9 +654,9 @@ module Inspec::Resources
655
654
  # specific resources for specific service managers
656
655
 
657
656
  class SystemdService < Service
658
- name 'systemd_service'
659
- supports platform: 'unix'
660
- desc 'Use the systemd_service InSpec audit resource to test if the named service (controlled by systemd) is installed, running and/or enabled.'
657
+ name "systemd_service"
658
+ supports platform: "unix"
659
+ desc "Use the systemd_service InSpec audit resource to test if the named service (controlled by systemd) is installed, running and/or enabled."
661
660
  example <<~EXAMPLE
662
661
  # to override service mgmt auto-detection
663
662
  describe systemd_service('service_name') do
@@ -678,9 +677,9 @@ module Inspec::Resources
678
677
  end
679
678
 
680
679
  class UpstartService < Service
681
- name 'upstart_service'
682
- supports platform: 'unix'
683
- desc 'Use the upstart_service InSpec audit resource to test if the named service (controlled by upstart) is installed, running and/or enabled.'
680
+ name "upstart_service"
681
+ supports platform: "unix"
682
+ desc "Use the upstart_service InSpec audit resource to test if the named service (controlled by upstart) is installed, running and/or enabled."
684
683
  example <<~EXAMPLE
685
684
  # to override service mgmt auto-detection
686
685
  describe upstart_service('service_name') do
@@ -701,9 +700,9 @@ module Inspec::Resources
701
700
  end
702
701
 
703
702
  class SysVService < Service
704
- name 'sysv_service'
705
- supports platform: 'unix'
706
- desc 'Use the sysv_service InSpec audit resource to test if the named service (controlled by SysV) is installed, running and/or enabled.'
703
+ name "sysv_service"
704
+ supports platform: "unix"
705
+ desc "Use the sysv_service InSpec audit resource to test if the named service (controlled by SysV) is installed, running and/or enabled."
707
706
  example <<~EXAMPLE
708
707
  # to override service mgmt auto-detection
709
708
  describe sysv_service('service_name') do
@@ -724,9 +723,9 @@ module Inspec::Resources
724
723
  end
725
724
 
726
725
  class BSDService < Service
727
- name 'bsd_service'
728
- supports platform: 'unix'
729
- desc 'Use the bsd_service InSpec audit resource to test if the named service (controlled by BSD init) is installed, running and/or enabled.'
726
+ name "bsd_service"
727
+ supports platform: "unix"
728
+ desc "Use the bsd_service InSpec audit resource to test if the named service (controlled by BSD init) is installed, running and/or enabled."
730
729
  example <<~EXAMPLE
731
730
  # to override service mgmt auto-detection
732
731
  describe bsd_service('service_name') do
@@ -747,9 +746,9 @@ module Inspec::Resources
747
746
  end
748
747
 
749
748
  class LaunchdService < Service
750
- name 'launchd_service'
751
- supports platform: 'unix'
752
- desc 'Use the launchd_service InSpec audit resource to test if the named service (controlled by launchd) is installed, running and/or enabled.'
749
+ name "launchd_service"
750
+ supports platform: "unix"
751
+ desc "Use the launchd_service InSpec audit resource to test if the named service (controlled by launchd) is installed, running and/or enabled."
753
752
  example <<~EXAMPLE
754
753
  # to override service mgmt auto-detection
755
754
  describe launchd_service('service_name') do
@@ -770,9 +769,9 @@ module Inspec::Resources
770
769
  end
771
770
 
772
771
  class RunitService < Service
773
- name 'runit_service'
774
- supports platform: 'unix'
775
- desc 'Use the runit_service InSpec audit resource to test if the named service (controlled by runit) is installed, running and/or enabled.'
772
+ name "runit_service"
773
+ supports platform: "unix"
774
+ desc "Use the runit_service InSpec audit resource to test if the named service (controlled by runit) is installed, running and/or enabled."
776
775
  example <<~EXAMPLE
777
776
  # to override service mgmt auto-detection
778
777
  describe runit_service('service_name') do
@@ -1,8 +1,7 @@
1
- # encoding: utf-8
2
1
  # copyright: 2016, Chef Software Inc.
3
2
 
4
- require 'utils/filter'
5
- require 'utils/file_reader'
3
+ require "inspec/utils/filter"
4
+ require "inspec/utils/file_reader"
6
5
 
7
6
  # The file format consists of
8
7
  # - user
@@ -16,11 +15,11 @@ require 'utils/file_reader'
16
15
 
17
16
  module Inspec::Resources
18
17
  class Shadow < Inspec.resource(1)
19
- name 'shadow'
20
- supports platform: 'unix'
21
- desc 'Use the shadow InSpec resource to test the contents of /etc/shadow, '\
22
- 'which contains information for users that may log into '\
23
- 'the system and/or as users that own running processes.'
18
+ name "shadow"
19
+ supports platform: "unix"
20
+ desc "Use the shadow InSpec resource to test the contents of /etc/shadow, "\
21
+ "which contains information for users that may log into "\
22
+ "the system and/or as users that own running processes."
24
23
  example <<~EXAMPLE
25
24
  describe shadow do
26
25
  its('user') { should_not include 'forbidden_user' }
@@ -36,23 +35,23 @@ module Inspec::Resources
36
35
 
37
36
  attr_reader :params
38
37
 
39
- def initialize(path = '/etc/shadow', opts = {})
38
+ def initialize(path = "/etc/shadow", opts = {})
40
39
  @opts = opts
41
- @path = path || '/etc/shadow'
42
- @filters = @opts[:filters] || ''
40
+ @path = path || "/etc/shadow"
41
+ @filters = @opts[:filters] || ""
43
42
  end
44
43
 
45
44
  filtertable = FilterTable.create
46
45
  filtertable
47
- .register_column(:users, field: 'user')
48
- .register_column(:passwords, field: 'password')
49
- .register_column(:last_changes, field: 'last_change')
50
- .register_column(:min_days, field: 'min_days')
51
- .register_column(:max_days, field: 'max_days')
52
- .register_column(:warn_days, field: 'warn_days')
53
- .register_column(:inactive_days, field: 'inactive_days')
54
- .register_column(:expiry_dates, field: 'expiry_date')
55
- .register_column(:reserved, field: 'reserved')
46
+ .register_column(:users, field: "user")
47
+ .register_column(:passwords, field: "password")
48
+ .register_column(:last_changes, field: "last_change")
49
+ .register_column(:min_days, field: "min_days")
50
+ .register_column(:max_days, field: "max_days")
51
+ .register_column(:warn_days, field: "warn_days")
52
+ .register_column(:inactive_days, field: "inactive_days")
53
+ .register_column(:expiry_dates, field: "expiry_date")
54
+ .register_column(:reserved, field: "reserved")
56
55
  # These are deprecated, but we need to "alias" them
57
56
  filtertable
58
57
  .register_custom_property(:user) { |table, value| table.resource.user(value) }
@@ -60,18 +59,18 @@ module Inspec::Resources
60
59
  .register_custom_property(:last_change) { |table, value| table.resource.last_change(value) }
61
60
  .register_custom_property(:expiry_date) { |table, value| table.resource.expiry_date(value) }
62
61
 
63
- filtertable.register_custom_property(:content) { |t, _|
62
+ filtertable.register_custom_property(:content) do |t, _|
64
63
  t.entries.map do |e|
65
- [e.user, e.password, e.last_change, e.min_days, e.max_days, e.warn_days, e.inactive_days, e.expiry_date].compact.join(':')
64
+ [e.user, e.password, e.last_change, e.min_days, e.max_days, e.warn_days, e.inactive_days, e.expiry_date].compact.join(":")
66
65
  end.join("\n")
67
- }
66
+ end
68
67
 
69
68
  filtertable.install_filter_methods_on_resource(self, :set_params)
70
69
 
71
70
  def filter(query = {})
72
71
  return self if query.nil? || query.empty?
73
72
  res = set_params
74
- filters = ''
73
+ filters = ""
75
74
  query.each do |attr, condition|
76
75
  condition = condition.to_s if condition.is_a? Integer
77
76
  filters += " #{attr} = #{condition.inspect}"
@@ -84,39 +83,39 @@ module Inspec::Resources
84
83
  end
85
84
  end
86
85
  end
87
- content = res.map { |x| x.values.join(':') }.join("\n")
86
+ content = res.map { |x| x.values.join(":") }.join("\n")
88
87
  Shadow.new(@path, content: content, filters: @filters + filters)
89
88
  end
90
89
 
91
90
  # Next 4 are deprecated methods. We define them here so we can emit a deprecation message.
92
91
  # They are also defined on the Table, above.
93
92
  def user(query = nil)
94
- Inspec.deprecate(:properties_shadow, 'The shadow `user` property is deprecated. Please use `users` instead.')
95
- query.nil? ? where.users : where('user' => query)
93
+ Inspec.deprecate(:properties_shadow, "The shadow `user` property is deprecated. Please use `users` instead.")
94
+ query.nil? ? where.users : where("user" => query)
96
95
  end
97
96
 
98
97
  def password(query = nil)
99
- Inspec.deprecate(:properties_shadow, 'The shadow `password` property is deprecated. Please use `passwords` instead.')
100
- query.nil? ? where.passwords : where('password' => query)
98
+ Inspec.deprecate(:properties_shadow, "The shadow `password` property is deprecated. Please use `passwords` instead.")
99
+ query.nil? ? where.passwords : where("password" => query)
101
100
  end
102
101
 
103
102
  def last_change(query = nil)
104
- Inspec.deprecate(:properties_shadow, 'The shadow `last_change` property is deprecated. Please use `last_changes` instead.')
105
- query.nil? ? where.last_changes : where('last_change' => query)
103
+ Inspec.deprecate(:properties_shadow, "The shadow `last_change` property is deprecated. Please use `last_changes` instead.")
104
+ query.nil? ? where.last_changes : where("last_change" => query)
106
105
  end
107
106
 
108
107
  def expiry_date(query = nil)
109
- Inspec.deprecate(:properties_shadow, 'The shadow `expiry_date` property is deprecated. Please use `expiry_dates` instead.')
110
- query.nil? ? where.expiry_dates : where('expiry_date' => query)
108
+ Inspec.deprecate(:properties_shadow, "The shadow `expiry_date` property is deprecated. Please use `expiry_dates` instead.")
109
+ query.nil? ? where.expiry_dates : where("expiry_date" => query)
111
110
  end
112
111
 
113
112
  def lines
114
- Inspec.deprecate(:properties_shadow, 'The shadow `lines` property is deprecated.')
113
+ Inspec.deprecate(:properties_shadow, "The shadow `lines` property is deprecated.")
115
114
  shadow_content.to_s.split("\n")
116
115
  end
117
116
 
118
117
  def to_s
119
- f = @filters.empty? ? '' : ' with'+@filters
118
+ f = @filters.empty? ? "" : " with" + @filters
120
119
  "#{@path}#{f}"
121
120
  end
122
121
 
@@ -139,17 +138,17 @@ module Inspec::Resources
139
138
  # @param [String] line a line of /etc/shadow
140
139
  # @return [Hash] Map of entries in this line
141
140
  def parse_shadow_line(line)
142
- x = line.split(':')
141
+ x = line.split(":")
143
142
  {
144
- 'user' => x.at(0),
145
- 'password' => x.at(1),
146
- 'last_change' => x.at(2),
147
- 'min_days' => x.at(3),
148
- 'max_days' => x.at(4),
149
- 'warn_days' => x.at(5),
150
- 'inactive_days' => x.at(6),
151
- 'expiry_date' => x.at(7),
152
- 'reserved' => x.at(8),
143
+ "user" => x.at(0),
144
+ "password" => x.at(1),
145
+ "last_change" => x.at(2),
146
+ "min_days" => x.at(3),
147
+ "max_days" => x.at(4),
148
+ "warn_days" => x.at(5),
149
+ "inactive_days" => x.at(6),
150
+ "expiry_date" => x.at(7),
151
+ "reserved" => x.at(8),
153
152
  }
154
153
  end
155
154
  end