puppet 6.16.0-x86-mingw32 → 6.20.0-x86-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 +6 -2
- data/Gemfile.lock +40 -36
- data/README.md +3 -4
- data/Rakefile +4 -12
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +10 -6
- data/lib/puppet/application/agent.rb +23 -6
- 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 +70 -20
- 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/defaults.rb +113 -46
- 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/http_metadata.rb +13 -1
- 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 +8 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +3 -7
- 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 +6 -1
- 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/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_content/rest.rb +1 -1
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- 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 +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 +5 -5
- 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/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/connection_adapter.rb +6 -4
- 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 +7 -6
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +1 -1
- 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/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- 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 +27 -8
- 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/model/ast_transformer.rb +1 -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/apt.rb +38 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- 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 +2 -1
- data/lib/puppet/provider/package/zypper.rb +3 -0
- data/lib/puppet/provider/service/windows.rb +23 -7
- 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 +11 -4
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reference/configuration.rb +6 -5
- data/lib/puppet/reports/http.rb +2 -0
- 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/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/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/test/test_helper.rb +18 -13
- 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 +32 -12
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/service.rb +53 -0
- data/lib/puppet/type/user.rb +18 -3
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/autoload.rb +10 -15
- 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/fact_dif.rb +62 -0
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- 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 +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 +501 -443
- data/man/man5/puppet.conf.5 +70 -24
- data/man/man8/puppet-agent.8 +8 -5
- 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 +263 -54
- 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 +20 -3
- 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/network/http_pool_spec.rb +26 -9
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- 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 +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 +7 -17
- data/spec/integration/util/windows/user_spec.rb +47 -5
- 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/fact_handler_spec.rb +4 -4
- 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/context/trusted_information_spec.rb +10 -4
- 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/http_metadata_spec.rb +37 -14
- 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_serving/terminus_selector_spec.rb +45 -26
- 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 +64 -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 +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/file_metadata/http_spec.rb +27 -0
- 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 +5 -5
- 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/interface_spec.rb +3 -3
- 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 +2 -10
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/connection_spec.rb +42 -32
- data/spec/unit/network/http/handler_spec.rb +0 -5
- data/spec/unit/node/environment_spec.rb +18 -1
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- 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/property_spec.rb +1 -0
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +66 -65
- data/spec/unit/provider/package/apt_spec.rb +76 -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 +50 -14
- 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/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +23 -16
- 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 +14 -13
- 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 +82 -50
- data/spec/unit/test/test_helper_spec.rb +17 -0
- 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 +3 -1
- 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 +4 -4
- data/spec/unit/type/file_spec.rb +122 -102
- 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 +210 -1
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +52 -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/checksums_spec.rb +16 -0
- 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/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util_spec.rb +16 -9
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +52 -53
- 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/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/face/node_spec.rb
CHANGED
@@ -15,13 +15,6 @@ describe Puppet::Face[:node, '0.0.1'] do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe 'when running #clean' do
|
18
|
-
before :each do
|
19
|
-
allow(Puppet::Node::Facts.indirection).to receive(:terminus_class=)
|
20
|
-
allow(Puppet::Node::Facts.indirection).to receive(:cache_class=)
|
21
|
-
allow(Puppet::Node).to receive(:terminus_class=)
|
22
|
-
allow(Puppet::Node).to receive(:cache_class=)
|
23
|
-
end
|
24
|
-
|
25
18
|
it 'should invoke #cleanup' do
|
26
19
|
expect(subject).to receive(:cleanup).with('hostname')
|
27
20
|
subject.clean('hostname')
|
@@ -30,10 +23,6 @@ describe Puppet::Face[:node, '0.0.1'] do
|
|
30
23
|
|
31
24
|
describe "clean action" do
|
32
25
|
before :each do
|
33
|
-
allow(Puppet::Node::Facts.indirection).to receive(:terminus_class=)
|
34
|
-
allow(Puppet::Node::Facts.indirection).to receive(:cache_class=)
|
35
|
-
allow(Puppet::Node).to receive(:terminus_class=)
|
36
|
-
allow(Puppet::Node).to receive(:cache_class=)
|
37
26
|
allow(subject).to receive(:cleanup)
|
38
27
|
end
|
39
28
|
|
@@ -74,9 +63,9 @@ describe Puppet::Face[:node, '0.0.1'] do
|
|
74
63
|
subject.clean('hostname')
|
75
64
|
end
|
76
65
|
|
77
|
-
it "should run in
|
66
|
+
it "should run in server mode" do
|
78
67
|
subject.clean('hostname')
|
79
|
-
expect(Puppet.run_mode).to
|
68
|
+
expect(Puppet.run_mode).to be_server
|
80
69
|
end
|
81
70
|
|
82
71
|
it "should set node cache as yaml" do
|
@@ -87,7 +87,6 @@ describe Puppet::FileServing::Configuration::Parser do
|
|
87
87
|
before do
|
88
88
|
@mount = double('testmount', :name => "one", :validate => true)
|
89
89
|
expect(Puppet::FileServing::Mount::File).to receive(:new).with("one").and_return(@mount)
|
90
|
-
allow(@parser).to receive(:add_modules_mount)
|
91
90
|
end
|
92
91
|
|
93
92
|
it "should set the mount path to the path attribute from that section" do
|
@@ -30,11 +30,6 @@ describe Puppet::FileServing::HttpMetadata do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context "with no Last-Modified or Content-MD5 header from the server" do
|
33
|
-
before do
|
34
|
-
allow(http_response).to receive(:[]).with('last-modified').and_return(nil)
|
35
|
-
allow(http_response).to receive(:[]).with('content-md5').and_return(nil)
|
36
|
-
end
|
37
|
-
|
38
33
|
it "should use :mtime as the checksum type, based on current time" do
|
39
34
|
# Stringifying Time.now does some rounding; do so here so we don't end up with a time
|
40
35
|
# that's greater than the stringified version returned by collect.
|
@@ -51,13 +46,9 @@ describe Puppet::FileServing::HttpMetadata do
|
|
51
46
|
context "with a Last-Modified header from the server" do
|
52
47
|
let(:time) { Time.now.utc }
|
53
48
|
|
54
|
-
before do
|
55
|
-
allow(http_response).to receive(:[]).with('content-md5').and_return(nil)
|
56
|
-
end
|
57
|
-
|
58
49
|
it "should use :mtime as the checksum type, based on Last-Modified" do
|
59
50
|
# HTTP uses "GMT" not "UTC"
|
60
|
-
|
51
|
+
http_response.add_field('last-modified', time.strftime("%a, %d %b %Y %T GMT"))
|
61
52
|
metadata = described_class.new(http_response)
|
62
53
|
metadata.collect
|
63
54
|
expect( metadata.checksum_type ).to eq :mtime
|
@@ -70,16 +61,48 @@ describe Puppet::FileServing::HttpMetadata do
|
|
70
61
|
let(:base64) { Digest::MD5.new.base64digest input }
|
71
62
|
let(:hex) { Digest::MD5.new.hexdigest input }
|
72
63
|
|
73
|
-
|
74
|
-
|
75
|
-
|
64
|
+
it "should use the md5 checksum" do
|
65
|
+
http_response.add_field('content-md5', base64)
|
66
|
+
metadata = described_class.new(http_response)
|
67
|
+
metadata.collect
|
68
|
+
expect( metadata.checksum_type ).to eq :md5
|
69
|
+
expect( metadata.checksum ).to eq "{md5}#{hex}"
|
76
70
|
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "with X-Checksum-Md5" do
|
74
|
+
let(:md5) { "c58989e9740a748de4f5054286faf99b" }
|
77
75
|
|
78
76
|
it "should use the md5 checksum" do
|
77
|
+
http_response.add_field('X-Checksum-Md5', md5)
|
79
78
|
metadata = described_class.new(http_response)
|
80
79
|
metadata.collect
|
81
80
|
expect( metadata.checksum_type ).to eq :md5
|
82
|
-
expect( metadata.checksum ).to eq "{md5}#{
|
81
|
+
expect( metadata.checksum ).to eq "{md5}#{md5}"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "with X-Checksum-Sha1" do
|
86
|
+
let(:sha1) { "01e4d15746f4274b84d740a93e04b9fd2882e3ea" }
|
87
|
+
|
88
|
+
it "should use the SHA1 checksum" do
|
89
|
+
http_response.add_field('X-Checksum-Sha1', sha1)
|
90
|
+
metadata = described_class.new(http_response)
|
91
|
+
metadata.collect
|
92
|
+
expect( metadata.checksum_type ).to eq :sha1
|
93
|
+
expect( metadata.checksum ).to eq "{sha1}#{sha1}"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context "with X-Checksum-Sha256" do
|
98
|
+
let(:sha256) { "a3eda98259c30e1e75039c2123670c18105e1c46efb672e42ca0e4cbe77b002a" }
|
99
|
+
|
100
|
+
it "should use the SHA256 checksum" do
|
101
|
+
http_response.add_field('X-Checksum-Sha256', sha256)
|
102
|
+
metadata = described_class.new(http_response)
|
103
|
+
metadata.collect
|
104
|
+
expect( metadata.checksum_type ).to eq :sha256
|
105
|
+
expect( metadata.checksum ).to eq "{sha256}#{sha256}"
|
83
106
|
end
|
84
107
|
end
|
85
108
|
end
|
@@ -266,9 +266,9 @@ describe Puppet::FileServing::Metadata, :uses_checksums => true do
|
|
266
266
|
path = tmpfile('bar')
|
267
267
|
FileUtils.touch(path)
|
268
268
|
|
269
|
-
allow(Puppet::Util::Windows::Security).to receive(:get_owner).with(path
|
270
|
-
allow(Puppet::Util::Windows::Security).to receive(:get_group).with(path
|
271
|
-
allow(Puppet::Util::Windows::Security).to receive(:get_mode).with(path
|
269
|
+
allow(Puppet::Util::Windows::Security).to receive(:get_owner).with(path).and_raise(invalid_error)
|
270
|
+
allow(Puppet::Util::Windows::Security).to receive(:get_group).with(path).and_raise(invalid_error)
|
271
|
+
allow(Puppet::Util::Windows::Security).to receive(:get_mode).with(path).and_raise(invalid_error)
|
272
272
|
|
273
273
|
stat = Puppet::FileSystem.stat(path)
|
274
274
|
|
@@ -52,13 +52,13 @@ describe Puppet::FileServing::Mount::Locales do
|
|
52
52
|
expect(@mount.search("foo/bar", @request)).to eq(["/"])
|
53
53
|
end
|
54
54
|
|
55
|
-
it "should return
|
55
|
+
it "should return the default search module path if no modules can be found that have locales and modulepath is invalid" do
|
56
56
|
mod = double('module')
|
57
57
|
allow(mod).to receive(:locales?).and_return(false)
|
58
58
|
|
59
59
|
allow(@environment).to receive(:modules).and_return([])
|
60
60
|
allow(@environment).to receive(:modulepath).and_return([])
|
61
|
-
expect(@mount.search("foo/bar", @request)).to
|
61
|
+
expect(@mount.search("foo/bar", @request)).to eq([Puppet[:codedir]])
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should return the locale paths for each module that has locales" do
|
@@ -52,13 +52,13 @@ describe Puppet::FileServing::Mount::PluginFacts do
|
|
52
52
|
expect(@mount.search("foo/bar", @request)).to eq(["/"])
|
53
53
|
end
|
54
54
|
|
55
|
-
it "should return
|
55
|
+
it "should return the default search module path if no modules can be found that have plugins and modulepath is invalid" do
|
56
56
|
mod = double('module')
|
57
57
|
allow(mod).to receive(:pluginfacts?).and_return(false)
|
58
58
|
|
59
59
|
allow(@environment).to receive(:modules).and_return([])
|
60
60
|
allow(@environment).to receive(:modulepath).and_return([])
|
61
|
-
expect(@mount.search("foo/bar", @request)).to
|
61
|
+
expect(@mount.search("foo/bar", @request)).to eq([Puppet[:codedir]])
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should return the plugin paths for each module that has plugins" do
|
@@ -52,13 +52,13 @@ describe Puppet::FileServing::Mount::Plugins do
|
|
52
52
|
expect(@mount.search("foo/bar", @request)).to eq(["/"])
|
53
53
|
end
|
54
54
|
|
55
|
-
it "should return
|
55
|
+
it "should return the default search module path if no modules can be found that have plugins and modulepath is invalid" do
|
56
56
|
mod = double('module')
|
57
57
|
allow(mod).to receive(:plugins?).and_return(false)
|
58
58
|
|
59
59
|
allow(@environment).to receive(:modules).and_return([])
|
60
60
|
allow(@environment).to receive(:modulepath).and_return([])
|
61
|
-
expect(@mount.search("foo/bar", @request)).to
|
61
|
+
expect(@mount.search("foo/bar", @request)).to eq([Puppet[:codedir]])
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should return the plugin paths for each module that has plugins" do
|
@@ -2,13 +2,20 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
require 'puppet/file_serving/terminus_helper'
|
4
4
|
|
5
|
+
class Puppet::FileServing::TestHelper
|
6
|
+
include Puppet::FileServing::TerminusHelper
|
7
|
+
|
8
|
+
attr_reader :model
|
9
|
+
|
10
|
+
def initialize(model)
|
11
|
+
@model = model
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
5
15
|
describe Puppet::FileServing::TerminusHelper do
|
6
16
|
before do
|
7
|
-
@helper = Object.new
|
8
|
-
@helper.extend(Puppet::FileServing::TerminusHelper)
|
9
|
-
|
10
17
|
@model = double('model')
|
11
|
-
|
18
|
+
@helper = Puppet::FileServing::TestHelper.new(@model)
|
12
19
|
|
13
20
|
@request = double('request', :key => "url", :options => {})
|
14
21
|
|
@@ -3,62 +3,81 @@ require 'spec_helper'
|
|
3
3
|
require 'puppet/file_serving/terminus_selector'
|
4
4
|
|
5
5
|
describe Puppet::FileServing::TerminusSelector do
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
class TestSelector
|
7
|
+
include Puppet::FileServing::TerminusSelector
|
8
|
+
end
|
9
9
|
|
10
|
-
|
10
|
+
def create_request(key)
|
11
|
+
Puppet::Indirector::Request.new(:indirection_name, :find, key, nil, {node: 'whatever'})
|
11
12
|
end
|
12
13
|
|
14
|
+
subject { TestSelector.new }
|
15
|
+
|
13
16
|
describe "when being used to select termini" do
|
14
17
|
it "should return :file if the request key is fully qualified" do
|
15
|
-
|
16
|
-
|
18
|
+
request = create_request(File.expand_path('/foo'))
|
19
|
+
|
20
|
+
expect(subject.select(request)).to eq(:file)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return :file_server if the request key is relative" do
|
24
|
+
request = create_request('modules/my_module/path/to_file')
|
25
|
+
|
26
|
+
expect(subject.select(request)).to eq(:file_server)
|
17
27
|
end
|
18
28
|
|
19
29
|
it "should return :file if the URI protocol is set to 'file'" do
|
20
|
-
|
21
|
-
|
30
|
+
request = create_request(Puppet::Util.path_to_uri(File.expand_path("/foo")).to_s)
|
31
|
+
|
32
|
+
expect(subject.select(request)).to eq(:file)
|
22
33
|
end
|
23
34
|
|
24
35
|
it "should return :http if the URI protocol is set to 'http'" do
|
25
|
-
|
26
|
-
|
36
|
+
request = create_request("http://www.example.com")
|
37
|
+
|
38
|
+
expect(subject.select(request)).to eq(:http)
|
27
39
|
end
|
28
40
|
|
29
41
|
it "should return :http if the URI protocol is set to 'https'" do
|
30
|
-
|
31
|
-
|
42
|
+
request = create_request("https://www.example.com")
|
43
|
+
|
44
|
+
expect(subject.select(request)).to eq(:http)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return :http if the path starts with a double slash" do
|
48
|
+
request = create_request("https://www.example.com//index.html")
|
49
|
+
|
50
|
+
expect(subject.select(request)).to eq(:http)
|
32
51
|
end
|
33
52
|
|
34
53
|
it "should fail when a protocol other than :puppet, :http(s) or :file is used" do
|
35
|
-
|
36
|
-
|
54
|
+
request = create_request("ftp://ftp.example.com")
|
55
|
+
|
56
|
+
expect {
|
57
|
+
subject.select(request)
|
58
|
+
}.to raise_error(ArgumentError, /URI protocol 'ftp' is not currently supported for file serving/)
|
37
59
|
end
|
38
60
|
|
39
61
|
describe "and the protocol is 'puppet'" do
|
40
|
-
before do
|
41
|
-
allow(@request).to receive(:protocol).and_return("puppet")
|
42
|
-
end
|
43
|
-
|
44
62
|
it "should choose :rest when a server is specified" do
|
45
|
-
|
46
|
-
|
47
|
-
expect(
|
63
|
+
request = create_request("puppet://puppetserver.example.com")
|
64
|
+
|
65
|
+
expect(subject.select(request)).to eq(:rest)
|
48
66
|
end
|
49
67
|
|
50
68
|
# This is so a given file location works when bootstrapping with no server.
|
51
69
|
it "should choose :rest when default_file_terminus is rest" do
|
52
|
-
allow(@request).to receive(:protocol).and_return("puppet")
|
53
70
|
Puppet[:server] = 'localhost'
|
54
|
-
|
71
|
+
request = create_request("puppet:///plugins")
|
72
|
+
|
73
|
+
expect(subject.select(request)).to eq(:rest)
|
55
74
|
end
|
56
75
|
|
57
76
|
it "should choose :file_server when default_file_terminus is file_server and no server is specified on the request" do
|
58
|
-
expect(@request).to receive(:protocol).and_return("puppet")
|
59
|
-
expect(@request).to receive(:server).and_return(nil)
|
60
77
|
Puppet[:default_file_terminus] = 'file_server'
|
61
|
-
|
78
|
+
request = create_request("puppet:///plugins")
|
79
|
+
|
80
|
+
expect(subject.select(request)).to eq(:file_server)
|
62
81
|
end
|
63
82
|
end
|
64
83
|
end
|
@@ -84,6 +84,24 @@ describe Puppet::FileSystem::Uniquefile do
|
|
84
84
|
}.to raise_error(Errno::ENOENT, %r{No such file or directory - A directory component in .* does not exist or is a dangling symbolic link})
|
85
85
|
end
|
86
86
|
|
87
|
+
it "should use UTF8 characters in TMP,TEMP,TMPDIR environment variable", :if => Puppet::Util::Platform.windows? do
|
88
|
+
rune_utf8 = "\u16A0\u16C7\u16BB\u16EB\u16D2\u16E6\u16A6\u16EB\u16A0\u16B1\u16A9\u16A0\u16A2\u16B1\u16EB\u16A0\u16C1\u16B1\u16AA\u16EB\u16B7\u16D6\u16BB\u16B9\u16E6\u16DA\u16B3\u16A2\u16D7"
|
89
|
+
temp_rune_utf8 = File.join(Dir.tmpdir, rune_utf8)
|
90
|
+
Puppet::FileSystem.mkpath(temp_rune_utf8)
|
91
|
+
|
92
|
+
# Set the temporary environment variables to the UTF8 temp path
|
93
|
+
Puppet::Util::Windows::Process.set_environment_variable('TMPDIR', temp_rune_utf8)
|
94
|
+
Puppet::Util::Windows::Process.set_environment_variable('TMP', temp_rune_utf8)
|
95
|
+
Puppet::Util::Windows::Process.set_environment_variable('TEMP', temp_rune_utf8)
|
96
|
+
|
97
|
+
# Create a unique file
|
98
|
+
filename = Puppet::FileSystem::Uniquefile.open_tmp('foo') do |file|
|
99
|
+
File.dirname(file.path)
|
100
|
+
end
|
101
|
+
|
102
|
+
expect(filename).to eq(temp_rune_utf8)
|
103
|
+
end
|
104
|
+
|
87
105
|
context "Ruby 1.9.3 Tempfile tests" do
|
88
106
|
# the remaining tests in this file are ported directly from the ruby 1.9.3 source,
|
89
107
|
# since most of this file was ported from there
|
@@ -872,8 +872,7 @@ describe "Puppet::FileSystem" do
|
|
872
872
|
|
873
873
|
# regardless of slash direction, return value is drive letter
|
874
874
|
expanded = Puppet::FileSystem.expand_path(slash)
|
875
|
-
expect(expanded).to
|
876
|
-
expect(expanded).to eq(File.expand_path(slash))
|
875
|
+
expect(expanded).to match(/^[a-z]:/i)
|
877
876
|
end
|
878
877
|
end
|
879
878
|
|
@@ -22,13 +22,8 @@ describe Puppet::Forge::ModuleRelease do
|
|
22
22
|
let(:uri) { " "}
|
23
23
|
let(:release) { Puppet::Forge::ModuleRelease.new(ssl_repository, JSON.parse(release_json)) }
|
24
24
|
|
25
|
-
let(:mock_file) {
|
26
|
-
|
27
|
-
allow(mock_io).to receive(:path).and_return('/dev/null')
|
28
|
-
mock_io
|
29
|
-
}
|
30
|
-
|
31
|
-
let(:mock_dir) { '/tmp' }
|
25
|
+
let(:mock_file) { double('file', path: '/dev/null') }
|
26
|
+
let(:mock_dir) { tmpdir('dir') }
|
32
27
|
|
33
28
|
let(:destination) { tmpfile('forge_module_release') }
|
34
29
|
|
@@ -1,8 +1,10 @@
|
|
1
|
-
|
2
1
|
require 'spec_helper'
|
3
2
|
|
3
|
+
require 'puppet_spec/compiler'
|
4
|
+
|
4
5
|
describe "the inline_epp function" do
|
5
6
|
include PuppetSpec::Files
|
7
|
+
include PuppetSpec::Compiler
|
6
8
|
|
7
9
|
let :node do Puppet::Node.new('localhost') end
|
8
10
|
let :compiler do Puppet::Parser::Compiler.new(node) end
|
@@ -73,6 +75,29 @@ describe "the inline_epp function" do
|
|
73
75
|
expect(eval_template("string was: <%= $string %>")).to eq("string was: the string value")
|
74
76
|
end
|
75
77
|
|
78
|
+
context "when using Sensitive" do
|
79
|
+
it "returns an unwrapped sensitive value as a String" do
|
80
|
+
expect(eval_and_collect_notices(<<~END)).to eq(["opensesame"])
|
81
|
+
notice(inline_epp("<%= Sensitive('opensesame').unwrap %>"))
|
82
|
+
END
|
83
|
+
end
|
84
|
+
|
85
|
+
it "rewraps a sensitive value" do
|
86
|
+
# note entire result is redacted, not just sensitive part
|
87
|
+
expect(eval_and_collect_notices(<<~END)).to eq(["Sensitive [value redacted]"])
|
88
|
+
notice(inline_epp("This is sensitive <%= Sensitive('opensesame') %>"))
|
89
|
+
END
|
90
|
+
end
|
91
|
+
|
92
|
+
it "can be double wrapped" do
|
93
|
+
catalog = compile_to_catalog(<<~END)
|
94
|
+
notify { 'title':
|
95
|
+
message => Sensitive(inline_epp("<%= Sensitive('opensesame') %>"))
|
96
|
+
}
|
97
|
+
END
|
98
|
+
expect(catalog.resource(:notify, 'title')['message']).to eq('opensesame')
|
99
|
+
end
|
100
|
+
end
|
76
101
|
|
77
102
|
def eval_template_with_args(content, args_hash)
|
78
103
|
epp_function.call(scope, content, args_hash)
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'webmock/rspec'
|
3
2
|
require 'puppet/http'
|
4
3
|
|
5
4
|
describe Puppet::HTTP::Client do
|
@@ -507,6 +506,20 @@ describe Puppet::HTTP::Client do
|
|
507
506
|
|
508
507
|
client.get(uri, options: {basic_auth: {user: 'user', password: nil}})
|
509
508
|
end
|
509
|
+
|
510
|
+
it 'observes userinfo in the URL' do
|
511
|
+
stub_request(:get, uri).with(basic_auth: credentials)
|
512
|
+
|
513
|
+
client.get(URI("https://user:pass@www.example.com"))
|
514
|
+
end
|
515
|
+
|
516
|
+
it 'prefers explicit basic_auth credentials' do
|
517
|
+
uri = URI("https://ignored_user:ignored_pass@www.example.com")
|
518
|
+
|
519
|
+
stub_request(:get, "https://www.example.com").with(basic_auth: credentials)
|
520
|
+
|
521
|
+
client.get(uri, options: {basic_auth: {user: 'user', password: 'pass'}})
|
522
|
+
end
|
510
523
|
end
|
511
524
|
|
512
525
|
context "when redirecting" do
|
@@ -535,10 +548,41 @@ describe Puppet::HTTP::Client do
|
|
535
548
|
expect(response).to be_success
|
536
549
|
end
|
537
550
|
|
538
|
-
it "
|
539
|
-
|
540
|
-
|
541
|
-
stub_request(:get,
|
551
|
+
it "updates the Host header from the Location host and port" do
|
552
|
+
stub_request(:get, start_url).with(headers: { 'Host' => 'www.example.com:8140' })
|
553
|
+
.to_return(redirect_to(url: other_host))
|
554
|
+
stub_request(:get, other_host).with(headers: { 'Host' => 'other.example.com:8140' })
|
555
|
+
.to_return(status: 200)
|
556
|
+
|
557
|
+
response = client.get(start_url)
|
558
|
+
expect(response).to be_success
|
559
|
+
end
|
560
|
+
|
561
|
+
it "omits the default HTTPS port from the Host header" do
|
562
|
+
stub_request(:get, start_url).with(headers: { 'Host' => 'www.example.com:8140' })
|
563
|
+
.to_return(redirect_to(url: "https://other.example.com/qux"))
|
564
|
+
stub_request(:get, "https://other.example.com/qux").with(headers: { 'Host' => 'other.example.com' })
|
565
|
+
.to_return(status: 200)
|
566
|
+
|
567
|
+
response = client.get(start_url)
|
568
|
+
expect(response).to be_success
|
569
|
+
end
|
570
|
+
|
571
|
+
it "omits the default HTTP port from the Host header" do
|
572
|
+
stub_request(:get, start_url).with(headers: { 'Host' => 'www.example.com:8140' })
|
573
|
+
.to_return(redirect_to(url: "http://other.example.com/qux"))
|
574
|
+
stub_request(:get, "http://other.example.com/qux").with(headers: { 'Host' => 'other.example.com' })
|
575
|
+
.to_return(status: 200)
|
576
|
+
|
577
|
+
response = client.get(start_url)
|
578
|
+
expect(response).to be_success
|
579
|
+
end
|
580
|
+
|
581
|
+
it "applies query parameters from the location header" do
|
582
|
+
query = { 'redirected' => false }
|
583
|
+
|
584
|
+
stub_request(:get, start_url).with(query: query).to_return(redirect_to(url: "#{bar_url}?redirected=true"))
|
585
|
+
stub_request(:get, bar_url).with(query: {'redirected' => 'true'}).to_return(status: 200)
|
542
586
|
|
543
587
|
response = client.get(start_url, params: query)
|
544
588
|
expect(response).to be_success
|
@@ -569,16 +613,27 @@ describe Puppet::HTTP::Client do
|
|
569
613
|
expect(response).to be_success
|
570
614
|
end
|
571
615
|
|
572
|
-
it "
|
616
|
+
it "applies query parameters from the location header" do
|
573
617
|
relative_url = "/people.html"
|
574
|
-
query = { '
|
575
|
-
stub_request(:get, start_url).with(query: query).to_return(redirect_to(url: relative_url))
|
576
|
-
stub_request(:get, "https://www.example.com:8140/people.html").with(query:
|
618
|
+
query = { 'redirected' => false }
|
619
|
+
stub_request(:get, start_url).with(query: query).to_return(redirect_to(url: "#{relative_url}?redirected=true"))
|
620
|
+
stub_request(:get, "https://www.example.com:8140/people.html").with(query: {'redirected' => 'true'}).to_return(status: 200)
|
577
621
|
|
578
622
|
response = client.get(start_url, params: query)
|
579
623
|
expect(response).to be_success
|
580
624
|
end
|
581
625
|
|
626
|
+
it "removes dot segments from a relative location" do
|
627
|
+
# from https://tools.ietf.org/html/rfc3986#section-5.4.2
|
628
|
+
base_url = URI("http://a/b/c/d;p?q")
|
629
|
+
relative_url = "../../../../g"
|
630
|
+
stub_request(:get, base_url).to_return(redirect_to(url: relative_url))
|
631
|
+
stub_request(:get, "http://a/g").to_return(status: 200)
|
632
|
+
|
633
|
+
response = client.get(base_url)
|
634
|
+
expect(response).to be_success
|
635
|
+
end
|
636
|
+
|
582
637
|
it "preserves request body for each request" do
|
583
638
|
data = 'some data'
|
584
639
|
stub_request(:put, start_url).with(body: data).to_return(redirect_to(url: bar_url))
|