puppet 6.15.0-universal-darwin → 6.19.1-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/Gemfile +4 -2
- data/Gemfile.lock +29 -27
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/lib/puppet.rb +32 -8
- data/lib/puppet/agent.rb +18 -4
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application/agent.rb +23 -8
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +61 -21
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +119 -39
- data/lib/puppet/environments.rb +51 -10
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +46 -16
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +1 -1
- data/lib/puppet/face/status.rb +1 -1
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -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_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +4 -4
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/filter.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 +28 -12
- data/lib/puppet/http/external_client.rb +0 -6
- data/lib/puppet/http/redirector.rb +9 -7
- 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/response.rb +19 -0
- 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.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/yaml.rb +1 -1
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +2 -2
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/request.rb +5 -5
- data/lib/puppet/indirector/rest.rb +7 -1
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -2
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +31 -4
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +29 -26
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +21 -17
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- 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/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/issues.rb +5 -0
- 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/resource/resource_type_impl.rb +2 -0
- 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 +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +38 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +24 -4
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +4 -2
- data/lib/puppet/provider/package/pip.rb +60 -37
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/portage.rb +2 -2
- 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 +9 -1
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +21 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +7 -3
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/rest/route.rb +2 -2
- data/lib/puppet/runtime.rb +25 -2
- data/lib/puppet/settings.rb +43 -6
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +33 -8
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +19 -14
- 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 +29 -1
- data/lib/puppet/type.rb +15 -7
- data/lib/puppet/type/file.rb +40 -15
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +16 -1
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -10
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +10 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/connection.rb +8 -8
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/range.rb +4 -1
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -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 +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +4 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +541 -427
- data/man/man5/puppet.conf.5 +84 -19
- data/man/man8/puppet-agent.8 +7 -4
- data/man/man8/puppet-apply.8 +1 -1
- 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 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- 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 +4 -1
- data/man/man8/puppet-node.8 +4 -4
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- 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/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/dnfmodule/{dnf-module-list-enabled.txt → dnf-module-list.txt} +6 -0
- data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/integration/application/agent_spec.rb +202 -52
- data/spec/integration/application/apply_spec.rb +149 -149
- data/spec/integration/application/config_spec.rb +74 -0
- 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 +75 -2
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +27 -3
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +6 -1
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/network/http_pool_spec.rb +73 -0
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +7 -2
- 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 +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet_spec/https.rb +6 -0
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +8 -0
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +47 -1
- data/spec/unit/application/agent_spec.rb +7 -8
- 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/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 +9 -4
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer_spec.rb +86 -37
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/environments_spec.rb +99 -32
- data/spec/unit/face/config_spec.rb +59 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- 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_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/http/client_spec.rb +74 -19
- data/spec/unit/http/external_client_spec.rb +9 -9
- data/spec/unit/http/resolver_spec.rb +24 -5
- data/spec/unit/http/response_spec.rb +6 -0
- data/spec/unit/http/service/ca_spec.rb +2 -3
- data/spec/unit/http/service/compiler_spec.rb +2 -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 +0 -1
- data/spec/unit/http/session_spec.rb +8 -21
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/json_spec.rb +1 -1
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
- data/spec/unit/indirector/facts/rest_spec.rb +1 -1
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +15 -14
- data/spec/unit/indirector/json_spec.rb +8 -8
- data/spec/unit/indirector/msgpack_spec.rb +8 -8
- data/spec/unit/indirector/node/rest_spec.rb +1 -1
- data/spec/unit/indirector/request_spec.rb +5 -5
- data/spec/unit/indirector/rest_spec.rb +14 -1
- data/spec/unit/indirector/status/rest_spec.rb +1 -1
- data/spec/unit/indirector/yaml_spec.rb +7 -7
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +77 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +25 -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/pip2_spec.rb +36 -0
- data/spec/unit/provider/package/pip_spec.rb +42 -16
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- 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 +47 -8
- data/spec/unit/provider/package/zypper_spec.rb +98 -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 +46 -5
- data/spec/unit/provider/service/launchd_spec.rb +5 -6
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openrc_spec.rb +4 -5
- data/spec/unit/provider/service/openwrt_spec.rb +2 -1
- data/spec/unit/provider/service/redhat_spec.rb +10 -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 +87 -19
- data/spec/unit/provider/service/upstart_spec.rb +4 -5
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/puppet_pal_2pec.rb +40 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +1 -1
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/rest/route_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +182 -22
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +52 -8
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +3 -1
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/range_spec.rb +22 -1
- data/spec/unit/util/run_mode_spec.rb +6 -6
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/manpages.rake +5 -35
- metadata +43 -49
- 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/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -60,6 +60,20 @@ describe Puppet::Configurer do
|
|
60
60
|
expect(summary["time"]["last_run"]).to be_between(t1, t2)
|
61
61
|
end
|
62
62
|
|
63
|
+
it "applies a cached catalog if pluginsync fails when usecacheonfailure is true" do
|
64
|
+
Puppet[:ignore_plugin_errors] = false
|
65
|
+
|
66
|
+
Puppet[:use_cached_catalog] = false
|
67
|
+
Puppet[:usecacheonfailure] = true
|
68
|
+
|
69
|
+
report = Puppet::Transaction::Report.new
|
70
|
+
expect_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate).and_raise(Puppet::Error, 'Failed to retrieve: some file')
|
71
|
+
expect(Puppet::Resource::Catalog.indirection).to receive(:find).and_return(@catalog)
|
72
|
+
|
73
|
+
@configurer.run(pluginsync: true, report: report)
|
74
|
+
expect(report.cached_catalog_status).to eq('on_failure')
|
75
|
+
end
|
76
|
+
|
63
77
|
describe 'resubmitting facts' do
|
64
78
|
context 'when resubmit_facts is set to false' do
|
65
79
|
it 'should not send data' do
|
@@ -2,6 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'puppet/indirector/hiera'
|
3
3
|
|
4
4
|
require 'puppet_spec/compiler'
|
5
|
+
require 'puppet/indirector/data_binding/hiera'
|
5
6
|
|
6
7
|
describe "Data binding" do
|
7
8
|
include PuppetSpec::Files
|
@@ -140,6 +141,71 @@ describe "Data binding" do
|
|
140
141
|
end
|
141
142
|
end
|
142
143
|
|
144
|
+
context "with plan_hierarchy key" do
|
145
|
+
context "using Hiera 5" do
|
146
|
+
let(:hiera_config) { <<~CONF }
|
147
|
+
---
|
148
|
+
version: 5
|
149
|
+
plan_hierarchy:
|
150
|
+
- path: global
|
151
|
+
name: Common
|
152
|
+
CONF
|
153
|
+
|
154
|
+
it "ignores plan_hierarchy outside of a Bolt plan" do
|
155
|
+
configure_hiera_for_plan_hierarchy(data, hiera_config)
|
156
|
+
|
157
|
+
create_manifest_in_module("testing", "binding.pp",
|
158
|
+
<<-MANIFEST)
|
159
|
+
class testing::binding($value) {}
|
160
|
+
MANIFEST
|
161
|
+
|
162
|
+
expect { compile_to_catalog("include testing::binding") }
|
163
|
+
.to raise_error(/Class\[Testing::Binding\]: expects a value for parameter 'value'/)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
context "with invalid data" do
|
168
|
+
let(:hiera_config) { <<~CONF }
|
169
|
+
---
|
170
|
+
version: 5
|
171
|
+
plan_hierarchy:
|
172
|
+
- pop: the question
|
173
|
+
CONF
|
174
|
+
|
175
|
+
it "raises a validation error" do
|
176
|
+
configure_hiera_for_plan_hierarchy(data, hiera_config)
|
177
|
+
|
178
|
+
create_manifest_in_module("testing", "binding.pp",
|
179
|
+
<<-MANIFEST)
|
180
|
+
class testing::binding($value) {}
|
181
|
+
MANIFEST
|
182
|
+
|
183
|
+
expect { compile_to_catalog("include testing::binding") }
|
184
|
+
.to raise_error(/entry 'plan_hierarchy' index 0 unrecognized key 'pop'/)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
context "with Hiera 3" do
|
189
|
+
let(:hiera_config) { <<~CONF }
|
190
|
+
---
|
191
|
+
plan_hierarchy: ['global']
|
192
|
+
CONF
|
193
|
+
|
194
|
+
it "errors with plan_hierarchy key" do
|
195
|
+
configure_hiera_for_plan_hierarchy(data, hiera_config)
|
196
|
+
|
197
|
+
create_manifest_in_module("testing", "binding.pp",
|
198
|
+
<<-MANIFEST)
|
199
|
+
class testing::binding($value) {}
|
200
|
+
MANIFEST
|
201
|
+
|
202
|
+
expect { compile_to_catalog("include testing::binding") }
|
203
|
+
.to raise_error(/unrecognized key 'plan_hierarchy'/)
|
204
|
+
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
143
209
|
|
144
210
|
def configure_hiera_for_one_tier(data)
|
145
211
|
hiera_config_file = tmpfile("hiera.yaml")
|
@@ -163,6 +229,22 @@ describe "Data binding" do
|
|
163
229
|
Puppet[:hiera_config] = hiera_config_file
|
164
230
|
end
|
165
231
|
|
232
|
+
def configure_hiera_for_plan_hierarchy(data, config)
|
233
|
+
hiera_config_file = tmpfile("hiera.yaml")
|
234
|
+
|
235
|
+
File.open(hiera_config_file, 'w:UTF-8') do |f|
|
236
|
+
f.write(config)
|
237
|
+
end
|
238
|
+
|
239
|
+
data.each do | file, contents |
|
240
|
+
File.open(File.join(dir, "#{file}.yaml"), 'w:UTF-8') do |f|
|
241
|
+
f.write(YAML.dump(contents))
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
Puppet[:hiera_config] = hiera_config_file
|
246
|
+
end
|
247
|
+
|
166
248
|
def configure_hiera_for_two_tier(data)
|
167
249
|
hiera_config_file = tmpfile("hiera.yaml")
|
168
250
|
|
@@ -23,6 +23,26 @@ describe "Puppet defaults" do
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
+
describe "when setting the :masterport" do
|
27
|
+
it "should also set :serverport to the same value" do
|
28
|
+
Puppet.settings[:masterport] = 3939
|
29
|
+
expect(Puppet.settings[:serverport]).to eq(3939)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not overwrite :serverport if explicitly set" do
|
33
|
+
Puppet.settings[:serverport] = 9000
|
34
|
+
Puppet.settings[:masterport] = 9001
|
35
|
+
expect(Puppet.settings[:serverport]).to eq(9000)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "when setting the :serverport" do
|
40
|
+
it "should also set the :masterport to the same value" do
|
41
|
+
Puppet.settings[:serverport] = 9000
|
42
|
+
expect(Puppet.settings[:masterport]).to eq(9000)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
26
46
|
describe "when setting the :factpath" do
|
27
47
|
it "should add the :factpath to Facter's search paths" do
|
28
48
|
expect(Facter).to receive(:search).with("/my/fact/path")
|
@@ -130,8 +150,7 @@ describe "Puppet defaults" do
|
|
130
150
|
Puppet::Util.withenv( {"PATH" => path }, :windows) do
|
131
151
|
Puppet.settings[:path] = "none" # this causes it to ignore the setting
|
132
152
|
|
133
|
-
|
134
|
-
expect(envhash['Path']).to eq(path)
|
153
|
+
expect(Puppet::Util.get_env('Path')).to eq(path)
|
135
154
|
end
|
136
155
|
end
|
137
156
|
end
|
@@ -150,13 +169,18 @@ describe "Puppet defaults" do
|
|
150
169
|
expect(Puppet.settings[:report_server]).to eq("server")
|
151
170
|
end
|
152
171
|
|
172
|
+
it "should use the default serverport value when report port is unspecified" do
|
173
|
+
Puppet.settings[:serverport] = "1234"
|
174
|
+
expect(Puppet.settings[:report_port]).to eq("1234")
|
175
|
+
end
|
176
|
+
|
153
177
|
it "should use the default masterport value when report port is unspecified" do
|
154
178
|
Puppet.settings[:masterport] = "1234"
|
155
179
|
expect(Puppet.settings[:report_port]).to eq("1234")
|
156
180
|
end
|
157
181
|
|
158
182
|
it "should use report_port when set" do
|
159
|
-
Puppet.settings[:
|
183
|
+
Puppet.settings[:serverport] = "1234"
|
160
184
|
Puppet.settings[:report_port] = "5678"
|
161
185
|
expect(Puppet.settings[:report_port]).to eq("5678")
|
162
186
|
end
|
@@ -2,11 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "directory environments" do
|
4
4
|
let(:args) { ['--configprint', 'modulepath', '--environment', 'direnv'] }
|
5
|
-
let(:puppet)
|
6
|
-
app = Puppet::Application[:apply]
|
7
|
-
allow(app).to receive(:command_line).and_return(double('command_line', :args => []))
|
8
|
-
app
|
9
|
-
end
|
5
|
+
let(:puppet) { Puppet::Application[:apply] }
|
10
6
|
|
11
7
|
context "with a single directory environmentpath" do
|
12
8
|
before(:each) do
|
@@ -17,17 +13,19 @@ describe "directory environments" do
|
|
17
13
|
|
18
14
|
it "config prints the environments modulepath" do
|
19
15
|
Puppet.settings.initialize_global_settings(args)
|
20
|
-
expect
|
21
|
-
|
22
|
-
|
16
|
+
expect {
|
17
|
+
puppet.run
|
18
|
+
}.to exit_with(0)
|
19
|
+
.and output(%r{/direnv/modules}).to_stdout
|
23
20
|
end
|
24
21
|
|
25
22
|
it "config prints the cli --modulepath despite environment" do
|
26
23
|
args << '--modulepath' << '/completely/different'
|
27
24
|
Puppet.settings.initialize_global_settings(args)
|
28
|
-
expect
|
29
|
-
|
30
|
-
|
25
|
+
expect {
|
26
|
+
puppet.run
|
27
|
+
}.to exit_with(0)
|
28
|
+
.and output(%r{/completely/different}).to_stdout
|
31
29
|
end
|
32
30
|
|
33
31
|
it 'given an 8.3 style path on Windows, will config print an expanded path',
|
@@ -41,9 +39,10 @@ describe "directory environments" do
|
|
41
39
|
expect(Puppet[:environmentpath]).to match(/~/)
|
42
40
|
|
43
41
|
Puppet.settings.initialize_global_settings(args)
|
44
|
-
expect
|
45
|
-
|
46
|
-
|
42
|
+
expect {
|
43
|
+
puppet.run
|
44
|
+
}.to exit_with(0)
|
45
|
+
.and output(a_string_matching(expanded)).to_stdout
|
47
46
|
end
|
48
47
|
end
|
49
48
|
|
@@ -59,9 +58,10 @@ describe "directory environments" do
|
|
59
58
|
|
60
59
|
it "config prints a directory environment modulepath" do
|
61
60
|
Puppet.settings.initialize_global_settings(args)
|
62
|
-
expect
|
63
|
-
|
64
|
-
|
61
|
+
expect {
|
62
|
+
puppet.run
|
63
|
+
}.to exit_with(0)
|
64
|
+
.and output(%r{otherdirenv/modules}).to_stdout
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -132,7 +132,12 @@ describe Puppet::HTTP::Client, unless: Puppet::Util::Platform.jruby? do
|
|
132
132
|
it "detects when the server has closed the connection and reconnects" do
|
133
133
|
Puppet[:http_debug] = true
|
134
134
|
|
135
|
-
|
135
|
+
# advertise that we support keep-alive, but we don't really
|
136
|
+
response_proc = -> (req, res) {
|
137
|
+
res['Connection'] = 'Keep-Alive'
|
138
|
+
}
|
139
|
+
|
140
|
+
https_server.start_server(response_proc: response_proc) do |port|
|
136
141
|
uri = URI("https://127.0.0.1:#{port}")
|
137
142
|
kwargs = {headers: {'Content-Type' => 'text/plain'}, options: {ssl_context: root_context}}
|
138
143
|
|
@@ -43,9 +43,10 @@ describe Puppet::Node::Facts::Facter do
|
|
43
43
|
Puppet.initialize_settings(['--modulepath', factdir])
|
44
44
|
apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => ['--modulepath', factdir, '-e', 'notify { $custom: }']))
|
45
45
|
|
46
|
-
expect
|
47
|
-
|
48
|
-
|
46
|
+
expect {
|
47
|
+
apply.run
|
48
|
+
}.to exit_with(0)
|
49
|
+
.and output(/defined 'message' as '#{Puppet.version}'/).to_stdout
|
49
50
|
end
|
50
51
|
|
51
52
|
it "should resolve external facts" do
|
@@ -58,9 +59,10 @@ describe Puppet::Node::Facts::Facter do
|
|
58
59
|
Puppet.initialize_settings(['--pluginfactdest', factdir])
|
59
60
|
apply = Puppet::Application.find(:apply).new(double('command_line', :subcommand_name => :apply, :args => ['--pluginfactdest', factdir, '-e', 'notify { $foo: }']))
|
60
61
|
|
61
|
-
expect
|
62
|
-
|
63
|
-
|
62
|
+
expect {
|
63
|
+
apply.run
|
64
|
+
}.to exit_with(0)
|
65
|
+
.and output(/defined 'message' as 'bar'/).to_stdout
|
64
66
|
end
|
65
67
|
end
|
66
68
|
|
@@ -116,6 +116,79 @@ describe Puppet::Network::HttpPool, unless: Puppet::Util::Platform.jruby? do
|
|
116
116
|
|
117
117
|
include_examples 'HTTPS client'
|
118
118
|
end
|
119
|
+
|
120
|
+
shared_examples_for "an HttpPool connection" do |klass, legacy_api|
|
121
|
+
before :each do
|
122
|
+
Puppet::Network::HttpPool.http_client_class = klass
|
123
|
+
end
|
124
|
+
|
125
|
+
it "connects using the scheme, host and port from the http instance preserving the URL path and query" do
|
126
|
+
request_line = nil
|
127
|
+
|
128
|
+
response_proc = -> (req, res) {
|
129
|
+
request_line = req.request_line
|
130
|
+
}
|
131
|
+
|
132
|
+
server.start_server(response_proc: response_proc) do |port|
|
133
|
+
http = Puppet::Network::HttpPool.http_instance(hostname, port, true)
|
134
|
+
path = "http://bogus.example.com:443/foo?q=a"
|
135
|
+
http.get(path)
|
136
|
+
|
137
|
+
if legacy_api
|
138
|
+
# The old API uses 'absolute-form' and passes the bogus hostname
|
139
|
+
# which isn't the host we connected to.
|
140
|
+
expect(request_line).to eq("GET http://bogus.example.com:443/foo?q=a HTTP/1.1\r\n")
|
141
|
+
else
|
142
|
+
expect(request_line).to eq("GET /foo?q=a HTTP/1.1\r\n")
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
it "requires the caller to URL encode the path and query when using absolute form" do
|
148
|
+
request_line = nil
|
149
|
+
|
150
|
+
response_proc = -> (req, res) {
|
151
|
+
request_line = req.request_line
|
152
|
+
}
|
153
|
+
|
154
|
+
server.start_server(response_proc: response_proc) do |port|
|
155
|
+
http = Puppet::Network::HttpPool.http_instance(hostname, port, true)
|
156
|
+
params = { 'key' => 'a value' }
|
157
|
+
encoded_url = "https://#{hostname}:#{port}/foo%20bar?q=#{Puppet::Util.uri_query_encode(params.to_json)}"
|
158
|
+
http.get(encoded_url)
|
159
|
+
|
160
|
+
if legacy_api
|
161
|
+
expect(request_line).to eq("GET #{encoded_url} HTTP/1.1\r\n")
|
162
|
+
else
|
163
|
+
expect(request_line).to eq("GET /foo%20bar?q=%7B%22key%22%3A%22a%20value%22%7D HTTP/1.1\r\n")
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
it "requires the caller to URL encode the path and query when using a path" do
|
169
|
+
request_line = nil
|
170
|
+
|
171
|
+
response_proc = -> (req, res) {
|
172
|
+
request_line = req.request_line
|
173
|
+
}
|
174
|
+
|
175
|
+
server.start_server(response_proc: response_proc) do |port|
|
176
|
+
http = Puppet::Network::HttpPool.http_instance(hostname, port, true)
|
177
|
+
params = { 'key' => 'a value' }
|
178
|
+
http.get("/foo%20bar?q=#{Puppet::Util.uri_query_encode(params.to_json)}")
|
179
|
+
|
180
|
+
expect(request_line).to eq("GET /foo%20bar?q=%7B%22key%22%3A%22a%20value%22%7D HTTP/1.1\r\n")
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe Puppet::Network::HTTP::Connection do
|
186
|
+
it_behaves_like "an HttpPool connection", described_class, true
|
187
|
+
end
|
188
|
+
|
189
|
+
describe Puppet::Network::HTTP::ConnectionAdapter do
|
190
|
+
it_behaves_like "an HttpPool connection", described_class, false
|
191
|
+
end
|
119
192
|
end
|
120
193
|
|
121
194
|
context "when calling HttpPool.connection method" do
|
@@ -79,7 +79,7 @@ describe Puppet::Node::Environment do
|
|
79
79
|
it "should not yield a module with the same name as a defined Bolt project" do
|
80
80
|
project_path = File.join(tmpfile('project'), 'bolt_project')
|
81
81
|
FileUtils.mkdir_p(project_path)
|
82
|
-
project = Struct.new("Project", :name, :path).new('project', project_path)
|
82
|
+
project = Struct.new("Project", :name, :path, :load_as_module?).new('project', project_path, true)
|
83
83
|
|
84
84
|
Puppet.override(bolt_project: project) do
|
85
85
|
base = tmpfile("base")
|
@@ -834,6 +834,17 @@ describe Puppet::Parser::Compiler do
|
|
834
834
|
MANIFEST
|
835
835
|
end.to raise_error(/Foo\[bar\]:\s+parameter 'a' expects a value for key 'd'\s+parameter 'a' unrecognized key 'c'/m)
|
836
836
|
end
|
837
|
+
|
838
|
+
it 'handles Sensitive type in resource array' do
|
839
|
+
catalog = compile_to_catalog(<<-MANIFEST)
|
840
|
+
define foo(Sensitive[String] $password) {
|
841
|
+
notify{ "${title}": message => "${password}" }
|
842
|
+
}
|
843
|
+
foo { ['testA', 'testB']: password =>Sensitive('some password') }
|
844
|
+
MANIFEST
|
845
|
+
expect(catalog).to have_resource("Notify[testA]").with_parameter(:message, 'Sensitive [value redacted]')
|
846
|
+
expect(catalog).to have_resource("Notify[testB]").with_parameter(:message, 'Sensitive [value redacted]')
|
847
|
+
end
|
837
848
|
end
|
838
849
|
|
839
850
|
context 'when using typed parameters in class' do
|
@@ -1160,7 +1160,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1160
1160
|
source_prefix = Puppet::Util::Platform.windows? ? '/' : ''
|
1161
1161
|
|
1162
1162
|
# the URI can be round-tripped through unescape
|
1163
|
-
expect(
|
1163
|
+
expect(Puppet::Util.uri_unescape(uri_path)).to eq(source_prefix + source)
|
1164
1164
|
# and is properly UTF-8
|
1165
1165
|
expect(uri_path.encoding).to eq (Encoding::UTF_8)
|
1166
1166
|
|
@@ -50,6 +50,28 @@ describe Puppet::Util::Execution, unless: Puppet::Util::Platform.jruby? do
|
|
50
50
|
Puppet::Util::Execution.execute(str, sensitive: true)
|
51
51
|
expect(@logs).to include(an_object_having_attributes(level: :debug, message: "Executing: '[redacted]'"))
|
52
52
|
end
|
53
|
+
|
54
|
+
it "allows stdout and stderr to share a file" do
|
55
|
+
command = "ruby -e '(1..10).each {|i| (i%2==0) ? $stdout.puts(i) : $stderr.puts(i)}'"
|
56
|
+
|
57
|
+
expect(Puppet::Util::Execution.execute(command, :combine => true).split).to match_array([*'1'..'10'])
|
58
|
+
end
|
59
|
+
|
60
|
+
it "returns output and set $CHILD_STATUS" do
|
61
|
+
command = "ruby -e 'puts \"foo\"; exit 42'"
|
62
|
+
|
63
|
+
output = Puppet::Util::Execution.execute(command, {:failonfail => false})
|
64
|
+
|
65
|
+
expect(output).to eq("foo\n")
|
66
|
+
expect($CHILD_STATUS.exitstatus).to eq(42)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "raises an error if non-zero exit status is returned" do
|
70
|
+
command = "ruby -e 'exit 43'"
|
71
|
+
|
72
|
+
expect { Puppet::Util::Execution.execute(command) }.to raise_error(Puppet::ExecutionFailure, /Execution of '#{command}' returned 43: /)
|
73
|
+
expect($CHILD_STATUS.exitstatus).to eq(43)
|
74
|
+
end
|
53
75
|
end
|
54
76
|
|
55
77
|
describe "#execute (non-Windows)", :if => !Puppet::Util::Platform.windows? do
|
@@ -33,8 +33,8 @@ describe Puppet::Util::Windows::ADSI::User,
|
|
33
33
|
|
34
34
|
describe '.[]' do
|
35
35
|
it 'should return string attributes as UTF-8' do
|
36
|
-
|
37
|
-
expect(
|
36
|
+
user = Puppet::Util::Windows::ADSI::User.new('Guest')
|
37
|
+
expect(user['Description'].encoding).to eq(Encoding::UTF_8)
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -82,6 +82,9 @@ describe Puppet::Util::Windows::ADSI::Group,
|
|
82
82
|
it 'should return a list of members resolvable with Puppet::Util::Windows::ADSI::Group.name_sid_hash' do
|
83
83
|
temp_groupname = "g#{SecureRandom.uuid}"
|
84
84
|
temp_username = "u#{SecureRandom.uuid}"[0..12]
|
85
|
+
# From https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/password-must-meet-complexity-requirements
|
86
|
+
specials = "~!@#$%^&*_-+=`|\(){}[]:;\"'<>,.?/"
|
87
|
+
temp_password = "p#{SecureRandom.uuid[0..7]}-#{SecureRandom.uuid.upcase[0..7]}-#{specials[rand(specials.length)]}"
|
85
88
|
|
86
89
|
# select a virtual account that requires an authority to be able to resolve to SID
|
87
90
|
# the Dhcp service is chosen for no particular reason aside from it's a service available on all Windows versions
|
@@ -110,6 +113,8 @@ describe Puppet::Util::Windows::ADSI::Group,
|
|
110
113
|
begin
|
111
114
|
# :SidTypeUser as user on localhost, can be resolved with or without authority prefix
|
112
115
|
user = Puppet::Util::Windows::ADSI::User.create(temp_username)
|
116
|
+
# appveyor sometimes requires a password
|
117
|
+
user.password = temp_password
|
113
118
|
user.commit()
|
114
119
|
users.push({ :sid => user.sid.sid, :name => Puppet::Util::Windows::ADSI.computer_name + '\\' + temp_username })
|
115
120
|
|