puppet 6.16.0-x64-mingw32 → 7.0.0-x64-mingw32
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/Gemfile +5 -3
- data/Gemfile.lock +31 -33
- data/README.md +4 -5
- data/Rakefile +4 -12
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +1 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/agent.rb +2 -2
- data/lib/puppet/agent/locker.rb +0 -7
- data/lib/puppet/application.rb +172 -98
- data/lib/puppet/application/agent.rb +22 -6
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/device.rb +100 -104
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/configurer.rb +66 -31
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/defaults.rb +166 -169
- data/lib/puppet/environments.rb +41 -15
- 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 +66 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node.rb +3 -3
- data/lib/puppet/face/node/clean.rb +2 -2
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_bucket/dipper.rb +1 -1
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +3 -32
- 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.rb +1 -2
- 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 -8
- 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/generate/models/type/type.rb +4 -1
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +23 -13
- data/lib/puppet/http/client.rb +170 -115
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +13 -19
- data/lib/puppet/http/resolver.rb +10 -23
- data/lib/puppet/http/resolver/server_list.rb +23 -45
- data/lib/puppet/http/resolver/settings.rb +7 -10
- data/lib/puppet/http/resolver/srv.rb +11 -15
- data/lib/puppet/http/response.rb +49 -48
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +15 -27
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +23 -70
- data/lib/puppet/http/service/file_server.rb +19 -28
- data/lib/puppet/http/service/puppetserver.rb +53 -0
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +16 -24
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +27 -6
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +4 -59
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +3 -7
- data/lib/puppet/indirector/file_metadata/http.rb +25 -5
- data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- 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/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +2 -103
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/indirector/yaml.rb +1 -1
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/formats.rb +2 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/node/environment.rb +12 -5
- data/lib/puppet/node/facts.rb +17 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +93 -14
- 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 -42
- data/lib/puppet/parser/compiler.rb +1 -199
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- 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 -71
- 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 +27 -13
- data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- 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.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -22
- 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/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +28 -42
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +34 -0
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -11
- data/lib/puppet/provider/package/gem.rb +27 -5
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pip2.rb +17 -0
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +6 -4
- 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/smf.rb +191 -73
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- 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 +2 -0
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -0
- data/lib/puppet/resource.rb +3 -90
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +5 -112
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +84 -35
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +37 -1
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +19 -16
- data/lib/puppet/transaction.rb +3 -9
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +10 -8
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +9 -77
- data/lib/puppet/type/file.rb +45 -22
- data/lib/puppet/type/file/checksum.rb +5 -5
- data/lib/puppet/type/file/source.rb +33 -13
- data/lib/puppet/type/filebucket.rb +4 -4
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +5 -13
- 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 +9 -7
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -13
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +14 -2
- data/lib/puppet/util/windows.rb +3 -7
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +5 -15
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +4 -226
- 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 +52 -486
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +713 -1380
- data/man/man5/puppet.conf.5 +84 -98
- 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 +55 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-module.8 +1 -58
- 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 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- 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/puppetserver_gem/gem-list-local-packages +30 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/integration/application/agent_spec.rb +157 -59
- data/spec/integration/application/apply_spec.rb +150 -150
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +78 -29
- data/spec/integration/application/help_spec.rb +44 -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 +76 -4
- data/spec/integration/configurer_spec.rb +14 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +33 -5
- 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 +29 -30
- data/spec/integration/node/environment_spec.rb +1 -1
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/type/file_spec.rb +6 -5
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +2 -2
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -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/security_spec.rb +1 -1
- 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 +9 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/unit/agent_spec.rb +0 -2
- data/spec/unit/application/agent_spec.rb +3 -4
- 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 +74 -8
- data/spec/unit/application/filebucket_spec.rb +41 -39
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +17 -4
- data/spec/unit/application_spec.rb +9 -4
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +14 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +96 -44
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +12 -10
- data/spec/unit/defaults_spec.rb +77 -28
- data/spec/unit/environments_spec.rb +96 -32
- data/spec/unit/face/config_spec.rb +65 -12
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +2 -2
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- 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 +18 -0
- data/spec/unit/file_system_spec.rb +1 -2
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +71 -17
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +34 -15
- 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 -65
- data/spec/unit/http/service/file_server_spec.rb +5 -6
- data/spec/unit/http/service/puppetserver_spec.rb +112 -0
- data/spec/unit/http/service/report_spec.rb +2 -3
- data/spec/unit/http/service_spec.rb +1 -3
- data/spec/unit/http/session_spec.rb +24 -35
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- 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/facter_spec.rb +97 -0
- 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/file_spec.rb +5 -3
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/json_spec.rb +8 -8
- 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/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +3 -267
- data/spec/unit/indirector/rest_spec.rb +98 -752
- 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/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/formats_spec.rb +4 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +61 -73
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +51 -22
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +7 -17
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/provider/exec_spec.rb +4 -3
- data/spec/unit/provider/nameservice_spec.rb +0 -57
- 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/dpkg_spec.rb +22 -55
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- 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/puppet_gem_spec.rb +6 -2
- 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 +402 -166
- 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 -15
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +22 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
- data/spec/unit/provider_spec.rb +0 -12
- 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/type_collection_spec.rb +2 -22
- data/spec/unit/resource_spec.rb +3 -59
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +586 -239
- data/spec/unit/ssl/base_spec.rb +36 -3
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +78 -49
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- 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 -3
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +45 -79
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -1
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +4 -5
- data/spec/unit/type/file_spec.rb +134 -102
- data/spec/unit/type/filebucket_spec.rb +1 -1
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/service_spec.rb +209 -0
- data/spec/unit/type/user_spec.rb +31 -2
- data/spec/unit/type_spec.rb +70 -0
- data/spec/unit/util/backups_spec.rb +0 -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 +0 -29
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +27 -127
- 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/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +3 -21
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- metadata +76 -270
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -182
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
- data/lib/puppet/parser/environment_compiler.rb +0 -199
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -282
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- 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/network/authconfig_spec.rb +0 -256
- 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/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/man_spec.rb +0 -31
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -723
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -505,7 +505,6 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
505
505
|
Puppet[:certificate_revocation] = false
|
506
506
|
|
507
507
|
expect(cert_provider).not_to receive(:load_crls)
|
508
|
-
expect(Puppet::Rest::Routes).not_to receive(:get_crls)
|
509
508
|
|
510
509
|
state.next_state
|
511
510
|
|
@@ -6,7 +6,6 @@ describe Puppet::SSL::Verifier do
|
|
6
6
|
let(:host) { 'example.com' }
|
7
7
|
let(:http) { Net::HTTP.new(host) }
|
8
8
|
let(:verifier) { described_class.new(host, ssl_context) }
|
9
|
-
let(:adapter) { Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new) }
|
10
9
|
|
11
10
|
context '#reusable?' do
|
12
11
|
it 'Verifiers with the same ssl_context are reusable' do
|
@@ -16,26 +15,6 @@ describe Puppet::SSL::Verifier do
|
|
16
15
|
it 'Verifiers with different ssl_contexts are not reusable' do
|
17
16
|
expect(verifier).to_not be_reusable(described_class.new(host, Puppet::SSL::SSLContext.new))
|
18
17
|
end
|
19
|
-
|
20
|
-
it 'Verifier is not reusable with VerifierAdapter' do
|
21
|
-
expect(verifier).to_not be_reusable(adapter)
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'VerifierAdapter is not reusable with Verifier' do
|
25
|
-
expect(adapter).to_not be_reusable(verifier)
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'VerifierAdapters with the same class of Validator are reusable' do
|
29
|
-
expect(
|
30
|
-
adapter
|
31
|
-
).to be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new))
|
32
|
-
end
|
33
|
-
|
34
|
-
it 'VerifierAdapters with different classes of Validators are not reusable' do
|
35
|
-
expect(
|
36
|
-
adapter
|
37
|
-
).to_not be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::NoValidator.new))
|
38
|
-
end
|
39
18
|
end
|
40
19
|
|
41
20
|
context '#setup_connection' do
|
@@ -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
|
@@ -675,7 +675,7 @@ Version:
|
|
675
675
|
report.code_id = "some code id"
|
676
676
|
report.catalog_uuid = "some catalog uuid"
|
677
677
|
report.cached_catalog_status = "not_used"
|
678
|
-
report.
|
678
|
+
report.server_used = "test:000"
|
679
679
|
report.add_resource_status(status)
|
680
680
|
report.transaction_completed = true
|
681
681
|
report.finalize_report
|
@@ -693,7 +693,7 @@ Version:
|
|
693
693
|
report.code_id = "some code id"
|
694
694
|
report.catalog_uuid = "some catalog uuid"
|
695
695
|
report.cached_catalog_status = "not_used"
|
696
|
-
report.
|
696
|
+
report.server_used = "test:000"
|
697
697
|
report.add_resource_status(status)
|
698
698
|
report.transaction_completed = true
|
699
699
|
report.finalize_report
|
@@ -612,14 +612,14 @@ describe Puppet::Transaction::ResourceHarness do
|
|
612
612
|
allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(true)
|
613
613
|
status = @harness.evaluate(resource)
|
614
614
|
sync_event = status.events[0]
|
615
|
-
expect(sync_event.message).to match(/content changed '{
|
615
|
+
expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+' \(corrective\)/)
|
616
616
|
end
|
617
617
|
|
618
618
|
it "contains no modifier when intentional change" do
|
619
619
|
allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(false)
|
620
620
|
status = @harness.evaluate(resource)
|
621
621
|
sync_event = status.events[0]
|
622
|
-
expect(sync_event.message).to match(/content changed '{
|
622
|
+
expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+'$/)
|
623
623
|
end
|
624
624
|
end
|
625
625
|
end
|
@@ -598,115 +598,81 @@ describe Puppet::Transaction do
|
|
598
598
|
transaction.prefetch_if_necessary(resource)
|
599
599
|
end
|
600
600
|
|
601
|
-
it "should not rescue SystemExit
|
602
|
-
Puppet.settings[:future_features] = false
|
601
|
+
it "should not rescue SystemExit" do
|
603
602
|
expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
|
604
603
|
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
|
605
604
|
end
|
606
605
|
|
607
|
-
it "should
|
608
|
-
Puppet.settings[:future_features] = true
|
609
|
-
expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
|
610
|
-
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
|
611
|
-
end
|
612
|
-
|
613
|
-
it "should rescue LoadError without future_features flag" do
|
614
|
-
Puppet.settings[:future_features] = false
|
615
|
-
expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
|
616
|
-
expect { transaction.prefetch_if_necessary(resource) }.not_to raise_error
|
617
|
-
end
|
618
|
-
|
619
|
-
it "should rescue LoadError with future_features flag" do
|
620
|
-
Puppet.settings[:future_features] = true
|
606
|
+
it "should mark resources as failed when prefetching raises LoadError" do
|
621
607
|
expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
|
622
|
-
|
608
|
+
transaction.prefetch_if_necessary(resource)
|
609
|
+
expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
|
623
610
|
end
|
624
611
|
|
625
|
-
describe "and prefetching
|
612
|
+
describe "and prefetching raises Puppet::Error" do
|
626
613
|
before :each do
|
627
614
|
expect(resource.provider.class).to receive(:prefetch).and_raise(Puppet::Error, "message")
|
628
615
|
end
|
629
616
|
|
630
|
-
|
631
|
-
|
632
|
-
Puppet.settings[:future_features] = false
|
633
|
-
end
|
634
|
-
|
635
|
-
it "should not rescue prefetch executions" do
|
636
|
-
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error)
|
637
|
-
end
|
617
|
+
it "should rescue prefetch executions" do
|
618
|
+
transaction.prefetch_if_necessary(resource)
|
638
619
|
|
639
|
-
|
640
|
-
expect(Puppet).to receive(:log_exception).with(anything, "Could not prefetch package provider 'pkgng': message")
|
641
|
-
expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error, "message")
|
642
|
-
end
|
620
|
+
expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
|
643
621
|
end
|
644
622
|
|
645
|
-
|
646
|
-
|
647
|
-
Puppet.settings[:future_features] = true
|
648
|
-
end
|
623
|
+
it "should mark resources as failed", :unless => RUBY_PLATFORM == 'java' do
|
624
|
+
transaction.evaluate
|
649
625
|
|
650
|
-
|
651
|
-
|
626
|
+
expect(transaction.resource_status(resource).failed?).to be_truthy
|
627
|
+
end
|
652
628
|
|
653
|
-
|
654
|
-
|
629
|
+
it "should mark a provider that has failed prefetch" do
|
630
|
+
transaction.prefetch_if_necessary(resource)
|
655
631
|
|
656
|
-
|
657
|
-
|
632
|
+
expect(transaction.prefetch_failed_providers[:package][:pkgng]).to be_truthy
|
633
|
+
end
|
658
634
|
|
659
|
-
|
635
|
+
describe "and new resources are generated" do
|
636
|
+
let(:generator) { Puppet::Type.type(:notify).new :title => "generator" }
|
637
|
+
let(:generated) do
|
638
|
+
%w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
|
660
639
|
end
|
661
640
|
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
641
|
+
before :each do
|
642
|
+
catalog.add_resource generator
|
643
|
+
allow(generator).to receive(:generate).and_return(generated)
|
644
|
+
allow(catalog).to receive(:container_of).and_return(generator)
|
666
645
|
end
|
667
646
|
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
end
|
673
|
-
|
674
|
-
before :each do
|
675
|
-
catalog.add_resource generator
|
676
|
-
allow(generator).to receive(:generate).and_return(generated)
|
677
|
-
allow(catalog).to receive(:container_of).and_return(generator)
|
678
|
-
end
|
679
|
-
|
680
|
-
it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
|
681
|
-
#Only the generator resource should be applied, all the other resources are failed, and skipped.
|
682
|
-
catalog.remove_resource resource2
|
683
|
-
expect(transaction).to receive(:apply).once
|
647
|
+
it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
|
648
|
+
#Only the generator resource should be applied, all the other resources are failed, and skipped.
|
649
|
+
catalog.remove_resource resource2
|
650
|
+
expect(transaction).to receive(:apply).once
|
684
651
|
|
685
|
-
|
686
|
-
|
652
|
+
transaction.evaluate
|
653
|
+
end
|
687
654
|
|
688
|
-
|
689
|
-
|
690
|
-
|
655
|
+
it "should not fail other resources added after the failing resource", :unless => RUBY_PLATFORM == 'java' do
|
656
|
+
new_resource = Puppet::Type.type(:notify).new :name => "baz"
|
657
|
+
catalog.add_resource(new_resource)
|
691
658
|
|
692
|
-
|
659
|
+
transaction.evaluate
|
693
660
|
|
694
|
-
|
695
|
-
|
661
|
+
expect(transaction.resource_status(new_resource).failed?).to be_falsey
|
662
|
+
end
|
696
663
|
|
697
|
-
|
698
|
-
|
699
|
-
|
664
|
+
it "should fail other resources that require the failing resource" do
|
665
|
+
new_resource = Puppet::Type.type(:notify).new(:name => "baz", :require => resource)
|
666
|
+
catalog.add_resource(new_resource)
|
700
667
|
|
701
|
-
|
702
|
-
|
668
|
+
catalog.remove_resource resource2
|
669
|
+
expect(transaction).to receive(:apply).once
|
703
670
|
|
704
|
-
|
671
|
+
transaction.evaluate
|
705
672
|
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
end
|
673
|
+
expect(transaction.resource_status(resource).failed?).to be_truthy
|
674
|
+
expect(transaction.resource_status(new_resource).dependency_failed?).to be_truthy
|
675
|
+
expect(transaction.skip?(new_resource)).to be_truthy
|
710
676
|
end
|
711
677
|
end
|
712
678
|
end
|
@@ -18,8 +18,8 @@ describe checksum do
|
|
18
18
|
@checksum.sum("foobar")
|
19
19
|
end
|
20
20
|
|
21
|
-
it "should use :
|
22
|
-
expect(@checksum).to receive(:
|
21
|
+
it "should use :sha256 to sum when no value is set" do
|
22
|
+
expect(@checksum).to receive(:sha256).with("foobar").and_return("yay")
|
23
23
|
@checksum.sum("foobar")
|
24
24
|
end
|
25
25
|
|
@@ -47,8 +47,8 @@ describe checksum do
|
|
47
47
|
expect(@checksum.sum("foobar")).to eq("{sha384}#{sum}")
|
48
48
|
end
|
49
49
|
|
50
|
-
it "should use :
|
51
|
-
expect(@checksum.default).to eq(:
|
50
|
+
it "should use :sha256 as its default type" do
|
51
|
+
expect(@checksum.default).to eq(:sha256)
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should use its current value when asked to sum a file's content" do
|
@@ -57,8 +57,8 @@ describe checksum do
|
|
57
57
|
@checksum.sum_file(@path)
|
58
58
|
end
|
59
59
|
|
60
|
-
it "should use :
|
61
|
-
expect(@checksum).to receive(:
|
60
|
+
it "should use :sha256 to sum a file when no value is set" do
|
61
|
+
expect(@checksum).to receive(:sha256_file).with(@path).and_return("yay")
|
62
62
|
@checksum.sum_file(@path)
|
63
63
|
end
|
64
64
|
|
@@ -7,7 +7,7 @@ describe Puppet::Type.type(:file).attrclass(:content), :uses_checksums => true d
|
|
7
7
|
let(:filename) { tmpfile('testfile') }
|
8
8
|
let(:environment) { Puppet::Node::Environment.create(:testing, []) }
|
9
9
|
let(:catalog) { Puppet::Resource::Catalog.new(:test, environment) }
|
10
|
-
let(:resource) { Puppet::Type.type(:file).new :path => filename, :catalog => catalog }
|
10
|
+
let(:resource) { Puppet::Type.type(:file).new :path => filename, :catalog => catalog, :backup => 'puppet' }
|
11
11
|
|
12
12
|
before do
|
13
13
|
File.open(filename, 'w') {|f| f.write "initial file content"}
|
@@ -85,7 +85,7 @@ describe Puppet::Type.type(:file).attrclass(:ensure) do
|
|
85
85
|
}.to raise_error(Puppet::Error, /Cannot create #{newpath}; parent directory #{File.dirname(newpath)} does not exist/)
|
86
86
|
end
|
87
87
|
|
88
|
-
it "should accept octal mode as
|
88
|
+
it "should accept octal mode as integer" do
|
89
89
|
resource[:mode] = '0700'
|
90
90
|
expect(resource).to receive(:property_fix)
|
91
91
|
expect(Dir).to receive(:mkdir).with(path, 0700)
|
@@ -11,7 +11,7 @@ describe Puppet::Type.type(:file).attrclass(:mode) do
|
|
11
11
|
it "should reject non-string values" do
|
12
12
|
expect {
|
13
13
|
mode.value = 0755
|
14
|
-
}.to raise_error(Puppet::Error, /The file mode specification must be a string, not '
|
14
|
+
}.to raise_error(Puppet::Error, /The file mode specification must be a string, not 'Integer'/)
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should accept values specified as octal numbers in strings" do
|
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'uri'
|
3
3
|
require 'puppet/network/http_pool'
|
4
|
-
#require 'puppet/network/resolver'
|
5
4
|
|
6
5
|
describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
7
6
|
include PuppetSpec::Files
|
@@ -22,8 +21,8 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
22
21
|
@foobar = make_absolute("/foo/bar baz")
|
23
22
|
@feebooz = make_absolute("/fee/booz baz")
|
24
23
|
|
25
|
-
@foobar_uri =
|
26
|
-
@feebooz_uri =
|
24
|
+
@foobar_uri = Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(@foobar).to_s)
|
25
|
+
@feebooz_uri = Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(@feebooz).to_s)
|
27
26
|
end
|
28
27
|
|
29
28
|
it "should be a subclass of Parameter" do
|
@@ -82,7 +81,7 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
82
81
|
describe "#munge" do
|
83
82
|
it "should prefix file scheme to absolute paths" do
|
84
83
|
resource[:source] = filename
|
85
|
-
expect(resource[:source]).to eq([
|
84
|
+
expect(resource[:source]).to eq([Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(filename).to_s)])
|
86
85
|
end
|
87
86
|
|
88
87
|
%w[file puppet].each do |scheme|
|
@@ -521,7 +520,7 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
521
520
|
end
|
522
521
|
|
523
522
|
it "should return the default source port" do
|
524
|
-
Puppet[:
|
523
|
+
Puppet[:serverport] = 1234
|
525
524
|
expect(resource.parameter(:source).port).to eq(1234)
|
526
525
|
end
|
527
526
|
end
|
data/spec/unit/type/file_spec.rb
CHANGED
@@ -1,8 +1,37 @@
|
|
1
|
+
# coding: utf-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Puppet::Type.type(:file) do
|
4
5
|
include PuppetSpec::Files
|
5
6
|
|
7
|
+
# precomputed checksum values for FILE_CONTENT
|
8
|
+
FILE_CONTENT = 'file content'.freeze
|
9
|
+
CHECKSUM_VALUES = {
|
10
|
+
md5: 'd10b4c3ff123b26dc068d43a8bef2d23',
|
11
|
+
md5lite: 'd10b4c3ff123b26dc068d43a8bef2d23',
|
12
|
+
sha256: 'e0ac3601005dfa1864f5392aabaf7d898b1b5bab854f1acb4491bcd806b76b0c',
|
13
|
+
sha256lite: 'e0ac3601005dfa1864f5392aabaf7d898b1b5bab854f1acb4491bcd806b76b0c',
|
14
|
+
sha1: '87758871f598e1a3b4679953589ae2f57a0bb43c',
|
15
|
+
sha1lite: '87758871f598e1a3b4679953589ae2f57a0bb43c',
|
16
|
+
sha224: '2aefaaa5f4d8f17f82f3e1bb407e190cede9aa1311fa4533ce505531',
|
17
|
+
sha384: '61c7783501ebd90233650357fefbe5a141b7618f907b8f043bbaa92c0f610c785a641ddd479fa81d650cd86e29aa6858',
|
18
|
+
sha512: '2fb1877301854ac92dd518018f97407a0a88bb696bfef0a51e9efbd39917353500009e15bd72c3f0e4bf690115870bfab926565d5ad97269d922dbbb41261221',
|
19
|
+
mtime: 'Jan 26 13:59:49 2016',
|
20
|
+
ctime: 'Jan 26 13:59:49 2016'
|
21
|
+
}.freeze
|
22
|
+
|
23
|
+
INVALID_CHECKSUM_VALUES = {
|
24
|
+
md5: '00000000000000000000000000000000',
|
25
|
+
md5lite: '00000000000000000000000000000000',
|
26
|
+
sha256: '0000000000000000000000000000000000000000000000000000000000000000',
|
27
|
+
sha256lite: '0000000000000000000000000000000000000000000000000000000000000000',
|
28
|
+
sha1: '0000000000000000000000000000000000000000',
|
29
|
+
sha1lite: '0000000000000000000000000000000000000000',
|
30
|
+
sha224: '00000000000000000000000000000000000000000000000000000000',
|
31
|
+
sha384: '000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
|
32
|
+
sha512: '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
|
33
|
+
}.freeze
|
34
|
+
|
6
35
|
let(:path) { tmpfile('file_testing') }
|
7
36
|
let(:file) { described_class.new(:path => path, :catalog => catalog) }
|
8
37
|
let(:provider) { file.provider }
|
@@ -105,6 +134,10 @@ describe Puppet::Type.type(:file) do
|
|
105
134
|
end
|
106
135
|
|
107
136
|
describe "the backup parameter" do
|
137
|
+
it 'should be disabled by default' do
|
138
|
+
expect(file[:backup]).to eq(nil)
|
139
|
+
end
|
140
|
+
|
108
141
|
[false, 'false', :false].each do |value|
|
109
142
|
it "should disable backup if the value is #{value.inspect}" do
|
110
143
|
file[:backup] = value
|
@@ -746,7 +779,7 @@ describe Puppet::Type.type(:file) do
|
|
746
779
|
it "should set the checksum parameter based on the metadata" do
|
747
780
|
allow(file).to receive(:perform_recursion).and_return([@first])
|
748
781
|
allow(@resource).to receive(:[]=)
|
749
|
-
expect(@resource).to receive(:[]=).with(:checksum, "
|
782
|
+
expect(@resource).to receive(:[]=).with(:checksum, "sha256")
|
750
783
|
file.recurse_remote("first" => @resource)
|
751
784
|
end
|
752
785
|
|
@@ -782,7 +815,7 @@ describe Puppet::Type.type(:file) do
|
|
782
815
|
allow(file).to receive(:perform_recursion).and_return([@first])
|
783
816
|
|
784
817
|
allow(file).to receive(:[]=)
|
785
|
-
expect(file). to receive(:[]=).with(:checksum, "
|
818
|
+
expect(file). to receive(:[]=).with(:checksum, "sha256")
|
786
819
|
|
787
820
|
file.recurse_remote("first" => @resource)
|
788
821
|
end
|
@@ -791,7 +824,7 @@ describe Puppet::Type.type(:file) do
|
|
791
824
|
let(:sources) do
|
792
825
|
h = {}
|
793
826
|
%w{/a /b /c /d}.each do |key|
|
794
|
-
h[key] =
|
827
|
+
h[key] = Puppet::Util.uri_unescape(Puppet::Util.path_to_uri(File.expand_path(key)).to_s)
|
795
828
|
end
|
796
829
|
h
|
797
830
|
end
|
@@ -900,7 +933,7 @@ describe Puppet::Type.type(:file) do
|
|
900
933
|
end
|
901
934
|
|
902
935
|
it "should fail if it can't backup the file" do
|
903
|
-
|
936
|
+
file[:backup] = true
|
904
937
|
allow(file).to receive(:stat).and_return(double('stat', :ftype => 'file'))
|
905
938
|
allow(file).to receive(:perform_backup).and_return(false)
|
906
939
|
|
@@ -909,7 +942,7 @@ describe Puppet::Type.type(:file) do
|
|
909
942
|
|
910
943
|
describe "backing up directories" do
|
911
944
|
it "should not backup directories if backup is true and force is false" do
|
912
|
-
|
945
|
+
file[:backup] = true
|
913
946
|
file[:force] = false
|
914
947
|
allow(file).to receive(:stat).and_return(double('stat', :ftype => 'directory'))
|
915
948
|
|
@@ -919,7 +952,7 @@ describe Puppet::Type.type(:file) do
|
|
919
952
|
end
|
920
953
|
|
921
954
|
it "should backup directories if backup is true and force is true" do
|
922
|
-
|
955
|
+
file[:backup] = true
|
923
956
|
file[:force] = true
|
924
957
|
allow(file).to receive(:stat).and_return(double('stat', :ftype => 'directory'))
|
925
958
|
|
@@ -946,7 +979,7 @@ describe Puppet::Type.type(:file) do
|
|
946
979
|
end
|
947
980
|
|
948
981
|
it "should remove a directory if backup is true and force is true" do
|
949
|
-
|
982
|
+
file[:backup] = true
|
950
983
|
file[:force] = true
|
951
984
|
allow(file).to receive(:stat).and_return(double('stat', :ftype => 'directory'))
|
952
985
|
|
@@ -978,6 +1011,7 @@ describe Puppet::Type.type(:file) do
|
|
978
1011
|
end
|
979
1012
|
|
980
1013
|
it "should fail if the file is not a directory, link, file, fifo, socket, or is unknown" do
|
1014
|
+
file[:backup] = 'puppet'
|
981
1015
|
allow(file).to receive(:stat).and_return(double('stat', :ftype => 'blockSpecial'))
|
982
1016
|
|
983
1017
|
expect(file).to receive(:warning).with("Could not back up file of type blockSpecial")
|
@@ -1108,38 +1142,6 @@ describe Puppet::Type.type(:file) do
|
|
1108
1142
|
end
|
1109
1143
|
|
1110
1144
|
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
1145
|
describe "when resource mode is supplied" do
|
1144
1146
|
before do
|
1145
1147
|
allow(file).to receive(:property_fix)
|
@@ -1191,7 +1193,7 @@ describe Puppet::Type.type(:file) do
|
|
1191
1193
|
describe "when resource mode is not supplied" do
|
1192
1194
|
context "and content is supplied" do
|
1193
1195
|
it "should default to 0644 mode" do
|
1194
|
-
file = described_class.new(:path => path, :content =>
|
1196
|
+
file = described_class.new(:path => path, :content => FILE_CONTENT)
|
1195
1197
|
|
1196
1198
|
file.write file.parameter(:content)
|
1197
1199
|
|
@@ -1214,35 +1216,6 @@ describe Puppet::Type.type(:file) do
|
|
1214
1216
|
end
|
1215
1217
|
end
|
1216
1218
|
|
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
1219
|
describe "#write_temporary_file?" do
|
1247
1220
|
it "should be true if the file has specified content" do
|
1248
1221
|
file[:content] = 'some content'
|
@@ -1462,7 +1435,7 @@ describe Puppet::Type.type(:file) do
|
|
1462
1435
|
expect(Puppet::FileServing::Metadata.indirection).to receive(:find).with(source, anything).and_return(metadata)
|
1463
1436
|
|
1464
1437
|
uri = file.parameters[:source].uri
|
1465
|
-
expect(
|
1438
|
+
expect(Puppet::Util.uri_unescape(uri.path)).to eq(filename)
|
1466
1439
|
expect(uri.path.encoding).to eq(Encoding::UTF_8)
|
1467
1440
|
end
|
1468
1441
|
|
@@ -1486,29 +1459,16 @@ describe Puppet::Type.type(:file) do
|
|
1486
1459
|
expect_any_instance_of(Puppet::Indirector::FileMetadata::Rest).to receive(:find).with(request_key(filename[1..-1])).and_return(metadata)
|
1487
1460
|
|
1488
1461
|
uri = file.parameters[:source].uri
|
1489
|
-
expect(
|
1462
|
+
expect(Puppet::Util.uri_unescape(uri.path)).to eq(filename)
|
1490
1463
|
expect(uri.path.encoding).to eq(Encoding::UTF_8)
|
1491
1464
|
end
|
1492
1465
|
end
|
1493
1466
|
|
1494
1467
|
describe "when using source" do
|
1468
|
+
let(:source) { tmpfile('file_source') }
|
1469
|
+
|
1495
1470
|
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
|
-
}
|
1471
|
+
file[:source] = source
|
1512
1472
|
end
|
1513
1473
|
|
1514
1474
|
Puppet::Type::File::ParameterChecksum.value_collection.values.reject {|v| v == :none}.each do |checksum_type|
|
@@ -1527,9 +1487,51 @@ describe Puppet::Type.type(:file) do
|
|
1527
1487
|
end
|
1528
1488
|
|
1529
1489
|
it 'should validate a valid checksum_value' do
|
1530
|
-
file[:checksum_value] =
|
1490
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1531
1491
|
expect { file.validate }.to_not raise_error
|
1532
1492
|
end
|
1493
|
+
|
1494
|
+
it 'fails if the checksum_value parameter and written file do not match' do
|
1495
|
+
skip if checksum_type =~ /^(ctime|mtime)/
|
1496
|
+
|
1497
|
+
File.write(source, FILE_CONTENT)
|
1498
|
+
file[:checksum_value] = INVALID_CHECKSUM_VALUES[checksum_type]
|
1499
|
+
|
1500
|
+
expect {
|
1501
|
+
file.property(:checksum_value).sync
|
1502
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1503
|
+
|
1504
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1505
|
+
end
|
1506
|
+
|
1507
|
+
it 'fails if the checksum_value parameter does not match, but the metadata does' do
|
1508
|
+
skip if checksum_type =~ /^(ctime|mtime)/
|
1509
|
+
|
1510
|
+
File.write(source, FILE_CONTENT)
|
1511
|
+
file[:checksum_value] = INVALID_CHECKSUM_VALUES[checksum_type]
|
1512
|
+
allow(file.parameter(:source).metadata).to receive(:checksum).and_return(file[:checksum_value])
|
1513
|
+
|
1514
|
+
expect {
|
1515
|
+
file.property(:checksum_value).sync
|
1516
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1517
|
+
|
1518
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1519
|
+
end
|
1520
|
+
|
1521
|
+
it 'replaces a file from a source when the checksum matches' do
|
1522
|
+
File.write(source, FILE_CONTENT)
|
1523
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1524
|
+
|
1525
|
+
file.property(:checksum_value).sync
|
1526
|
+
checksum = file.parameter(:checksum).sum_file(file[:path])
|
1527
|
+
|
1528
|
+
if checksum_type =~ /^(ctime|mtime)/
|
1529
|
+
# file on disk ctime/mtime will be later than expected time
|
1530
|
+
expect(checksum).to match(/{#{checksum_type}}/)
|
1531
|
+
else
|
1532
|
+
expect(checksum).to eq("{#{checksum_type}}#{file[:checksum_value]}")
|
1533
|
+
end
|
1534
|
+
end
|
1533
1535
|
end
|
1534
1536
|
end
|
1535
1537
|
|
@@ -1591,19 +1593,8 @@ describe Puppet::Type.type(:file) do
|
|
1591
1593
|
end
|
1592
1594
|
|
1593
1595
|
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
|
-
}
|
1596
|
+
before :each do
|
1597
|
+
file[:content] = FILE_CONTENT
|
1607
1598
|
end
|
1608
1599
|
|
1609
1600
|
(Puppet::Type::File::ParameterChecksum.value_collection.values - SOURCE_ONLY_CHECKSUMS).each do |checksum_type|
|
@@ -1622,9 +1613,43 @@ describe Puppet::Type.type(:file) do
|
|
1622
1613
|
end
|
1623
1614
|
|
1624
1615
|
it 'should validate a valid checksum_value' do
|
1625
|
-
file[:checksum_value] =
|
1616
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1626
1617
|
expect { file.validate }.to_not raise_error
|
1627
1618
|
end
|
1619
|
+
|
1620
|
+
it 'fails if the checksum_value parameter and written file do not match' do
|
1621
|
+
file[:checksum_value] = INVALID_CHECKSUM_VALUES[checksum_type]
|
1622
|
+
|
1623
|
+
expect {
|
1624
|
+
file.property(:content).sync
|
1625
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1626
|
+
|
1627
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1628
|
+
end
|
1629
|
+
|
1630
|
+
it 'fails if the calculated checksum for the content and written file do not match' do
|
1631
|
+
allow(file.parameter(:checksum)).to receive(:sum).and_return(INVALID_CHECKSUM_VALUES[checksum_type])
|
1632
|
+
|
1633
|
+
expect {
|
1634
|
+
file.property(:content).sync
|
1635
|
+
}.to raise_error(Puppet::Error, /File written to disk did not match desired checksum/)
|
1636
|
+
|
1637
|
+
expect(Puppet::FileSystem).to_not be_exist(file[:path])
|
1638
|
+
end
|
1639
|
+
|
1640
|
+
it 'replaces a file from content when the checksum matches' do
|
1641
|
+
file[:checksum_value] = CHECKSUM_VALUES[checksum_type]
|
1642
|
+
|
1643
|
+
file.property(:content).sync
|
1644
|
+
checksum = file.parameter(:checksum).sum_file(file[:path])
|
1645
|
+
|
1646
|
+
if checksum_type =~ /^(ctime|mtime)/
|
1647
|
+
# file on disk ctime/mtime will be later than expected time
|
1648
|
+
expect(checksum).to match(/{#{checksum_type}}/)
|
1649
|
+
else
|
1650
|
+
expect(checksum).to eq("{#{checksum_type}}#{file[:checksum_value]}")
|
1651
|
+
end
|
1652
|
+
end
|
1628
1653
|
end
|
1629
1654
|
end
|
1630
1655
|
|
@@ -1657,6 +1682,13 @@ describe Puppet::Type.type(:file) do
|
|
1657
1682
|
file[:checksum_value] = ''
|
1658
1683
|
expect { file.validate }.to_not raise_error
|
1659
1684
|
end
|
1685
|
+
|
1686
|
+
it 'writes a file' do
|
1687
|
+
file[:ensure] = :file
|
1688
|
+
file.property(:ensure).sync
|
1689
|
+
|
1690
|
+
expect(file.parameter(:checksum).sum_file(file[:path])).to eq('{none}')
|
1691
|
+
end
|
1660
1692
|
end
|
1661
1693
|
|
1662
1694
|
describe "when auditing" do
|