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
|
@@ -19,8 +19,6 @@ require 'inspec/plugin/v2'
|
|
|
19
19
|
# You can select from a number of test harnesses. Since InSpec uses Spec-style controls
|
|
20
20
|
# in profile code, you will probably want to use something like minitest/spec, which provides
|
|
21
21
|
# Spec-style tests.
|
|
22
|
-
require 'minitest/
|
|
23
|
-
require 'minitest/autorun'
|
|
22
|
+
require 'minitest/autorun' # loads all styles and runs tests automatically
|
|
24
23
|
|
|
25
24
|
# You might want to put some debugging tools here. We run tests to find bugs, after all.
|
|
26
|
-
require 'byebug'
|
data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/cli_args_test.rb
CHANGED
|
@@ -7,7 +7,7 @@ require_relative '../helper'
|
|
|
7
7
|
# Load the class under test, the CliCommand definition.
|
|
8
8
|
require '<%= plugin_name %>/cli_command'
|
|
9
9
|
|
|
10
|
-
# Because InSpec is a Spec-style test suite, we're going to use
|
|
10
|
+
# Because InSpec is a Spec-style test suite, we're going to use Minitest::Spec
|
|
11
11
|
# here, for familiar look and feel. However, this isn't InSpec (or RSpec) code.
|
|
12
12
|
describe InspecPlugins::<%= module_name %>::CliCommand do
|
|
13
13
|
|
|
@@ -31,7 +31,7 @@ describe InspecPlugins::<%= module_name %>::CliCommand do
|
|
|
31
31
|
|
|
32
32
|
# Some tests through here use minitest Expectations, which attach to all
|
|
33
33
|
# Objects, and begin with 'must' (positive) or 'wont' (negative)
|
|
34
|
-
# See
|
|
34
|
+
# See http://docs.seattlerb.org/minitest/Minitest/Expectations.html
|
|
35
35
|
|
|
36
36
|
# Option count OK?
|
|
37
37
|
it "should take one option" do
|
data/lib/plugins/inspec-init/templates/plugins/inspec-plugin-template/test/unit/plugin_def_test.rb
CHANGED
|
@@ -7,7 +7,7 @@ require_relative '../helper'
|
|
|
7
7
|
# Load the class under test, the Plugin definition.
|
|
8
8
|
require '<%= plugin_name %>/plugin'
|
|
9
9
|
|
|
10
|
-
# Because InSpec is a Spec-style test suite, we're going to use
|
|
10
|
+
# Because InSpec is a Spec-style test suite, we're going to use Minitest::Spec
|
|
11
11
|
# here, for familiar look and feel. However, this isn't InSpec (or RSpec) code.
|
|
12
12
|
|
|
13
13
|
describe InspecPlugins::<%= module_name %>::Plugin do
|
|
@@ -36,7 +36,7 @@ describe InspecPlugins::<%= module_name %>::Plugin do
|
|
|
36
36
|
|
|
37
37
|
# Some tests through here use minitest Expectations, which attach to all
|
|
38
38
|
# Objects, and begin with 'must' (positive) or 'wont' (negative)
|
|
39
|
-
# See
|
|
39
|
+
# See http://docs.seattlerb.org/minitest/Minitest/Expectations.html
|
|
40
40
|
|
|
41
41
|
# The plugin system had an undocumented v1 API; this should be a v2 example.
|
|
42
42
|
it "should be an api-v2 plugin" do
|
|
@@ -1,32 +1,31 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
1
|
# copyright: 2018, The Authors
|
|
3
2
|
|
|
4
|
-
title
|
|
3
|
+
title "Sample Section"
|
|
5
4
|
|
|
6
|
-
aws_vpc_id = attribute(
|
|
5
|
+
aws_vpc_id = attribute("aws_vpc_id", default: "", description: "Optional AWS VPC identifier.")
|
|
7
6
|
|
|
8
7
|
# You add controls here
|
|
9
|
-
control
|
|
10
|
-
only_if { aws_vpc_id !=
|
|
8
|
+
control "aws-single-vpc-exists-check" do # A unique ID for this control.
|
|
9
|
+
only_if { aws_vpc_id != "" } # Only run this control if the `aws_vpc_id` attribute is provided.
|
|
11
10
|
impact 1.0 # The criticality, if this control fails.
|
|
12
|
-
title
|
|
11
|
+
title "Check to see if custom VPC exists." # A human-readable title.
|
|
13
12
|
describe aws_vpc(aws_vpc_id) do # The test itself.
|
|
14
13
|
it { should exist }
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
# Plural resources can be inspected to check for specific resource details.
|
|
19
|
-
control
|
|
18
|
+
control "aws-vpcs-check" do
|
|
20
19
|
impact 1.0
|
|
21
|
-
title
|
|
20
|
+
title "Check in all the VPCs for default sg not allowing 22 inwards"
|
|
22
21
|
aws_vpcs.vpc_ids.each do |vpc_id|
|
|
23
|
-
describe aws_security_group(vpc_id: vpc_id, group_name:
|
|
22
|
+
describe aws_security_group(vpc_id: vpc_id, group_name: "default") do
|
|
24
23
|
it { should allow_in(port: 22) }
|
|
25
24
|
end
|
|
26
25
|
end
|
|
27
26
|
end
|
|
28
27
|
|
|
29
|
-
control
|
|
28
|
+
control "aws-vpcs-multi-region-status-check" do # A unique ID for this control.
|
|
30
29
|
impact 1.0 # The criticality, if this control fails.
|
|
31
30
|
title 'Check AWS VPCs in all regions have status "available"' # A human-readable title.
|
|
32
31
|
aws_regions.region_names.each do |region| # Loop over all available AWS regions
|
|
@@ -37,4 +36,4 @@ control 'aws-vpcs-multi-region-status-check' do # A
|
|
|
37
36
|
end
|
|
38
37
|
end
|
|
39
38
|
end
|
|
40
|
-
end
|
|
39
|
+
end
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
1
|
# copyright: 2018, The Authors
|
|
3
2
|
|
|
4
|
-
title
|
|
3
|
+
title "Sample Section"
|
|
5
4
|
|
|
6
5
|
# you add controls here
|
|
7
|
-
control
|
|
6
|
+
control "azure-virtual-machines-exist-check" do # A unique ID for this control.
|
|
8
7
|
impact 1.0 # The criticality, if this control fails.
|
|
9
|
-
title
|
|
8
|
+
title "Check resource groups to see if any VMs exist." # A human-readable title
|
|
10
9
|
azurerm_resource_groups.names.each do |resource_group_name| # Plural resources can be leveraged to loop across many resources
|
|
11
10
|
describe azurerm_virtual_machines(resource_group: resource_group_name) do
|
|
12
|
-
|
|
11
|
+
it { should exist } # The test itself.
|
|
13
12
|
end
|
|
14
13
|
end
|
|
15
14
|
end
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
1
|
# copyright: 2018, The Authors
|
|
3
2
|
|
|
4
|
-
title
|
|
3
|
+
title "Sample Section"
|
|
5
4
|
|
|
6
|
-
gcp_project_id = attribute(
|
|
5
|
+
gcp_project_id = attribute("gcp_project_id")
|
|
7
6
|
|
|
8
7
|
# you add controls here
|
|
9
|
-
control
|
|
8
|
+
control "gcp-single-region-1.0" do # A unique ID for this control
|
|
10
9
|
impact 1.0 # The criticality, if this control fails.
|
|
11
|
-
title
|
|
12
|
-
desc
|
|
13
|
-
describe google_compute_region(project: gcp_project_id, name:
|
|
14
|
-
its(
|
|
10
|
+
title "Ensure single region has the correct properties." # A human-readable title
|
|
11
|
+
desc "An optional description..."
|
|
12
|
+
describe google_compute_region(project: gcp_project_id, name: "europe-west2") do # The actual test
|
|
13
|
+
its("zone_names") { should include "europe-west2-a" }
|
|
15
14
|
end
|
|
16
15
|
end
|
|
17
16
|
|
|
18
17
|
# plural resources can be leveraged to loop across many resources
|
|
19
|
-
control
|
|
18
|
+
control "gcp-regions-loop-1.0" do # A unique ID for this control
|
|
20
19
|
impact 1.0 # The criticality, if this control fails.
|
|
21
|
-
title
|
|
22
|
-
desc
|
|
20
|
+
title "Ensure regions have the correct properties in bulk." # A human-readable title
|
|
21
|
+
desc "An optional description..."
|
|
23
22
|
google_compute_regions(project: gcp_project_id).region_names.each do |region_name| # Loop across all regions by name
|
|
24
23
|
describe google_compute_region(project: gcp_project_id, name: region_name) do # The test for a single region
|
|
25
24
|
it { should be_up }
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
1
|
# copyright: 2018, The Authors
|
|
3
2
|
|
|
4
|
-
title
|
|
3
|
+
title "sample section"
|
|
5
4
|
|
|
6
5
|
# you can also use plain tests
|
|
7
|
-
describe file(
|
|
6
|
+
describe file("/tmp") do
|
|
8
7
|
it { should be_directory }
|
|
9
8
|
end
|
|
10
9
|
|
|
11
10
|
# you add controls here
|
|
12
|
-
control
|
|
11
|
+
control "tmp-1.0" do # A unique ID for this control
|
|
13
12
|
impact 0.7 # The criticality, if this control fails.
|
|
14
|
-
title
|
|
15
|
-
desc
|
|
16
|
-
describe file(
|
|
13
|
+
title "Create /tmp directory" # A human-readable title
|
|
14
|
+
desc "An optional description..."
|
|
15
|
+
describe file("/tmp") do # The actual test
|
|
17
16
|
it { should be_directory }
|
|
18
17
|
end
|
|
19
18
|
end
|
|
@@ -1,45 +1,49 @@
|
|
|
1
|
-
require_relative
|
|
1
|
+
require_relative "../../../shared/core_plugin_test_helper.rb"
|
|
2
2
|
|
|
3
|
-
class InitPluginCli <
|
|
3
|
+
class InitPluginCli < Minitest::Test
|
|
4
4
|
include CorePluginFunctionalHelper
|
|
5
5
|
|
|
6
|
+
def setup
|
|
7
|
+
skip_windows!
|
|
8
|
+
end
|
|
9
|
+
|
|
6
10
|
def test_generating_inspec_plugin_correct_prefix_required
|
|
7
11
|
Dir.mktmpdir do |dir|
|
|
8
|
-
plugin =
|
|
12
|
+
plugin = "wacky-name"
|
|
9
13
|
run_result = run_inspec_process("init plugin --no-prompt #{plugin} ", prefix: "cd #{dir} &&")
|
|
10
14
|
assert_equal 1, run_result.exit_status
|
|
11
15
|
assert_empty run_result.stderr
|
|
12
|
-
assert_includes run_result.stdout,
|
|
13
|
-
assert_includes run_result.stdout,
|
|
16
|
+
assert_includes run_result.stdout, "ERROR"
|
|
17
|
+
assert_includes run_result.stdout, "Plugin names must begin with"
|
|
14
18
|
end
|
|
15
19
|
end
|
|
16
20
|
|
|
17
21
|
def test_generating_inspec_plugin_with_default_options
|
|
18
22
|
Dir.mktmpdir do |dir|
|
|
19
|
-
plugin =
|
|
20
|
-
snake_case = plugin.tr(
|
|
21
|
-
module_name = plugin.sub(/^inspec\-/,
|
|
23
|
+
plugin = "inspec-test-generated-plugin"
|
|
24
|
+
snake_case = plugin.tr("-", "_")
|
|
25
|
+
module_name = plugin.sub(/^inspec\-/, "").split("-").map(&:capitalize).join("")
|
|
22
26
|
|
|
23
27
|
run_result = run_inspec_process("init plugin --no-prompt #{plugin}", prefix: "cd #{dir} &&")
|
|
24
28
|
assert_empty run_result.stderr
|
|
25
29
|
|
|
26
30
|
assert_equal 0, run_result.exit_status
|
|
27
|
-
assert_includes run_result.stdout,
|
|
31
|
+
assert_includes run_result.stdout, "Creating new inspec plugin at"
|
|
28
32
|
assert_includes run_result.stdout, plugin
|
|
29
33
|
|
|
30
34
|
# Check generated files and contents.
|
|
31
35
|
# Each file must exist, and its contents must match each of the regexen given.
|
|
32
36
|
{
|
|
33
|
-
File.join(plugin,
|
|
37
|
+
File.join(plugin, "README.md") => [
|
|
34
38
|
/#{plugin}/
|
|
35
39
|
],
|
|
36
|
-
File.join(plugin,
|
|
40
|
+
File.join(plugin, "LICENSE") => [
|
|
37
41
|
/(?!opyright)/, # No copyright by default
|
|
38
42
|
/Apache License/,
|
|
39
43
|
],
|
|
40
|
-
File.join(plugin,
|
|
41
|
-
File.join(plugin,
|
|
42
|
-
File.join(plugin, plugin +
|
|
44
|
+
File.join(plugin, "Gemfile") => [], # No interpolation
|
|
45
|
+
File.join(plugin, "Rakefile") => [], # No interpolation
|
|
46
|
+
File.join(plugin, plugin + ".gemspec") => [
|
|
43
47
|
/require '#{plugin}\/version'/,
|
|
44
48
|
/spec\.name\s+=\s+'#{plugin}'/,
|
|
45
49
|
/spec\.version\s+=\s+InspecPlugins::#{module_name}::VERSION/,
|
|
@@ -51,10 +55,10 @@ class InitPluginCli < MiniTest::Test
|
|
|
51
55
|
/spec\.homepage\s+=\s+'https:\/\/github.com\/you\/#{plugin}'/,
|
|
52
56
|
/spec\.license\s+=\s+'Apache-2\.0'/,
|
|
53
57
|
],
|
|
54
|
-
File.join(plugin,
|
|
58
|
+
File.join(plugin, "lib", plugin + ".rb") => [
|
|
55
59
|
/require\s'#{plugin}\/plugin'/,
|
|
56
60
|
],
|
|
57
|
-
File.join(plugin,
|
|
61
|
+
File.join(plugin, "lib", plugin, "plugin.rb") => [
|
|
58
62
|
/require\s'#{plugin}\/version'/,
|
|
59
63
|
/\#\s#{plugin}\s=>\s#{module_name}/,
|
|
60
64
|
/module\s#{module_name}/,
|
|
@@ -64,10 +68,10 @@ class InitPluginCli < MiniTest::Test
|
|
|
64
68
|
/require\s'#{plugin}\/cli_command'/,
|
|
65
69
|
/InspecPlugins::#{module_name}::CliCommand/,
|
|
66
70
|
],
|
|
67
|
-
File.join(plugin,
|
|
71
|
+
File.join(plugin, "lib", plugin, "version.rb") => [
|
|
68
72
|
/module\s#{module_name}/,
|
|
69
73
|
],
|
|
70
|
-
File.join(plugin,
|
|
74
|
+
File.join(plugin, "lib", plugin, "cli_command.rb") => [
|
|
71
75
|
/module\sInspecPlugins::#{module_name}/,
|
|
72
76
|
/\#\smakes\s`inspec\smy-command\s\.\.\.`\swork\./,
|
|
73
77
|
/subcommand_desc\s'my_command\s\[COMMAND\]'/,
|
|
@@ -76,22 +80,22 @@ class InitPluginCli < MiniTest::Test
|
|
|
76
80
|
/\#\sruns\s`inspec\smy-command\sdo-something`./,
|
|
77
81
|
/Edit\slib\/#{plugin}\/cli_command\.rb\sto\smake\sit\sdo/,
|
|
78
82
|
],
|
|
79
|
-
File.join(plugin,
|
|
80
|
-
File.join(plugin,
|
|
81
|
-
File.join(plugin,
|
|
83
|
+
File.join(plugin, "test", "helper.rb") => [], # No interpolation
|
|
84
|
+
File.join(plugin, "test", "functional", "README.md") => [], # No interpolation
|
|
85
|
+
File.join(plugin, "test", "functional", snake_case + "_test.rb") => [
|
|
82
86
|
# Whatever goes here
|
|
83
87
|
],
|
|
84
|
-
File.join(plugin,
|
|
88
|
+
File.join(plugin, "test", "unit", "plugin_def_test.rb") => [
|
|
85
89
|
/require\s'#{plugin}\/plugin'/,
|
|
86
90
|
/describe InspecPlugins::#{module_name}::Plugin\sdo/,
|
|
87
91
|
/let\(:plugin_name\) \{ \:'#{plugin}\' \}/,
|
|
88
92
|
],
|
|
89
|
-
File.join(plugin,
|
|
93
|
+
File.join(plugin, "test", "unit", "cli_args_test.rb") => [
|
|
90
94
|
/require '#{plugin}\/cli_command'/,
|
|
91
95
|
/describe InspecPlugins::#{module_name}::CliCommand do/,
|
|
92
96
|
/let\(\:cli_class\) \{ InspecPlugins::#{module_name}::CliCommand \}/,
|
|
93
97
|
],
|
|
94
|
-
File.join(plugin,
|
|
98
|
+
File.join(plugin, "test", "unit", "README.md") => [
|
|
95
99
|
/cli_args_test\.rb/,
|
|
96
100
|
],
|
|
97
101
|
}.each do |path, regexen|
|
|
@@ -108,38 +112,37 @@ class InitPluginCli < MiniTest::Test
|
|
|
108
112
|
|
|
109
113
|
def test_generating_inspec_plugin_with_custom_options
|
|
110
114
|
Dir.mktmpdir do |dir|
|
|
111
|
-
plugin =
|
|
112
|
-
snake_case = plugin.tr(
|
|
113
|
-
camel_case = plugin.sub(/^inspec\-/, '').split('-').map(&:capitalize).join('')
|
|
115
|
+
plugin = "inspec-test-generated-plugin"
|
|
116
|
+
snake_case = plugin.tr("-", "_")
|
|
114
117
|
|
|
115
|
-
opts =
|
|
116
|
-
opts +=
|
|
117
|
-
opts +=
|
|
118
|
+
opts = ""
|
|
119
|
+
opts += " --author-email bob@example.com "
|
|
120
|
+
opts += " --author-name Bob "
|
|
118
121
|
opts += ' --copyright "Copyright © 2018 Bob" '
|
|
119
122
|
opts += ' --description "That you will really like" '
|
|
120
|
-
opts +=
|
|
123
|
+
opts += " --license-name BSD-3-Clause "
|
|
121
124
|
opts += ' --summary "A fantastic plugin" '
|
|
122
125
|
|
|
123
|
-
opts +=
|
|
124
|
-
opts +=
|
|
126
|
+
opts += " --homepage http://example.com "
|
|
127
|
+
opts += " --module_name FunPlugin"
|
|
125
128
|
|
|
126
129
|
run_result = run_inspec_process("init plugin #{plugin} --no-prompt #{opts}", prefix: "cd #{dir} &&")
|
|
127
130
|
assert_empty run_result.stderr
|
|
128
131
|
assert_equal 0, run_result.exit_status
|
|
129
|
-
assert_includes run_result.stdout,
|
|
132
|
+
assert_includes run_result.stdout, "Creating new inspec plugin at"
|
|
130
133
|
assert_includes run_result.stdout, plugin
|
|
131
134
|
|
|
132
135
|
# Check generated files and contents.
|
|
133
136
|
# Each file must exist, and its contents must match each of the regexen given.
|
|
134
137
|
{
|
|
135
|
-
File.join(plugin,
|
|
136
|
-
File.join(plugin,
|
|
138
|
+
File.join(plugin, "README.md") => [],
|
|
139
|
+
File.join(plugin, "LICENSE") => [
|
|
137
140
|
/Copyright © 2018 Bob/,
|
|
138
141
|
/used to endorse or promote/,
|
|
139
142
|
],
|
|
140
|
-
File.join(plugin,
|
|
141
|
-
File.join(plugin,
|
|
142
|
-
File.join(plugin, plugin +
|
|
143
|
+
File.join(plugin, "Gemfile") => [],
|
|
144
|
+
File.join(plugin, "Rakefile") => [],
|
|
145
|
+
File.join(plugin, plugin + ".gemspec") => [
|
|
143
146
|
/spec\.version\s+=\s+InspecPlugins::FunPlugin::VERSION/,
|
|
144
147
|
/spec\.authors\s+=\s+\['Bob'\]/,
|
|
145
148
|
/spec\.email\s+=\s+\['bob@example\.com'\]/,
|
|
@@ -148,14 +151,14 @@ class InitPluginCli < MiniTest::Test
|
|
|
148
151
|
/spec\.homepage\s+=\s+'http:\/\/example.com'/,
|
|
149
152
|
/spec\.license\s+=\s+'BSD-3-Clause'/,
|
|
150
153
|
],
|
|
151
|
-
File.join(plugin,
|
|
152
|
-
File.join(plugin,
|
|
153
|
-
File.join(plugin,
|
|
154
|
-
File.join(plugin,
|
|
155
|
-
File.join(plugin,
|
|
156
|
-
File.join(plugin,
|
|
157
|
-
File.join(plugin,
|
|
158
|
-
File.join(plugin,
|
|
154
|
+
File.join(plugin, "lib", plugin + ".rb") => [],
|
|
155
|
+
File.join(plugin, "lib", plugin, "plugin.rb") => [],
|
|
156
|
+
File.join(plugin, "lib", plugin, "version.rb") => [],
|
|
157
|
+
File.join(plugin, "lib", plugin, "cli_command.rb") => [],
|
|
158
|
+
File.join(plugin, "test", "helper.rb") => [],
|
|
159
|
+
File.join(plugin, "test", "functional", snake_case + "_test.rb") => [],
|
|
160
|
+
File.join(plugin, "test", "unit", "plugin_def_test.rb") => [],
|
|
161
|
+
File.join(plugin, "test", "unit", "cli_args_test.rb") => [],
|
|
159
162
|
}.each do |path, regexen|
|
|
160
163
|
full_path = File.join(dir, path)
|
|
161
164
|
assert(File.exist?(full_path), "#{path} should have been generated")
|
|
@@ -168,6 +171,4 @@ class InitPluginCli < MiniTest::Test
|
|
|
168
171
|
end
|
|
169
172
|
end
|
|
170
173
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
end
|
|
174
|
+
end
|
|
@@ -1,32 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
require "yaml"
|
|
2
|
+
require_relative "../../../shared/core_plugin_test_helper.rb"
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
require_relative '../../../shared/core_plugin_test_helper.rb'
|
|
5
|
-
|
|
6
|
-
class InitCli < MiniTest::Test
|
|
4
|
+
class InitCli < Minitest::Test
|
|
7
5
|
include CorePluginFunctionalHelper
|
|
8
6
|
|
|
7
|
+
def setup
|
|
8
|
+
skip_windows!
|
|
9
|
+
end
|
|
10
|
+
|
|
9
11
|
def test_generating_inspec_profile
|
|
10
12
|
Dir.mktmpdir do |dir|
|
|
11
|
-
profile = File.join(dir,
|
|
13
|
+
profile = File.join(dir, "test-profile")
|
|
12
14
|
out = run_inspec_process("init profile test-profile", prefix: "cd #{dir} &&")
|
|
13
15
|
assert_equal 0, out.exit_status
|
|
14
|
-
assert_includes out.stdout,
|
|
16
|
+
assert_includes out.stdout, "Creating new profile at"
|
|
15
17
|
assert_includes out.stdout, profile
|
|
16
|
-
assert_includes Dir.entries(profile).join,
|
|
17
|
-
assert_includes Dir.entries(profile).join,
|
|
18
|
+
assert_includes Dir.entries(profile).join, "inspec.yml"
|
|
19
|
+
assert_includes Dir.entries(profile).join, "README.md"
|
|
18
20
|
end
|
|
19
21
|
end
|
|
20
22
|
|
|
21
23
|
def test_generating_inspec_profile_with_explicit_platform
|
|
22
24
|
Dir.mktmpdir do |dir|
|
|
23
|
-
profile = File.join(dir,
|
|
25
|
+
profile = File.join(dir, "test-profile")
|
|
24
26
|
out = run_inspec_process("init profile --platform os test-profile", prefix: "cd #{dir} &&")
|
|
25
27
|
assert_equal 0, out.exit_status
|
|
26
|
-
assert_includes out.stdout,
|
|
28
|
+
assert_includes out.stdout, "Creating new profile at"
|
|
27
29
|
assert_includes out.stdout, profile
|
|
28
|
-
assert_includes Dir.entries(profile).join,
|
|
29
|
-
assert_includes Dir.entries(profile).join,
|
|
30
|
+
assert_includes Dir.entries(profile).join, "inspec.yml"
|
|
31
|
+
assert_includes Dir.entries(profile).join, "README.md"
|
|
30
32
|
end
|
|
31
33
|
end
|
|
32
34
|
|
|
@@ -34,67 +36,67 @@ class InitCli < MiniTest::Test
|
|
|
34
36
|
Dir.mktmpdir do |dir|
|
|
35
37
|
out = run_inspec_process("init profile --platform nonesuch test-profile", prefix: "cd #{dir} &&")
|
|
36
38
|
assert_equal 1, out.exit_status
|
|
37
|
-
assert_includes out.stdout,
|
|
39
|
+
assert_includes out.stdout, "Unable to generate profile"
|
|
38
40
|
assert_includes out.stdout, "No template available for platform 'nonesuch'"
|
|
39
41
|
end
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
def test_profile_with_slash_name
|
|
43
45
|
Dir.mktmpdir do |dir|
|
|
44
|
-
profile = dir +
|
|
46
|
+
profile = dir + "/test/deeper/profile"
|
|
45
47
|
out = run_inspec_process("init profile test/deeper/profile", prefix: "cd #{dir} &&")
|
|
46
48
|
assert_equal 0, out.exit_status
|
|
47
49
|
assert_equal true, File.exist?(profile)
|
|
48
50
|
profile = YAML.load_file("#{profile}/inspec.yml")
|
|
49
|
-
assert_equal
|
|
51
|
+
assert_equal "profile", profile["name"]
|
|
50
52
|
end
|
|
51
53
|
end
|
|
52
54
|
|
|
53
55
|
def test_generating_inspec_profile_gcp
|
|
54
56
|
Dir.mktmpdir do |dir|
|
|
55
|
-
profile = File.join(dir,
|
|
57
|
+
profile = File.join(dir, "test-gcp-profile")
|
|
56
58
|
out = run_inspec_process("init profile --platform gcp test-gcp-profile", prefix: "cd #{dir} &&")
|
|
57
59
|
assert_equal 0, out.exit_status
|
|
58
|
-
assert_includes out.stdout,
|
|
60
|
+
assert_includes out.stdout, "Creating new profile at"
|
|
59
61
|
assert_includes out.stdout, profile
|
|
60
|
-
assert_includes Dir.entries(profile).join,
|
|
61
|
-
assert_includes Dir.entries(profile).join,
|
|
62
|
+
assert_includes Dir.entries(profile).join, "inspec.yml"
|
|
63
|
+
assert_includes Dir.entries(profile).join, "README.md"
|
|
62
64
|
end
|
|
63
65
|
end
|
|
64
66
|
|
|
65
67
|
def test_generating_inspec_profile_aws
|
|
66
68
|
Dir.mktmpdir do |dir|
|
|
67
|
-
profile = File.join(dir,
|
|
69
|
+
profile = File.join(dir, "test-aws-profile")
|
|
68
70
|
out = run_inspec_process("init profile --platform aws test-aws-profile", prefix: "cd #{dir} &&")
|
|
69
71
|
assert_equal 0, out.exit_status
|
|
70
|
-
assert_includes out.stdout,
|
|
72
|
+
assert_includes out.stdout, "Creating new profile at"
|
|
71
73
|
assert_includes out.stdout, profile
|
|
72
|
-
assert_includes Dir.entries(profile).join,
|
|
73
|
-
assert_includes Dir.entries(profile).join,
|
|
74
|
+
assert_includes Dir.entries(profile).join, "inspec.yml"
|
|
75
|
+
assert_includes Dir.entries(profile).join, "README.md"
|
|
74
76
|
end
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
def test_generating_inspec_profile_azure
|
|
78
80
|
Dir.mktmpdir do |dir|
|
|
79
|
-
profile = File.join(dir,
|
|
81
|
+
profile = File.join(dir, "test-azure-profile")
|
|
80
82
|
out = run_inspec_process("init profile --platform azure test-azure-profile", prefix: "cd #{dir} &&")
|
|
81
83
|
assert_equal 0, out.exit_status
|
|
82
|
-
assert_includes out.stdout,
|
|
84
|
+
assert_includes out.stdout, "Creating new profile at"
|
|
83
85
|
assert_includes out.stdout, profile
|
|
84
|
-
assert_includes Dir.entries(profile).join,
|
|
85
|
-
assert_includes Dir.entries(profile).join,
|
|
86
|
+
assert_includes Dir.entries(profile).join, "inspec.yml"
|
|
87
|
+
assert_includes Dir.entries(profile).join, "README.md"
|
|
86
88
|
end
|
|
87
89
|
end
|
|
88
90
|
|
|
89
91
|
def test_generating_inspec_profile_os
|
|
90
92
|
Dir.mktmpdir do |dir|
|
|
91
|
-
profile = File.join(dir,
|
|
93
|
+
profile = File.join(dir, "test-os-profile")
|
|
92
94
|
out = run_inspec_process("init profile --platform os test-os-profile", prefix: "cd #{dir} &&")
|
|
93
95
|
assert_equal 0, out.exit_status
|
|
94
|
-
assert_includes out.stdout,
|
|
96
|
+
assert_includes out.stdout, "Creating new profile at"
|
|
95
97
|
assert_includes out.stdout, profile
|
|
96
|
-
assert_includes Dir.entries(profile).join,
|
|
97
|
-
assert_includes Dir.entries(profile).join,
|
|
98
|
+
assert_includes Dir.entries(profile).join, "inspec.yml"
|
|
99
|
+
assert_includes Dir.entries(profile).join, "README.md"
|
|
98
100
|
end
|
|
99
101
|
end
|
|
100
|
-
end
|
|
102
|
+
end
|