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,17 @@
1
- # encoding: utf-8
1
+ require "inspec/globals"
2
2
 
3
3
  module InspecPlugins
4
4
  module Compliance
5
5
  # stores configuration on local filesystem
6
6
  class Configuration
7
7
  def initialize
8
- @config_path = File.join(Inspec.config_dir, 'compliance')
8
+ @config_path = File.join(Inspec.config_dir, "compliance")
9
9
  # ensure the directory is available
10
10
  unless File.directory?(@config_path)
11
11
  FileUtils.mkdir_p(@config_path)
12
12
  end
13
13
  # set config file path
14
- @config_file = File.join(@config_path, '/config.json')
14
+ @config_file = File.join(@config_path, "/config.json")
15
15
  @config = {}
16
16
 
17
17
  # load the data
@@ -46,7 +46,7 @@ module InspecPlugins
46
46
 
47
47
  # stores a hash to json
48
48
  def store
49
- File.open(@config_file, 'w') do |f|
49
+ File.open(@config_file, "w") do |f|
50
50
  f.chmod(0600)
51
51
  f.write(@config.to_json)
52
52
  end
@@ -66,13 +66,13 @@ module InspecPlugins
66
66
  sup = version_with_support(feature)
67
67
 
68
68
  # we do not know the version, therefore we do not know if its possible to use the feature
69
- return if self['version'].nil? || self['version']['version'].nil?
69
+ return if self["version"].nil? || self["version"]["version"].nil?
70
70
 
71
71
  if sup.is_a?(Array)
72
- Gem::Version.new(self['version']['version']) >= sup[0] &&
73
- Gem::Version.new(self['version']['version']) < sup[1]
72
+ Gem::Version.new(self["version"]["version"]) >= sup[0] &&
73
+ Gem::Version.new(self["version"]["version"]) < sup[1]
74
74
  else
75
- Gem::Version.new(self['version']['version']) >= sup
75
+ Gem::Version.new(self["version"]["version"]) >= sup
76
76
  end
77
77
  end
78
78
 
@@ -81,7 +81,7 @@ module InspecPlugins
81
81
  return if supported?(feature)
82
82
 
83
83
  puts "This feature (#{feature}) is not available for legacy installations."
84
- puts 'Please upgrade to a recent version of Chef Compliance.'
84
+ puts "Please upgrade to a recent version of Chef Compliance."
85
85
  exit 1
86
86
  end
87
87
 
@@ -93,9 +93,9 @@ module InspecPlugins
93
93
  def version_with_support(feature)
94
94
  case feature.to_sym
95
95
  when :oidc
96
- Gem::Version.new('0.16.19')
96
+ Gem::Version.new("0.16.19")
97
97
  else
98
- Gem::Version.new('0.0.0')
98
+ Gem::Version.new("0.0.0")
99
99
  end
100
100
  end
101
101
  end
@@ -1,8 +1,6 @@
1
- # encoding: utf-8
2
-
3
- require 'net/http'
4
- require 'net/http/post/multipart'
5
- require 'uri'
1
+ require "net/http"
2
+ require "net/http/post/multipart"
3
+ require "uri"
6
4
 
7
5
  module InspecPlugins
8
6
  module Compliance
@@ -24,11 +22,11 @@ module InspecPlugins
24
22
  uri = _parse_url(url)
25
23
  req = Net::HTTP::Post.new(uri.path)
26
24
  if basic_auth
27
- req.basic_auth token, ''
25
+ req.basic_auth token, ""
28
26
  else
29
- req['Authorization'] = "Bearer #{token}"
27
+ req["Authorization"] = "Bearer #{token}"
30
28
  end
31
- req.form_data={}
29
+ req.form_data = {}
32
30
 
33
31
  send_request(uri, req, insecure)
34
32
  end
@@ -50,7 +48,7 @@ module InspecPlugins
50
48
  http = Net::HTTP.new(uri.host, uri.port)
51
49
 
52
50
  # set connection flags
53
- http.use_ssl = (uri.scheme == 'https')
51
+ http.use_ssl = (uri.scheme == "https")
54
52
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if insecure
55
53
 
56
54
  req = Net::HTTP::Post.new(uri.path)
@@ -58,13 +56,13 @@ module InspecPlugins
58
56
  req.add_field(key, value)
59
57
  end
60
58
 
61
- req.body_stream=File.open(file_path, 'rb')
62
- req.add_field('Content-Length', File.size(file_path))
63
- req.add_field('Content-Type', 'application/x-gzip')
59
+ req.body_stream = File.open(file_path, "rb")
60
+ req.add_field("Content-Length", File.size(file_path))
61
+ req.add_field("Content-Type", "application/x-gzip")
64
62
 
65
- boundary = 'INSPEC-PROFILE-UPLOAD'
66
- req.add_field('session', boundary)
67
- res=http.request(req)
63
+ boundary = "INSPEC-PROFILE-UPLOAD"
64
+ req.add_field("session", boundary)
65
+ res = http.request(req)
68
66
  res
69
67
  end
70
68
 
@@ -74,11 +72,11 @@ module InspecPlugins
74
72
  http = Net::HTTP.new(uri.host, uri.port)
75
73
 
76
74
  # set connection flags
77
- http.use_ssl = (uri.scheme == 'https')
75
+ http.use_ssl = (uri.scheme == "https")
78
76
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE if insecure
79
77
 
80
78
  File.open(file_path) do |tar|
81
- req = Net::HTTP::Post::Multipart.new(uri, 'file' => UploadIO.new(tar, 'application/x-gzip', File.basename(file_path)))
79
+ req = Net::HTTP::Post::Multipart.new(uri, "file" => UploadIO.new(tar, "application/x-gzip", File.basename(file_path)))
82
80
  headers.each do |key, value|
83
81
  req.add_field(key, value)
84
82
  end
@@ -90,20 +88,20 @@ module InspecPlugins
90
88
  # sends a http requests
91
89
  def self.send_request(uri, req, insecure)
92
90
  opts = {
93
- use_ssl: uri.scheme == 'https',
91
+ use_ssl: uri.scheme == "https",
94
92
  }
95
93
  opts[:verify_mode] = OpenSSL::SSL::VERIFY_NONE if insecure
96
94
 
97
95
  raise "Unable to parse URI: #{uri}" if uri.nil? || uri.host.nil?
98
- res = Net::HTTP.start(uri.host, uri.port, opts) { |http|
96
+ res = Net::HTTP.start(uri.host, uri.port, opts) do |http|
99
97
  http.request(req)
100
- }
98
+ end
101
99
  res
102
100
  rescue OpenSSL::SSL::SSLError => e
103
- raise e unless e.message.include? 'certificate verify failed'
101
+ raise e unless e.message.include? "certificate verify failed"
104
102
 
105
103
  puts "Error: Failed to connect to #{uri}."
106
- puts 'If the server uses a self-signed certificate, please re-run the login command with the --insecure option.'
104
+ puts "If the server uses a self-signed certificate, please re-run the login command with the --insecure option."
107
105
  exit 1
108
106
  end
109
107
 
@@ -1,5 +1,3 @@
1
- # encoding: utf-8
2
-
3
1
  module InspecPlugins
4
2
  module Compliance
5
3
  # is a helper that provides information which version of compliance supports
@@ -11,9 +9,9 @@ module InspecPlugins
11
9
  def self.version_with_support(feature)
12
10
  case feature.to_sym
13
11
  when :oidc # open id connect authentication
14
- Gem::Version.new('0.16.19')
12
+ Gem::Version.new("0.16.19")
15
13
  else
16
- Gem::Version.new('0.0.0')
14
+ Gem::Version.new("0.0.0")
17
15
  end
18
16
  end
19
17
 
@@ -1,8 +1,7 @@
1
- # encoding: utf-8
2
-
3
- require 'uri'
4
- require 'inspec/fetcher'
5
- require 'inspec/errors'
1
+ require "uri"
2
+ require "inspec/fetcher"
3
+ require "inspec/errors"
4
+ require "inspec/dist"
6
5
 
7
6
  # InSpec Target Helper for Chef Compliance
8
7
  # reuses UrlHelper, but it knows the target server and the access token already
@@ -10,13 +9,15 @@ require 'inspec/errors'
10
9
  module InspecPlugins
11
10
  module Compliance
12
11
  class Fetcher < Fetchers::Url
13
- name 'compliance'
12
+ include Inspec::Dist
13
+
14
+ name "compliance"
14
15
  priority 500
15
16
  attr_reader :upstream_sha256
16
17
 
17
18
  def initialize(target, opts)
18
19
  super(target, opts)
19
- @upstream_sha256 = ''
20
+ @upstream_sha256 = ""
20
21
  if target.is_a?(Hash) && target.key?(:url)
21
22
  @target = target[:url]
22
23
  @upstream_sha256 = target[:sha256]
@@ -30,16 +31,16 @@ module InspecPlugins
30
31
  end
31
32
 
32
33
  def self.check_compliance_token(uri, config)
33
- if config['token'].nil? && config['refresh_token'].nil?
34
- if config['server_type'] == 'automate'
35
- server = 'automate'
36
- msg = 'inspec compliance login https://your_automate_server --user USER --ent ENT --dctoken DCTOKEN or --token USERTOKEN'
37
- elsif config['server_type'] == 'automate2'
38
- server = 'automate2'
39
- msg = 'inspec compliance login https://your_automate2_server --user USER --token APITOKEN'
34
+ if config["token"].nil? && config["refresh_token"].nil?
35
+ if config["server_type"] == "automate"
36
+ server = "automate"
37
+ msg = "#{EXEC_NAME} compliance login https://your_automate_server --user USER --ent ENT --dctoken DCTOKEN or --token USERTOKEN"
38
+ elsif config["server_type"] == "automate2"
39
+ server = "automate2"
40
+ msg = "#{EXEC_NAME} compliance login https://your_automate2_server --user USER --token APITOKEN"
40
41
  else
41
- server = 'compliance'
42
- msg = "inspec compliance login https://your_compliance_server --user admin --insecure --token 'PASTE TOKEN HERE' "
42
+ server = "compliance"
43
+ msg = "#{EXEC_NAME} compliance login https://your_compliance_server --user admin --insecure --token 'PASTE TOKEN HERE' "
43
44
  end
44
45
  raise Inspec::FetcherFailure, <<~EOF
45
46
 
@@ -54,7 +55,7 @@ module InspecPlugins
54
55
  end
55
56
 
56
57
  def self.get_target_uri(target)
57
- if target.is_a?(String) && URI(target).scheme == 'compliance'
58
+ if target.is_a?(String) && URI(target).scheme == "compliance"
58
59
  URI(target)
59
60
  elsif target.respond_to?(:key?) && target.key?(:compliance)
60
61
  URI("compliance://#{target[:compliance]}")
@@ -84,16 +85,16 @@ module InspecPlugins
84
85
  # If version was specified, it will be the first and only result.
85
86
  # Note we are calling the sha256 as a string, not a symbol since
86
87
  # it was returned as json from the Compliance API.
87
- profile_info = profile_result.sort_by { |x| Gem::Version.new(x['version']) }[0]
88
- profile_checksum = profile_info.key?('sha256') ? profile_info['sha256'] : ''
88
+ profile_info = profile_result.sort_by { |x| Gem::Version.new(x["version"]) }[0]
89
+ profile_checksum = profile_info.key?("sha256") ? profile_info["sha256"] : ""
89
90
  end
90
91
  end
91
92
  # We need to pass the token to the fetcher
92
- config['token'] = InspecPlugins::Compliance::API.get_token(config)
93
+ config["token"] = InspecPlugins::Compliance::API.get_token(config)
93
94
 
94
95
  # Needed for automate2 post request
95
96
  profile_stub = profile || target[:compliance]
96
- config['profile'] = InspecPlugins::Compliance::API.profile_split(profile_stub)
97
+ config["profile"] = InspecPlugins::Compliance::API.profile_split(profile_stub)
97
98
 
98
99
  new({ url: profile_fetch_url, sha256: profile_checksum }, config)
99
100
  rescue URI::Error => _e
@@ -111,7 +112,7 @@ module InspecPlugins
111
112
  end
112
113
 
113
114
  def to_s
114
- 'Chef Compliance Profile Loader'
115
+ "#{COMPLIANCE_PRODUCT_NAME} Profile Loader"
115
116
  end
116
117
 
117
118
  private
@@ -128,13 +129,15 @@ module InspecPlugins
128
129
 
129
130
  if InspecPlugins::Compliance::API.is_automate2_server?(@config)
130
131
  m = {}
131
- m[:owner] = @config['profile'][0]
132
- m[:id] = @config['profile'][1]
132
+ m[:owner] = @config["profile"][0]
133
+ m[:id] = @config["profile"][1]
133
134
  end
134
135
 
135
- raise 'Unable to determine compliance profile name. This can be caused by ' \
136
- 'an incorrect server in your configuration. Try to login to compliance ' \
137
- 'via the `inspec compliance login` command.' if m.nil?
136
+ if m.nil?
137
+ raise "Unable to determine compliance profile name. This can be caused by " \
138
+ "an incorrect server in your configuration. Try to login to compliance " \
139
+ "via the `#{EXEC_NAME} compliance login` command."
140
+ end
138
141
 
139
142
  "#{m[:owner]}/#{m[:id]}"
140
143
  end
@@ -1,43 +1,41 @@
1
- # encoding: utf-8
1
+ require_relative "../../../shared/core_plugin_test_helper.rb"
2
2
 
3
- require_relative '../../../shared/core_plugin_test_helper.rb'
4
-
5
- class ComplianceCli < MiniTest::Test
3
+ class ComplianceCli < Minitest::Test
6
4
  include CorePluginFunctionalHelper
7
5
 
8
6
  def test_help_output
9
- out = run_inspec_process('compliance help')
7
+ out = run_inspec_process("compliance help")
10
8
  assert_equal out.exit_status, 0
11
- assert_includes out.stdout, 'inspec compliance exec PROFILE'
9
+ assert_includes out.stdout, "inspec compliance exec PROFILE"
12
10
  end
13
11
 
14
12
  def test_logout_command
15
- out = run_inspec_process('compliance logout')
13
+ out = run_inspec_process("compliance logout")
16
14
  assert_equal out.exit_status, 0
17
- assert_includes out.stdout, ''
15
+ assert_includes out.stdout, ""
18
16
  end
19
17
 
20
18
  def test_error_login_with_invalid_url
21
- out = run_inspec_process('compliance login')
19
+ out = run_inspec_process("compliance login")
22
20
  assert_equal out.exit_status, 1
23
21
  assert_includes out.stderr, 'ERROR: "inspec compliance login" was called with no arguments'
24
22
  end
25
23
 
26
24
  def test_profile_list_without_auth
27
- out = run_inspec_process('compliance profiles')
25
+ out = run_inspec_process("compliance profiles")
28
26
  assert_equal out.exit_status, 0 # TODO: make this error
29
- assert_includes out.stdout, 'You need to login first with `inspec compliance login`'
27
+ assert_includes out.stdout, "You need to login first with `inspec compliance login`"
30
28
  end
31
29
 
32
30
  def test_error_upload_without_args
33
- out = run_inspec_process('compliance upload')
31
+ out = run_inspec_process("compliance upload")
34
32
  assert_equal out.exit_status, 1
35
33
  assert_includes out.stderr, 'ERROR: "inspec compliance upload" was called with no arguments'
36
34
  end
37
35
 
38
36
  def test_error_upload_with_fake_path
39
- out = run_inspec_process('compliance upload /path/to/dir')
37
+ out = run_inspec_process("compliance upload /path/to/dir")
40
38
  assert_equal out.exit_status, 0 # TODO: make this error
41
- assert_includes out.stdout, 'You need to login first with `inspec compliance login`'
39
+ assert_includes out.stdout, "You need to login first with `inspec compliance login`"
42
40
  end
43
41
  end
@@ -1,93 +1,91 @@
1
- # encoding: utf-8
2
-
3
1
  # options
4
- inspec_bin = 'BUNDLE_GEMFILE=/inspec/Gemfile bundle exec inspec'
5
- api_url = 'https://0.0.0.0'
6
- profile = '/inspec/examples/profile'
2
+ inspec_bin = "BUNDLE_GEMFILE=/inspec/Gemfile bundle exec inspec"
3
+ api_url = "https://0.0.0.0"
4
+ profile = "/inspec/examples/profile"
7
5
 
8
- user = command('whoami').stdout.strip
9
- pwd = command('pwd').stdout.strip
6
+ user = command("whoami").stdout.strip
7
+ pwd = command("pwd").stdout.strip
10
8
  puts "Run test as #{user} in path #{pwd}"
11
9
 
12
10
  # TODO: determine tokens automatically, define in kitchen yml
13
- access_token = ENV['COMPLIANCE_ACCESSTOKEN']
14
- refresh_token = ENV['COMPLIANCE_REFRESHTOKEN']
11
+ access_token = ENV["COMPLIANCE_ACCESSTOKEN"]
12
+ refresh_token = ENV["COMPLIANCE_REFRESHTOKEN"]
15
13
 
16
14
  %w{refresh_token access_token}.each do |type| # rubocop:disable Metrics/BlockLength
17
15
  case type
18
- when 'access_token'
16
+ when "access_token"
19
17
  token_options = "--token '#{access_token}'"
20
- when 'refresh_token'
18
+ when "refresh_token"
21
19
  token_options = "--refresh_token '#{refresh_token}'"
22
20
  end
23
21
 
24
22
  # verifies that the help command works
25
23
  describe command("#{inspec_bin} compliance help") do
26
- its('stdout') { should include 'inspec compliance help [COMMAND]' }
27
- its('stderr') { should eq '' }
28
- its('exit_status') { should eq 0 }
24
+ its("stdout") { should include "inspec compliance help [COMMAND]" }
25
+ its("stderr") { should eq "" }
26
+ its("exit_status") { should eq 0 }
29
27
  end
30
28
 
31
29
  # version command fails gracefully when server not configured
32
30
  describe command("#{inspec_bin} compliance version") do
33
- its('stdout') { should include 'Server configuration information is missing' }
34
- its('stderr') { should eq '' }
35
- its('exit_status') { should eq 1 }
31
+ its("stdout") { should include "Server configuration information is missing" }
32
+ its("stderr") { should eq "" }
33
+ its("exit_status") { should eq 1 }
36
34
  end
37
35
 
38
36
  # submitting a wrong token should have an exit of 0
39
37
  describe command("#{inspec_bin} compliance login #{api_url} --insecure --user 'admin' --token 'wrong-token'") do
40
- its('stdout') { should include 'token stored' }
38
+ its("stdout") { should include "token stored" }
41
39
  end
42
40
 
43
41
  # compliance login --help should give an accurate message for login
44
42
  describe command("#{inspec_bin} compliance login --help") do
45
- its('stdout') { should include "inspec compliance login SERVER --insecure --user='USER' --token='TOKEN'" }
46
- its('exit_status') { should eq 0 }
43
+ its("stdout") { should include "inspec compliance login SERVER --insecure --user='USER' --token='TOKEN'" }
44
+ its("exit_status") { should eq 0 }
47
45
  end
48
46
 
49
47
  # profiles command fails gracefully when token/server info is incorrect
50
48
  describe command("#{inspec_bin} compliance profiles") do
51
- its('stdout') { should include '401 Unauthorized. Please check your token' }
52
- its('stderr') { should eq '' }
53
- its('exit_status') { should eq 1 }
49
+ its("stdout") { should include "401 Unauthorized. Please check your token" }
50
+ its("stderr") { should eq "" }
51
+ its("exit_status") { should eq 1 }
54
52
  end
55
53
 
56
54
  # login via access token token
57
55
  describe command("#{inspec_bin} compliance login #{api_url} --insecure --user 'admin' #{token_options}") do
58
- its('stdout') { should include 'token', 'stored' }
59
- its('stdout') { should_not include 'Your server supports --user and --password only' }
60
- its('stderr') { should eq '' }
61
- its('exit_status') { should eq 0 }
56
+ its("stdout") { should include "token", "stored" }
57
+ its("stdout") { should_not include "Your server supports --user and --password only" }
58
+ its("stderr") { should eq "" }
59
+ its("exit_status") { should eq 0 }
62
60
  end
63
61
 
64
62
  # see available resources
65
63
  describe command("#{inspec_bin} compliance profiles") do
66
- its('stdout') { should include 'base/ssh' }
67
- its('stderr') { should eq '' }
68
- its('exit_status') { should eq 0 }
64
+ its("stdout") { should include "base/ssh" }
65
+ its("stderr") { should eq "" }
66
+ its("exit_status") { should eq 0 }
69
67
  end
70
68
 
71
69
  # upload a compliance profile
72
70
  describe command("#{inspec_bin} compliance upload #{profile} --overwrite") do
73
- its('stdout') { should include 'Profile is valid' }
74
- its('stdout') { should include 'Successfully uploaded profile' }
75
- its('stdout') { should_not include 'error(s)' }
76
- its('stderr') { should eq '' }
77
- its('exit_status') { should eq 0 }
71
+ its("stdout") { should include "Profile is valid" }
72
+ its("stdout") { should include "Successfully uploaded profile" }
73
+ its("stdout") { should_not include "error(s)" }
74
+ its("stderr") { should eq "" }
75
+ its("exit_status") { should eq 0 }
78
76
  end
79
77
 
80
78
  # returns the version of the server
81
79
  describe command("#{inspec_bin} compliance version") do
82
- its('stdout') { should include 'Chef Compliance version:' }
83
- its('stderr') { should eq '' }
84
- its('exit_status') { should eq 0 }
80
+ its("stdout") { should include "Chef Compliance version:" }
81
+ its("stderr") { should eq "" }
82
+ its("exit_status") { should eq 0 }
85
83
  end
86
84
 
87
85
  # logout
88
86
  describe command("#{inspec_bin} compliance logout") do
89
- its('stdout') { should include 'Successfully logged out' }
90
- its('stderr') { should eq '' }
91
- its('exit_status') { should eq 0 }
87
+ its("stdout") { should include "Successfully logged out" }
88
+ its("stderr") { should eq "" }
89
+ its("exit_status") { should eq 0 }
92
90
  end
93
91
  end