puppet 6.17.0-x64-mingw32 → 6.21.0-x64-mingw32
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.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -16
- data/Gemfile +2 -0
- data/Gemfile.lock +38 -34
- data/README.md +1 -2
- data/Rakefile +4 -12
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +9 -3
- data/lib/puppet/application/apply.rb +20 -21
- data/lib/puppet/application/device.rb +1 -0
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +50 -8
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +88 -38
- data/lib/puppet/environments.rb +84 -59
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +56 -16
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +60 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_system/file_impl.rb +3 -3
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/new.rb +8 -3
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +1 -0
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/resolver.rb +5 -8
- data/lib/puppet/http/resolver/server_list.rb +18 -36
- data/lib/puppet/http/resolver/settings.rb +4 -4
- data/lib/puppet/http/resolver/srv.rb +5 -5
- data/lib/puppet/http/service.rb +3 -1
- data/lib/puppet/http/service/compiler.rb +1 -1
- data/lib/puppet/http/service/file_server.rb +1 -1
- data/lib/puppet/http/service/puppetserver.rb +39 -0
- data/lib/puppet/http/session.rb +5 -4
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_metadata/http.rb +1 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +4 -4
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/pal_impl.rb +90 -13
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +3 -2
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -3
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +18 -11
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- data/lib/puppet/pops/validation/checker4_0.rb +19 -15
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +13 -8
- data/lib/puppet/provider/package/apt.rb +67 -1
- data/lib/puppet/provider/package/aptitude.rb +6 -0
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
- data/lib/puppet/provider/package/yum.rb +1 -0
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/debian.rb +2 -0
- data/lib/puppet/provider/user/aix.rb +3 -3
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +55 -8
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/resource/type.rb +2 -1
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/settings.rb +63 -21
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +10 -3
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +12 -8
- data/lib/puppet/trusted_external.rb +2 -2
- data/lib/puppet/type.rb +4 -3
- data/lib/puppet/type/file.rb +2 -2
- data/lib/puppet/type/file/source.rb +28 -8
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +3 -3
- data/lib/puppet/type/service.rb +4 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +26 -12
- data/lib/puppet/util/autoload.rb +10 -15
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fact_dif.rb +62 -0
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +5 -1
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/api_types.rb +15 -1
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +1 -1
- data/lib/puppet/util/windows/user.rb +219 -0
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +342 -312
- data/man/man5/puppet.conf.5 +53 -18
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +2 -2
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +6 -6
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +32 -1
- data/man/man8/puppet-filebucket.8 +3 -3
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +7 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +2 -2
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +208 -55
- data/spec/integration/application/apply_spec.rb +168 -149
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +70 -21
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +53 -3
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +19 -1
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +5 -3
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +0 -10
- data/spec/integration/util/windows/user_spec.rb +7 -0
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/lib/puppet_spec/settings.rb +6 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/agent_spec.rb +8 -6
- data/spec/unit/application/agent_spec.rb +3 -5
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/doc_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +41 -10
- data/spec/unit/application/filebucket_spec.rb +0 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/application_spec.rb +60 -13
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer_spec.rb +86 -37
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +10 -3
- data/spec/unit/defaults_spec.rb +20 -1
- data/spec/unit/environments_spec.rb +176 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/node_spec.rb +2 -13
- data/spec/unit/file_serving/configuration/parser_spec.rb +0 -1
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/file_system/uniquefile_spec.rb +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/forge/module_release_spec.rb +2 -7
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/http/client_spec.rb +0 -1
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +51 -3
- data/spec/unit/http/service/file_server_spec.rb +2 -3
- data/spec/unit/http/service/puppetserver_spec.rb +82 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -2
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +0 -1
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/key/file_spec.rb +0 -1
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +4 -4
- data/spec/unit/indirector/rest_spec.rb +1 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/authconfig_spec.rb +0 -3
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -9
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/loaders/loaders_spec.rb +70 -0
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/group/groupadd_spec.rb +5 -2
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +85 -3
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dpkg_spec.rb +22 -7
- data/spec/unit/provider/package/openbsd_spec.rb +2 -0
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
- data/spec/unit/provider/package/yum_spec.rb +31 -0
- data/spec/unit/provider/package/zypper_spec.rb +14 -0
- data/spec/unit/provider/service/base_spec.rb +2 -4
- data/spec/unit/provider/service/bsd_spec.rb +5 -1
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +3 -5
- data/spec/unit/provider/service/freebsd_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_spec.rb +4 -5
- data/spec/unit/provider/service/init_spec.rb +45 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +2 -1
- data/spec/unit/provider/service/smf_spec.rb +1 -1
- data/spec/unit/provider/service/src_spec.rb +3 -5
- data/spec/unit/provider/service/systemd_spec.rb +3 -6
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +28 -0
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +56 -3
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +8 -10
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource/capability_finder_spec.rb +6 -1
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +11 -10
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +576 -239
- data/spec/unit/ssl/base_spec.rb +0 -1
- data/spec/unit/ssl/host_spec.rb +0 -5
- data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +2 -0
- data/spec/unit/transaction_spec.rb +13 -4
- data/spec/unit/type/file/content_spec.rb +0 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file/source_spec.rb +1 -1
- data/spec/unit/type/file_spec.rb +0 -6
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +36 -3
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -2
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/execution_spec.rb +15 -11
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/posix_spec.rb +363 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util_spec.rb +13 -6
- metadata +49 -50
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -51
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/man_spec.rb +0 -31
    
        data/spec/unit/ssl/base_spec.rb
    CHANGED
    
    | @@ -47,7 +47,6 @@ describe Puppet::SSL::Certificate do | |
| 47 47 | 
             
              describe "when initializing wrapped class from a file with #read" do
         | 
| 48 48 | 
             
                it "should open the file with ASCII encoding" do
         | 
| 49 49 | 
             
                  path = '/foo/bar/cert'
         | 
| 50 | 
            -
                  allow(Puppet::SSL::Base).to receive(:valid_certname).and_return(true)
         | 
| 51 50 | 
             
                  expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("bar")
         | 
| 52 51 | 
             
                  @base.read(path)
         | 
| 53 52 | 
             
                end
         | 
    
        data/spec/unit/ssl/host_spec.rb
    CHANGED
    
    | @@ -263,8 +263,6 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do | |
| 263 263 | 
             
                end
         | 
| 264 264 |  | 
| 265 265 | 
             
                it "should send a new request to the CA for signing" do
         | 
| 266 | 
            -
                  @http = double("http")
         | 
| 267 | 
            -
                  allow(@host).to receive(:http_client).and_return(@http)
         | 
| 268 266 | 
             
                  allow(@host).to receive(:ssl_store).and_return(double("ssl store"))
         | 
| 269 267 | 
             
                  allow(@host).to receive(:key).and_return(key)
         | 
| 270 268 | 
             
                  request = double("request")
         | 
| @@ -307,7 +305,6 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do | |
| 307 305 | 
             
                  Puppet[:certdir] = tmpdir('certs')
         | 
| 308 306 | 
             
                  allow(@host).to receive(:key).and_return(double("key"))
         | 
| 309 307 | 
             
                  allow(@host).to receive(:validate_certificate_with_key)
         | 
| 310 | 
            -
                  allow(@host).to receive(:http_client).and_return(@http)
         | 
| 311 308 | 
             
                  allow(@host).to receive(:ssl_store).and_return(double("ssl store"))
         | 
| 312 309 | 
             
                end
         | 
| 313 310 |  | 
| @@ -464,8 +461,6 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do | |
| 464 461 | 
             
                    @revoked_cert = @pki[:revoked_root_node_cert]
         | 
| 465 462 | 
             
                    localcacert = Puppet.settings[:localcacert]
         | 
| 466 463 | 
             
                    Puppet::Util.replace_file(localcacert, 0644) {|f| f.write @pki[:ca_bundle] }
         | 
| 467 | 
            -
                    @http = double('http')
         | 
| 468 | 
            -
                    allow(@host).to receive(:http_client).and_return(@http)
         | 
| 469 464 | 
             
                  end
         | 
| 470 465 |  | 
| 471 466 | 
             
                  after do
         | 
| @@ -271,14 +271,20 @@ describe Puppet::SSL::SSLProvider do | |
| 271 271 | 
             
                end
         | 
| 272 272 |  | 
| 273 273 | 
             
                # This option is only available in openssl 1.1
         | 
| 274 | 
            -
                 | 
| 275 | 
            -
             | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 278 | 
            -
             | 
| 279 | 
            -
             | 
| 280 | 
            -
             | 
| 281 | 
            -
             | 
| 274 | 
            +
                # OpenSSL 1.1.1h no longer reports expired root CAs when using "verify".
         | 
| 275 | 
            +
                # This regression was fixed in 1.1.1i, so only skip this test if we're on
         | 
| 276 | 
            +
                # the affected version.
         | 
| 277 | 
            +
                # See: https://github.com/openssl/openssl/pull/13585
         | 
| 278 | 
            +
                if Puppet::Util::Package.versioncmp(OpenSSL::OPENSSL_LIBRARY_VERSION.split[1], '1.1.1h') != 0
         | 
| 279 | 
            +
                  it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
         | 
| 280 | 
            +
                    ca = global_cacerts.first
         | 
| 281 | 
            +
                    ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
         | 
| 282 | 
            +
             | 
| 283 | 
            +
                    expect {
         | 
| 284 | 
            +
                      subject.create_context(**config.merge(cacerts: global_cacerts))
         | 
| 285 | 
            +
                    }.to raise_error(Puppet::SSL::CertVerifyError,
         | 
| 286 | 
            +
                                     "Invalid signature for certificate 'CN=Test CA'")
         | 
| 287 | 
            +
                  end
         | 
| 282 288 | 
             
                end
         | 
| 283 289 |  | 
| 284 290 | 
             
                it 'raises if intermediate CA signature is invalid' do
         | 
| @@ -33,10 +33,6 @@ describe Puppet::Transaction::AdditionalResourceGenerator do | |
| 33 33 |  | 
| 34 34 | 
             
                  newparam(:code)
         | 
| 35 35 |  | 
| 36 | 
            -
                  def respond_to?(method_name)
         | 
| 37 | 
            -
                    method_name == self[:kind] || super
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
             | 
| 40 36 | 
             
                  def eval_generate
         | 
| 41 37 | 
             
                    eval_code
         | 
| 42 38 | 
             
                  end
         | 
| @@ -314,13 +310,13 @@ describe Puppet::Transaction::AdditionalResourceGenerator do | |
| 314 310 |  | 
| 315 311 | 
             
                it "sets resources_failed_to_generate to true if resource#eval_generate raises an exception" do
         | 
| 316 312 | 
             
                  catalog = compile_to_ral(<<-MANIFEST)
         | 
| 317 | 
            -
                     | 
| 313 | 
            +
                    generator { thing: }
         | 
| 318 314 | 
             
                  MANIFEST
         | 
| 319 315 |  | 
| 320 | 
            -
                  allow(catalog.resource(" | 
| 316 | 
            +
                  allow(catalog.resource("Generator[thing]")).to receive(:eval_generate).and_raise(RuntimeError)
         | 
| 321 317 | 
             
                  relationship_graph = relationship_graph_for(catalog)
         | 
| 322 318 | 
             
                  generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, relationship_graph, prioritizer)
         | 
| 323 | 
            -
                  generator.eval_generate(catalog.resource(" | 
| 319 | 
            +
                  generator.eval_generate(catalog.resource("Generator[thing]"))
         | 
| 324 320 |  | 
| 325 321 | 
             
                  expect(generator.resources_failed_to_generate).to be_truthy
         | 
| 326 322 | 
             
                end
         | 
| @@ -152,6 +152,9 @@ describe Puppet::Transaction::EventManager do | |
| 152 152 |  | 
| 153 153 | 
             
                  @resource = Puppet::Type.type(:file).new :path => make_absolute("/my/file")
         | 
| 154 154 | 
             
                  @event = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                  @resource.class.send(:define_method, :callback1) {}
         | 
| 157 | 
            +
                  @resource.class.send(:define_method, :callback2) {}
         | 
| 155 158 | 
             
                end
         | 
| 156 159 |  | 
| 157 160 | 
             
                it "should call the required callback once for each set of associated events" do
         | 
| @@ -178,7 +181,7 @@ describe Puppet::Transaction::EventManager do | |
| 178 181 |  | 
| 179 182 | 
             
                  allow(@resource).to receive(:callback1)
         | 
| 180 183 |  | 
| 181 | 
            -
                  @manager.process_events(@resource) | 
| 184 | 
            +
                  @manager.process_events(@resource)
         | 
| 182 185 |  | 
| 183 186 | 
             
                  expect(@transaction.resource_status(@resource).events.length).to eq(1)
         | 
| 184 187 | 
             
                end
         | 
| @@ -211,9 +214,11 @@ describe Puppet::Transaction::EventManager do | |
| 211 214 | 
             
                    @event2 = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
         | 
| 212 215 | 
             
                    @event2.status = "success"
         | 
| 213 216 | 
             
                    expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event, @event2])
         | 
| 217 | 
            +
                    @resource.class.send(:define_method, :callback1) {}
         | 
| 214 218 | 
             
                  end
         | 
| 215 219 |  | 
| 216 220 | 
             
                  it "should call the callback" do
         | 
| 221 | 
            +
             | 
| 217 222 | 
             
                    expect(@resource).to receive(:callback1)
         | 
| 218 223 |  | 
| 219 224 | 
             
                    @manager.process_events(@resource)
         | 
| @@ -225,6 +230,7 @@ describe Puppet::Transaction::EventManager do | |
| 225 230 | 
             
                    allow(@event).to receive(:status).and_return("noop")
         | 
| 226 231 | 
             
                    allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
         | 
| 227 232 | 
             
                    expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
         | 
| 233 | 
            +
                    @resource.class.send(:define_method, :callback1) {}
         | 
| 228 234 | 
             
                  end
         | 
| 229 235 |  | 
| 230 236 | 
             
                  it "should log" do
         | 
| @@ -254,6 +260,7 @@ describe Puppet::Transaction::EventManager do | |
| 254 260 | 
             
                    allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
         | 
| 255 261 | 
             
                    allow(@resource).to receive(:noop?).and_return(true)
         | 
| 256 262 | 
             
                    expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
         | 
| 263 | 
            +
                    @resource.class.send(:define_method, :callback1) {}
         | 
| 257 264 | 
             
                  end
         | 
| 258 265 |  | 
| 259 266 | 
             
                  it "should log" do
         | 
| @@ -279,7 +286,7 @@ describe Puppet::Transaction::EventManager do | |
| 279 286 |  | 
| 280 287 | 
             
                describe "and the callback fails" do
         | 
| 281 288 | 
             
                  before do
         | 
| 282 | 
            -
                     | 
| 289 | 
            +
                    @resource.class.send(:define_method, :callback1) { raise "a failure" }
         | 
| 283 290 |  | 
| 284 291 | 
             
                    expect(@manager).to receive(:queued_events).and_yield(:callback1, [@event])
         | 
| 285 292 | 
             
                  end
         | 
| @@ -323,16 +330,12 @@ describe Puppet::Transaction::EventManager do | |
| 323 330 |  | 
| 324 331 | 
             
              describe "when queueing then processing events for a given resource" do
         | 
| 325 332 | 
             
                before do
         | 
| 326 | 
            -
                  @ | 
| 327 | 
            -
                  @ | 
| 333 | 
            +
                  @catalog = Puppet::Resource::Catalog.new
         | 
| 334 | 
            +
                  @target = Puppet::Type.type(:exec).new(name: 'target', path: ENV['PATH'])
         | 
| 335 | 
            +
                  @resource = Puppet::Type.type(:exec).new(name: 'resource', path: ENV['PATH'], notify: @target)
         | 
| 336 | 
            +
                  @catalog.add_resource(@resource, @target)
         | 
| 328 337 |  | 
| 329 | 
            -
                  @ | 
| 330 | 
            -
                  @target = Puppet::Type.type(:file).new :path => make_absolute("/your/file")
         | 
| 331 | 
            -
             | 
| 332 | 
            -
                  @graph = allow('graph')
         | 
| 333 | 
            -
                  allow(@graph).to receive(:matching_edges).and_return([])
         | 
| 334 | 
            -
                  allow(@graph).to receive(:matching_edges).with(anything, @resource).and_return([double('edge', :target => @target, :callback => :refresh)])
         | 
| 335 | 
            -
                  allow(@manager).to receive(:relationship_graph).and_return(@graph)
         | 
| 338 | 
            +
                  @manager = Puppet::Transaction::EventManager.new(Puppet::Transaction.new(@catalog, nil, nil))
         | 
| 336 339 |  | 
| 337 340 | 
             
                  @event  = Puppet::Transaction::Event.new(:name => :notify, :resource => @target)
         | 
| 338 341 | 
             
                  @event2 = Puppet::Transaction::Event.new(:name => :service_start, :resource => @target, :invalidate_refreshes => true)
         | 
| @@ -123,6 +123,21 @@ describe Puppet::Transaction::Persistence do | |
| 123 123 | 
             
                    persistence = Puppet::Transaction::Persistence.new
         | 
| 124 124 | 
             
                    persistence.load
         | 
| 125 125 | 
             
                  end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
                  it 'should load Time and Symbols' do
         | 
| 128 | 
            +
                    write_state_file(<<~END)
         | 
| 129 | 
            +
                      File[/tmp/audit]:
         | 
| 130 | 
            +
                        parameters:
         | 
| 131 | 
            +
                          mtime:
         | 
| 132 | 
            +
                            system_value:
         | 
| 133 | 
            +
                              - 2020-07-15 05:38:12.427678398 +00:00
         | 
| 134 | 
            +
                          ensure:
         | 
| 135 | 
            +
                            system_value:
         | 
| 136 | 
            +
                    END
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                    persistence = Puppet::Transaction::Persistence.new
         | 
| 139 | 
            +
                    expect(persistence.load.dig("File[/tmp/audit]", "parameters", "mtime", "system_value")).to contain_exactly(be_a(Time))
         | 
| 140 | 
            +
                  end
         | 
| 126 141 | 
             
                end
         | 
| 127 142 | 
             
              end
         | 
| 128 143 |  | 
| @@ -676,6 +676,7 @@ Version: | |
| 676 676 | 
             
                report.catalog_uuid = "some catalog uuid"
         | 
| 677 677 | 
             
                report.cached_catalog_status = "not_used"
         | 
| 678 678 | 
             
                report.master_used = "test:000"
         | 
| 679 | 
            +
                report.server_used = "test:000"
         | 
| 679 680 | 
             
                report.add_resource_status(status)
         | 
| 680 681 | 
             
                report.transaction_completed = true
         | 
| 681 682 | 
             
                report.finalize_report
         | 
| @@ -694,6 +695,7 @@ Version: | |
| 694 695 | 
             
                report.catalog_uuid = "some catalog uuid"
         | 
| 695 696 | 
             
                report.cached_catalog_status = "not_used"
         | 
| 696 697 | 
             
                report.master_used = "test:000"
         | 
| 698 | 
            +
                report.server_used = "test:000"
         | 
| 697 699 | 
             
                report.add_resource_status(status)
         | 
| 698 700 | 
             
                report.transaction_completed = true
         | 
| 699 701 | 
             
                report.finalize_report
         | 
| @@ -5,6 +5,13 @@ require 'puppet_spec/compiler' | |
| 5 5 | 
             
            require 'puppet/transaction'
         | 
| 6 6 | 
             
            require 'fileutils'
         | 
| 7 7 |  | 
| 8 | 
            +
            Puppet::Type.newtype(:generator) do
         | 
| 9 | 
            +
              newparam(:name) { isnamevar }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              def generate
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
            end
         | 
| 14 | 
            +
             | 
| 8 15 | 
             
            describe Puppet::Transaction do
         | 
| 9 16 | 
             
              include PuppetSpec::Files
         | 
| 10 17 | 
             
              include PuppetSpec::Compiler
         | 
| @@ -323,9 +330,9 @@ describe Puppet::Transaction do | |
| 323 330 | 
             
              describe "when generating resources before traversal" do
         | 
| 324 331 | 
             
                let(:catalog) { Puppet::Resource::Catalog.new }
         | 
| 325 332 | 
             
                let(:transaction) { Puppet::Transaction.new(catalog, nil, Puppet::Graph::SequentialPrioritizer.new) }
         | 
| 326 | 
            -
                let(:generator) { Puppet::Type.type(: | 
| 333 | 
            +
                let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
         | 
| 327 334 | 
             
                let(:generated) do
         | 
| 328 | 
            -
                  %w[a b c].map { |name| Puppet::Type.type(: | 
| 335 | 
            +
                  %w[a b c].map { |name| Puppet::Type.type(:generator).new(:name => name) }
         | 
| 329 336 | 
             
                end
         | 
| 330 337 |  | 
| 331 338 | 
             
                before :each do
         | 
| @@ -666,7 +673,7 @@ describe Puppet::Transaction do | |
| 666 673 | 
             
                    end
         | 
| 667 674 |  | 
| 668 675 | 
             
                    describe "and new resources are generated" do
         | 
| 669 | 
            -
                      let(:generator) { Puppet::Type.type(: | 
| 676 | 
            +
                      let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
         | 
| 670 677 | 
             
                      let(:generated) do
         | 
| 671 678 | 
             
                        %w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
         | 
| 672 679 | 
             
                      end
         | 
| @@ -785,6 +792,9 @@ describe Puppet::Transaction do | |
| 785 792 | 
             
                      def self.is_selinux_enabled
         | 
| 786 793 | 
             
                        true
         | 
| 787 794 | 
             
                      end
         | 
| 795 | 
            +
             | 
| 796 | 
            +
                      def self.matchpathcon_fini
         | 
| 797 | 
            +
                      end
         | 
| 788 798 | 
             
                    end
         | 
| 789 799 | 
             
                  end
         | 
| 790 800 |  | 
| @@ -828,7 +838,6 @@ describe Puppet::Transaction do | |
| 828 838 | 
             
                  before do
         | 
| 829 839 | 
             
                    @resource = Puppet::Type.type(:notify).new :title => "foobar"
         | 
| 830 840 | 
             
                    @catalog.add_resource @resource
         | 
| 831 | 
            -
                    allow(@transaction).to receive(:add_dynamically_generated_resources)
         | 
| 832 841 | 
             
                  end
         | 
| 833 842 |  | 
| 834 843 | 
             
                  it 'should stop processing if :stop_processing? is true' do
         | 
| @@ -11,7 +11,6 @@ describe Puppet::Type.type(:file).attrclass(:content), :uses_checksums => true d | |
| 11 11 |  | 
| 12 12 | 
             
              before do
         | 
| 13 13 | 
             
                File.open(filename, 'w') {|f| f.write "initial file content"}
         | 
| 14 | 
            -
                allow(described_class).to receive(:standalone?).and_return(false)
         | 
| 15 14 | 
             
              end
         | 
| 16 15 |  | 
| 17 16 | 
             
              around do |example|
         | 
| @@ -9,8 +9,6 @@ require 'spec_helper' | |
| 9 9 | 
             
                  @path = make_absolute("/my/file")
         | 
| 10 10 | 
             
                  @resource = Puppet::Type.type(:file).new :path => @path
         | 
| 11 11 | 
             
                  @sel = property.new :resource => @resource
         | 
| 12 | 
            -
                  allow(@sel).to receive(:normalize_selinux_category).with("s0").and_return("s0")
         | 
| 13 | 
            -
                  allow(@sel).to receive(:normalize_selinux_category).with(nil).and_return(nil)
         | 
| 14 12 | 
             
                end
         | 
| 15 13 |  | 
| 16 14 | 
             
                it "retrieve on #{param} should return :absent if the file isn't statable" do
         | 
| @@ -521,7 +521,7 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do | |
| 521 521 | 
             
                        end
         | 
| 522 522 |  | 
| 523 523 | 
             
                        it "should return the default source port" do
         | 
| 524 | 
            -
                          Puppet[: | 
| 524 | 
            +
                          Puppet[:serverport] = 1234
         | 
| 525 525 | 
             
                          expect(resource.parameter(:source).port).to eq(1234)
         | 
| 526 526 | 
             
                        end
         | 
| 527 527 | 
             
                      end
         | 
    
        data/spec/unit/type/file_spec.rb
    CHANGED
    
    | @@ -344,12 +344,6 @@ describe Puppet::Type.type(:file) do | |
| 344 344 | 
             
              end
         | 
| 345 345 |  | 
| 346 346 | 
             
              describe "#flush" do
         | 
| 347 | 
            -
                it "should flush all properties that respond to :flush" do
         | 
| 348 | 
            -
                  file[:source] = File.expand_path(__FILE__)
         | 
| 349 | 
            -
                  expect(file.parameter(:source)).to receive(:flush)
         | 
| 350 | 
            -
                  file.flush
         | 
| 351 | 
            -
                end
         | 
| 352 | 
            -
             | 
| 353 347 | 
             
                it "should reset its stat reference" do
         | 
| 354 348 | 
             
                  FileUtils.touch(path)
         | 
| 355 349 | 
             
                  stat1 = file.stat
         | 
| @@ -60,9 +60,12 @@ describe Puppet::Type.type(:group) do | |
| 60 60 | 
             
              end
         | 
| 61 61 |  | 
| 62 62 | 
             
              it "delegates the existence check to its provider" do
         | 
| 63 | 
            -
                provider = @class.provide(:testing)  | 
| 63 | 
            +
                provider = @class.provide(:testing) do
         | 
| 64 | 
            +
                  def exists?
         | 
| 65 | 
            +
                    true
         | 
| 66 | 
            +
                  end
         | 
| 67 | 
            +
                end
         | 
| 64 68 | 
             
                provider_instance = provider.new
         | 
| 65 | 
            -
                expect(provider_instance).to receive(:exists?).and_return(true)
         | 
| 66 69 |  | 
| 67 70 | 
             
                type = @class.new(:name => "group", :provider => provider_instance)
         | 
| 68 71 |  | 
| @@ -77,20 +80,24 @@ describe Puppet::Type.type(:group) do | |
| 77 80 | 
             
                    def members
         | 
| 78 81 | 
             
                      []
         | 
| 79 82 | 
             
                    end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                    def members_insync?(current, should)
         | 
| 85 | 
            +
                      current == should
         | 
| 86 | 
            +
                    end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                    def members_to_s(values)
         | 
| 89 | 
            +
                      values.map { |v| "#{v} ()" }.join(', ')
         | 
| 90 | 
            +
                    end
         | 
| 80 91 | 
             
                  end
         | 
| 81 92 | 
             
                end
         | 
| 82 93 | 
             
                let (:provider_instance) { provider.new }
         | 
| 83 94 | 
             
                let (:type) { @class.new(:name => "group", :provider => provider_instance, :members => ['user1']) }
         | 
| 84 95 |  | 
| 85 96 | 
             
                it "insync? calls members_insync?" do
         | 
| 86 | 
            -
                  expect(provider_instance).to receive(:members_insync?).with(['user1'], ['user1']).and_return(true)
         | 
| 87 97 | 
             
                  expect(type.property(:members).insync?(['user1'])).to be_truthy
         | 
| 88 98 | 
             
                end
         | 
| 89 99 |  | 
| 90 100 | 
             
                it "is_to_s and should_to_s call members_to_s" do
         | 
| 91 | 
            -
                  expect(provider_instance).to receive(:members_to_s).with(['user1', 'user2']).and_return("user1 (), user2 ()")
         | 
| 92 | 
            -
                  expect(provider_instance).to receive(:members_to_s).with(['user1']).and_return("user1 ()")
         | 
| 93 | 
            -
             | 
| 94 101 | 
             
                  expect(type.property(:members).is_to_s('user1')).to eq('user1 ()')
         | 
| 95 102 | 
             
                  expect(type.property(:members).should_to_s('user1,user2')).to eq('user1 (), user2 ()')
         | 
| 96 103 | 
             
                end
         | 
| @@ -6,6 +6,9 @@ Puppet::Type.newtype(:purgeable_test) do | |
| 6 6 | 
             
              newparam(:name) {}
         | 
| 7 7 | 
             
            end
         | 
| 8 8 | 
             
            Puppet::Type.type(:purgeable_test).provide(:purgeable_test) do
         | 
| 9 | 
            +
              def self.instances
         | 
| 10 | 
            +
                []
         | 
| 11 | 
            +
              end
         | 
| 9 12 | 
             
            end
         | 
| 10 13 |  | 
| 11 14 | 
             
            resources = Puppet::Type.type(:resources)
         | 
| @@ -46,19 +49,16 @@ describe resources do | |
| 46 49 | 
             
                end
         | 
| 47 50 |  | 
| 48 51 | 
             
                it "cannot be set to true for a resource type that does not accept ensure" do
         | 
| 49 | 
            -
                  allow(instance.resource_type).to receive(: | 
| 50 | 
            -
                   | 
| 51 | 
            -
                  expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error
         | 
| 52 | 
            +
                  allow(instance.resource_type).to receive(:validproperty?).with(:ensure).and_return(false)
         | 
| 53 | 
            +
                  expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error, /Purging is only supported on types that accept 'ensure'/
         | 
| 52 54 | 
             
                end
         | 
| 53 55 |  | 
| 54 56 | 
             
                it "cannot be set to true for a resource type that does not have instances" do
         | 
| 55 | 
            -
                  allow(instance.resource_type).to receive(:respond_to?).and_return(false)
         | 
| 56 | 
            -
                   | 
| 57 | 
            -
                  expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error
         | 
| 57 | 
            +
                  allow(instance.resource_type).to receive(:respond_to?).with(:instances).and_return(false)
         | 
| 58 | 
            +
                  expect { instance[:purge] = 'yes' }.to raise_error Puppet::Error, /Purging resources of type file is not supported/
         | 
| 58 59 | 
             
                end
         | 
| 59 60 |  | 
| 60 61 | 
             
                it "can be set to true for a resource type that has instances and can accept ensure" do
         | 
| 61 | 
            -
                  allow(instance.resource_type).to receive(:respond_to?).and_return(true)
         | 
| 62 62 | 
             
                  allow(instance.resource_type).to receive(:validproperty?).and_return(true)
         | 
| 63 63 | 
             
                  expect { instance[:purge] = 'yes' }.to_not raise_error
         | 
| 64 64 | 
             
                end
         | 
| @@ -165,8 +165,38 @@ describe test_title, "when validating attribute values" do | |
| 165 165 |  | 
| 166 166 | 
             
                  context "when on Windows", :if => Puppet::Util::Platform.windows? do
         | 
| 167 167 | 
             
                    before do
         | 
| 168 | 
            +
                      allow(Puppet::Util::Windows::User).to receive(:password_is?).and_return(true)
         | 
| 168 169 | 
             
                      allow(Puppet::Util::Windows::ADSI).to receive(:computer_name).and_return("myPC")
         | 
| 170 | 
            +
                      allow(Puppet::Util::Windows::User).to receive(:get_rights).and_return('SeServiceLogonRight')
         | 
| 171 | 
            +
                    end
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                    it "should fail when the `Log On As A Service` right is missing from given user" do
         | 
| 174 | 
            +
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("myUser", nil, nil, "myPC", :SidTypeUser))
         | 
| 175 | 
            +
                      allow(Puppet::Util::Windows::User).to receive(:get_rights).with('myPC\\myUser').and_return("")
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser') }.to raise_error(Puppet::Error, /"myPC\\myUser" is missing the 'Log On As A Service' right./)
         | 
| 178 | 
            +
                    end
         | 
| 179 | 
            +
             | 
| 180 | 
            +
                    it "should fail when the `Log On As A Service` right is set to denied for given user" do
         | 
| 181 | 
            +
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("myUser", nil, nil, "myPC", :SidTypeUser))
         | 
| 182 | 
            +
                      allow(Puppet::Util::Windows::User).to receive(:get_rights).with('myPC\\myUser').and_return("SeDenyServiceLogonRight")
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser') }.to raise_error(Puppet::Error, /"myPC\\myUser" has the 'Log On As A Service' right set to denied./)
         | 
| 185 | 
            +
                    end
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                    it "should not fail when given user has the `Log On As A Service` right" do
         | 
| 188 | 
            +
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("myUser", nil, nil, "myPC", :SidTypeUser))
         | 
| 189 | 
            +
                      allow(Puppet::Util::Windows::User).to receive(:get_rights).with('myPC\\myUser').and_return("SeServiceLogonRight")
         | 
| 190 | 
            +
             | 
| 191 | 
            +
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser') }.not_to raise_error
         | 
| 192 | 
            +
                    end
         | 
| 193 | 
            +
             | 
| 194 | 
            +
                    it "should not fail when given user is a default system account even if the `Log On As A Service` right is missing" do
         | 
| 195 | 
            +
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("LOCAL SERVICE", nil, nil, "NT AUTHORITY", :SidTypeUser))
         | 
| 169 196 | 
             
                      allow(Puppet::Util::Windows::User).to receive(:default_system_account?).and_return(true)
         | 
| 197 | 
            +
             | 
| 198 | 
            +
                      expect(Puppet::Util::Windows::User).not_to receive(:get_rights)
         | 
| 199 | 
            +
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser') }.not_to raise_error
         | 
| 170 200 | 
             
                    end
         | 
| 171 201 |  | 
| 172 202 | 
             
                    ['LocalSystem', '.\LocalSystem', 'myPC\LocalSystem', 'lOcALsysTem'].each do |user_input|
         | 
| @@ -212,12 +242,12 @@ describe test_title, "when validating attribute values" do | |
| 212 242 |  | 
| 213 243 | 
             
                    it "should fail when account is invalid" do
         | 
| 214 244 | 
             
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(nil)
         | 
| 215 | 
            -
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'InvalidUser') }.to raise_error(Puppet::Error,  | 
| 245 | 
            +
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'InvalidUser') }.to raise_error(Puppet::Error, /"InvalidUser" is not a valid account/)
         | 
| 216 246 | 
             
                    end
         | 
| 217 247 |  | 
| 218 248 | 
             
                    it "should fail when sid type is not user or well known user" do
         | 
| 219 249 | 
             
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("Administrators", nil, nil, "BUILTIN", :SidTypeAlias))
         | 
| 220 | 
            -
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'Administrators') }.to raise_error(Puppet::Error,  | 
| 250 | 
            +
                      expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'Administrators') }.to raise_error(Puppet::Error, /"Administrators" is not a valid account/)
         | 
| 221 251 | 
             
                    end
         | 
| 222 252 | 
             
                  end
         | 
| 223 253 | 
             
                end
         | 
| @@ -254,6 +284,7 @@ describe test_title, "when validating attribute values" do | |
| 254 284 | 
             
                    before do
         | 
| 255 285 | 
             
                      allow(Puppet::Util::Windows::ADSI).to receive(:computer_name).and_return("myPC")
         | 
| 256 286 | 
             
                      allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(name_to_principal_result)
         | 
| 287 | 
            +
                      allow(Puppet::Util::Windows::User).to receive(:get_rights).and_return('SeServiceLogonRight')
         | 
| 257 288 | 
             
                    end
         | 
| 258 289 |  | 
| 259 290 | 
             
                    it "should pass validation when given account is 'LocalSystem'" do
         | 
| @@ -273,6 +304,7 @@ describe test_title, "when validating attribute values" do | |
| 273 304 |  | 
| 274 305 | 
             
                        it "should pass validation" do
         | 
| 275 306 | 
             
                          allow(Puppet::Util::Windows::User).to receive(:localsystem?).with(predefined_local_account).and_return(false)
         | 
| 307 | 
            +
                          expect(Puppet::Util::Windows::User).to receive(:default_system_account?).with(predefined_local_account).and_return(true)
         | 
| 276 308 | 
             
                          expect(Puppet::Util::Windows::User).to receive(:default_system_account?).with("NT AUTHORITY\\#{predefined_local_account}").and_return(true)
         | 
| 277 309 |  | 
| 278 310 | 
             
                          expect(Puppet::Util::Windows::User).not_to receive(:password_is?)
         | 
| @@ -288,6 +320,7 @@ describe test_title, "when validating attribute values" do | |
| 288 320 | 
             
                    describe "when given logonaccount is not a predefined local account" do
         | 
| 289 321 | 
             
                      before do
         | 
| 290 322 | 
             
                        allow(Puppet::Util::Windows::User).to receive(:localsystem?).with('myUser').and_return(false)
         | 
| 323 | 
            +
                        allow(Puppet::Util::Windows::User).to receive(:default_system_account?).with('myUser').and_return(false)
         | 
| 291 324 | 
             
                        allow(Puppet::Util::Windows::User).to receive(:default_system_account?).with('.\\myUser').and_return(false)
         | 
| 292 325 | 
             
                      end
         | 
| 293 326 |  | 
| @@ -455,7 +488,7 @@ describe test_title, "when changing the host" do | |
| 455 488 | 
             
              it "insyncness should be resolved by provider instead of superclass implementation when provider responds to the 'enabled_insync?' method" do
         | 
| 456 489 | 
             
                allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
         | 
| 457 490 | 
             
                @service[:enable] = true
         | 
| 458 | 
            -
                allow(@service.provider).to receive(:respond_to?).with(:enabled_insync | 
| 491 | 
            +
                allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?, any_args).and_return(true)
         | 
| 459 492 | 
             
                allow(@service.provider).to receive(:enabled_insync?).and_return(false)
         | 
| 460 493 |  | 
| 461 494 | 
             
                expect(@service.property(:enable).insync?(:true)).to eq(false)
         |