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
@@ -228,13 +228,6 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
228
228
|
expect(File).to_not be_exist(Puppet[:ssl_lockfile])
|
229
229
|
end
|
230
230
|
|
231
|
-
it 'raises an exception when locking fails' do
|
232
|
-
allow(lockfile).to receive(:lock).and_return(false)
|
233
|
-
expect {
|
234
|
-
machine.ensure_ca_certificates
|
235
|
-
}.to raise_error(Puppet::Error, /Another puppet instance is already running; exiting/)
|
236
|
-
end
|
237
|
-
|
238
231
|
it 'acquires an empty lockfile' do
|
239
232
|
Puppet::FileSystem.touch(Puppet[:ssl_lockfile])
|
240
233
|
|
@@ -262,6 +255,57 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
262
255
|
machine = described_class.new(cert_provider: cert_provider, ssl_provider: ssl_provider)
|
263
256
|
machine.ensure_ca_certificates
|
264
257
|
end
|
258
|
+
|
259
|
+
context 'and another puppet process is running' do
|
260
|
+
let(:now) { Time.now }
|
261
|
+
let(:future) { now + (5 * 60)} # 5 mins in the future
|
262
|
+
|
263
|
+
before :each do
|
264
|
+
allow(lockfile).to receive(:lock).and_return(false)
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'raises a puppet exception' do
|
268
|
+
expect {
|
269
|
+
machine.ensure_ca_certificates
|
270
|
+
}.to raise_error(Puppet::Error, /Another puppet instance is already running and the waitforlock setting is set to 0; exiting/)
|
271
|
+
end
|
272
|
+
|
273
|
+
it 'sleeps and retries successfully' do
|
274
|
+
machine = described_class.new(lockfile: lockfile, cert_provider: cert_provider, waitforlock: 1, maxwaitforlock: 10)
|
275
|
+
allow(cert_provider).to receive(:load_cacerts).and_return(cacerts)
|
276
|
+
allow(cert_provider).to receive(:load_crls).and_return(crls)
|
277
|
+
allow(Time).to receive(:now).and_return(now, future)
|
278
|
+
|
279
|
+
expect(Kernel).to receive(:sleep).with(1)
|
280
|
+
expect(Puppet).to receive(:info).with("Another puppet instance is already running; waiting for it to finish")
|
281
|
+
expect(Puppet).to receive(:info).with("Will try again in 1 seconds.")
|
282
|
+
|
283
|
+
allow(lockfile).to receive(:lock).and_return(false, true)
|
284
|
+
|
285
|
+
expect(machine.ensure_ca_certificates).to be_an_instance_of(Puppet::SSL::SSLContext)
|
286
|
+
end
|
287
|
+
|
288
|
+
it 'sleeps and retries unsuccessfully until the deadline is exceeded' do
|
289
|
+
machine = described_class.new(lockfile: lockfile, waitforlock: 1, maxwaitforlock: 10)
|
290
|
+
allow(Time).to receive(:now).and_return(now, future)
|
291
|
+
|
292
|
+
expect(Kernel).to receive(:sleep).with(1)
|
293
|
+
expect(Puppet).to receive(:info).with("Another puppet instance is already running; waiting for it to finish")
|
294
|
+
expect(Puppet).to receive(:info).with("Will try again in 1 seconds.")
|
295
|
+
|
296
|
+
allow(lockfile).to receive(:lock).and_return(false)
|
297
|
+
expect {
|
298
|
+
machine.ensure_ca_certificates
|
299
|
+
}.to raise_error(Puppet::Error, /Another puppet instance is already running and the maxwaitforlock timeout has been exceeded; exiting/)
|
300
|
+
end
|
301
|
+
|
302
|
+
it 'defaults the waitlock deadline to 60 seconds' do
|
303
|
+
allow(Time).to receive(:now).and_return(now)
|
304
|
+
|
305
|
+
machine = described_class.new
|
306
|
+
expect(machine.waitlock_deadline).to eq(now.to_i + 60)
|
307
|
+
end
|
308
|
+
end
|
265
309
|
end
|
266
310
|
|
267
311
|
context 'NeedCACerts' do
|
@@ -882,7 +926,7 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
882
926
|
machine = described_class.new(waitforcert: 15)
|
883
927
|
|
884
928
|
state = Puppet::SSL::StateMachine::Wait.new(machine)
|
885
|
-
expect(Puppet.runtime[
|
929
|
+
expect(Puppet.runtime[:http].pool).to receive(:close).and_call_original
|
886
930
|
expect(Kernel).to receive(:sleep).with(15).ordered
|
887
931
|
|
888
932
|
state.next_state
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "TestHelper" do
|
4
|
+
context "#after_each_test" do
|
5
|
+
it "restores the original environment" do
|
6
|
+
varname = 'test_helper_spec-test_variable'
|
7
|
+
Puppet::Util.set_env(varname, "\u16A0")
|
8
|
+
|
9
|
+
expect(Puppet::Util.get_env(varname)).to eq("\u16A0")
|
10
|
+
|
11
|
+
# Prematurely trigger the after_each_test method
|
12
|
+
Puppet::Test::TestHelper.after_each_test
|
13
|
+
|
14
|
+
expect(Puppet::Util::get_env(varname)).to be_nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -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
|
|
@@ -663,7 +663,7 @@ Version:
|
|
663
663
|
:status => stringifier.convert('success'),
|
664
664
|
}
|
665
665
|
|
666
|
-
event = Puppet::Transaction::Event.new(event_hash)
|
666
|
+
event = Puppet::Transaction::Event.new(**event_hash)
|
667
667
|
|
668
668
|
status = Puppet::Resource::Status.new(Puppet::Type.type(:notify).new(:title => "a resource"))
|
669
669
|
status.changed = true
|
@@ -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
|
@@ -22,8 +22,8 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
22
22
|
@foobar = make_absolute("/foo/bar baz")
|
23
23
|
@feebooz = make_absolute("/fee/booz baz")
|
24
24
|
|
25
|
-
@foobar_uri =
|
26
|
-
@feebooz_uri =
|
25
|
+
@foobar_uri = Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(@foobar).to_s)
|
26
|
+
@feebooz_uri = Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(@feebooz).to_s)
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should be a subclass of Parameter" do
|
@@ -82,7 +82,7 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
82
82
|
describe "#munge" do
|
83
83
|
it "should prefix file scheme to absolute paths" do
|
84
84
|
resource[:source] = filename
|
85
|
-
expect(resource[:source]).to eq([
|
85
|
+
expect(resource[:source]).to eq([Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(filename).to_s)])
|
86
86
|
end
|
87
87
|
|
88
88
|
%w[file puppet].each do |scheme|
|
@@ -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
@@ -3,6 +3,34 @@ require 'spec_helper'
|
|
3
3
|
describe Puppet::Type.type(:file) do
|
4
4
|
include PuppetSpec::Files
|
5
5
|
|
6
|
+
# precomputed checksum values for FILE_CONTENT
|
7
|
+
FILE_CONTENT = 'file content'.freeze
|
8
|
+
CHECKSUM_VALUES = {
|
9
|
+
md5: 'd10b4c3ff123b26dc068d43a8bef2d23',
|
10
|
+
md5lite: 'd10b4c3ff123b26dc068d43a8bef2d23',
|
11
|
+
sha256: 'e0ac3601005dfa1864f5392aabaf7d898b1b5bab854f1acb4491bcd806b76b0c',
|
12
|
+
sha256lite: 'e0ac3601005dfa1864f5392aabaf7d898b1b5bab854f1acb4491bcd806b76b0c',
|
13
|
+
sha1: '87758871f598e1a3b4679953589ae2f57a0bb43c',
|
14
|
+
sha1lite: '87758871f598e1a3b4679953589ae2f57a0bb43c',
|
15
|
+
sha224: '2aefaaa5f4d8f17f82f3e1bb407e190cede9aa1311fa4533ce505531',
|
16
|
+
sha384: '61c7783501ebd90233650357fefbe5a141b7618f907b8f043bbaa92c0f610c785a641ddd479fa81d650cd86e29aa6858',
|
17
|
+
sha512: '2fb1877301854ac92dd518018f97407a0a88bb696bfef0a51e9efbd39917353500009e15bd72c3f0e4bf690115870bfab926565d5ad97269d922dbbb41261221',
|
18
|
+
mtime: 'Jan 26 13:59:49 2016',
|
19
|
+
ctime: 'Jan 26 13:59:49 2016'
|
20
|
+
}.freeze
|
21
|
+
|
22
|
+
INVALID_CHECKSUM_VALUES = {
|
23
|
+
md5: '00000000000000000000000000000000',
|
24
|
+
md5lite: '00000000000000000000000000000000',
|
25
|
+
sha256: '0000000000000000000000000000000000000000000000000000000000000000',
|
26
|
+
sha256lite: '0000000000000000000000000000000000000000000000000000000000000000',
|
27
|
+
sha1: '0000000000000000000000000000000000000000',
|
28
|
+
sha1lite: '0000000000000000000000000000000000000000',
|
29
|
+
sha224: '00000000000000000000000000000000000000000000000000000000',
|
30
|
+
sha384: '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
|
31
|
+
sha512: '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
|
32
|
+
}.freeze
|
33
|
+
|
6
34
|
let(:path) { tmpfile('file_testing') }
|
7
35
|
let(:file) { described_class.new(:path => path, :catalog => catalog) }
|
8
36
|
let(:provider) { file.provider }
|
@@ -791,7 +819,7 @@ describe Puppet::Type.type(:file) do
|
|
791
819
|
let(:sources) do
|
792
820
|
h = {}
|
793
821
|
%w{/a /b /c /d}.each do |key|
|
794
|
-
h[key] =
|
822
|
+
h[key] = Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(File.expand_path(key)).to_s)
|
795
823
|
end
|
796
824
|
h
|
797
825
|
end
|
@@ -1108,38 +1136,6 @@ describe Puppet::Type.type(:file) do
|
|
1108
1136
|
end
|
1109
1137
|
|
1110
1138
|
describe "#write" do
|
1111
|
-
describe "when validating the checksum" do
|
1112
|
-
before { allow(file).to receive(:validate_checksum?).and_return(true) }
|
1113
|
-
|
1114
|
-
it "should fail if the checksum parameter and content checksums do not match" do
|
1115
|
-
checksum = double('checksum_parameter', :sum => 'checksum_b', :sum_file => 'checksum_b')
|
1116
|
-
allow(file).to receive(:parameter).with(:checksum).and_return(checksum)
|
1117
|
-
allow(file).to receive(:parameter).with(:source).and_return(nil)
|
1118
|
-
|
1119
|
-
|
1120
|
-
property = double('content_property', :actual_content => "something", :length => "something".length, :write => 'checksum_a')
|
1121
|
-
allow(file).to receive(:property).with(:content).and_return(property)
|
1122
|
-
|
1123
|
-
expect { file.write property }.to raise_error(Puppet::Error) end
|
1124
|
-
end
|
1125
|
-
|
1126
|
-
describe "when not validating the checksum" do
|
1127
|
-
before do
|
1128
|
-
allow(file).to receive(:validate_checksum?).and_return(false)
|
1129
|
-
end
|
1130
|
-
|
1131
|
-
it "should not fail if the checksum property and content checksums do not match" do
|
1132
|
-
checksum = double('checksum_parameter', :sum => 'checksum_b')
|
1133
|
-
allow(file).to receive(:parameter).with(:checksum).and_return(checksum)
|
1134
|
-
allow(file).to receive(:parameter).with(:source).and_return(nil)
|
1135
|
-
|
1136
|
-
property = double('content_property', :actual_content => "something", :length => "something".length, :write => 'checksum_a')
|
1137
|
-
allow(file).to receive(:property).with(:content).and_return(property)
|
1138
|
-
|
1139
|
-
expect { file.write property }.to_not raise_error
|
1140
|
-
end
|
1141
|
-
end
|
1142
|
-
|
1143
1139
|
describe "when resource mode is supplied" do
|
1144
1140
|
before do
|
1145
1141
|
allow(file).to receive(:property_fix)
|
@@ -1191,7 +1187,7 @@ describe Puppet::Type.type(:file) do
|
|
1191
1187
|
describe "when resource mode is not supplied" do
|
1192
1188
|
context "and content is supplied" do
|
1193
1189
|
it "should default to 0644 mode" do
|
1194
|
-
file = described_class.new(:path => path, :content =>
|
1190
|
+
file = described_class.new(:path => path, :content => FILE_CONTENT)
|
1195
1191
|
|
1196
1192
|
file.write file.parameter(:content)
|
1197
1193
|
|
@@ -1214,35 +1210,6 @@ describe Puppet::Type.type(:file) do
|
|
1214
1210
|
end
|
1215
1211
|
end
|
1216
1212
|
|
1217
|
-
describe "#fail_if_checksum_is_wrong" do
|
1218
|
-
it "should fail if the checksum of the file doesn't match the expected one" do
|
1219
|
-
expect do
|
1220
|
-
allow(file.parameter(:checksum)).to receive(:sum_file).and_return('wrong!!')
|
1221
|
-
file.instance_eval do
|
1222
|
-
fail_if_checksum_is_wrong(self[:path], 'anything!')
|
1223
|
-
end
|
1224
|
-
end.to raise_error(Puppet::Error, /File written to disk did not match checksum/)
|
1225
|
-
end
|
1226
|
-
|
1227
|
-
it "should not fail if the checksum is correct" do
|
1228
|
-
expect do
|
1229
|
-
allow(file.parameter(:checksum)).to receive(:sum_file).and_return('anything!')
|
1230
|
-
file.instance_eval do
|
1231
|
-
fail_if_checksum_is_wrong(self[:path], 'anything!')
|
1232
|
-
end
|
1233
|
-
end.not_to raise_error
|
1234
|
-
end
|
1235
|
-
|
1236
|
-
it "should not fail if the checksum is absent" do
|
1237
|
-
expect do
|
1238
|
-
allow(file.parameter(:checksum)).to receive(:sum_file).and_return(nil)
|
1239
|
-
file.instance_eval do
|
1240
|
-
fail_if_checksum_is_wrong(self[:path], 'anything!')
|
1241
|
-
end
|
1242
|
-
end.not_to raise_error
|
1243
|
-
end
|
1244
|
-
end
|
1245
|
-
|
1246
1213
|
describe "#write_temporary_file?" do
|
1247
1214
|
it "should be true if the file has specified content" do
|
1248
1215
|
file[:content] = 'some content'
|
@@ -1462,7 +1429,7 @@ describe Puppet::Type.type(:file) do
|
|
1462
1429
|
expect(Puppet::FileServing::Metadata.indirection).to receive(:find).with(source, anything).and_return(metadata)
|
1463
1430
|
|
1464
1431
|
uri = file.parameters[:source].uri
|
1465
|
-
expect(
|
1432
|
+
expect(Puppet::Util.uri_unescape(uri.path)).to eq(filename)
|
1466
1433
|
expect(uri.path.encoding).to eq(Encoding::UTF_8)
|
1467
1434
|
end
|
1468
1435
|
|
@@ -1486,29 +1453,16 @@ describe Puppet::Type.type(:file) do
|
|
1486
1453
|
expect_any_instance_of(Puppet::Indirector::FileMetadata::Rest).to receive(:find).with(request_key(filename[1..-1])).and_return(metadata)
|
1487
1454
|
|
1488
1455
|
uri = file.parameters[:source].uri
|
1489
|
-
expect(
|
1456
|
+
expect(Puppet::Util.uri_unescape(uri.path)).to eq(filename)
|
1490
1457
|
expect(uri.path.encoding).to eq(Encoding::UTF_8)
|
1491
1458
|
end
|
1492
1459
|
end
|
1493
1460
|
|
1494
1461
|
describe "when using source" do
|
1462
|
+
let(:source) { tmpfile('file_source') }
|
1463
|
+
|
1495
1464
|
before do
|
1496
|
-
file[:source] =
|
1497
|
-
# Contents of an empty file generate the below hash values
|
1498
|
-
# in case you need to add support for additional algorithms in future
|
1499
|
-
@checksum_values = {
|
1500
|
-
:md5 => 'd41d8cd98f00b204e9800998ecf8427e',
|
1501
|
-
:md5lite => 'd41d8cd98f00b204e9800998ecf8427e',
|
1502
|
-
:sha256 => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
1503
|
-
:sha256lite => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
1504
|
-
:sha1 => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
|
1505
|
-
:sha1lite => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
|
1506
|
-
:sha224 => 'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f',
|
1507
|
-
:sha384 => '38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b',
|
1508
|
-
:sha512 => 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e',
|
1509
|
-
:mtime => 'Jan 26 13:59:49 2016',
|
1510
|
-
:ctime => 'Jan 26 13:59:49 2016'
|
1511
|
-
}
|
1465
|
+
file[:source] = source
|
1512
1466
|
end
|
1513
1467
|
|
1514
1468
|
Puppet::Type::File::ParameterChecksum.value_collection.values.reject {|v| v == :none}.each do |checksum_type|
|
@@ -1527,9 +1481,51 @@ describe Puppet::Type.type(:file) do
|
|
1527
1481
|
end
|
1528
1482
|
|
1529
1483
|
it 'should validate a valid checksum_value' do
|
1530
|
-
file[:checksum_value] =
|
1484
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1531
1485
|
expect { file.validate }.to_not raise_error
|
1532
1486
|
end
|
1487
|
+
|
1488
|
+
it 'fails if the checksum_value parameter and written file do not match' do
|
1489
|
+
skip if checksum_type =~ /^(ctime|mtime)/
|
1490
|
+
|
1491
|
+
File.write(source, FILE_CONTENT)
|
1492
|
+
file[:checksum_value] = INVALID_CHECKSUM_VALUES[checksum_type]
|
1493
|
+
|
1494
|
+
expect {
|
1495
|
+
file.property(:checksum_value).sync
|
1496
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1497
|
+
|
1498
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1499
|
+
end
|
1500
|
+
|
1501
|
+
it 'fails if the checksum_value parameter does not match, but the metadata does' do
|
1502
|
+
skip if checksum_type =~ /^(ctime|mtime)/
|
1503
|
+
|
1504
|
+
File.write(source, FILE_CONTENT)
|
1505
|
+
file[:checksum_value] = INVALID_CHECKSUM_VALUES[checksum_type]
|
1506
|
+
allow(file.parameter(:source).metadata).to receive(:checksum).and_return(file[:checksum_value])
|
1507
|
+
|
1508
|
+
expect {
|
1509
|
+
file.property(:checksum_value).sync
|
1510
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1511
|
+
|
1512
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1513
|
+
end
|
1514
|
+
|
1515
|
+
it 'replaces a file from a source when the checksum matches' do
|
1516
|
+
File.write(source, FILE_CONTENT)
|
1517
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1518
|
+
|
1519
|
+
file.property(:checksum_value).sync
|
1520
|
+
checksum = file.parameter(:checksum).sum_file(file[:path])
|
1521
|
+
|
1522
|
+
if checksum_type =~ /^(ctime|mtime)/
|
1523
|
+
# file on disk ctime/mtime will be later than expected time
|
1524
|
+
expect(checksum).to match(/{#{checksum_type}}/)
|
1525
|
+
else
|
1526
|
+
expect(checksum).to eq("{#{checksum_type}}#{file[:checksum_value]}")
|
1527
|
+
end
|
1528
|
+
end
|
1533
1529
|
end
|
1534
1530
|
end
|
1535
1531
|
|
@@ -1591,19 +1587,8 @@ describe Puppet::Type.type(:file) do
|
|
1591
1587
|
end
|
1592
1588
|
|
1593
1589
|
describe "when using content" do
|
1594
|
-
before do
|
1595
|
-
file[:content] =
|
1596
|
-
@checksum_values = {
|
1597
|
-
:md5 => 'd41d8cd98f00b204e9800998ecf8427e',
|
1598
|
-
:md5lite => 'd41d8cd98f00b204e9800998ecf8427e',
|
1599
|
-
:sha256 => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
1600
|
-
:sha256lite => 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
|
1601
|
-
:sha1 => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
|
1602
|
-
:sha1lite => 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
|
1603
|
-
:sha224 => 'd14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f',
|
1604
|
-
:sha384 => '38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b',
|
1605
|
-
:sha512 => 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e',
|
1606
|
-
}
|
1590
|
+
before :each do
|
1591
|
+
file[:content] = FILE_CONTENT
|
1607
1592
|
end
|
1608
1593
|
|
1609
1594
|
(Puppet::Type::File::ParameterChecksum.value_collection.values - SOURCE_ONLY_CHECKSUMS).each do |checksum_type|
|
@@ -1622,9 +1607,43 @@ describe Puppet::Type.type(:file) do
|
|
1622
1607
|
end
|
1623
1608
|
|
1624
1609
|
it 'should validate a valid checksum_value' do
|
1625
|
-
file[:checksum_value] =
|
1610
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1626
1611
|
expect { file.validate }.to_not raise_error
|
1627
1612
|
end
|
1613
|
+
|
1614
|
+
it 'fails if the checksum_value parameter and written file do not match' do
|
1615
|
+
file[:checksum_value] = INVALID_CHECKSUM_VALUES[checksum_type]
|
1616
|
+
|
1617
|
+
expect {
|
1618
|
+
file.property(:content).sync
|
1619
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1620
|
+
|
1621
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1622
|
+
end
|
1623
|
+
|
1624
|
+
it 'fails if the calculated checksum for the content and written file do not match' do
|
1625
|
+
allow(file.parameter(:checksum)).to receive(:sum).and_return(INVALID_CHECKSUM_VALUES[checksum_type])
|
1626
|
+
|
1627
|
+
expect {
|
1628
|
+
file.property(:content).sync
|
1629
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1630
|
+
|
1631
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1632
|
+
end
|
1633
|
+
|
1634
|
+
it 'replaces a file from content when the checksum matches' do
|
1635
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1636
|
+
|
1637
|
+
file.property(:content).sync
|
1638
|
+
checksum = file.parameter(:checksum).sum_file(file[:path])
|
1639
|
+
|
1640
|
+
if checksum_type =~ /^(ctime|mtime)/
|
1641
|
+
# file on disk ctime/mtime will be later than expected time
|
1642
|
+
expect(checksum).to match(/{#{checksum_type}}/)
|
1643
|
+
else
|
1644
|
+
expect(checksum).to eq("{#{checksum_type}}#{file[:checksum_value]}")
|
1645
|
+
end
|
1646
|
+
end
|
1628
1647
|
end
|
1629
1648
|
end
|
1630
1649
|
|
@@ -1657,6 +1676,13 @@ describe Puppet::Type.type(:file) do
|
|
1657
1676
|
file[:checksum_value] = ''
|
1658
1677
|
expect { file.validate }.to_not raise_error
|
1659
1678
|
end
|
1679
|
+
|
1680
|
+
it 'writes a file' do
|
1681
|
+
file[:ensure] = :file
|
1682
|
+
file.property(:ensure).sync
|
1683
|
+
|
1684
|
+
expect(file.parameter(:checksum).sum_file(file[:path])).to eq('{none}')
|
1685
|
+
end
|
1660
1686
|
end
|
1661
1687
|
|
1662
1688
|
describe "when auditing" do
|