puppet 6.13.0-x86-mingw32 → 6.18.0-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +36 -32
- data/README.md +17 -24
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +58 -57
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- 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 +92 -12
- data/lib/puppet/environments.rb +4 -5
- 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/plugin.rb +2 -2
- data/lib/puppet/feature/base.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 +17 -13
- 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/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/reduce.rb +2 -4
- 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 +3 -0
- data/lib/puppet/http/client.rb +263 -73
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +97 -12
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +249 -16
- data/lib/puppet/http/service/file_server.rb +141 -20
- data/lib/puppet/http/service/report.rb +47 -17
- data/lib/puppet/http/session.rb +96 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- 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/base_pool.rb +7 -2
- 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/pool.rb +8 -5
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +22 -5
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +30 -31
- 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 +43 -33
- 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 +18 -9
- 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/evaluator_impl.rb +5 -5
- 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 +24 -15
- 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/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/group/groupadd.rb +9 -4
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +98 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +61 -14
- data/lib/puppet/provider/package/gem.rb +45 -9
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +11 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +100 -20
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +22 -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 +15 -9
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -1
- data/lib/puppet/settings.rb +3 -1
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- 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 +81 -35
- 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 +21 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +3 -3
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +75 -64
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +41 -3
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -29
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +13 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +13 -7
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/adsi.rb +2 -2
- 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/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +5 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +641 -511
- data/man/man5/puppet.conf.5 +75 -10
- data/man/man8/puppet-agent.8 +7 -7
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +17 -2
- 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 +1 -1
- 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 +2 -2
- data/man/man8/puppet-status.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/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -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-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
- data/spec/integration/application/agent_spec.rb +475 -0
- data/spec/integration/application/apply_spec.rb +279 -150
- 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 +239 -0
- 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 +123 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- 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 +6 -1
- 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/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +127 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +39 -10
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +64 -46
- 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/defaults_spec.rb +24 -1
- data/spec/unit/environments_spec.rb +8 -0
- data/spec/unit/face/config_spec.rb +3 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- 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 +10 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +321 -36
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -3
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -12
- data/spec/unit/http/service/compiler_spec.rb +332 -28
- data/spec/unit/http/service/file_server_spec.rb +100 -12
- data/spec/unit/http/service/report_spec.rb +19 -9
- data/spec/unit/http/service_spec.rb +94 -6
- data/spec/unit/http/session_spec.rb +159 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- 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/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http/pool_spec.rb +59 -13
- 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 +33 -0
- 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/group/groupadd_spec.rb +22 -8
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +107 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +243 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/init_spec.rb +42 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +93 -18
- 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 +85 -3
- data/spec/unit/puppet_pal_2pec.rb +11 -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 +70 -52
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- 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 +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- 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/at_fork_spec.rb +3 -2
- 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/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +102 -54
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- 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/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +84 -52
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/faces/plugin_spec.rb +0 -61
- 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 -64
- 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
@@ -197,7 +197,7 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
197
197
|
end
|
198
198
|
|
199
199
|
context 'when locking' do
|
200
|
-
let(:lockfile) {
|
200
|
+
let(:lockfile) { Puppet::Util::Pidlock.new(Puppet[:ssl_lockfile]) }
|
201
201
|
let(:machine) { described_class.new(cert_provider: cert_provider, ssl_provider: ssl_provider, lockfile: lockfile) }
|
202
202
|
|
203
203
|
# lockfile is deleted before `ensure_ca_certificates` returns, so
|
@@ -210,7 +210,7 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
210
210
|
end
|
211
211
|
|
212
212
|
it 'locks the file prior to running the state machine and unlocks when done' do
|
213
|
-
expect(lockfile).to receive(:lock).
|
213
|
+
expect(lockfile).to receive(:lock).and_call_original.ordered
|
214
214
|
expect(cert_provider).to receive(:load_cacerts).and_return(cacerts).ordered
|
215
215
|
expect(cert_provider).to receive(:load_crls).and_return(crls).ordered
|
216
216
|
expect(lockfile).to receive(:unlock).ordered
|
@@ -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
|
@@ -837,7 +881,7 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
837
881
|
}.to output(/Exiting now because the waitforcert setting is set to 0./).to_stdout
|
838
882
|
end
|
839
883
|
|
840
|
-
it 'sleeps and transitions to
|
884
|
+
it 'sleeps and transitions to NeedLock' do
|
841
885
|
machine = described_class.new(waitforcert: 15)
|
842
886
|
|
843
887
|
state = Puppet::SSL::StateMachine::Wait.new(machine)
|
@@ -845,10 +889,10 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
845
889
|
|
846
890
|
expect(Puppet).to receive(:info).with(/Will try again in 15 seconds./)
|
847
891
|
|
848
|
-
expect(state.next_state).to be_an_instance_of(Puppet::SSL::StateMachine::
|
892
|
+
expect(state.next_state).to be_an_instance_of(Puppet::SSL::StateMachine::NeedLock)
|
849
893
|
end
|
850
894
|
|
851
|
-
it 'sleeps and transitions to
|
895
|
+
it 'sleeps and transitions to NeedLock when maxwaitforcert is set' do
|
852
896
|
machine = described_class.new(waitforcert: 15, maxwaitforcert: 30)
|
853
897
|
|
854
898
|
state = Puppet::SSL::StateMachine::Wait.new(machine)
|
@@ -856,7 +900,7 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
856
900
|
|
857
901
|
expect(Puppet).to receive(:info).with(/Will try again in 15 seconds./)
|
858
902
|
|
859
|
-
expect(state.next_state).to be_an_instance_of(Puppet::SSL::StateMachine::
|
903
|
+
expect(state.next_state).to be_an_instance_of(Puppet::SSL::StateMachine::NeedLock)
|
860
904
|
end
|
861
905
|
|
862
906
|
it 'waits indefinitely by default' do
|
@@ -877,6 +921,48 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
|
|
877
921
|
}.to exit_with(1)
|
878
922
|
}.to output(/Couldn't fetch certificate from CA server; you might still need to sign this agent's certificate \(.*\). Exiting now because the maxwaitforcert timeout has been exceeded./).to_stdout
|
879
923
|
end
|
924
|
+
|
925
|
+
it 'closes the pool before sleeping' do
|
926
|
+
machine = described_class.new(waitforcert: 15)
|
927
|
+
|
928
|
+
state = Puppet::SSL::StateMachine::Wait.new(machine)
|
929
|
+
expect(Puppet.runtime[:http].pool).to receive(:close).and_call_original
|
930
|
+
expect(Kernel).to receive(:sleep).with(15).ordered
|
931
|
+
|
932
|
+
state.next_state
|
933
|
+
end
|
934
|
+
|
935
|
+
it 'releases the lock while sleeping' do
|
936
|
+
lockfile = Puppet::Util::Pidlock.new(Puppet[:ssl_lockfile])
|
937
|
+
machine = described_class.new(lockfile: lockfile)
|
938
|
+
state = Puppet::SSL::StateMachine::Wait.new(machine)
|
939
|
+
|
940
|
+
# pidlock should be unlocked while sleeping
|
941
|
+
allow(Kernel).to receive(:sleep) do
|
942
|
+
expect(lockfile).to_not be_locked
|
943
|
+
end
|
944
|
+
|
945
|
+
# lock before running the state
|
946
|
+
lockfile.lock
|
947
|
+
state.next_state
|
948
|
+
end
|
949
|
+
end
|
950
|
+
|
951
|
+
context 'in state NeedLock' do
|
952
|
+
let(:ssl_context) { Puppet::SSL::SSLContext.new(cacerts: []) }
|
953
|
+
let(:lockfile) { Puppet::Util::Pidlock.new(Puppet[:ssl_lockfile]) }
|
954
|
+
let(:machine) { described_class.new(lockfile: lockfile) }
|
955
|
+
let(:state) { Puppet::SSL::StateMachine::NeedLock.new(machine) }
|
956
|
+
|
957
|
+
it 'acquires the lock and transitions to NeedCACerts' do
|
958
|
+
expect(state.next_state).to be_an_instance_of(Puppet::SSL::StateMachine::NeedCACerts)
|
959
|
+
expect(lockfile).to be_locked
|
960
|
+
end
|
961
|
+
|
962
|
+
it 'transitions to LockFailure if it fails to acquire the lock' do
|
963
|
+
expect(lockfile).to receive(:lock).and_return(false)
|
964
|
+
expect(state.next_state).to be_an_instance_of(Puppet::SSL::StateMachine::LockFailure)
|
965
|
+
end
|
880
966
|
end
|
881
967
|
end
|
882
968
|
end
|
@@ -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
|
|
@@ -39,6 +39,10 @@ describe Puppet::Transaction::Report do
|
|
39
39
|
expect(Puppet::Transaction::Report.new('cv', 'env', 'tid', 'some job id').job_id).to eq('some job id')
|
40
40
|
end
|
41
41
|
|
42
|
+
it "should take a 'start_time' as an argument" do
|
43
|
+
expect(Puppet::Transaction::Report.new('cv', 'env', 'tid', 'some job id', 'my start time').time).to eq('my start time')
|
44
|
+
end
|
45
|
+
|
42
46
|
it "should be able to set configuration_version" do
|
43
47
|
report = Puppet::Transaction::Report.new
|
44
48
|
report.configuration_version = "some version"
|
@@ -659,7 +663,7 @@ Version:
|
|
659
663
|
:status => stringifier.convert('success'),
|
660
664
|
}
|
661
665
|
|
662
|
-
event = Puppet::Transaction::Event.new(event_hash)
|
666
|
+
event = Puppet::Transaction::Event.new(**event_hash)
|
663
667
|
|
664
668
|
status = Puppet::Resource::Status.new(Puppet::Type.type(:notify).new(:title => "a resource"))
|
665
669
|
status.changed = true
|
@@ -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|
|
@@ -533,20 +533,54 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
533
533
|
describe "when writing" do
|
534
534
|
describe "as puppet apply" do
|
535
535
|
let(:source_content) { "source file content\r\n"*10 }
|
536
|
+
let(:modulepath) { File.join(Puppet[:environmentpath], 'testing', 'modules') }
|
537
|
+
let(:env) { Puppet::Node::Environment.create(:testing, [modulepath]) }
|
538
|
+
let(:catalog) { Puppet::Resource::Catalog.new(:test, env) }
|
539
|
+
|
536
540
|
before do
|
537
541
|
Puppet[:default_file_terminus] = "file_server"
|
538
|
-
resource[:source] = file_containing('apply', source_content)
|
539
542
|
end
|
540
543
|
|
541
544
|
it "should copy content from the source to the file" do
|
545
|
+
resource = Puppet::Type.type(:file).new(path: filename, catalog: catalog, source: file_containing('apply', source_content))
|
542
546
|
source = resource.parameter(:source)
|
543
547
|
resource.write(source)
|
544
548
|
|
545
549
|
expect(Puppet::FileSystem.binread(filename)).to eq(source_content)
|
546
550
|
end
|
547
551
|
|
552
|
+
it 'should use the in-process fileserver if source starts with puppet:///' do
|
553
|
+
path = File.join(modulepath, 'mymodule', 'files', 'path')
|
554
|
+
Puppet::FileSystem.dir_mkpath(path)
|
555
|
+
File.open(path, 'wb') { |f| f.write(source_content) }
|
556
|
+
resource = Puppet::Type.type(:file).new(path: filename, catalog: catalog, source: 'puppet:///modules/mymodule/path')
|
557
|
+
|
558
|
+
source = resource.parameter(:source)
|
559
|
+
resource.write(source)
|
560
|
+
|
561
|
+
expect(Puppet::FileSystem.binread(filename)).to eq(source_content)
|
562
|
+
end
|
563
|
+
|
564
|
+
it 'follows symlinks when retrieving content from the in-process fileserver' do
|
565
|
+
# create a 'link' that points to 'target' in the 'mymodule' module
|
566
|
+
link = File.join(modulepath, 'mymodule', 'files', 'link')
|
567
|
+
target = File.join(modulepath, 'mymodule', 'files', 'target')
|
568
|
+
Puppet::FileSystem.dir_mkpath(target)
|
569
|
+
File.open(target, 'wb') { |f| f.write(source_content) }
|
570
|
+
Puppet::FileSystem.symlink(target, link)
|
571
|
+
resource = Puppet::Type.type(:file).new(path: filename, catalog: catalog, source: 'puppet:///modules/mymodule/link')
|
572
|
+
|
573
|
+
source = resource.parameter(:source)
|
574
|
+
resource.write(source)
|
575
|
+
|
576
|
+
# 'filename' should be a file containing the contents of the followed link
|
577
|
+
expect(Puppet::FileSystem.binread(filename)).to eq(source_content)
|
578
|
+
end
|
579
|
+
|
548
580
|
with_digest_algorithms do
|
549
581
|
it "should return the checksum computed" do
|
582
|
+
resource = Puppet::Type.type(:file).new(path: filename, catalog: catalog, source: file_containing('apply', source_content))
|
583
|
+
|
550
584
|
File.open(filename, 'wb') do |file|
|
551
585
|
source = resource.parameter(:source)
|
552
586
|
resource[:checksum] = digest_algorithm
|
@@ -583,53 +617,73 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
583
617
|
|
584
618
|
describe 'from remote source' do
|
585
619
|
let(:source_content) { "source file content\n"*10 }
|
586
|
-
let(:source) {
|
587
|
-
|
588
|
-
|
620
|
+
let(:source) {
|
621
|
+
attr = resource.newattr(:source)
|
622
|
+
attr.metadata = metadata
|
623
|
+
attr
|
624
|
+
}
|
625
|
+
let(:metadata) {
|
626
|
+
Puppet::FileServing::Metadata.new(
|
627
|
+
'/modules/:module/foo',
|
628
|
+
{
|
629
|
+
'type' => 'file',
|
630
|
+
'source' => 'puppet:///modules/:module/foo'
|
631
|
+
}
|
632
|
+
)
|
633
|
+
}
|
589
634
|
|
590
635
|
before do
|
591
636
|
resource[:backup] = false
|
592
|
-
|
593
|
-
expectation = receive(:read_body)
|
594
|
-
source_content.lines.each { |line| expectation = expectation.and_yield(line) }
|
595
|
-
allow(response).to expectation
|
596
|
-
allow(conn).to receive(:request_get).and_yield(response)
|
597
637
|
end
|
598
638
|
|
599
639
|
it 'should use an explicit fileserver if source starts with puppet://' do
|
600
|
-
|
601
|
-
|
602
|
-
|
640
|
+
metadata.source = "puppet://somehostname:8140/modules/:module/foo"
|
641
|
+
|
642
|
+
stub_request(:get, %r{https://somehostname:8140/puppet/v3/file_content/modules/:module/foo})
|
643
|
+
.to_return(status: 200, body: metadata.to_json, headers: { 'Content-Type' => 'application/json' })
|
603
644
|
|
604
645
|
resource.write(source)
|
605
646
|
end
|
606
647
|
|
607
648
|
it 'should use the default fileserver if source starts with puppet:///' do
|
608
|
-
|
609
|
-
|
610
|
-
expect(Puppet::Network::HttpPool).to receive(:connection).with(Puppet[:server], 8140, anything).and_return(conn)
|
649
|
+
stub_request(:get, %r{https://#{Puppet[:server]}:8140/puppet/v3/file_content/modules/:module/foo})
|
650
|
+
.to_return(status: 200, body: metadata.to_json, headers: { 'Content-Type' => 'application/json' })
|
611
651
|
|
612
652
|
resource.write(source)
|
613
653
|
end
|
614
654
|
|
615
655
|
it 'should percent encode reserved characters' do
|
616
|
-
|
617
|
-
allow(Puppet::Network::HttpPool).to receive(:connection).and_return(conn)
|
618
|
-
allow(source).to receive(:metadata).and_return(double('metadata', :source => 'puppet:///test/foo bar', :ftype => 'file', :content_uri => nil))
|
656
|
+
metadata.source = 'puppet:///modules/:module/foo bar'
|
619
657
|
|
620
|
-
|
658
|
+
stub_request(:get, %r{/puppet/v3/file_content/modules/:module/foo%20bar})
|
659
|
+
.to_return(status: 200, body: metadata.to_json, headers: { 'Content-Type' => 'application/json' })
|
621
660
|
|
622
661
|
resource.write(source)
|
623
662
|
end
|
624
663
|
|
625
664
|
it 'should request binary content' do
|
626
|
-
|
627
|
-
|
628
|
-
|
665
|
+
stub_request(:get, %r{/puppet/v3/file_content/modules/:module/foo}) do |request|
|
666
|
+
expect(request.headers).to include({'Accept' => 'application/octet-stream'})
|
667
|
+
end.to_return(status: 200, body: '', headers: { 'Content-Type' => 'application/octet-stream' })
|
629
668
|
|
630
|
-
|
631
|
-
|
632
|
-
|
669
|
+
resource.write(source)
|
670
|
+
end
|
671
|
+
|
672
|
+
it "should request file content from the catalog's environment" do
|
673
|
+
Puppet[:environment] = 'doesntexist'
|
674
|
+
|
675
|
+
stub_request(:get, %r{/puppet/v3/file_content})
|
676
|
+
.with(query: hash_including("environment" => "myenv"))
|
677
|
+
.to_return(status: 200, body: '', headers: { 'Content-Type' => 'application/octet-stream' })
|
678
|
+
|
679
|
+
resource.write(source)
|
680
|
+
end
|
681
|
+
|
682
|
+
it 'should request static file content' do
|
683
|
+
metadata.content_uri = "puppet://#{Puppet[:server]}:8140/path/to/file"
|
684
|
+
|
685
|
+
stub_request(:get, %r{/puppet/v3/static_file_content/path/to/file})
|
686
|
+
.to_return(status: 200, body: '', headers: { 'Content-Type' => 'application/octet-stream' })
|
633
687
|
|
634
688
|
resource.write(source)
|
635
689
|
end
|
@@ -639,26 +693,23 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
639
693
|
File.open(filename, 'w') {|f| f.write "initial file content"}
|
640
694
|
end
|
641
695
|
|
642
|
-
before(:each) do
|
643
|
-
allow(Puppet::Network::HttpPool).to receive(:connection).and_return(conn)
|
644
|
-
allow(source).to receive(:metadata).and_return(double('metadata', :source => 'puppet:///test/foo', :ftype => 'file', :content_uri => nil))
|
645
|
-
end
|
646
|
-
|
647
696
|
it 'should not write anything if source is not found' do
|
648
|
-
|
697
|
+
stub_request(:get, %r{/puppet/v3/file_content/modules/:module/foo}).to_return(status: 404)
|
649
698
|
|
650
|
-
expect { resource.write(source) }.to raise_error(Net::HTTPError, /404
|
699
|
+
expect { resource.write(source) }.to raise_error(Net::HTTPError, /Error 404 on SERVER:/)
|
651
700
|
expect(File.read(filename)).to eq('initial file content')
|
652
701
|
end
|
653
702
|
|
654
703
|
it 'should raise an HTTP error in case of server error' do
|
655
|
-
|
704
|
+
stub_request(:get, %r{/puppet/v3/file_content/modules/:module/foo}).to_return(status: 500)
|
656
705
|
|
657
|
-
expect { resource.write(source) }.to raise_error(Net::HTTPError, /500/)
|
706
|
+
expect { resource.write(source) }.to raise_error(Net::HTTPError, /Error 500 on SERVER/)
|
658
707
|
end
|
659
708
|
|
660
709
|
context 'and the request was successful' do
|
661
|
-
before
|
710
|
+
before do
|
711
|
+
stub_request(:get, %r{/puppet/v3/file_content/modules/:module/foo}).to_return(status: 200, body: source_content)
|
712
|
+
end
|
662
713
|
|
663
714
|
it 'should write the contents to the file' do
|
664
715
|
resource.write(source)
|