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,17 +1,21 @@
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-kms"
4
+
1
5
  class AwsKmsKeys < Inspec.resource(1)
2
- name 'aws_kms_keys'
3
- desc 'Verifies settings for AWS KMS Keys in bulk'
6
+ name "aws_kms_keys"
7
+ desc "Verifies settings for AWS KMS Keys in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_kms_keys 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
  def validate_params(resource_params)
13
17
  unless resource_params.empty?
14
- raise ArgumentError, 'aws_kms_keys does not accept resource parameters.'
18
+ raise ArgumentError, "aws_kms_keys does not accept resource parameters."
15
19
  end
16
20
  resource_params
17
21
  end
@@ -24,7 +28,7 @@ class AwsKmsKeys < Inspec.resource(1)
24
28
  filter.install_filter_methods_on_resource(self, :table)
25
29
 
26
30
  def to_s
27
- 'KMS Keys'
31
+ "KMS Keys"
28
32
  end
29
33
 
30
34
  def fetch_from_api
@@ -1,13 +1,16 @@
1
- # author: Mohamed El-Sharkawi
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-rds"
4
+
2
5
  class AwsRdsInstance < Inspec.resource(1)
3
- name 'aws_rds_instance'
4
- desc 'Verifies settings for an rds instance'
6
+ name "aws_rds_instance"
7
+ desc "Verifies settings for an rds instance"
5
8
  example <<~EXAMPLE
6
9
  describe aws_rds_instance(db_instance_identifier: 'test-instance-id') do
7
10
  it { should exist }
8
11
  end
9
12
  EXAMPLE
10
- supports platform: 'aws'
13
+ supports platform: "aws"
11
14
 
12
15
  include AwsSingularResourceMixin
13
16
  attr_reader :db_instance_identifier
@@ -23,14 +26,14 @@ class AwsRdsInstance < Inspec.resource(1)
23
26
  raw_params: raw_params,
24
27
  allowed_params: [:db_instance_identifier],
25
28
  allowed_scalar_name: :db_instance_identifier,
26
- allowed_scalar_type: String,
29
+ allowed_scalar_type: String
27
30
  )
28
- if validated_params.empty? or !validated_params.key?(:db_instance_identifier)
29
- raise ArgumentError, 'You must provide an id for the aws_rds_instance.'
31
+ if validated_params.empty? || !validated_params.key?(:db_instance_identifier)
32
+ raise ArgumentError, "You must provide an id for the aws_rds_instance."
30
33
  end
31
34
 
32
35
  if validated_params.key?(:db_instance_identifier) && validated_params[:db_instance_identifier] !~ /^[a-z]{1}[0-9a-z\-]{0,62}$/
33
- raise ArgumentError, 'aws_rds_instance Database Instance ID must be in the format: start with a letter followed by up to 62 letters/numbers/hyphens.'
36
+ raise ArgumentError, "aws_rds_instance Database Instance ID must be in the format: start with a letter followed by up to 62 letters/numbers/hyphens."
34
37
  end
35
38
 
36
39
  validated_params
@@ -1,12 +1,16 @@
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 AwsRouteTable < Inspec.resource(1)
2
- name 'aws_route_table'
3
- desc 'Verifies settings for an AWS Route Table'
6
+ name "aws_route_table"
7
+ desc "Verifies settings for an AWS Route Table"
4
8
  example <<~EXAMPLE
5
9
  describe aws_route_table do
6
10
  its('route_table_id') { should cmp 'rtb-05462d2278326a79c' }
7
11
  end
8
12
  EXAMPLE
9
- supports platform: 'aws'
13
+ supports platform: "aws"
10
14
 
11
15
  include AwsSingularResourceMixin
12
16
 
@@ -23,13 +27,13 @@ class AwsRouteTable < Inspec.resource(1)
23
27
  raw_params: raw_params,
24
28
  allowed_params: [:route_table_id],
25
29
  allowed_scalar_name: :route_table_id,
26
- allowed_scalar_type: String,
30
+ allowed_scalar_type: String
27
31
  )
28
32
 
29
33
  if validated_params.key?(:route_table_id) &&
30
- validated_params[:route_table_id] !~ /^rtb\-([0-9a-f]{17})|(^rtb\-[0-9a-f]{8})$/
34
+ validated_params[:route_table_id] !~ /^rtb\-([0-9a-f]{17})|(^rtb\-[0-9a-f]{8})$/
31
35
  raise ArgumentError,
32
- 'aws_route_table Route Table ID must be in the' \
36
+ "aws_route_table Route Table ID must be in the" \
33
37
  ' format "rtb-" followed by 8 or 17 hexadecimal characters.'
34
38
  end
35
39
 
@@ -42,7 +46,7 @@ class AwsRouteTable < Inspec.resource(1)
42
46
  if @route_table_id.nil?
43
47
  args = nil
44
48
  else
45
- args = { filters: [{ name: 'route-table-id', values: [@route_table_id] }] }
49
+ args = { filters: [{ name: "route-table-id", values: [@route_table_id] }] }
46
50
  end
47
51
 
48
52
  resp = backend.describe_route_tables(args)
@@ -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 AwsRouteTables < Inspec.resource(1)
2
- name 'aws_route_tables'
3
- desc 'Verifies settings for AWS Route Tables in bulk'
6
+ name "aws_route_tables"
7
+ desc "Verifies settings for AWS Route Tables in bulk"
4
8
  example <<~EXAMPLE
5
9
  describe aws_route_tables 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
  # Underlying FilterTable implementation.
@@ -21,20 +25,20 @@ class AwsRouteTables < Inspec.resource(1)
21
25
  end
22
26
 
23
27
  def to_s
24
- 'Route Tables'
28
+ "Route Tables"
25
29
  end
26
30
 
27
31
  private
28
32
 
29
33
  def validate_params(raw_criteria)
30
34
  unless raw_criteria.is_a? Hash
31
- raise 'Unrecognized criteria for fetching Route Tables. ' \
35
+ raise "Unrecognized criteria for fetching Route Tables. " \
32
36
  "Use 'criteria: value' format."
33
37
  end
34
38
 
35
39
  # No criteria yet
36
40
  unless raw_criteria.empty?
37
- raise ArgumentError, 'aws_route_tables does not currently accept resource parameters.'
41
+ raise ArgumentError, "aws_route_tables does not currently accept resource parameters."
38
42
  end
39
43
  raw_criteria
40
44
  end
@@ -1,13 +1,16 @@
1
- # author: Matthew Dromazos
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-s3"
4
+
2
5
  class AwsS3Bucket < Inspec.resource(1)
3
- name 'aws_s3_bucket'
4
- desc 'Verifies settings for a s3 bucket'
6
+ name "aws_s3_bucket"
7
+ desc "Verifies settings for a s3 bucket"
5
8
  example <<~EXAMPLE
6
9
  describe aws_s3_bucket(bucket_name: 'test_bucket') do
7
10
  it { should exist }
8
11
  end
9
12
  EXAMPLE
10
- supports platform: 'aws'
13
+ supports platform: "aws"
11
14
 
12
15
  include AwsSingularResourceMixin
13
16
  attr_reader :bucket_name, :has_default_encryption_enabled, :has_access_logging_enabled, :region
@@ -30,9 +33,9 @@ class AwsS3Bucket < Inspec.resource(1)
30
33
  def public?
31
34
  # first line just for formatting
32
35
  false || \
33
- bucket_acl.any? { |g| g.grantee.type == 'Group' && g.grantee.uri =~ /AllUsers/ } || \
34
- bucket_acl.any? { |g| g.grantee.type == 'Group' && g.grantee.uri =~ /AuthenticatedUsers/ } || \
35
- bucket_policy.any? { |s| s.effect == 'Allow' && s.principal == '*' }
36
+ bucket_acl.any? { |g| g.grantee.type == "Group" && g.grantee.uri =~ /AllUsers/ } || \
37
+ bucket_acl.any? { |g| g.grantee.type == "Group" && g.grantee.uri =~ /AuthenticatedUsers/ } || \
38
+ bucket_policy.any? { |s| s.effect == "Allow" && s.principal == "*" }
36
39
  end
37
40
 
38
41
  def has_default_encryption_enabled?
@@ -54,10 +57,10 @@ class AwsS3Bucket < Inspec.resource(1)
54
57
  raw_params: raw_params,
55
58
  allowed_params: [:bucket_name],
56
59
  allowed_scalar_name: :bucket_name,
57
- allowed_scalar_type: String,
60
+ allowed_scalar_type: String
58
61
  )
59
- if validated_params.empty? or !validated_params.key?(:bucket_name)
60
- raise ArgumentError, 'You must provide a bucket_name to aws_s3_bucket.'
62
+ if validated_params.empty? || !validated_params.key?(:bucket_name)
63
+ raise ArgumentError, "You must provide a bucket_name to aws_s3_bucket."
61
64
  end
62
65
 
63
66
  validated_params
@@ -83,7 +86,7 @@ class AwsS3Bucket < Inspec.resource(1)
83
86
  begin
84
87
  # AWS SDK returns a StringIO, we have to read()
85
88
  raw_policy = backend.get_bucket_policy(bucket: bucket_name).policy
86
- return JSON.parse(raw_policy.read)['Statement'].map do |statement|
89
+ return JSON.parse(raw_policy.read)["Statement"].map do |statement|
87
90
  lowercase_hash = {}
88
91
  statement.each_key { |k| lowercase_hash[k.downcase] = statement[k] }
89
92
  @bucket_policy = OpenStruct.new(lowercase_hash)
@@ -1,14 +1,17 @@
1
- # author: Matthew Dromazos
1
+ require "resource_support/aws/aws_singular_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-s3"
4
+
2
5
  class AwsS3BucketObject < Inspec.resource(1)
3
- name 'aws_s3_bucket_object'
4
- desc 'Verifies settings for a s3 bucket object'
6
+ name "aws_s3_bucket_object"
7
+ desc "Verifies settings for a s3 bucket object"
5
8
  example <<~EXAMPLE
6
9
  describe aws_s3_bucket_object(bucket_name: 'bucket_name', key: 'file_name') do
7
10
  it { should exist }
8
11
  it { should_not be_public }
9
12
  end
10
13
  EXAMPLE
11
- supports platform: 'aws'
14
+ supports platform: "aws"
12
15
 
13
16
  include AwsSingularResourceMixin
14
17
  attr_reader :bucket_name, :key
@@ -30,8 +33,8 @@ class AwsS3BucketObject < Inspec.resource(1)
30
33
  def public?
31
34
  # first line just for formatting
32
35
  false || \
33
- object_acl.any? { |g| g.grantee.type == 'Group' && g.grantee.uri =~ /AllUsers/ } || \
34
- object_acl.any? { |g| g.grantee.type == 'Group' && g.grantee.uri =~ /AuthenticatedUsers/ }
36
+ object_acl.any? { |g| g.grantee.type == "Group" && g.grantee.uri =~ /AllUsers/ } || \
37
+ object_acl.any? { |g| g.grantee.type == "Group" && g.grantee.uri =~ /AuthenticatedUsers/ }
35
38
  end
36
39
 
37
40
  private
@@ -39,10 +42,10 @@ class AwsS3BucketObject < Inspec.resource(1)
39
42
  def validate_params(raw_params)
40
43
  validated_params = check_resource_param_names(
41
44
  raw_params: raw_params,
42
- allowed_params: [:bucket_name, :key, :id],
45
+ allowed_params: [:bucket_name, :key, :id]
43
46
  )
44
- if validated_params.empty? or !validated_params.key?(:bucket_name) or !validated_params.key?(:key)
45
- raise ArgumentError, 'You must provide a bucket_name and key to aws_s3_bucket_object.'
47
+ if validated_params.empty? || !validated_params.key?(:bucket_name) || !validated_params.key?(:key)
48
+ raise ArgumentError, "You must provide a bucket_name and key to aws_s3_bucket_object."
46
49
  end
47
50
  validated_params
48
51
  end
@@ -1,14 +1,16 @@
1
- # author: Matthew Dromazos
2
- # author: Sam Cornwell
1
+ require "resource_support/aws/aws_plural_resource_mixin"
2
+ require "resource_support/aws/aws_backend_base"
3
+ require "aws-sdk-s3"
4
+
3
5
  class AwsS3Buckets < Inspec.resource(1)
4
- name 'aws_s3_buckets'
5
- desc 'Verifies settings for AWS S3 Buckets in bulk'
6
+ name "aws_s3_buckets"
7
+ desc "Verifies settings for AWS S3 Buckets in bulk"
6
8
  example <<~EXAMPLE
7
9
  describe aws_s3_bucket do
8
10
  its('bucket_names') { should eq ['my_bucket'] }
9
11
  end
10
12
  EXAMPLE
11
- supports platform: 'aws'
13
+ supports platform: "aws"
12
14
 
13
15
  include AwsPluralResourceMixin
14
16
 
@@ -19,12 +21,12 @@ class AwsS3Buckets < Inspec.resource(1)
19
21
  filter.install_filter_methods_on_resource(self, :table)
20
22
 
21
23
  def to_s
22
- 'S3 Buckets'
24
+ "S3 Buckets"
23
25
  end
24
26
 
25
27
  def validate_params(resource_params)
26
28
  unless resource_params.empty?
27
- raise ArgumentError, 'aws_s3_buckets does not accept resource parameters.'
29
+ raise ArgumentError, "aws_s3_buckets does not accept resource parameters."
28
30
  end
29
31
  resource_params
30
32
  end
@@ -1,15 +1,19 @@
1
- require 'set'
2
- require 'ipaddr'
1
+ require "set"
2
+ require "ipaddr"
3
+
4
+ require "resource_support/aws/aws_singular_resource_mixin"
5
+ require "resource_support/aws/aws_backend_base"
6
+ require "aws-sdk-ec2"
3
7
 
4
8
  class AwsSecurityGroup < Inspec.resource(1)
5
- name 'aws_security_group'
6
- desc 'Verifies settings for an individual AWS Security Group.'
9
+ name "aws_security_group"
10
+ desc "Verifies settings for an individual AWS Security Group."
7
11
  example <<~EXAMPLE
8
12
  describe aws_security_group('sg-12345678') do
9
13
  it { should exist }
10
14
  end
11
15
  EXAMPLE
12
- supports platform: 'aws'
16
+ supports platform: "aws"
13
17
 
14
18
  include AwsSingularResourceMixin
15
19
  attr_reader :description, :group_id, :group_name, :vpc_id, :inbound_rules, :outbound_rules, :inbound_rules_count, :outbound_rules_count
@@ -47,7 +51,7 @@ class AwsSecurityGroup < Inspec.resource(1)
47
51
  return false unless rules.count == 1 || criteria.key?(:position)
48
52
  if criteria.key?(:security_group)
49
53
  if criteria.key?(:position)
50
- pos = criteria[:position] -1
54
+ pos = criteria[:position] - 1
51
55
  else
52
56
  pos = 0
53
57
  end
@@ -119,7 +123,7 @@ class AwsSecurityGroup < Inspec.resource(1)
119
123
  end
120
124
 
121
125
  unless idx < rules.count
122
- raise ArgumentError, "aws_security_group 'allow' 'position' criteria #{idx+1} is out of range - there are only #{rules.count} rules for security group #{group_id}."
126
+ raise ArgumentError, "aws_security_group 'allow' 'position' criteria #{idx + 1} is out of range - there are only #{rules.count} rules for security group #{group_id}."
123
127
  end
124
128
 
125
129
  [rules[idx]]
@@ -157,7 +161,7 @@ class AwsSecurityGroup < Inspec.resource(1)
157
161
  return true unless criteria.key?(:protocol)
158
162
  prot = criteria[:protocol]
159
163
  # We provide a "fluency alias" for -1 (any).
160
- prot = '-1' if prot == 'any'
164
+ prot = "-1" if prot == "any"
161
165
 
162
166
  rule[:ip_protocol] == prot
163
167
  end
@@ -210,7 +214,7 @@ class AwsSecurityGroup < Inspec.resource(1)
210
214
  raw_params: raw_params,
211
215
  allowed_params: [:id, :group_id, :group_name, :vpc_id],
212
216
  allowed_scalar_name: :group_id,
213
- allowed_scalar_type: String,
217
+ allowed_scalar_type: String
214
218
  )
215
219
 
216
220
  # id is an alias for group_id
@@ -227,7 +231,7 @@ class AwsSecurityGroup < Inspec.resource(1)
227
231
  validated_params = recognized_params
228
232
 
229
233
  if validated_params.empty?
230
- raise ArgumentError, 'You must provide parameters to aws_security_group, such as group_name, group_id, or vpc_id.g_group.'
234
+ raise ArgumentError, "You must provide parameters to aws_security_group, such as group_name, group_id, or vpc_id.g_group."
231
235
  end
232
236
  validated_params
233
237
  end
@@ -261,9 +265,9 @@ class AwsSecurityGroup < Inspec.resource(1)
261
265
  next if val.nil?
262
266
  filters.push(
263
267
  {
264
- name: criterion_name.to_s.tr('_', '-'),
268
+ name: criterion_name.to_s.tr("_", "-"),
265
269
  values: [val],
266
- },
270
+ }
267
271
  )
268
272
  end
269
273
  dsg_response = backend.describe_security_groups(filters: filters)
@@ -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 AwsSecurityGroups < Inspec.resource(1)
2
- name 'aws_security_groups'
3
- desc 'Verifies settings for AWS Security Groups in bulk'
6
+ name "aws_security_groups"
7
+ desc "Verifies settings for AWS Security Groups in bulk"
4
8
  example <<~EXAMPLE
5
9
  # Verify that you have security groups defined
6
10
  describe aws_security_groups do
@@ -12,7 +16,7 @@ class AwsSecurityGroups < Inspec.resource(1)
12
16
  its('entries.count') { should be > 1 }
13
17
  end
14
18
  EXAMPLE
15
- supports platform: 'aws'
19
+ supports platform: "aws"
16
20
 
17
21
  include AwsPluralResourceMixin
18
22
 
@@ -23,20 +27,20 @@ class AwsSecurityGroups < Inspec.resource(1)
23
27
  filter.install_filter_methods_on_resource(self, :table)
24
28
 
25
29
  def to_s
26
- 'EC2 Security Groups'
30
+ "EC2 Security Groups"
27
31
  end
28
32
 
29
33
  private
30
34
 
31
35
  def validate_params(raw_criteria)
32
36
  unless raw_criteria.is_a? Hash
33
- raise 'Unrecognized criteria for fetching Security Groups. ' \
37
+ raise "Unrecognized criteria for fetching Security Groups. " \
34
38
  "Use 'criteria: value' format."
35
39
  end
36
40
 
37
41
  # No criteria yet
38
42
  unless raw_criteria.empty?
39
- raise ArgumentError, 'aws_ec2_security_groups does not currently accept resource parameters.'
43
+ raise ArgumentError, "aws_ec2_security_groups does not currently accept resource parameters."
40
44
  end
41
45
  raw_criteria
42
46
  end
@@ -47,8 +51,8 @@ class AwsSecurityGroups < Inspec.resource(1)
47
51
  backend.describe_security_groups({}).security_groups.each do |sg_info|
48
52
  @table.push({
49
53
  group_id: sg_info.group_id,
50
- group_name: sg_info.group_name,
51
- vpc_id: sg_info.vpc_id,
54
+ group_name: sg_info.group_name,
55
+ vpc_id: sg_info.vpc_id,
52
56
  })
53
57
  end
54
58
  end
@@ -1,6 +1,10 @@
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 AwsSnsSubscription < Inspec.resource(1)
2
- name 'aws_sns_subscription'
3
- desc 'Verifies settings for an SNS Subscription'
6
+ name "aws_sns_subscription"
7
+ desc "Verifies settings for an SNS Subscription"
4
8
  example <<~EXAMPLE
5
9
  describe aws_sns_subscription('arn:aws:sns:us-east-1::test-topic-01:b214aff5-a2c7-438f-a753-8494493f2ff6') do
6
10
  it { should_not have_raw_message_delivery }
@@ -12,7 +16,7 @@ class AwsSnsSubscription < Inspec.resource(1)
12
16
  end
13
17
  EXAMPLE
14
18
 
15
- supports platform: 'aws'
19
+ supports platform: "aws"
16
20
 
17
21
  include AwsSingularResourceMixin
18
22
  attr_reader :arn, :owner, :raw_message_delivery, :topic_arn, :endpoint, :protocol,
@@ -36,11 +40,11 @@ class AwsSnsSubscription < Inspec.resource(1)
36
40
  raw_params: raw_params,
37
41
  allowed_params: [:subscription_arn],
38
42
  allowed_scalar_name: :subscription_arn,
39
- allowed_scalar_type: String,
43
+ allowed_scalar_type: String
40
44
  )
41
45
 
42
46
  if validated_params.empty?
43
- raise ArgumentError, 'You must provide a subscription_arn to aws_sns_subscription.'
47
+ raise ArgumentError, "You must provide a subscription_arn to aws_sns_subscription."
44
48
  end
45
49
 
46
50
  validated_params
@@ -52,12 +56,12 @@ class AwsSnsSubscription < Inspec.resource(1)
52
56
  begin
53
57
  aws_response = backend.get_subscription_attributes(subscription_arn: @subscription_arn).attributes
54
58
  @exists = true
55
- @owner = aws_response['Owner']
56
- @raw_message_delivery = aws_response['RawMessageDelivery'].eql?('true')
57
- @topic_arn = aws_response['TopicArn']
58
- @endpoint = aws_response['Endpoint']
59
- @protocol = aws_response['Protocol']
60
- @confirmation_was_authenticated = aws_response['ConfirmationWasAuthenticated'].eql?('true')
59
+ @owner = aws_response["Owner"]
60
+ @raw_message_delivery = aws_response["RawMessageDelivery"].eql?("true")
61
+ @topic_arn = aws_response["TopicArn"]
62
+ @endpoint = aws_response["Endpoint"]
63
+ @protocol = aws_response["Protocol"]
64
+ @confirmation_was_authenticated = aws_response["ConfirmationWasAuthenticated"].eql?("true")
61
65
  rescue Aws::SNS::Errors::NotFound
62
66
  @exists = false
63
67
  return