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.
- checksums.yaml +4 -4
- data/Gemfile +36 -38
- data/README.md +37 -21
- data/etc/deprecations.json +10 -0
- data/etc/plugin_filters.json +8 -0
- data/inspec.gemspec +38 -39
- data/lib/bundles/inspec-compliance/api.rb +1 -1
- data/lib/bundles/inspec-compliance/configuration.rb +1 -1
- data/lib/bundles/inspec-compliance/http.rb +1 -1
- data/lib/bundles/inspec-compliance/support.rb +1 -1
- data/lib/bundles/inspec-compliance/target.rb +1 -1
- data/lib/bundles/inspec-supermarket.rb +3 -7
- data/lib/bundles/inspec-supermarket/api.rb +10 -13
- data/lib/bundles/inspec-supermarket/cli.rb +12 -15
- data/lib/bundles/inspec-supermarket/target.rb +7 -11
- data/lib/fetchers/git.rb +14 -15
- data/lib/fetchers/local.rb +6 -10
- data/lib/fetchers/mock.rb +3 -5
- data/lib/fetchers/url.rb +42 -44
- data/lib/inspec.rb +23 -24
- data/lib/inspec/archive/tar.rb +2 -6
- data/lib/inspec/archive/zip.rb +3 -7
- data/lib/inspec/backend.rb +8 -9
- data/lib/inspec/base_cli.rb +64 -65
- data/lib/inspec/cached_fetcher.rb +2 -3
- data/lib/inspec/cli.rb +136 -97
- data/lib/inspec/config.rb +71 -61
- data/lib/inspec/control_eval_context.rb +22 -18
- data/lib/inspec/dependencies/cache.rb +2 -3
- data/lib/inspec/dependencies/dependency_set.rb +2 -3
- data/lib/inspec/dependencies/lockfile.rb +8 -9
- data/lib/inspec/dependencies/requirement.rb +7 -8
- data/lib/inspec/dependencies/resolver.rb +5 -7
- data/lib/inspec/describe.rb +2 -6
- data/lib/inspec/dist.rb +20 -0
- data/lib/inspec/dsl.rb +4 -7
- data/lib/inspec/dsl_shared.rb +1 -2
- data/lib/inspec/env_printer.rb +11 -12
- data/lib/inspec/errors.rb +0 -4
- data/lib/inspec/exceptions.rb +0 -1
- data/lib/inspec/expect.rb +5 -8
- data/lib/inspec/fetcher.rb +7 -10
- data/lib/inspec/file_provider.rb +24 -24
- data/lib/inspec/formatters.rb +3 -3
- data/lib/inspec/formatters/base.rb +8 -8
- data/lib/inspec/globals.rb +2 -2
- data/lib/inspec/impact.rb +5 -7
- data/lib/inspec/input_registry.rb +84 -33
- data/lib/inspec/library_eval_context.rb +3 -6
- data/lib/inspec/log.rb +1 -5
- data/lib/inspec/metadata.rb +17 -16
- data/lib/inspec/method_source.rb +5 -9
- data/lib/inspec/objects.rb +10 -12
- data/lib/inspec/objects/control.rb +7 -9
- data/lib/inspec/objects/describe.rb +9 -11
- data/lib/inspec/objects/each_loop.rb +1 -3
- data/lib/inspec/objects/input.rb +24 -26
- data/lib/inspec/objects/list.rb +4 -6
- data/lib/inspec/objects/or_test.rb +2 -4
- data/lib/inspec/objects/ruby_helper.rb +3 -5
- data/lib/inspec/objects/tag.rb +0 -2
- data/lib/inspec/objects/test.rb +9 -11
- data/lib/inspec/objects/value.rb +3 -5
- data/lib/inspec/plugin/v1.rb +2 -2
- data/lib/inspec/plugin/v1/plugin_types/cli.rb +1 -5
- data/lib/inspec/plugin/v1/plugin_types/fetcher.rb +2 -5
- data/lib/inspec/plugin/v1/plugin_types/resource.rb +4 -6
- data/lib/inspec/plugin/v1/plugin_types/secret.rb +1 -5
- data/lib/inspec/plugin/v1/plugin_types/source_reader.rb +1 -5
- data/lib/inspec/plugin/v1/plugins.rb +15 -19
- data/lib/inspec/plugin/v1/registry.rb +0 -4
- data/lib/inspec/plugin/v2.rb +8 -8
- data/lib/inspec/plugin/v2/activator.rb +1 -1
- data/lib/inspec/plugin/v2/config_file.rb +6 -6
- data/lib/inspec/plugin/v2/filter.rb +13 -13
- data/lib/inspec/plugin/v2/installer.rb +36 -24
- data/lib/inspec/plugin/v2/loader.rb +28 -28
- data/lib/inspec/plugin/v2/plugin_base.rb +15 -2
- data/lib/inspec/plugin/v2/plugin_types/cli.rb +5 -5
- data/lib/inspec/plugin/v2/plugin_types/input.rb +34 -0
- data/lib/inspec/plugin/v2/plugin_types/mock.rb +1 -1
- data/lib/inspec/plugin/v2/registry.rb +7 -7
- data/lib/inspec/polyfill.rb +0 -3
- data/lib/inspec/profile.rb +55 -63
- data/lib/inspec/profile_context.rb +27 -30
- data/lib/inspec/profile_vendor.rb +6 -9
- data/lib/inspec/reporters.rb +24 -24
- data/lib/inspec/reporters/automate.rb +17 -19
- data/lib/inspec/reporters/base.rb +1 -1
- data/lib/inspec/reporters/cli.rb +88 -91
- data/lib/inspec/reporters/json.rb +2 -4
- data/lib/inspec/reporters/json_automate.rb +1 -3
- data/lib/inspec/reporters/json_min.rb +1 -3
- data/lib/inspec/reporters/junit.rb +26 -28
- data/lib/inspec/reporters/yaml.rb +1 -3
- data/lib/inspec/require_loader.rb +0 -4
- data/lib/inspec/resource.rb +4 -125
- data/lib/inspec/resources.rb +121 -0
- data/lib/{resources → inspec/resources}/aide_conf.rb +24 -25
- data/lib/{resources → inspec/resources}/apache.rb +13 -14
- data/lib/{resources → inspec/resources}/apache_conf.rb +16 -17
- data/lib/{resources → inspec/resources}/apt.rb +17 -17
- data/lib/{resources → inspec/resources}/audit_policy.rb +7 -6
- data/lib/{resources → inspec/resources}/auditd.rb +62 -64
- data/lib/{resources → inspec/resources}/auditd_conf.rb +7 -8
- data/lib/{resources → inspec/resources}/bash.rb +6 -8
- data/lib/{resources → inspec/resources}/bond.rb +15 -14
- data/lib/{resources → inspec/resources}/bridge.rb +8 -8
- data/lib/{resources → inspec/resources}/chocolatey_package.rb +10 -8
- data/lib/{resources → inspec/resources}/command.rb +11 -10
- data/lib/{resources → inspec/resources}/cpan.rb +12 -12
- data/lib/{resources → inspec/resources}/cran.rb +9 -9
- data/lib/{resources → inspec/resources}/crontab.rb +47 -48
- data/lib/{resources → inspec/resources}/csv.rb +5 -5
- data/lib/{resources → inspec/resources}/dh_params.rb +5 -7
- data/lib/{resources → inspec/resources}/directory.rb +5 -7
- data/lib/{resources → inspec/resources}/docker.rb +63 -63
- data/lib/{resources → inspec/resources}/docker_container.rb +6 -6
- data/lib/{resources → inspec/resources}/docker_image.rb +9 -9
- data/lib/{resources → inspec/resources}/docker_object.rb +8 -13
- data/lib/{resources → inspec/resources}/docker_plugin.rb +6 -6
- data/lib/{resources → inspec/resources}/docker_service.rb +7 -7
- data/lib/{resources → inspec/resources}/elasticsearch.rb +40 -42
- data/lib/{resources → inspec/resources}/etc_fstab.rb +23 -24
- data/lib/{resources → inspec/resources}/etc_group.rb +26 -27
- data/lib/{resources → inspec/resources}/etc_hosts.rb +11 -13
- data/lib/{resources → inspec/resources}/etc_hosts_allow_deny.rb +25 -27
- data/lib/{resources → inspec/resources}/file.rb +80 -79
- data/lib/{resources → inspec/resources}/filesystem.rb +20 -15
- data/lib/{resources → inspec/resources}/firewalld.rb +26 -26
- data/lib/{resources → inspec/resources}/gem.rb +12 -12
- data/lib/{resources → inspec/resources}/groups.rb +28 -27
- data/lib/{resources → inspec/resources}/grub_conf.rb +46 -48
- data/lib/{resources → inspec/resources}/host.rb +31 -29
- data/lib/{resources → inspec/resources}/http.rb +24 -24
- data/lib/{resources → inspec/resources}/iis_app.rb +6 -7
- data/lib/{resources → inspec/resources}/iis_app_pool.rb +21 -19
- data/lib/{resources → inspec/resources}/iis_site.rb +17 -15
- data/lib/{resources → inspec/resources}/inetd_conf.rb +9 -10
- data/lib/{resources → inspec/resources}/ini.rb +7 -8
- data/lib/{resources → inspec/resources}/interface.rb +30 -30
- data/lib/{resources → inspec/resources}/iptables.rb +8 -8
- data/lib/{resources → inspec/resources}/json.rb +8 -10
- data/lib/{resources → inspec/resources}/kernel_module.rb +15 -15
- data/lib/{resources → inspec/resources}/kernel_parameter.rb +8 -8
- data/lib/{resources → inspec/resources}/key_rsa.rb +8 -10
- data/lib/{resources → inspec/resources}/ksh.rb +6 -8
- data/lib/{resources → inspec/resources}/limits_conf.rb +8 -9
- data/lib/{resources/login_def.rb → inspec/resources/login_defs.rb} +9 -10
- data/lib/{resources → inspec/resources}/mount.rb +6 -8
- data/lib/{resources → inspec/resources}/mssql_session.rb +16 -18
- data/lib/inspec/resources/mysql.rb +81 -0
- data/lib/{resources → inspec/resources}/mysql_conf.rb +13 -14
- data/lib/{resources → inspec/resources}/mysql_session.rb +16 -16
- data/lib/{resources → inspec/resources}/nginx.rb +16 -17
- data/lib/{resources → inspec/resources}/nginx_conf.rb +26 -27
- data/lib/{resources → inspec/resources}/npm.rb +9 -10
- data/lib/{resources → inspec/resources}/ntp_conf.rb +9 -10
- data/lib/{resources → inspec/resources}/oneget.rb +8 -8
- data/lib/{resources → inspec/resources}/oracledb_session.rb +33 -34
- data/lib/{resources → inspec/resources}/os.rb +6 -8
- data/lib/{resources → inspec/resources}/os_env.rb +11 -12
- data/lib/{resources → inspec/resources}/package.rb +66 -65
- data/lib/{resources → inspec/resources}/packages.rb +13 -13
- data/lib/{resources → inspec/resources}/parse_config.rb +8 -8
- data/lib/{resources → inspec/resources}/passwd.rb +18 -19
- data/lib/{resources → inspec/resources}/pip.rb +19 -19
- data/lib/{resources → inspec/resources}/platform.rb +9 -11
- data/lib/{resources → inspec/resources}/port.rb +134 -136
- data/lib/{resources → inspec/resources}/postgres.rb +40 -32
- data/lib/{resources → inspec/resources}/postgres_conf.rb +17 -17
- data/lib/{resources → inspec/resources}/postgres_hba_conf.rb +21 -23
- data/lib/{resources → inspec/resources}/postgres_ident_conf.rb +12 -14
- data/lib/{resources → inspec/resources}/postgres_session.rb +8 -9
- data/lib/{resources → inspec/resources}/powershell.rb +17 -13
- data/lib/{resources → inspec/resources}/processes.rb +29 -29
- data/lib/{resources/rabbitmq_conf.rb → inspec/resources/rabbitmq_config.rb} +10 -11
- data/lib/{resources → inspec/resources}/registry_key.rb +14 -14
- data/lib/inspec/resources/script.rb +1 -0
- data/lib/{resources → inspec/resources}/security_identifier.rb +11 -10
- data/lib/{resources → inspec/resources}/security_policy.rb +59 -58
- data/lib/{resources → inspec/resources}/service.rb +74 -75
- data/lib/{resources → inspec/resources}/shadow.rb +44 -45
- data/lib/{resources/ssh_conf.rb → inspec/resources/ssh_config.rb} +16 -17
- data/lib/{resources → inspec/resources}/ssl.rb +28 -29
- data/lib/inspec/resources/sys_info.rb +30 -0
- data/lib/{resources → inspec/resources}/toml.rb +5 -7
- data/lib/{resources → inspec/resources}/users.rb +65 -65
- data/lib/{resources → inspec/resources}/vbscript.rb +8 -9
- data/lib/{resources → inspec/resources}/virtualization.rb +60 -62
- data/lib/{resources → inspec/resources}/windows_feature.rb +9 -9
- data/lib/{resources → inspec/resources}/windows_hotfix.rb +5 -5
- data/lib/{resources → inspec/resources}/windows_task.rb +16 -15
- data/lib/{resources → inspec/resources}/wmi.rb +7 -8
- data/lib/{resources → inspec/resources}/x509_certificate.rb +9 -11
- data/lib/{resources/xinetd.rb → inspec/resources/xinetd_conf.rb} +27 -29
- data/lib/{resources → inspec/resources}/xml.rb +7 -7
- data/lib/{resources → inspec/resources}/yaml.rb +5 -6
- data/lib/{resources → inspec/resources}/yum.rb +10 -10
- data/lib/{resources → inspec/resources}/zfs_dataset.rb +6 -6
- data/lib/{resources → inspec/resources}/zfs_pool.rb +4 -4
- data/lib/inspec/rspec_extensions.rb +24 -8
- data/lib/inspec/rule.rb +14 -15
- data/lib/inspec/runner.rb +28 -28
- data/lib/inspec/runner_mock.rb +1 -5
- data/lib/inspec/runner_rspec.rb +18 -20
- data/lib/inspec/runtime_profile.rb +2 -5
- data/lib/inspec/schema.rb +142 -143
- data/lib/inspec/secrets.rb +3 -7
- data/lib/inspec/secrets/yaml.rb +3 -5
- data/lib/inspec/shell.rb +11 -15
- data/lib/inspec/shell_detector.rb +6 -7
- data/lib/inspec/source_reader.rb +4 -8
- data/lib/inspec/ui.rb +33 -39
- data/lib/inspec/ui_table_helper.rb +12 -0
- data/lib/{utils → inspec/utils}/command_wrapper.rb +4 -8
- data/lib/{utils → inspec/utils}/convert.rb +0 -4
- data/lib/{utils → inspec/utils}/database_helpers.rb +4 -8
- data/lib/inspec/utils/deprecation.rb +6 -0
- data/lib/{utils → inspec/utils}/deprecation/config_file.rb +19 -19
- data/lib/{utils → inspec/utils}/deprecation/deprecator.rb +12 -12
- data/lib/{utils → inspec/utils}/deprecation/errors.rb +1 -1
- data/lib/{utils → inspec/utils}/deprecation/global_method.rb +2 -2
- data/lib/{utils → inspec/utils}/enumerable_delegation.rb +0 -2
- data/lib/{utils → inspec/utils}/erlang_parser.rb +61 -65
- data/lib/{utils → inspec/utils}/file_reader.rb +1 -2
- data/lib/{utils → inspec/utils}/filter.rb +30 -33
- data/lib/{utils → inspec/utils}/filter_array.rb +0 -2
- data/lib/{utils → inspec/utils}/find_files.rb +9 -12
- data/lib/{utils → inspec/utils}/hash.rb +1 -5
- data/lib/inspec/utils/json_log.rb +15 -0
- data/lib/inspec/utils/latest_version.rb +13 -0
- data/lib/{utils → inspec/utils}/modulator.rb +0 -3
- data/lib/{utils → inspec/utils}/nginx_parser.rb +31 -35
- data/lib/{utils → inspec/utils}/object_traversal.rb +0 -3
- data/lib/{utils → inspec/utils}/parser.rb +45 -45
- data/lib/{utils → inspec/utils}/pkey_reader.rb +4 -2
- data/lib/{utils → inspec/utils}/simpleconfig.rb +8 -10
- data/lib/{utils → inspec/utils}/spdx.rb +1 -4
- data/lib/{utils → inspec/utils}/spdx.txt +0 -0
- data/lib/inspec/utils/telemetry.rb +3 -3
- data/lib/inspec/utils/telemetry/collector.rb +30 -9
- data/lib/inspec/utils/telemetry/data_series.rb +3 -1
- data/lib/inspec/utils/telemetry/global_methods.rb +1 -1
- data/lib/inspec/version.rb +1 -1
- data/lib/matchers/matchers.rb +22 -25
- data/lib/plugins/inspec-artifact/lib/inspec-artifact.rb +1 -1
- data/lib/plugins/inspec-artifact/lib/inspec-artifact/base.rb +52 -45
- data/lib/plugins/inspec-artifact/lib/inspec-artifact/cli.rb +18 -16
- data/lib/plugins/inspec-artifact/test/functional/inspec_artifact_test.rb +12 -11
- data/lib/plugins/inspec-compliance/lib/inspec-compliance.rb +1 -1
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api.rb +73 -73
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/api/login.rb +66 -62
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/cli.rb +59 -57
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/configuration.rb +11 -11
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/http.rb +20 -22
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/support.rb +2 -4
- data/lib/plugins/inspec-compliance/lib/inspec-compliance/target.rb +30 -27
- data/lib/plugins/inspec-compliance/test/functional/inspec_compliance_test.rb +12 -14
- data/lib/plugins/inspec-compliance/test/integration/default/cli.rb +39 -41
- data/lib/plugins/inspec-compliance/test/unit/api/login_test.rb +64 -64
- data/lib/plugins/inspec-compliance/test/unit/api_test.rb +157 -156
- data/lib/plugins/inspec-compliance/test/unit/target_test.rb +85 -85
- data/lib/plugins/inspec-habitat/Berksfile +2 -2
- data/lib/plugins/inspec-habitat/lib/inspec-habitat.rb +1 -1
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/cli.rb +15 -13
- data/lib/plugins/inspec-habitat/lib/inspec-habitat/profile.rb +64 -63
- data/lib/plugins/inspec-habitat/templates/habitat/hooks/run.erb +3 -3
- data/lib/plugins/inspec-habitat/templates/habitat/plan.sh.erb +11 -11
- data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/Berksfile +1 -1
- data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/metadata.rb +8 -8
- data/lib/plugins/inspec-habitat/test/cookbooks/inspec_habitat_fixture/recipes/default.rb +17 -17
- data/lib/plugins/inspec-habitat/test/functional/inspec_habitat_test.rb +9 -8
- data/lib/plugins/inspec-habitat/test/integration/default/inspec_habitat/controls/inspec_habitat.rb +14 -14
- data/lib/plugins/inspec-habitat/test/support/example_profile/controls/example.rb +4 -4
- data/lib/plugins/inspec-habitat/test/unit/profile_test.rb +42 -41
- data/lib/plugins/inspec-init/lib/inspec-init.rb +1 -1
- data/lib/plugins/inspec-init/lib/inspec-init/cli.rb +6 -8
- data/lib/plugins/inspec-init/lib/inspec-init/cli_plugin.rb +72 -74
- data/lib/plugins/inspec-init/lib/inspec-init/cli_profile.rb +9 -11
- data/lib/plugins/inspec-init/lib/inspec-init/renderer.rb +4 -4
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/Gemfile +0 -1
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/inspec-plugin-template.gemspec +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/cli_command.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/plugin.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/lib/inspec-plugin-template/version.rb +0 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/functional/inspec_plugin_template_test.rb +5 -5
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/helper.rb +1 -3
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb +2 -2
- data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb +2 -2
- data/lib/plugins/inspec-init/templates/profiles/aws/controls/example.rb +10 -11
- data/lib/plugins/inspec-init/templates/profiles/azure/controls/example.rb +4 -5
- data/lib/plugins/inspec-init/templates/profiles/gcp/controls/example.rb +10 -11
- data/lib/plugins/inspec-init/templates/profiles/os/controls/example.rb +6 -7
- data/lib/plugins/inspec-init/test/functional/inspec_init_plugin_test.rb +51 -50
- data/lib/plugins/inspec-init/test/functional/inspec_init_profile_test.rb +35 -33
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli.rb +1 -2
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/cli_command.rb +72 -70
- data/lib/plugins/inspec-plugin-manager-cli/lib/inspec-plugin-manager-cli/plugin.rb +1 -1
- data/lib/plugins/inspec-plugin-manager-cli/test/fixtures/plugins/wrong-name/lib/wrong-name.rb +1 -1
- data/lib/plugins/inspec-plugin-manager-cli/test/functional/inspec-plugin_test.rb +281 -271
- data/lib/plugins/inspec-plugin-manager-cli/test/unit/cli_args_test.rb +41 -41
- data/lib/plugins/inspec-plugin-manager-cli/test/unit/plugin_def_test.rb +25 -6
- data/lib/plugins/shared/core_plugin_test_helper.rb +43 -38
- data/lib/resource_support/aws.rb +67 -67
- data/lib/resource_support/aws/aws_plural_resource_mixin.rb +4 -1
- data/lib/resource_support/aws/aws_resource_mixin.rb +4 -3
- data/lib/resource_support/aws/aws_singular_resource_mixin.rb +4 -1
- data/lib/resources/aws/aws_billing_report.rb +15 -8
- data/lib/resources/aws/aws_billing_reports.rb +10 -7
- data/lib/resources/aws/aws_cloudtrail_trail.rb +9 -5
- data/lib/resources/aws/aws_cloudtrail_trails.rb +9 -5
- data/lib/resources/aws/aws_cloudwatch_alarm.rb +9 -5
- data/lib/resources/aws/aws_cloudwatch_log_metric_filter.rb +12 -8
- data/lib/resources/aws/aws_config_delivery_channel.rb +13 -9
- data/lib/resources/aws/aws_config_recorder.rb +10 -6
- data/lib/resources/aws/aws_ebs_volume.rb +12 -8
- data/lib/resources/aws/aws_ebs_volumes.rb +9 -5
- data/lib/resources/aws/aws_ec2_instance.rb +14 -11
- data/lib/resources/aws/aws_ec2_instances.rb +9 -5
- data/lib/resources/aws/aws_ecs_cluster.rb +11 -7
- data/lib/resources/aws/aws_eks_cluster.rb +13 -9
- data/lib/resources/aws/aws_elb.rb +9 -5
- data/lib/resources/aws/aws_elbs.rb +9 -5
- data/lib/resources/aws/aws_flow_log.rb +17 -13
- data/lib/resources/aws/aws_iam_access_key.rb +15 -11
- data/lib/resources/aws/aws_iam_access_keys.rb +19 -15
- data/lib/resources/aws/aws_iam_group.rb +9 -5
- data/lib/resources/aws/aws_iam_groups.rb +9 -5
- data/lib/resources/aws/aws_iam_password_policy.rb +13 -10
- data/lib/resources/aws/aws_iam_policies.rb +9 -5
- data/lib/resources/aws/aws_iam_policy.rb +16 -12
- data/lib/resources/aws/aws_iam_role.rb +9 -5
- data/lib/resources/aws/aws_iam_root_user.rb +12 -8
- data/lib/resources/aws/aws_iam_user.rb +12 -12
- data/lib/resources/aws/aws_iam_users.rb +10 -10
- data/lib/resources/aws/aws_kms_key.rb +12 -8
- data/lib/resources/aws/aws_kms_keys.rb +9 -5
- data/lib/resources/aws/aws_rds_instance.rb +11 -8
- data/lib/resources/aws/aws_route_table.rb +11 -7
- data/lib/resources/aws/aws_route_tables.rb +10 -6
- data/lib/resources/aws/aws_s3_bucket.rb +14 -11
- data/lib/resources/aws/aws_s3_bucket_object.rb +12 -9
- data/lib/resources/aws/aws_s3_buckets.rb +9 -7
- data/lib/resources/aws/aws_security_group.rb +16 -12
- data/lib/resources/aws/aws_security_groups.rb +12 -8
- data/lib/resources/aws/aws_sns_subscription.rb +15 -11
- data/lib/resources/aws/aws_sns_topic.rb +10 -6
- data/lib/resources/aws/aws_sns_topics.rb +9 -5
- data/lib/resources/aws/aws_sqs_queue.rb +18 -14
- data/lib/resources/aws/aws_subnet.rb +11 -7
- data/lib/resources/aws/aws_subnets.rb +9 -5
- data/lib/resources/aws/aws_vpc.rb +10 -6
- data/lib/resources/aws/aws_vpcs.rb +9 -5
- data/lib/resources/azure/azure_backend.rb +20 -18
- data/lib/resources/azure/azure_generic_resource.rb +13 -15
- data/lib/resources/azure/azure_resource_group.rb +17 -19
- data/lib/resources/azure/azure_virtual_machine.rb +6 -8
- data/lib/resources/azure/azure_virtual_machine_data_disk.rb +6 -8
- data/lib/source_readers/flat.rb +6 -10
- data/lib/source_readers/inspec.rb +8 -12
- metadata +141 -142
- data/lib/resources/mysql.rb +0 -82
- data/lib/resources/sys_info.rb +0 -28
- data/lib/utils/deprecation.rb +0 -6
- data/lib/utils/json_log.rb +0 -18
- data/lib/utils/latest_version.rb +0 -22
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require 'pathname'
|
|
4
|
-
require_relative 'renderer'
|
|
1
|
+
require "pathname"
|
|
2
|
+
require_relative "renderer"
|
|
5
3
|
|
|
6
4
|
module InspecPlugins
|
|
7
5
|
module Init
|
|
8
6
|
class CLI < Inspec.plugin(2, :cli_command)
|
|
9
|
-
subcommand_desc
|
|
7
|
+
subcommand_desc "init SUBCOMMAND", "Generate InSpec code"
|
|
10
8
|
|
|
11
|
-
TEMPLATES_PATH = File.expand_path(File.join(File.dirname(__FILE__),
|
|
9
|
+
TEMPLATES_PATH = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "templates"))
|
|
12
10
|
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative
|
|
11
|
+
require_relative "cli_profile"
|
|
12
|
+
require_relative "cli_plugin"
|
|
15
13
|
end
|
|
16
14
|
end
|
|
17
15
|
end
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require_relative 'renderer'
|
|
1
|
+
require_relative "renderer"
|
|
4
2
|
|
|
5
3
|
module InspecPlugins
|
|
6
4
|
module Init
|
|
@@ -8,28 +6,28 @@ module InspecPlugins
|
|
|
8
6
|
#-------------------------------------------------------------------#
|
|
9
7
|
# inspec init plugin
|
|
10
8
|
#-------------------------------------------------------------------#
|
|
11
|
-
desc
|
|
9
|
+
desc "plugin PLUGIN_NAME [options]", "Generates an InSpec plugin, which can extend the functionality of InSpec itself."
|
|
12
10
|
# General options
|
|
13
|
-
option :prompt, type: :boolean, default: true, desc:
|
|
14
|
-
option :detail, type: :string, default:
|
|
11
|
+
option :prompt, type: :boolean, default: true, desc: "Interactively prompt for information to put in your generated plugin."
|
|
12
|
+
option :detail, type: :string, default: "full", desc: "How detailed of a plugin to generate. 'full' is a normal full gem with tests; 'core' has tests but no gemspec; 'test-fixture' is stripped down for a test fixture."
|
|
15
13
|
|
|
16
14
|
# Templating vars
|
|
17
|
-
option :author_email, type: :string, default:
|
|
18
|
-
option :author_name, type: :string, default:
|
|
19
|
-
option :description, type: :string, default:
|
|
20
|
-
option :summary, type: :string, default:
|
|
21
|
-
option :license_name, type: :string, default:
|
|
22
|
-
option :hook, type: :array, default: [
|
|
15
|
+
option :author_email, type: :string, default: "you@example.com", desc: "Author Email for gemspec"
|
|
16
|
+
option :author_name, type: :string, default: "Your Name", desc: "Author Name for gemspec"
|
|
17
|
+
option :description, type: :string, default: "", desc: "Multi-line description of the plugin"
|
|
18
|
+
option :summary, type: :string, default: "A plugin with a default summary", desc: "One-line summary of your plugin"
|
|
19
|
+
option :license_name, type: :string, default: "Apache-2.0", desc: "The name of a license"
|
|
20
|
+
option :hook, type: :array, default: ["cli_command:my_command"], desc: "A list of plugin hooks, in the form type1:name1, type2:name2, etc"
|
|
23
21
|
# These vars have calculated defaults
|
|
24
|
-
option :homepage, type: :string, default: nil, desc:
|
|
25
|
-
option :module_name, type: :string, default: nil, desc:
|
|
26
|
-
option :license_text, type: :string, default:
|
|
27
|
-
option :plugin_name, type: :string, default:
|
|
28
|
-
option :copyright, type: :string, default: nil, desc:
|
|
22
|
+
option :homepage, type: :string, default: nil, desc: "A URL for your project, often a GitHub link"
|
|
23
|
+
option :module_name, type: :string, default: nil, desc: "Module Name for your plugin package. Will change plugin name to CamelCase by default."
|
|
24
|
+
option :license_text, type: :string, default: "", hide: true
|
|
25
|
+
option :plugin_name, type: :string, default: "", hide: true # This is here to give a uniform interface
|
|
26
|
+
option :copyright, type: :string, default: nil, desc: "A copyright statement, to be added to LICENSE"
|
|
29
27
|
|
|
30
28
|
def plugin(plugin_name)
|
|
31
29
|
plugin_type = determine_plugin_type(plugin_name)
|
|
32
|
-
snake_case = plugin_name.tr(
|
|
30
|
+
snake_case = plugin_name.tr("-", "_")
|
|
33
31
|
|
|
34
32
|
template_vars = {
|
|
35
33
|
name: plugin_name,
|
|
@@ -37,7 +35,7 @@ module InspecPlugins
|
|
|
37
35
|
snake_case: snake_case,
|
|
38
36
|
}.merge(plugin_vars_from_opts)
|
|
39
37
|
|
|
40
|
-
template_path = File.join(
|
|
38
|
+
template_path = File.join("plugins", plugin_type + "-plugin-template")
|
|
41
39
|
|
|
42
40
|
render_opts = {
|
|
43
41
|
templates_path: TEMPLATES_PATH,
|
|
@@ -47,7 +45,7 @@ module InspecPlugins
|
|
|
47
45
|
}
|
|
48
46
|
renderer = InspecPlugins::Init::Renderer.new(ui, render_opts)
|
|
49
47
|
|
|
50
|
-
renderer.render_with_values(template_path, plugin_type +
|
|
48
|
+
renderer.render_with_values(template_path, plugin_type + " plugin", template_vars)
|
|
51
49
|
end
|
|
52
50
|
|
|
53
51
|
private
|
|
@@ -55,14 +53,14 @@ module InspecPlugins
|
|
|
55
53
|
def determine_plugin_type(plugin_name)
|
|
56
54
|
plugin_type = plugin_name.match(/^(inspec|train)\-/)
|
|
57
55
|
unless plugin_type
|
|
58
|
-
ui.error(
|
|
56
|
+
ui.error("Plugin names must begin with either " + ui.emphasis("inspec") + " or " + ui.emphasis("train") + " - saw " + ui.emphasis(plugin_name))
|
|
59
57
|
ui.exit(:usage_error)
|
|
60
58
|
end
|
|
61
59
|
options[:plugin_name] = plugin_name
|
|
62
60
|
|
|
63
61
|
plugin_type = plugin_type[1]
|
|
64
|
-
unless plugin_type ==
|
|
65
|
-
ui.error(
|
|
62
|
+
unless plugin_type == "inspec"
|
|
63
|
+
ui.error("Sorry, only InSpec (inspec-) plugins are supported at this time: Train (train-) support is not implemented yet.")
|
|
66
64
|
ui.exit(:usage_error)
|
|
67
65
|
end
|
|
68
66
|
plugin_type
|
|
@@ -70,19 +68,19 @@ module InspecPlugins
|
|
|
70
68
|
|
|
71
69
|
def make_rename_map(_plugin_type, plugin_name, snake_case)
|
|
72
70
|
{
|
|
73
|
-
|
|
74
|
-
File.join(
|
|
75
|
-
File.join(
|
|
76
|
-
File.join(
|
|
77
|
-
File.join(
|
|
78
|
-
File.join(
|
|
79
|
-
File.join(
|
|
71
|
+
"inspec-plugin-template.gemspec" => plugin_name + ".gemspec",
|
|
72
|
+
File.join("lib", "inspec-plugin-template") => File.join("lib", plugin_name),
|
|
73
|
+
File.join("lib", "inspec-plugin-template.rb") => File.join("lib", plugin_name + ".rb"),
|
|
74
|
+
File.join("lib", "inspec-plugin-template", "cli_command.rb") => File.join("lib", plugin_name, "cli_command.rb"),
|
|
75
|
+
File.join("lib", "inspec-plugin-template", "plugin.rb") => File.join("lib", plugin_name, "plugin.rb"),
|
|
76
|
+
File.join("lib", "inspec-plugin-template", "version.rb") => File.join("lib", plugin_name, "version.rb"),
|
|
77
|
+
File.join("test", "functional", "inspec_plugin_template_test.rb") => File.join("test", "functional", snake_case + "_test.rb"),
|
|
80
78
|
}
|
|
81
79
|
end
|
|
82
80
|
|
|
83
81
|
def plugin_vars_from_opts
|
|
84
82
|
# Set dynamic default - module name is straightforward. Copyright, homepage, and license_text depend on other prompted vars.
|
|
85
|
-
options[:module_name] ||= options[:plugin_name].sub(/^(inspec|train)\-/,
|
|
83
|
+
options[:module_name] ||= options[:plugin_name].sub(/^(inspec|train)\-/, "").split("-").map(&:capitalize).join("")
|
|
86
84
|
|
|
87
85
|
if options[:prompt] && ui.interactive?
|
|
88
86
|
vars = options.dup.merge(vars_from_prompts)
|
|
@@ -90,15 +88,15 @@ module InspecPlugins
|
|
|
90
88
|
vars = options.dup.merge(vars_from_defaults)
|
|
91
89
|
|
|
92
90
|
else
|
|
93
|
-
ui.error(
|
|
91
|
+
ui.error("You requested interactive prompting for the template variables, but this does not seem to be an interactive terminal.")
|
|
94
92
|
ui.exit(:usage_error)
|
|
95
93
|
end
|
|
96
94
|
vars.merge(parse_hook_option(options[:hook]))
|
|
97
95
|
end
|
|
98
96
|
|
|
99
97
|
def vars_from_defaults
|
|
100
|
-
options[:copyright] ||=
|
|
101
|
-
options[:homepage] ||=
|
|
98
|
+
options[:copyright] ||= "Copyright © " + Date.today.year.to_s + " " + options[:author_name]
|
|
99
|
+
options[:homepage] ||= "https://github.com/" + options[:author_email].split("@").first + "/" + options[:plugin_name]
|
|
102
100
|
options[:license_text] = fetch_license_text(options[:license_name])
|
|
103
101
|
options
|
|
104
102
|
end
|
|
@@ -110,17 +108,17 @@ module InspecPlugins
|
|
|
110
108
|
summary: {},
|
|
111
109
|
description: { mode: :multiline },
|
|
112
110
|
module_name: {},
|
|
113
|
-
copyright: { default_setter: proc { options[:copyright] ||=
|
|
111
|
+
copyright: { default_setter: proc { options[:copyright] ||= "Copyright © " + Date.today.year.to_s + " " + options[:author_name] } },
|
|
114
112
|
license_name: {
|
|
115
113
|
mode: :select,
|
|
116
114
|
choices: [
|
|
117
|
-
{ name:
|
|
118
|
-
{ name:
|
|
119
|
-
{ name:
|
|
120
|
-
{ name:
|
|
115
|
+
{ name: "Apache 2.0", value: "Apache-2.0", default: true },
|
|
116
|
+
{ name: "Modified BSD", value: "BSD-3-Clause" },
|
|
117
|
+
{ name: "Proprietary (Closed Source)", value: "Proprietary" },
|
|
118
|
+
{ name: "Other (edit LICENSE yourself)", value: "Other" },
|
|
121
119
|
],
|
|
122
120
|
},
|
|
123
|
-
homepage: { default_setter: proc { options[:homepage] ||=
|
|
121
|
+
homepage: { default_setter: proc { options[:homepage] ||= "https://github.com/" + options[:author_email].split("@").first + "/" + options[:plugin_name] } },
|
|
124
122
|
# TODO: Handle hooks, when we ever have more than one type of plugin
|
|
125
123
|
}
|
|
126
124
|
|
|
@@ -132,7 +130,7 @@ module InspecPlugins
|
|
|
132
130
|
end
|
|
133
131
|
|
|
134
132
|
def prompt_for_options(option_order) # rubocop: disable Metrics/AbcSize
|
|
135
|
-
option_defs = self.class.all_commands[
|
|
133
|
+
option_defs = self.class.all_commands["plugin"].options
|
|
136
134
|
|
|
137
135
|
option_order.each do |opt_name, prompt_options|
|
|
138
136
|
opt_def = option_defs[opt_name]
|
|
@@ -140,15 +138,15 @@ module InspecPlugins
|
|
|
140
138
|
|
|
141
139
|
case prompt_options[:mode]
|
|
142
140
|
when :select
|
|
143
|
-
options[opt_name] = ui.prompt.select(
|
|
144
|
-
if opt_name == :license_name && options[opt_name] ==
|
|
145
|
-
ui.plain_line
|
|
141
|
+
options[opt_name] = ui.prompt.select("Choose " + opt_def.description + ":", prompt_options[:choices])
|
|
142
|
+
if opt_name == :license_name && options[opt_name] == "Other"
|
|
143
|
+
ui.plain_line "OK, be sure to update the " + ui.emphasis("LICENSE") + " file with your license details."
|
|
146
144
|
end
|
|
147
145
|
when :multiline
|
|
148
|
-
options[opt_name] = ui.prompt.multiline(
|
|
146
|
+
options[opt_name] = ui.prompt.multiline("Enter " + opt_def.description + ". Press Control-D to end.", default: options[opt_name])
|
|
149
147
|
else
|
|
150
148
|
# Assume plain ask
|
|
151
|
-
options[opt_name] = ui.prompt.ask(
|
|
149
|
+
options[opt_name] = ui.prompt.ask("Enter " + opt_def.description + ":", default: options[opt_name])
|
|
152
150
|
end
|
|
153
151
|
end
|
|
154
152
|
end
|
|
@@ -156,11 +154,11 @@ module InspecPlugins
|
|
|
156
154
|
def parse_hook_option(raw_option)
|
|
157
155
|
hooks_by_type = {}
|
|
158
156
|
raw_option.each do |entry|
|
|
159
|
-
parts = entry.split(
|
|
157
|
+
parts = entry.split(":")
|
|
160
158
|
type = parts.first.to_sym
|
|
161
159
|
name = parts.last
|
|
162
160
|
if hooks_by_type.key?(type)
|
|
163
|
-
ui.error
|
|
161
|
+
ui.error "The InSpec plugin generator can currently only generate one hook of each type"
|
|
164
162
|
ui.exit(:usage_error)
|
|
165
163
|
end
|
|
166
164
|
hooks_by_type[type] = name
|
|
@@ -168,19 +166,19 @@ module InspecPlugins
|
|
|
168
166
|
|
|
169
167
|
vars = { hooks: hooks_by_type }
|
|
170
168
|
if hooks_by_type.key?(:cli_command)
|
|
171
|
-
vars[:command_name_dashes] = hooks_by_type[:cli_command].tr(
|
|
172
|
-
vars[:command_name_snake] = hooks_by_type[:cli_command].tr(
|
|
169
|
+
vars[:command_name_dashes] = hooks_by_type[:cli_command].tr("_", "-")
|
|
170
|
+
vars[:command_name_snake] = hooks_by_type[:cli_command].tr("-", "_")
|
|
173
171
|
end
|
|
174
172
|
vars
|
|
175
173
|
end
|
|
176
174
|
|
|
177
175
|
def fetch_license_text(license_name)
|
|
178
176
|
case license_name
|
|
179
|
-
when
|
|
177
|
+
when "Proprietary"
|
|
180
178
|
<<~EOL
|
|
181
179
|
Proprietary software. All Rights Reserved.
|
|
182
180
|
EOL
|
|
183
|
-
when
|
|
181
|
+
when "Apache-2.0"
|
|
184
182
|
<<~EOL
|
|
185
183
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
186
184
|
you may not use this file except in compliance with the License.
|
|
@@ -193,7 +191,7 @@ module InspecPlugins
|
|
|
193
191
|
limitations under the License.
|
|
194
192
|
|
|
195
193
|
EOL
|
|
196
|
-
when
|
|
194
|
+
when "BSD-3-Clause"
|
|
197
195
|
<<~EOL
|
|
198
196
|
Modified BSD License
|
|
199
197
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
@@ -209,31 +207,31 @@ module InspecPlugins
|
|
|
209
207
|
|
|
210
208
|
def make_skip_list
|
|
211
209
|
case options[:detail]
|
|
212
|
-
when
|
|
210
|
+
when "full"
|
|
213
211
|
[]
|
|
214
|
-
when
|
|
212
|
+
when "core"
|
|
215
213
|
[
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
"Gemfile",
|
|
215
|
+
"inspec-plugin-template.gemspec",
|
|
216
|
+
"LICENSE",
|
|
217
|
+
"Rakefile",
|
|
220
218
|
]
|
|
221
|
-
when
|
|
219
|
+
when "test-fixture"
|
|
222
220
|
[
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
File.join(
|
|
228
|
-
File.join(
|
|
229
|
-
File.join(
|
|
230
|
-
File.join(
|
|
231
|
-
File.join(
|
|
232
|
-
File.join(
|
|
233
|
-
File.join(
|
|
234
|
-
File.join(
|
|
235
|
-
File.join(
|
|
236
|
-
File.join(
|
|
221
|
+
"Gemfile",
|
|
222
|
+
"inspec-plugin-template.gemspec",
|
|
223
|
+
"LICENSE",
|
|
224
|
+
"Rakefile",
|
|
225
|
+
File.join("test", "fixtures", "README.md"),
|
|
226
|
+
File.join("test", "fixtures"),
|
|
227
|
+
File.join("test", "functional", "inspec_plugin_template_test.rb"),
|
|
228
|
+
File.join("test", "functional", "README.md"),
|
|
229
|
+
File.join("test", "unit", "cli_args_test.rb"),
|
|
230
|
+
File.join("test", "unit", "plugin_def_test.rb"),
|
|
231
|
+
File.join("test", "unit", "README.md"),
|
|
232
|
+
File.join("test", "unit"),
|
|
233
|
+
File.join("test", "helper.rb"),
|
|
234
|
+
File.join("test"),
|
|
237
235
|
]
|
|
238
236
|
else
|
|
239
237
|
ui.error "Unrecognized value for 'detail': #{options[:detail]} - expected one of full, core, test-fixture"
|
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require 'pathname'
|
|
4
|
-
require_relative 'renderer'
|
|
1
|
+
require "pathname"
|
|
2
|
+
require_relative "renderer"
|
|
5
3
|
|
|
6
4
|
module InspecPlugins
|
|
7
5
|
module Init
|
|
@@ -11,8 +9,8 @@ module InspecPlugins
|
|
|
11
9
|
#-------------------------------------------------------------------#
|
|
12
10
|
def self.valid_profile_platforms
|
|
13
11
|
# Look in the 'template/profiles' directory and detect which platforms are available.
|
|
14
|
-
profile_templates_dir = File.join(TEMPLATES_PATH,
|
|
15
|
-
Dir.glob(File.join(profile_templates_dir,
|
|
12
|
+
profile_templates_dir = File.join(TEMPLATES_PATH, "profiles")
|
|
13
|
+
Dir.glob(File.join(profile_templates_dir, "*")).select { |p| File.directory?(p) }.map { |d| File.basename(d) }
|
|
16
14
|
end
|
|
17
15
|
|
|
18
16
|
no_commands do
|
|
@@ -21,17 +19,17 @@ module InspecPlugins
|
|
|
21
19
|
end
|
|
22
20
|
end
|
|
23
21
|
|
|
24
|
-
desc
|
|
25
|
-
option :platform, default:
|
|
22
|
+
desc "profile [OPTIONS] NAME", "Generate a new profile"
|
|
23
|
+
option :platform, default: "os", type: :string, aliases: [:p],
|
|
26
24
|
desc: "Which platform to generate a profile for: choose from #{valid_profile_platforms.join(', ')}"
|
|
27
25
|
option :overwrite, type: :boolean, default: false,
|
|
28
|
-
desc:
|
|
26
|
+
desc: "Overwrites existing directory"
|
|
29
27
|
def profile(new_profile_name)
|
|
30
28
|
unless valid_profile_platforms.include?(options[:platform])
|
|
31
29
|
ui.error "Unable to generate profile: No template available for platform '#{options[:platform]}' (expected one of: #{valid_profile_platforms.join(', ')})"
|
|
32
30
|
ui.exit(:usage_error)
|
|
33
31
|
end
|
|
34
|
-
template_path = File.join(
|
|
32
|
+
template_path = File.join("profiles", options[:platform])
|
|
35
33
|
|
|
36
34
|
render_opts = {
|
|
37
35
|
templates_path: TEMPLATES_PATH,
|
|
@@ -42,7 +40,7 @@ module InspecPlugins
|
|
|
42
40
|
vars = {
|
|
43
41
|
name: new_profile_name,
|
|
44
42
|
}
|
|
45
|
-
renderer.render_with_values(template_path,
|
|
43
|
+
renderer.render_with_values(template_path, "profile", vars)
|
|
46
44
|
end
|
|
47
45
|
end
|
|
48
46
|
end
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "fileutils"
|
|
2
|
+
require "erb"
|
|
3
3
|
|
|
4
4
|
module InspecPlugins
|
|
5
5
|
module Init
|
|
@@ -24,7 +24,7 @@ module InspecPlugins
|
|
|
24
24
|
source_dir = File.join(templates_path, template_subdir_path)
|
|
25
25
|
|
|
26
26
|
# prepare glob for all subdirectories and files
|
|
27
|
-
template_glob = File.join(source_dir,
|
|
27
|
+
template_glob = File.join(source_dir, "**", "{*,.*}")
|
|
28
28
|
|
|
29
29
|
# Use the name attribute to define the path to the new thing.
|
|
30
30
|
# May contain slashes.
|
|
@@ -43,7 +43,7 @@ module InspecPlugins
|
|
|
43
43
|
ui.exit(:usage_error)
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
ui.headline(
|
|
46
|
+
ui.headline("InSpec Code Generator")
|
|
47
47
|
|
|
48
48
|
ui.plain_line "Creating new #{template_type} at #{ui.emphasis(full_destination_path)}"
|
|
49
49
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# Include our test harness
|
|
7
7
|
require_relative '../helper'
|
|
8
8
|
|
|
9
|
-
# Because InSpec is a Spec-style test suite, we're going to use
|
|
9
|
+
# Because InSpec is a Spec-style test suite, we're going to use Minitest::Spec
|
|
10
10
|
# here, for familiar look and feel. However, this isn't InSpec (or RSpec) code.
|
|
11
11
|
describe 'inspec list-resources core' do
|
|
12
12
|
# Our helper.rb locates this library from the InSpec install that
|
|
@@ -30,11 +30,11 @@ describe 'inspec list-resources core' do
|
|
|
30
30
|
# think that this plugin we are currently testing is installed as a
|
|
31
31
|
# user plugin, by writing a plugin config file in a temp dir.
|
|
32
32
|
# To use it, just provide a command line, minus the word `inspec`.
|
|
33
|
-
let
|
|
33
|
+
let(:outcome) { run_inspec_process_with_this_plugin("listresources core") }
|
|
34
34
|
|
|
35
35
|
# Some tests through here use minitest Expectations, which attach to all
|
|
36
36
|
# Objects, and begin with 'must' (positive) or 'wont' (negative)
|
|
37
|
-
# See
|
|
37
|
+
# See http://docs.seattlerb.org/minitest/Minitest/Expectations.html
|
|
38
38
|
it("should exit successfully") { outcome.exit_status.must_equal(0) }
|
|
39
39
|
it("should be silent on stderr") { outcome.stderr.must_be_empty }
|
|
40
40
|
|
|
@@ -56,7 +56,7 @@ describe 'inspec list-resources core' do
|
|
|
56
56
|
describe "when run with a search pattern that matches things" do
|
|
57
57
|
# Notice that the command line is changed here:
|
|
58
58
|
# "list all resources that have the word user in them"
|
|
59
|
-
let
|
|
59
|
+
let(:outcome) { run_inspec_process_with_this_plugin("listresources core user") }
|
|
60
60
|
|
|
61
61
|
# Should be well-behaved...
|
|
62
62
|
it("should exit successfully") { outcome.exit_status.must_equal(0) }
|
|
@@ -76,7 +76,7 @@ describe 'inspec list-resources core' do
|
|
|
76
76
|
end
|
|
77
77
|
describe "when run with a search pattern that matches nothing" do
|
|
78
78
|
# Unlikely we'll have a resource with the string 'autogyro' in it.
|
|
79
|
-
let
|
|
79
|
+
let(:outcome) { run_inspec_process_with_this_plugin("listresources core autogyro") }
|
|
80
80
|
|
|
81
81
|
# Should be well-behaved...
|
|
82
82
|
it("should exit successfully") { outcome.exit_status.must_equal(0) }
|