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,13 +1,17 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-sns"
4
+
1
5
  class AwsSnsTopic < Inspec.resource(1)
2
- name 'aws_sns_topic'
3
- desc 'Verifies settings for an SNS Topic'
6
+ name "aws_sns_topic"
7
+ desc "Verifies settings for an SNS Topic"
4
8
  example <<~EXAMPLE
5
9
  describe aws_sns_topic('arn:aws:sns:us-east-1:123456789012:some-topic') do
6
10
  it { should exist }
7
11
  its('confirmed_subscription_count') { should_not be_zero }
8
12
  end
9
13
  EXAMPLE
10
- supports platform: 'aws'
14
+ supports platform: "aws"
11
15
 
12
16
  include AwsSingularResourceMixin
13
17
  attr_reader :arn, :confirmed_subscription_count
@@ -19,11 +23,11 @@ class AwsSnsTopic < Inspec.resource(1)
19
23
  raw_params: raw_params,
20
24
  allowed_params: [:arn],
21
25
  allowed_scalar_name: :arn,
22
- allowed_scalar_type: String,
26
+ allowed_scalar_type: String
23
27
  )
24
28
  # Validate the ARN
25
29
  unless validated_params[:arn] =~ /^arn:aws:sns:[\w\-]+:\d{12}:[\S]+$/
26
- raise ArgumentError, 'Malformed ARN for SNS topics. Expected an ARN of the form ' \
30
+ raise ArgumentError, "Malformed ARN for SNS topics. Expected an ARN of the form " \
27
31
  "'arn:aws:sns:REGION:ACCOUNT-ID:TOPIC-NAME'"
28
32
  end
29
33
  validated_params
@@ -34,7 +38,7 @@ class AwsSnsTopic < Inspec.resource(1)
34
38
  @exists = true
35
39
 
36
40
  # The response has a plain hash with CamelCase plain string keys and string values
37
- @confirmed_subscription_count = aws_response['SubscriptionsConfirmed'].to_i
41
+ @confirmed_subscription_count = aws_response["SubscriptionsConfirmed"].to_i
38
42
  rescue Aws::SNS::Errors::NotFound
39
43
  @exists = false
40
44
  end
@@ -1,18 +1,22 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-sns"
4
+
1
5
  class AwsSnsTopics < Inspec.resource(1)
2
- name 'aws_sns_topics'
3
- desc 'Verifies settings for SNS Topics in bulk'
6
+ name "aws_sns_topics"
7
+ desc "Verifies settings for SNS Topics in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_sns_topics do
6
10
  its('topic_arns') { should include '' }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsPluralResourceMixin
12
16
 
13
17
  def validate_params(resource_params)
14
18
  unless resource_params.empty?
15
- raise ArgumentError, 'aws_sns_topics does not accept resource parameters.'
19
+ raise ArgumentError, "aws_sns_topics does not accept resource parameters."
16
20
  end
17
21
  resource_params
18
22
  end
@@ -38,7 +42,7 @@ class AwsSnsTopics < Inspec.resource(1)
38
42
  filter.install_filter_methods_on_resource(self, :table)
39
43
 
40
44
  def to_s
41
- 'EC2 SNS Topics'
45
+ "EC2 SNS Topics"
42
46
  end
43
47
 
44
48
  class Backend
@@ -1,15 +1,19 @@
1
- require 'uri'
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-sqs"
4
+
5
+ require "uri"
2
6
 
3
7
  class AwsSqsQueue < Inspec.resource(1)
4
- name 'aws_sqs_queue'
5
- desc 'Verifies settings for an SQS Queue'
8
+ name "aws_sqs_queue"
9
+ desc "Verifies settings for an SQS Queue"
6
10
  example <<~EXAMPLE
7
11
  describe aws_sqs_queue('https://sqs.ap-southeast-2.amazonaws.com/519527725796/QueueName') do
8
12
  it { should exist }
9
13
  its('visiblity_timeout') { should be 300}
10
14
  end
11
15
  EXAMPLE
12
- supports platform: 'aws'
16
+ supports platform: "aws"
13
17
 
14
18
  include AwsSingularResourceMixin
15
19
  attr_reader :arn, :is_fifo_queue, :visibility_timeout, :maximum_message_size, :message_retention_period, :delay_seconds, :receive_message_wait_timeout_seconds, :content_based_deduplication
@@ -21,29 +25,29 @@ class AwsSqsQueue < Inspec.resource(1)
21
25
  raw_params: raw_params,
22
26
  allowed_params: [:url],
23
27
  allowed_scalar_name: :url,
24
- allowed_scalar_type: String,
28
+ allowed_scalar_type: String
25
29
  )
26
30
  # Validate the URL
27
31
  unless validated_params[:url] =~ /\A#{URI::DEFAULT_PARSER.make_regexp(%w{https})}\z/
28
- raise ArgumentError, 'Malformed URL for SQS. Expected an ARN of the form ' \
32
+ raise ArgumentError, "Malformed URL for SQS. Expected an ARN of the form " \
29
33
  "'https://sqs.ap-southeast-2.amazonaws.com/111212121/MyQeueue'"
30
34
  end
31
35
  validated_params
32
36
  end
33
37
 
34
38
  def fetch_from_api
35
- aws_response = BackendFactory.create(inspec_runner).get_queue_attributes(queue_url: @url, attribute_names: ['All']).attributes
39
+ aws_response = BackendFactory.create(inspec_runner).get_queue_attributes(queue_url: @url, attribute_names: ["All"]).attributes
36
40
  @exists = true
37
- @visibility_timeout = aws_response['VisibilityTimeout'].to_i
38
- @maximum_message_size = aws_response['MaximumMessageSize'].to_i
39
- @message_retention_period = aws_response['MessageRetentionPeriod'].to_i
40
- @delay_seconds = aws_response['DelaySeconds'].to_i
41
- @receive_message_wait_timeout_seconds = aws_response['ReceiveMessageWaitTimeSeconds'].to_i
41
+ @visibility_timeout = aws_response["VisibilityTimeout"].to_i
42
+ @maximum_message_size = aws_response["MaximumMessageSize"].to_i
43
+ @message_retention_period = aws_response["MessageRetentionPeriod"].to_i
44
+ @delay_seconds = aws_response["DelaySeconds"].to_i
45
+ @receive_message_wait_timeout_seconds = aws_response["ReceiveMessageWaitTimeSeconds"].to_i
42
46
 
43
47
  # FIFO queues - these attributes only exist for FIFO queues, their presence indicates a FIFO
44
48
  # queue
45
- @is_fifo_queue = aws_response['FifoQueue'].nil? ? false: true
46
- @content_based_deduplication = aws_response['ContentBasedDeduplication'].nil? ? false: true
49
+ @is_fifo_queue = aws_response["FifoQueue"].nil? ? false : true
50
+ @content_based_deduplication = aws_response["ContentBasedDeduplication"].nil? ? false : true
47
51
  rescue Aws::SQS::Errors::NonExistentQueue
48
52
  @exists = false
49
53
  end
@@ -1,13 +1,17 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsSubnet < Inspec.resource(1)
2
- name 'aws_subnet'
3
- desc 'This resource is used to test the attributes of a VPC subnet'
6
+ name "aws_subnet"
7
+ desc "This resource is used to test the attributes of a VPC subnet"
4
8
  example <<~EXAMPLE
5
9
  describe aws_subnet(subnet_id: 'subnet-12345678') do
6
10
  it { should exist }
7
11
  its('cidr_block') { should eq '10.0.1.0/24' }
8
12
  end
9
13
  EXAMPLE
10
- supports platform: 'aws'
14
+ supports platform: "aws"
11
15
 
12
16
  include AwsSingularResourceMixin
13
17
  attr_reader :assigning_ipv_6_address_on_creation, :availability_zone, :available_ip_address_count,
@@ -29,7 +33,7 @@ class AwsSubnet < Inspec.resource(1)
29
33
  raw_params: raw_params,
30
34
  allowed_params: [:subnet_id],
31
35
  allowed_scalar_name: :subnet_id,
32
- allowed_scalar_type: String,
36
+ allowed_scalar_type: String
33
37
  )
34
38
 
35
39
  # Make sure the subnet_id parameter was specified and in the correct form.
@@ -38,7 +42,7 @@ class AwsSubnet < Inspec.resource(1)
38
42
  end
39
43
 
40
44
  if validated_params.empty?
41
- raise ArgumentError, 'You must provide a subnet_id to aws_subnet.'
45
+ raise ArgumentError, "You must provide a subnet_id to aws_subnet."
42
46
  end
43
47
 
44
48
  validated_params
@@ -49,7 +53,7 @@ class AwsSubnet < Inspec.resource(1)
49
53
 
50
54
  # Transform into filter format expected by AWS
51
55
  filters = []
52
- filters.push({ name: 'subnet-id', values: [@subnet_id] })
56
+ filters.push({ name: "subnet-id", values: [@subnet_id] })
53
57
  ds_response = backend.describe_subnets(filters: filters)
54
58
 
55
59
  # If no subnets exist in the VPC, exist is false.
@@ -69,7 +73,7 @@ class AwsSubnet < Inspec.resource(1)
69
73
  @available_ip_address_count = ds_response.subnets[0].available_ip_address_count
70
74
  @default_for_az = ds_response.subnets[0].default_for_az
71
75
  @mapping_public_ip_on_launch = ds_response.subnets[0].map_public_ip_on_launch
72
- @available = ds_response.subnets[0].state == 'available'
76
+ @available = ds_response.subnets[0].state == "available"
73
77
  @ipv_6_cidr_block_association_set = ds_response.subnets[0].ipv_6_cidr_block_association_set
74
78
  @assigning_ipv_6_address_on_creation = ds_response.subnets[0].assign_ipv_6_address_on_creation
75
79
  end
@@ -1,6 +1,10 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsSubnets < Inspec.resource(1)
2
- name 'aws_subnets'
3
- desc 'Verifies settings for VPC Subnets in bulk'
6
+ name "aws_subnets"
7
+ desc "Verifies settings for VPC Subnets in bulk"
4
8
  example <<~EXAMPLE
5
9
  # you should be able to test the cidr_block of a subnet
6
10
  describe aws_subnets.where(vpc_id: 'vpc-123456789') do
@@ -9,13 +13,13 @@ class AwsSubnets < Inspec.resource(1)
9
13
  its('states') { should_not include 'pending' }
10
14
  end
11
15
  EXAMPLE
12
- supports platform: 'aws'
16
+ supports platform: "aws"
13
17
 
14
18
  include AwsPluralResourceMixin
15
19
 
16
20
  def validate_params(resource_params)
17
21
  unless resource_params.empty?
18
- raise ArgumentError, 'aws_vpc_subnets does not accept resource parameters.'
22
+ raise ArgumentError, "aws_vpc_subnets does not accept resource parameters."
19
23
  end
20
24
  resource_params
21
25
  end
@@ -35,7 +39,7 @@ class AwsSubnets < Inspec.resource(1)
35
39
  filter.install_filter_methods_on_resource(self, :table)
36
40
 
37
41
  def to_s
38
- 'EC2 VPC Subnets'
42
+ "EC2 VPC Subnets"
39
43
  end
40
44
 
41
45
  class Backend
@@ -1,13 +1,17 @@
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsVpc < Inspec.resource(1)
2
- name 'aws_vpc'
3
- desc 'Verifies settings for AWS VPC'
6
+ name "aws_vpc"
7
+ desc "Verifies settings for AWS VPC"
4
8
  example <<~EXAMPLE
5
9
  describe aws_vpc do
6
10
  it { should be_default }
7
11
  its('cidr_block') { should cmp '10.0.0.0/16' }
8
12
  end
9
13
  EXAMPLE
10
- supports platform: 'aws'
14
+ supports platform: "aws"
11
15
 
12
16
  include AwsSingularResourceMixin
13
17
 
@@ -27,7 +31,7 @@ class AwsVpc < Inspec.resource(1)
27
31
  raw_params: raw_params,
28
32
  allowed_params: [:vpc_id],
29
33
  allowed_scalar_name: :vpc_id,
30
- allowed_scalar_type: String,
34
+ allowed_scalar_type: String
31
35
  )
32
36
 
33
37
  if validated_params.key?(:vpc_id) && validated_params[:vpc_id] !~ /^vpc\-([0-9a-f]{8})|(^vpc\-[0-9a-f]{17})$/
@@ -41,9 +45,9 @@ class AwsVpc < Inspec.resource(1)
41
45
  backend = BackendFactory.create(inspec_runner)
42
46
 
43
47
  if @vpc_id.nil?
44
- filter = { name: 'isDefault', values: ['true'] }
48
+ filter = { name: "isDefault", values: ["true"] }
45
49
  else
46
- filter = { name: 'vpc-id', values: [@vpc_id] }
50
+ filter = { name: "vpc-id", values: [@vpc_id] }
47
51
  end
48
52
 
49
53
  resp = backend.describe_vpcs({ filters: [filter] })
@@ -1,12 +1,16 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-ec2"
4
+
1
5
  class AwsVpcs < Inspec.resource(1)
2
- name 'aws_vpcs'
3
- desc 'Verifies settings for AWS VPCs in bulk'
6
+ name "aws_vpcs"
7
+ desc "Verifies settings for AWS VPCs in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_vpcs do
6
10
  it { should exist }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsPluralResourceMixin
12
16
 
@@ -23,13 +27,13 @@ class AwsVpcs < Inspec.resource(1)
23
27
  def validate_params(raw_params)
24
28
  # No params yet
25
29
  unless raw_params.empty?
26
- raise ArgumentError, 'aws_vpcs does not accept resource parameters'
30
+ raise ArgumentError, "aws_vpcs does not accept resource parameters"
27
31
  end
28
32
  raw_params
29
33
  end
30
34
 
31
35
  def to_s
32
- 'VPCs'
36
+ "VPCs"
33
37
  end
34
38
 
35
39
  def fetch_from_api
@@ -26,10 +26,10 @@ module Inspec::Resources
26
26
 
27
27
  # Determine if the environment variables for the options have been set
28
28
  option_var_names = {
29
- group_name: 'AZURE_RESOURCE_GROUP_NAME',
30
- name: 'AZURE_RESOURCE_NAME',
31
- type: 'AZURE_RESOURCE_TYPE',
32
- apiversion: 'AZURE_RESOURCE_API_VERSION',
29
+ group_name: "AZURE_RESOURCE_GROUP_NAME",
30
+ name: "AZURE_RESOURCE_NAME",
31
+ type: "AZURE_RESOURCE_TYPE",
32
+ apiversion: "AZURE_RESOURCE_API_VERSION",
33
33
  }
34
34
  option_var_names.each do |option_name, env_var_name|
35
35
  opts[option_name] = ENV[env_var_name] unless ENV[env_var_name].nil?
@@ -153,12 +153,14 @@ module Inspec::Resources
153
153
  # @author Russell Seymour
154
154
  def create_tag_methods
155
155
  # Iterate around the items of the tags and create the necessary access methods
156
- tags.item.each do |name, value|
157
- method_name = format('%s_tag', name)
158
- define_singleton_method method_name do
159
- value
156
+ if defined?(tags.item)
157
+ tags.item.each do |name, value|
158
+ method_name = format("%s_tag", name)
159
+ define_singleton_method method_name do
160
+ value
161
+ end
160
162
  end
161
- end if defined?(tags.item)
163
+ end
162
164
  end
163
165
 
164
166
  private
@@ -206,11 +208,11 @@ class AzureResourceDynamicMethods
206
208
  /^Azure::Resources::Mgmt::.*::Models::ResourceGroup$/
207
209
  # iterate around the instance variables
208
210
  data.instance_variables.each do |var|
209
- create_method(object, var.to_s.delete('@'), data.instance_variable_get(var))
211
+ create_method(object, var.to_s.delete("@"), data.instance_variable_get(var))
210
212
  end
211
213
  # When the data is a Hash object iterate around each of the key value pairs and
212
214
  # craete a method for each one.
213
- when 'Hash'
215
+ when "Hash"
214
216
  data.each do |key, value|
215
217
  create_method(object, key, value)
216
218
  end
@@ -233,12 +235,12 @@ class AzureResourceDynamicMethods
233
235
  # Create the necessary method based on the var that has been passed
234
236
  # Test the value for its type so that the method can be setup correctly
235
237
  case value.class.to_s
236
- when 'String', 'Integer', 'TrueClass', 'FalseClass', 'Fixnum'
238
+ when "String", "Integer", "TrueClass", "FalseClass", "Fixnum"
237
239
  object.define_singleton_method name do
238
240
  value
239
241
  end
240
- when 'Hash'
241
- value.count.zero? ? return_value = value : return_value = AzureResourceProbe.new(value)
242
+ when "Hash"
243
+ value.count == 0 ? return_value = value : return_value = AzureResourceProbe.new(value)
242
244
  object.define_singleton_method name do
243
245
  return_value
244
246
  end
@@ -247,16 +249,16 @@ class AzureResourceDynamicMethods
247
249
  # This is because the plugin is using the Azure SDK to get this information so it is an SDK object
248
250
  # that has to be interrogated in a different way. This is the only object type that behaves like this
249
251
  value.instance_variables.each do |var|
250
- create_method(object, var.to_s.delete('@'), value.instance_variable_get(var))
252
+ create_method(object, var.to_s.delete("@"), value.instance_variable_get(var))
251
253
  end
252
- when 'Array'
254
+ when "Array"
253
255
  # Some things are just string or integer arrays
254
256
  # Check this by seeing if the first element is a string / integer / boolean or
255
257
  # a hashtable
256
258
  # This may not be the best methid, but short of testing all elements in the array, this is
257
259
  # the quickest test
258
260
  case value[0].class.to_s
259
- when 'String', 'Integer', 'TrueClass', 'FalseClass', 'Fixnum'
261
+ when "String", "Integer", "TrueClass", "FalseClass", "Fixnum"
260
262
  probes = value
261
263
  else
262
264
  probes = []
@@ -369,7 +371,7 @@ class AzureResourceProbe
369
371
  #
370
372
  # @return string
371
373
  def camel_case(data)
372
- camel_case_data = data.split('_').inject([]) { |buffer, e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
374
+ camel_case_data = data.split("_").inject([]) { |buffer, e| buffer.push(buffer.empty? ? e : e.capitalize) }.join
373
375
 
374
376
  # Ensure that gb (as in gigabytes) is uppercased
375
377
  camel_case_data.gsub(/[gb]/, &:upcase)
@@ -1,17 +1,15 @@
1
- # encoding: utf-8
2
-
3
- require 'resources/azure/azure_backend'
4
- require 'utils/filter'
1
+ require "resources/azure/azure_backend"
2
+ require "inspec/utils/filter"
5
3
 
6
4
  module Inspec::Resources
7
5
  class AzureGenericResource < AzureResourceBase
8
- name 'azure_generic_resource'
6
+ name "azure_generic_resource"
9
7
 
10
8
  desc '
11
9
  InSpec Resource to interrogate any Resource type in Azure
12
10
  '
13
11
 
14
- supports platform: 'azure'
12
+ supports platform: "azure"
15
13
 
16
14
  attr_accessor :filter, :total, :counts, :name, :type, :location, :probes
17
15
 
@@ -34,21 +32,21 @@ module Inspec::Resources
34
32
  # Define the filter table so that it can be interrogated
35
33
  @filter = FilterTable.create
36
34
  @filter.register_filter_method(:contains)
37
- .register_column(:type, field: 'type')
38
- .register_column(:name, field: 'name')
39
- .register_column(:location, field: 'location')
40
- .register_column(:properties, field: 'properties')
35
+ .register_column(:type, field: "type")
36
+ .register_column(:name, field: "name")
37
+ .register_column(:location, field: "location")
38
+ .register_column(:properties, field: "properties")
41
39
 
42
40
  @filter.install_filter_methods_on_resource(self, :probes)
43
41
 
44
42
  def parse_resource(resource)
45
43
  # return a hash of information
46
44
  parsed = {
47
- 'location' => resource.location,
48
- 'name' => resource.name,
49
- 'type' => resource.type,
50
- 'exist?' => true,
51
- 'properties' => AzureResourceProbe.new(resource.properties),
45
+ "location" => resource.location,
46
+ "name" => resource.name,
47
+ "type" => resource.type,
48
+ "exist?" => true,
49
+ "properties" => AzureResourceProbe.new(resource.properties),
52
50
  }
53
51
 
54
52
  parsed