puppet 6.13.0-x64-mingw32 → 6.18.0-x64-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
| @@ -114,12 +114,31 @@ describe Puppet::Application::Filebucket do | |
| 114 114 | 
             
                    @filebucket.setup
         | 
| 115 115 | 
             
                  end
         | 
| 116 116 |  | 
| 117 | 
            -
                  it "should default to the first server_list entry if set" do
         | 
| 117 | 
            +
                  it "should default to the first good server_list entry if server_list is set" do
         | 
| 118 | 
            +
                    stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 200)
         | 
| 118 119 | 
             
                    Puppet[:server_list] = "foo,bar,baz"
         | 
| 119 120 | 
             
                    expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "foo"))
         | 
| 120 121 | 
             
                    @filebucket.setup
         | 
| 121 122 | 
             
                  end
         | 
| 122 123 |  | 
| 124 | 
            +
                  it "should walk server_list until it finds a good entry" do
         | 
| 125 | 
            +
                    stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 502)
         | 
| 126 | 
            +
                    stub_request(:get, "https://bar:8140/status/v1/simple/master").to_return(status: 200)
         | 
| 127 | 
            +
                    Puppet[:server_list] = "foo,bar,baz"
         | 
| 128 | 
            +
                    expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "bar"))
         | 
| 129 | 
            +
                    @filebucket.setup
         | 
| 130 | 
            +
                  end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  # FileBucket catches any exceptions raised, logs them, then just exits
         | 
| 133 | 
            +
                  it "raises an error if there are no functional servers in server_list" do
         | 
| 134 | 
            +
                    stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 404)
         | 
| 135 | 
            +
                    stub_request(:get, "https://bar:8140/status/v1/simple/master").to_return(status: 404)
         | 
| 136 | 
            +
                    Puppet[:server] = 'horacio'
         | 
| 137 | 
            +
                    Puppet[:server_list] = "foo,bar"
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                    expect{@filebucket.setup}.to exit_with(1)
         | 
| 140 | 
            +
                  end
         | 
| 141 | 
            +
             | 
| 123 142 | 
             
                  it "should fall back to server if server_list is empty" do
         | 
| 124 143 | 
             
                    Puppet[:server_list] = ""
         | 
| 125 144 | 
             
                    expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "puppet"))
         | 
| @@ -127,8 +146,9 @@ describe Puppet::Application::Filebucket do | |
| 127 146 | 
             
                  end
         | 
| 128 147 |  | 
| 129 148 | 
             
                  it "should take both the server and port specified in server_list" do
         | 
| 149 | 
            +
                    stub_request(:get, "https://foo:632/status/v1/simple/master").to_return(status: 200)
         | 
| 130 150 | 
             
                    Puppet[:server_list] = "foo:632,bar:6215,baz:351"
         | 
| 131 | 
            -
                    expect(Puppet::FileBucket::Dipper).to receive(:new).with({ :Server => "foo", :Port =>  | 
| 151 | 
            +
                    expect(Puppet::FileBucket::Dipper).to receive(:new).with({ :Server => "foo", :Port => 632 })
         | 
| 132 152 | 
             
                    @filebucket.setup
         | 
| 133 153 | 
             
                  end
         | 
| 134 154 | 
             
                end
         | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'puppet/face'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe Puppet::Face[:man, :current] do
         | 
| 5 | 
            +
              let(:pager) { '/path/to/our/pager' }
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              around do |example|
         | 
| 8 | 
            +
                Puppet::Util.withenv('MANPAGER' => pager) do
         | 
| 9 | 
            +
                  example.run
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it 'is deprecated' do
         | 
| 14 | 
            +
                expect(subject).to be_deprecated
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              it 'has a man action' do
         | 
| 18 | 
            +
                expect(subject).to be_action(:man)
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              it 'accepts a call with no arguments' do
         | 
| 22 | 
            +
                expect { subject.man }.to output(/USAGE: puppet man <action>/).to_stdout
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              it 'raises an ArgumentError when given too many arguments' do
         | 
| 26 | 
            +
                expect {
         | 
| 27 | 
            +
                  subject.man(:man, 'agent', 'extra')
         | 
| 28 | 
            +
                }.to raise_error(ArgumentError)
         | 
| 29 | 
            +
                 .and output(/USAGE: puppet man <action>/).to_stdout
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it "exits with 0 when generating man documentation for each available application" do
         | 
| 33 | 
            +
                # turn off deprecation warning
         | 
| 34 | 
            +
                Puppet[:disable_warnings] = ['deprecations']
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                allow(Puppet::Util).to receive(:which).with('ronn').and_return(nil)
         | 
| 37 | 
            +
                allow(Puppet::Util).to receive(:which).with(pager).and_return(pager)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                Puppet::Application.available_application_names.each do |name|
         | 
| 40 | 
            +
                  next if %w{man face_base indirection_base}.include? name
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  app = Puppet::Application[:man]
         | 
| 43 | 
            +
                  app.command_line.args << 'man' << name
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  expect {
         | 
| 46 | 
            +
                    allow(IO).to receive(:popen).with(pager, 'w:UTF-8').and_yield($stdout)
         | 
| 47 | 
            +
                    app.run
         | 
| 48 | 
            +
                  }.to exit_with(0)
         | 
| 49 | 
            +
                   .and output(/puppet-#{name}/m).to_stdout
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| @@ -51,7 +51,9 @@ describe Puppet::Application::Resource do | |
| 51 51 | 
             
                  # provider is a parameter that should always be available
         | 
| 52 52 | 
             
                  @resource_app.extra_params = [ :provider ]
         | 
| 53 53 |  | 
| 54 | 
            -
                  expect { | 
| 54 | 
            +
                  expect {
         | 
| 55 | 
            +
                    @resource_app.main
         | 
| 56 | 
            +
                  }.to output(/provider\s+=>/).to_stdout
         | 
| 55 57 | 
             
                end
         | 
| 56 58 | 
             
              end
         | 
| 57 59 |  | 
| @@ -38,7 +38,7 @@ describe Puppet::Application::Ssl, unless: Puppet::Util::Platform.jruby? do | |
| 38 38 | 
             
              def expects_command_to_pass(expected_output = nil)
         | 
| 39 39 | 
             
                expect {
         | 
| 40 40 | 
             
                  ssl.run_command
         | 
| 41 | 
            -
                }.to  | 
| 41 | 
            +
                }.to output(expected_output).to_stdout
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              def expects_command_to_fail(message)
         | 
| @@ -46,7 +46,7 @@ describe Puppet::Application::Ssl, unless: Puppet::Util::Platform.jruby? do | |
| 46 46 | 
             
                  expect {
         | 
| 47 47 | 
             
                    ssl.run_command
         | 
| 48 48 | 
             
                  }.to raise_error(Puppet::Error, message)
         | 
| 49 | 
            -
                }.to  | 
| 49 | 
            +
                }.to output(/.*/).to_stdout
         | 
| 50 50 | 
             
              end
         | 
| 51 51 |  | 
| 52 52 | 
             
              shared_examples_for 'an ssl action' do
         | 
| @@ -266,6 +266,19 @@ describe Puppet::Application::Ssl, unless: Puppet::Util::Platform.jruby? do | |
| 266 266 | 
             
                  FileUtils.cp(File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'encrypted-key.pem'), Puppet[:hostprivkey])
         | 
| 267 267 | 
             
                  FileUtils.cp(File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'signed.pem'), Puppet[:hostcert])
         | 
| 268 268 |  | 
| 269 | 
            +
                  # To verify the client cert we need the root and intermediate certs and crls.
         | 
| 270 | 
            +
                  # We don't need to do this with `ssl-client` cert above, because it is issued
         | 
| 271 | 
            +
                  # directly from the generated TestCa above.
         | 
| 272 | 
            +
                  File.open(Puppet[:localcacert], 'w') do |f|
         | 
| 273 | 
            +
                    f.write(File.read(File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'ca.pem')))
         | 
| 274 | 
            +
                    f.write(File.read(File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'intermediate.pem')))
         | 
| 275 | 
            +
                  end
         | 
| 276 | 
            +
             | 
| 277 | 
            +
                  File.open(Puppet[:hostcrl], 'w') do |f|
         | 
| 278 | 
            +
                    f.write(File.read(File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'crl.pem')))
         | 
| 279 | 
            +
                    f.write(File.read(File.join(PuppetSpec::FIXTURE_DIR, 'ssl', 'intermediate-crl.pem')))
         | 
| 280 | 
            +
                  end
         | 
| 281 | 
            +
             | 
| 269 282 | 
             
                  Puppet[:passfile] = file_containing('passfile', '74695716c8b6')
         | 
| 270 283 |  | 
| 271 284 | 
             
                  expects_command_to_pass(%r{Verified client certificate 'CN=signed' fingerprint})
         | 
| @@ -228,5 +228,15 @@ describe Puppet::Configurer::Downloader do | |
| 228 228 |  | 
| 229 229 | 
             
                  expect { @dler.evaluate }.not_to raise_error
         | 
| 230 230 | 
             
                end
         | 
| 231 | 
            +
             | 
| 232 | 
            +
                it "raises an exception if catalog application fails" do
         | 
| 233 | 
            +
                  Puppet[:ignore_plugin_errors] = false
         | 
| 234 | 
            +
             | 
| 235 | 
            +
                  expect(@dler.file).to receive(:retrieve).and_raise(Puppet::Error, "testing")
         | 
| 236 | 
            +
             | 
| 237 | 
            +
                  expect {
         | 
| 238 | 
            +
                    @dler.evaluate
         | 
| 239 | 
            +
                  }.to raise_error(Puppet::Error, /testing/)
         | 
| 240 | 
            +
                end
         | 
| 231 241 | 
             
              end
         | 
| 232 242 | 
             
            end
         | 
| @@ -104,7 +104,7 @@ describe Puppet::Configurer::FactHandler do | |
| 104 104 | 
             
                      expect(text).to include(test_fact[:encoded])
         | 
| 105 105 |  | 
| 106 106 | 
             
                      # this is not sufficient to test whether these values are sent via HTTP GET or HTTP POST in actual catalog request
         | 
| 107 | 
            -
                      expect(JSON.parse( | 
| 107 | 
            +
                      expect(JSON.parse(Puppet::Util.uri_unescape(to_upload[:facts]))['values']).to eq(test_fact[:hash])
         | 
| 108 108 | 
             
                    end
         | 
| 109 109 | 
             
                  end
         | 
| 110 110 | 
             
                end
         | 
| @@ -129,7 +129,7 @@ describe Puppet::Configurer::FactHandler do | |
| 129 129 | 
             
                      expect(to_upload).to eq({:facts_format => 'application/json', :facts => text})
         | 
| 130 130 | 
             
                      expect(text).to include(test_fact[:encoded])
         | 
| 131 131 |  | 
| 132 | 
            -
                      expect(JSON.parse( | 
| 132 | 
            +
                      expect(JSON.parse(Puppet::Util.uri_unescape(to_upload[:facts]))['values']).to eq(test_fact[:hash])
         | 
| 133 133 | 
             
                    end
         | 
| 134 134 | 
             
                  end
         | 
| 135 135 | 
             
                end
         | 
| @@ -138,9 +138,9 @@ describe Puppet::Configurer::FactHandler do | |
| 138 138 | 
             
                  facts = Puppet::Node::Facts.new(Puppet[:node_name_value], 'my_name_fact' => 'other_node_name')
         | 
| 139 139 | 
             
                  Puppet::Node::Facts.indirection.save(facts)
         | 
| 140 140 |  | 
| 141 | 
            -
                  # prefer  | 
| 141 | 
            +
                  # prefer Puppet::Util.uri_unescape but validate CGI also works
         | 
| 142 142 | 
             
                  encoded_facts = facthandler.facts_for_uploading[:facts]
         | 
| 143 | 
            -
                  expect( | 
| 143 | 
            +
                  expect(Puppet::Util.uri_unescape(encoded_facts)).to validate_against('api/schemas/facts.json')
         | 
| 144 144 | 
             
                  expect(CGI.unescape(encoded_facts)).to validate_against('api/schemas/facts.json')
         | 
| 145 145 | 
             
                end
         | 
| 146 146 | 
             
              end
         | 
| @@ -6,13 +6,17 @@ describe Puppet::Configurer::PluginHandler do | |
| 6 6 | 
             
              let(:pluginhandler) { Puppet::Configurer::PluginHandler.new() }
         | 
| 7 7 | 
             
              let(:environment)   { Puppet::Node::Environment.create(:myenv, []) }
         | 
| 8 8 |  | 
| 9 | 
            +
              before :each do
         | 
| 10 | 
            +
                # PluginHandler#load_plugin has an extra-strong rescue clause
         | 
| 11 | 
            +
                # this mock is to make sure that we don't silently ignore errors
         | 
| 12 | 
            +
                expect(Puppet).not_to receive(:err)
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 9 15 | 
             
              context "server agent version is 5.3.4" do
         | 
| 10 | 
            -
                 | 
| 11 | 
            -
                   | 
| 12 | 
            -
             | 
| 13 | 
            -
                   | 
| 14 | 
            -
                  # Server_agent version needs to be at 5.3.4 in order to mount locales
         | 
| 15 | 
            -
                  Puppet.push_context({:server_agent_version => "5.3.4"})
         | 
| 16 | 
            +
                around do |example|
         | 
| 17 | 
            +
                  Puppet.override(server_agent_version: "5.3.4") do
         | 
| 18 | 
            +
                    example.run
         | 
| 19 | 
            +
                  end
         | 
| 16 20 | 
             
                end
         | 
| 17 21 |  | 
| 18 22 | 
             
                it "downloads plugins, facts, and locales" do
         | 
| @@ -43,12 +47,10 @@ describe Puppet::Configurer::PluginHandler do | |
| 43 47 | 
             
              end
         | 
| 44 48 |  | 
| 45 49 | 
             
              context "server agent version is 5.3.3" do
         | 
| 46 | 
            -
                 | 
| 47 | 
            -
                   | 
| 48 | 
            -
             | 
| 49 | 
            -
                   | 
| 50 | 
            -
                  # Server_agent version needs to be at 5.3.4 in order to mount locales
         | 
| 51 | 
            -
                  Puppet.push_context({:server_agent_version => "5.3.3"})
         | 
| 50 | 
            +
                around do |example|
         | 
| 51 | 
            +
                  Puppet.override(server_agent_version: "5.3.3") do
         | 
| 52 | 
            +
                    example.run
         | 
| 53 | 
            +
                  end
         | 
| 52 54 | 
             
                end
         | 
| 53 55 |  | 
| 54 56 | 
             
                it "returns downloaded plugin, fact, but not locale filenames" do
         | 
| @@ -69,15 +71,30 @@ describe Puppet::Configurer::PluginHandler do | |
| 69 71 | 
             
              end
         | 
| 70 72 |  | 
| 71 73 | 
             
              context "blank server agent version" do
         | 
| 72 | 
            -
                 | 
| 73 | 
            -
                   | 
| 74 | 
            -
             | 
| 75 | 
            -
                   | 
| 76 | 
            -
             | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 74 | 
            +
                around do |example|
         | 
| 75 | 
            +
                  Puppet.override(server_agent_version: "") do
         | 
| 76 | 
            +
                    example.run
         | 
| 77 | 
            +
                  end
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                it "returns downloaded plugin, fact, but not locale filenames" do
         | 
| 81 | 
            +
                  times_called = 0
         | 
| 82 | 
            +
                  allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
         | 
| 83 | 
            +
                    times_called += 1
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                    if times_called == 1
         | 
| 86 | 
            +
                      %w[/a]
         | 
| 87 | 
            +
                    else
         | 
| 88 | 
            +
                      %w[/b]
         | 
| 89 | 
            +
                    end
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
         | 
| 93 | 
            +
                  expect(times_called).to eq(2)
         | 
| 79 94 | 
             
                end
         | 
| 95 | 
            +
              end
         | 
| 80 96 |  | 
| 97 | 
            +
              context "nil server agent version" do
         | 
| 81 98 | 
             
                it "returns downloaded plugin, fact, but not locale filenames" do
         | 
| 82 99 | 
             
                  times_called = 0
         | 
| 83 100 | 
             
                  allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
         | 
| @@ -1,6 +1,5 @@ | |
| 1 1 | 
             
            require 'spec_helper'
         | 
| 2 2 | 
             
            require 'puppet/configurer'
         | 
| 3 | 
            -
            require 'webmock/rspec'
         | 
| 4 3 |  | 
| 5 4 | 
             
            describe Puppet::Configurer do
         | 
| 6 5 | 
             
              before do
         | 
| @@ -10,11 +9,12 @@ describe Puppet::Configurer do | |
| 10 9 | 
             
                catalog.add_resource(resource)
         | 
| 11 10 | 
             
              end
         | 
| 12 11 |  | 
| 12 | 
            +
              let(:node_name) { Puppet[:node_name_value] }
         | 
| 13 13 | 
             
              let(:configurer) { Puppet::Configurer.new }
         | 
| 14 14 | 
             
              let(:report) { Puppet::Transaction::Report.new }
         | 
| 15 | 
            -
              let(:catalog) { Puppet::Resource::Catalog.new( | 
| 15 | 
            +
              let(:catalog) { Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote(Puppet[:environment].to_sym)) }
         | 
| 16 16 | 
             
              let(:resource) { Puppet::Resource.new(:notice, 'a') }
         | 
| 17 | 
            -
              let(:facts) { Puppet::Node::Facts.new( | 
| 17 | 
            +
              let(:facts) { Puppet::Node::Facts.new(node_name) }
         | 
| 18 18 |  | 
| 19 19 | 
             
              describe "when executing a pre-run hook" do
         | 
| 20 20 | 
             
                it "should do nothing if the hook is set to an empty string" do
         | 
| @@ -84,6 +84,26 @@ describe Puppet::Configurer do | |
| 84 84 | 
             
                  expect(configurer.run).to eq(0)
         | 
| 85 85 | 
             
                end
         | 
| 86 86 |  | 
| 87 | 
            +
                it "fails the run if pluginsync fails when usecacheonfailure is false" do
         | 
| 88 | 
            +
                  Puppet[:ignore_plugin_errors] = false
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                  # --test implies these, set them so we don't fall back to a cached catalog
         | 
| 91 | 
            +
                  Puppet[:use_cached_catalog] = false
         | 
| 92 | 
            +
                  Puppet[:usecacheonfailure] = false
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  body = "{\"message\":\"Not Found: Could not find environment 'fasdfad'\",\"issue_kind\":\"RUNTIME_ERROR\"}"
         | 
| 95 | 
            +
                  stub_request(:get, %r{/puppet/v3/file_metadatas/pluginfacts}).to_return(
         | 
| 96 | 
            +
                    status: 404, body: body, headers: {'Content-Type' => 'application/json'}
         | 
| 97 | 
            +
                  )
         | 
| 98 | 
            +
                  stub_request(:get, %r{/puppet/v3/file_metadata/pluginfacts}).to_return(
         | 
| 99 | 
            +
                    status: 404, body: body, headers: {'Content-Type' => 'application/json'}
         | 
| 100 | 
            +
                  )
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                  configurer.run(pluginsync: true)
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  expect(@logs).to include(an_object_having_attributes(level: :err, message: %r{Failed to apply catalog: Failed to retrieve pluginfacts: Could not retrieve information from environment production source\(s\) puppet:///pluginfacts}))
         | 
| 105 | 
            +
                end
         | 
| 106 | 
            +
             | 
| 87 107 | 
             
                it "applies a cached catalog when it can't connect to the master" do
         | 
| 88 108 | 
             
                  error = Errno::ECONNREFUSED.new('Connection refused - connect(2)')
         | 
| 89 109 |  | 
| @@ -95,12 +115,14 @@ describe Puppet::Configurer do | |
| 95 115 | 
             
                end
         | 
| 96 116 |  | 
| 97 117 | 
             
                it "should initialize a transaction report if one is not provided" do
         | 
| 98 | 
            -
                   | 
| 118 | 
            +
                  # host and settings catalogs each create a report...
         | 
| 119 | 
            +
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report).twice
         | 
| 99 120 |  | 
| 100 121 | 
             
                  configurer.run
         | 
| 101 122 | 
             
                end
         | 
| 102 123 |  | 
| 103 124 | 
             
                it "should respect node_name_fact when setting the host on a report" do
         | 
| 125 | 
            +
                  Puppet[:node_name_value] = nil
         | 
| 104 126 | 
             
                  Puppet[:node_name_fact] = 'my_name_fact'
         | 
| 105 127 | 
             
                  facts.values = {'my_name_fact' => 'node_name_from_fact'}
         | 
| 106 128 | 
             
                  Puppet::Node::Facts.indirection.save(facts)
         | 
| @@ -146,7 +168,7 @@ describe Puppet::Configurer do | |
| 146 168 | 
             
                  configurer = Puppet::Configurer.new("test_tuuid", "test_jid")
         | 
| 147 169 |  | 
| 148 170 | 
             
                  report = Puppet::Transaction::Report.new(nil, "test", "aaaa")
         | 
| 149 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).with(anything, anything, 'test_tuuid', 'test_jid').and_return(report)
         | 
| 171 | 
            +
                  expect(Puppet::Transaction::Report).to receive(:new).with(anything, anything, 'test_tuuid', 'test_jid', anything).and_return(report)
         | 
| 150 172 | 
             
                  expect(configurer).to receive(:send_report).with(report)
         | 
| 151 173 |  | 
| 152 174 | 
             
                  configurer.run
         | 
| @@ -190,22 +212,21 @@ describe Puppet::Configurer do | |
| 190 212 | 
             
                end
         | 
| 191 213 |  | 
| 192 214 | 
             
                it "should remove the report as a log destination when the run is finished" do
         | 
| 193 | 
            -
                   | 
| 194 | 
            -
             | 
| 195 | 
            -
                  configurer.run
         | 
| 215 | 
            +
                  configurer.run(report: report)
         | 
| 196 216 |  | 
| 197 217 | 
             
                  expect(Puppet::Util::Log.destinations).not_to include(report)
         | 
| 198 218 | 
             
                end
         | 
| 199 219 |  | 
| 200 | 
            -
                it "should return  | 
| 201 | 
            -
                   | 
| 202 | 
            -
                   | 
| 220 | 
            +
                it "should return an exit status of 2 due to the notify resource 'changing'" do
         | 
| 221 | 
            +
                  cat = Puppet::Resource::Catalog.new("tester", Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
         | 
| 222 | 
            +
                  cat.add_resource(Puppet::Type.type(:notify).new(:name => 'something changed'))
         | 
| 203 223 |  | 
| 204 | 
            -
                  expect(configurer.run).to eq( | 
| 224 | 
            +
                  expect(configurer.run(catalog: cat, report: report)).to eq(2)
         | 
| 205 225 | 
             
                end
         | 
| 206 226 |  | 
| 207 227 | 
             
                it "should return nil if catalog application fails" do
         | 
| 208 | 
            -
                   | 
| 228 | 
            +
                  expect(catalog).to receive(:apply).and_raise(Puppet::Error, 'One or more resource dependency cycles detected in graph')
         | 
| 229 | 
            +
             | 
| 209 230 | 
             
                  expect(configurer.run(catalog: catalog, report: report)).to be_nil
         | 
| 210 231 | 
             
                end
         | 
| 211 232 |  | 
| @@ -220,34 +241,28 @@ describe Puppet::Configurer do | |
| 220 241 | 
             
                end
         | 
| 221 242 |  | 
| 222 243 | 
             
                it "should include the pre-run command failure in the report" do
         | 
| 223 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
         | 
| 224 | 
            -
             | 
| 225 244 | 
             
                  Puppet.settings[:prerun_command] = "/my/command"
         | 
| 226 245 | 
             
                  expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
         | 
| 227 246 |  | 
| 228 | 
            -
                  expect(configurer.run).to be_nil
         | 
| 247 | 
            +
                  expect(configurer.run(report: report)).to be_nil
         | 
| 229 248 | 
             
                  expect(report.logs.find { |x| x.message =~ /Could not run command from prerun_command/ }).to be
         | 
| 230 249 | 
             
                end
         | 
| 231 250 |  | 
| 232 251 | 
             
                it "should send the transaction report even if the post-run command fails" do
         | 
| 233 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
         | 
| 234 | 
            -
             | 
| 235 252 | 
             
                  Puppet.settings[:postrun_command] = "/my/command"
         | 
| 236 253 | 
             
                  expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
         | 
| 237 254 | 
             
                  expect(configurer).to receive(:send_report).with(report)
         | 
| 238 255 |  | 
| 239 | 
            -
                  expect(configurer.run).to be_nil
         | 
| 256 | 
            +
                  expect(configurer.run(report: report)).to be_nil
         | 
| 240 257 | 
             
                end
         | 
| 241 258 |  | 
| 242 259 | 
             
                it "should include the post-run command failure in the report" do
         | 
| 243 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
         | 
| 244 | 
            -
             | 
| 245 260 | 
             
                  Puppet.settings[:postrun_command] = "/my/command"
         | 
| 246 261 | 
             
                  expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
         | 
| 247 262 |  | 
| 248 263 | 
             
                  expect(report).to receive(:<<) { |log, _| expect(log.message).to match(/Could not run command from postrun_command/) }.at_least(:once)
         | 
| 249 264 |  | 
| 250 | 
            -
                  expect(configurer.run).to be_nil
         | 
| 265 | 
            +
                  expect(configurer.run(report: report)).to be_nil
         | 
| 251 266 | 
             
                end
         | 
| 252 267 |  | 
| 253 268 | 
             
                it "should execute post-run command even if the pre-run command fails" do
         | 
| @@ -260,34 +275,28 @@ describe Puppet::Configurer do | |
| 260 275 | 
             
                end
         | 
| 261 276 |  | 
| 262 277 | 
             
                it "should finalize the report" do
         | 
| 263 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
         | 
| 264 | 
            -
             | 
| 265 278 | 
             
                  expect(report).to receive(:finalize_report)
         | 
| 266 | 
            -
                  configurer.run
         | 
| 279 | 
            +
                  configurer.run(report: report)
         | 
| 267 280 | 
             
                end
         | 
| 268 281 |  | 
| 269 282 | 
             
                it "should not apply the catalog if the pre-run command fails" do
         | 
| 270 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
         | 
| 271 | 
            -
             | 
| 272 283 | 
             
                  Puppet.settings[:prerun_command] = "/my/command"
         | 
| 273 284 | 
             
                  expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
         | 
| 274 285 |  | 
| 275 286 | 
             
                  expect_any_instance_of(Puppet::Resource::Catalog).not_to receive(:apply)
         | 
| 276 287 | 
             
                  expect(configurer).to receive(:send_report)
         | 
| 277 288 |  | 
| 278 | 
            -
                  expect(configurer.run).to be_nil
         | 
| 289 | 
            +
                  expect(configurer.run(report: report)).to be_nil
         | 
| 279 290 | 
             
                end
         | 
| 280 291 |  | 
| 281 292 | 
             
                it "should apply the catalog, send the report, and return nil if the post-run command fails" do
         | 
| 282 | 
            -
                  expect(Puppet::Transaction::Report).to receive(:new).and_return(report)
         | 
| 283 | 
            -
             | 
| 284 293 | 
             
                  Puppet.settings[:postrun_command] = "/my/command"
         | 
| 285 294 | 
             
                  expect(Puppet::Util::Execution).to receive(:execute).with(["/my/command"]).and_raise(Puppet::ExecutionFailure, "Failed")
         | 
| 286 295 |  | 
| 287 296 | 
             
                  expect_any_instance_of(Puppet::Resource::Catalog).to receive(:apply)
         | 
| 288 297 | 
             
                  expect(configurer).to receive(:send_report)
         | 
| 289 298 |  | 
| 290 | 
            -
                  expect(configurer.run).to be_nil
         | 
| 299 | 
            +
                  expect(configurer.run(report: report)).to be_nil
         | 
| 291 300 | 
             
                end
         | 
| 292 301 |  | 
| 293 302 | 
             
                it 'includes total time metrics in the report after successfully applying the catalog' do
         | 
| @@ -316,7 +325,7 @@ describe Puppet::Configurer do | |
| 316 325 | 
             
                end
         | 
| 317 326 |  | 
| 318 327 | 
             
                it "should refetch the catalog if the server specifies a new environment in the catalog" do
         | 
| 319 | 
            -
                  catalog = Puppet::Resource::Catalog.new( | 
| 328 | 
            +
                  catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
         | 
| 320 329 | 
             
                  expect(configurer).to receive(:retrieve_catalog).and_return(catalog).twice
         | 
| 321 330 |  | 
| 322 331 | 
             
                  configurer.run
         | 
| @@ -544,6 +553,15 @@ describe Puppet::Configurer do | |
| 544 553 | 
             
                end
         | 
| 545 554 | 
             
              end
         | 
| 546 555 |  | 
| 556 | 
            +
              def expects_pluginsync
         | 
| 557 | 
            +
                metadata = "[{\"path\":\"/etc/puppetlabs/code\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":0,\"group\":0,\"mode\":420,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-07-10 14:00:00 -0700\"},\"type\":\"directory\",\"destination\":null}]"
         | 
| 558 | 
            +
                stub_request(:get, %r{/puppet/v3/file_metadatas/(plugins|locales)}).to_return(status: 200, body: metadata, headers: {'Content-Type' => 'application/json'})
         | 
| 559 | 
            +
             | 
| 560 | 
            +
                # response retains owner/group/mode due to source_permissions => use
         | 
| 561 | 
            +
                facts_metadata = "[{\"path\":\"/etc/puppetlabs/code\",\"relative_path\":\".\",\"links\":\"follow\",\"owner\":500,\"group\":500,\"mode\":493,\"checksum\":{\"type\":\"ctime\",\"value\":\"{ctime}2020-07-10 14:00:00 -0700\"},\"type\":\"directory\",\"destination\":null}]"
         | 
| 562 | 
            +
                stub_request(:get, %r{/puppet/v3/file_metadatas/pluginfacts}).to_return(status: 200, body: facts_metadata, headers: {'Content-Type' => 'application/json'})
         | 
| 563 | 
            +
              end
         | 
| 564 | 
            +
             | 
| 547 565 | 
             
              def expects_new_catalog_only(catalog)
         | 
| 548 566 | 
             
                expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
         | 
| 549 567 | 
             
                expect(Puppet::Resource::Catalog.indirection).not_to receive(:find).with(anything, hash_including(ignore_terminus: true))
         | 
| @@ -560,6 +578,7 @@ describe Puppet::Configurer do | |
| 560 578 | 
             
              end
         | 
| 561 579 |  | 
| 562 580 | 
             
              def expects_fallback_to_new_catalog(catalog)
         | 
| 581 | 
            +
                expects_pluginsync
         | 
| 563 582 | 
             
                expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_terminus: true)).and_return(nil)
         | 
| 564 583 | 
             
                expect(Puppet::Resource::Catalog.indirection).to receive(:find).with(anything, hash_including(ignore_cache: true)).and_return(catalog)
         | 
| 565 584 | 
             
              end
         | 
| @@ -596,7 +615,6 @@ describe Puppet::Configurer do | |
| 596 615 | 
             
                  it "should make a node request and pluginsync when a cached catalog cannot be retrieved" do
         | 
| 597 616 | 
             
                    expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
         | 
| 598 617 | 
             
                    expects_fallback_to_new_catalog(catalog)
         | 
| 599 | 
            -
                    expect(configurer).to receive(:download_plugins)
         | 
| 600 618 |  | 
| 601 619 | 
             
                    configurer.run
         | 
| 602 620 | 
             
                  end
         | 
| @@ -611,7 +629,7 @@ describe Puppet::Configurer do | |
| 611 629 | 
             
                  end
         | 
| 612 630 |  | 
| 613 631 | 
             
                  it "should set its cached_catalog_status to 'explicitly requested' if the cached catalog is from a different environment" do
         | 
| 614 | 
            -
                    cached_catalog = Puppet::Resource::Catalog.new( | 
| 632 | 
            +
                    cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
         | 
| 615 633 | 
             
                    expects_cached_catalog_only(cached_catalog)
         | 
| 616 634 |  | 
| 617 635 | 
             
                    options = {}
         | 
| @@ -634,6 +652,7 @@ describe Puppet::Configurer do | |
| 634 652 | 
             
                  it "should not attempt to retrieve a cached catalog again if the first attempt failed" do
         | 
| 635 653 | 
             
                    expect(Puppet::Node.indirection).to receive(:find).and_return(nil)
         | 
| 636 654 | 
             
                    expects_neither_new_or_cached_catalog
         | 
| 655 | 
            +
                    expects_pluginsync
         | 
| 637 656 |  | 
| 638 657 | 
             
                    # after failing to use a cached catalog, we'll need to pluginsync before getting
         | 
| 639 658 | 
             
                    # a new catalog, which also fails.
         | 
| @@ -644,7 +663,7 @@ describe Puppet::Configurer do | |
| 644 663 | 
             
                  end
         | 
| 645 664 |  | 
| 646 665 | 
             
                  it "should return the cached catalog when the environment doesn't match" do
         | 
| 647 | 
            -
                    cached_catalog = Puppet::Resource::Catalog.new( | 
| 666 | 
            +
                    cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
         | 
| 648 667 | 
             
                    expects_cached_catalog_only(cached_catalog)
         | 
| 649 668 |  | 
| 650 669 | 
             
                    allow(Puppet).to receive(:info)
         | 
| @@ -654,8 +673,7 @@ describe Puppet::Configurer do | |
| 654 673 | 
             
                  end
         | 
| 655 674 |  | 
| 656 675 | 
             
                  it "applies the catalog passed as options when the catalog cache terminus is not set" do
         | 
| 657 | 
            -
                     | 
| 658 | 
            -
                    stub_request(:get, %r{/puppet/v3/file_metadatas?/pluginfacts}).to_return(:status => 404)
         | 
| 676 | 
            +
                    expects_pluginsync
         | 
| 659 677 |  | 
| 660 678 | 
             
                    catalog.add_resource(Puppet::Resource.new('notify', 'from apply'))
         | 
| 661 679 | 
             
                    configurer.run(catalog: catalog.to_ral)
         | 
| @@ -702,7 +720,7 @@ describe Puppet::Configurer do | |
| 702 720 | 
             
                    Puppet[:environment] = 'second_env'
         | 
| 703 721 | 
             
                    configurer = Puppet::Configurer.new
         | 
| 704 722 |  | 
| 705 | 
            -
                    catalog = Puppet::Resource::Catalog.new( | 
| 723 | 
            +
                    catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote("production"))
         | 
| 706 724 | 
             
                    expects_new_catalog_only(catalog)
         | 
| 707 725 |  | 
| 708 726 | 
             
                    expect(Puppet).to receive(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
         | 
| @@ -724,7 +742,7 @@ describe Puppet::Configurer do | |
| 724 742 | 
             
                      Puppet[:environment] = 'second_env'
         | 
| 725 743 | 
             
                      configurer = Puppet::Configurer.new
         | 
| 726 744 |  | 
| 727 | 
            -
                      catalog = Puppet::Resource::Catalog.new( | 
| 745 | 
            +
                      catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote("production"))
         | 
| 728 746 | 
             
                      expects_cached_catalog_only(catalog)
         | 
| 729 747 |  | 
| 730 748 | 
             
                      expect(Puppet).to receive(:err).with("Not using catalog because its environment 'production' does not match agent specified environment 'second_env' and strict_environment_mode is set")
         | 
| @@ -824,7 +842,7 @@ describe Puppet::Configurer do | |
| 824 842 | 
             
                end
         | 
| 825 843 |  | 
| 826 844 | 
             
                it "should return nil if its cached catalog environment doesn't match server-specified environment" do
         | 
| 827 | 
            -
                  cached_catalog = Puppet::Resource::Catalog.new( | 
| 845 | 
            +
                  cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
         | 
| 828 846 |  | 
| 829 847 | 
             
                  expects_fallback_to_cached_catalog(cached_catalog)
         | 
| 830 848 |  | 
| @@ -834,7 +852,7 @@ describe Puppet::Configurer do | |
| 834 852 | 
             
                end
         | 
| 835 853 |  | 
| 836 854 | 
             
                it "should set its cached_catalog_status to 'not_used' if the cached catalog environment doesn't match server-specified environment" do
         | 
| 837 | 
            -
                  cached_catalog = Puppet::Resource::Catalog.new( | 
| 855 | 
            +
                  cached_catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote('second_env'))
         | 
| 838 856 |  | 
| 839 857 | 
             
                  expects_fallback_to_cached_catalog(cached_catalog)
         | 
| 840 858 |  | 
| @@ -854,7 +872,7 @@ describe Puppet::Configurer do | |
| 854 872 | 
             
                it "should not update the cached catalog in noop mode" do
         | 
| 855 873 | 
             
                  Puppet[:noop] = true
         | 
| 856 874 |  | 
| 857 | 
            -
                  stub_request(: | 
| 875 | 
            +
                  stub_request(:post, %r{/puppet/v3/catalog}).to_return(:status => 200, :body => catalog.render(:json), :headers => {'Content-Type' => 'application/json'})
         | 
| 858 876 |  | 
| 859 877 | 
             
                  Puppet::Resource::Catalog.indirection.cache_class = :json
         | 
| 860 878 | 
             
                  path = Puppet::Resource::Catalog.indirection.cache.path(catalog.name)
         | 
| @@ -868,7 +886,7 @@ describe Puppet::Configurer do | |
| 868 886 | 
             
                  Puppet[:noop] = false
         | 
| 869 887 | 
             
                  Puppet[:log_level] = 'info'
         | 
| 870 888 |  | 
| 871 | 
            -
                  stub_request(: | 
| 889 | 
            +
                  stub_request(:post, %r{/puppet/v3/catalog}).to_return(:status => 200, :body => catalog.render(:json), :headers => {'Content-Type' => 'application/json'})
         | 
| 872 890 |  | 
| 873 891 | 
             
                  Puppet::Resource::Catalog.indirection.cache_class = :json
         | 
| 874 892 | 
             
                  cache_path = Puppet::Resource::Catalog.indirection.cache.path(Puppet[:node_name_value])
         | 
| @@ -881,7 +899,7 @@ describe Puppet::Configurer do | |
| 881 899 | 
             
                end
         | 
| 882 900 |  | 
| 883 901 | 
             
                it "successfully applies the catalog without a cache" do
         | 
| 884 | 
            -
                  stub_request(: | 
| 902 | 
            +
                  stub_request(:post, %r{/puppet/v3/catalog}).to_return(:status => 200, :body => catalog.render(:json), :headers => {'Content-Type' => 'application/json'})
         | 
| 885 903 |  | 
| 886 904 | 
             
                  Puppet::Resource::Catalog.indirection.cache_class = nil
         | 
| 887 905 |  | 
| @@ -996,7 +1014,7 @@ describe Puppet::Configurer do | |
| 996 1014 |  | 
| 997 1015 | 
             
                it "should not failover during an apply run" do
         | 
| 998 1016 | 
             
                  Puppet.settings[:server_list] = ["myserver:123"]
         | 
| 999 | 
            -
                  catalog = Puppet::Resource::Catalog.new( | 
| 1017 | 
            +
                  catalog = Puppet::Resource::Catalog.new(node_name, Puppet::Node::Environment.remote(Puppet[:environment].to_sym))
         | 
| 1000 1018 | 
             
                  configurer.run(catalog: catalog)
         | 
| 1001 1019 | 
             
                end
         | 
| 1002 1020 |  | 
| @@ -1041,7 +1059,7 @@ describe Puppet::Configurer do | |
| 1041 1059 | 
             
                  Puppet::Resource::Catalog.indirection.terminus_class = :rest
         | 
| 1042 1060 |  | 
| 1043 1061 | 
             
                  stub_request(:get, 'https://myserver:123/status/v1/simple/master').to_return(status: 200)
         | 
| 1044 | 
            -
                  stub_request(: | 
| 1062 | 
            +
                  stub_request(:post, %r{https://myserver:123/puppet/v3/catalog}).to_return(status: 200)
         | 
| 1045 1063 | 
             
                  node_request = stub_request(:get, %r{https://myserver:123/puppet/v3/node/}).to_return(status: 200)
         | 
| 1046 1064 |  | 
| 1047 1065 | 
             
                  configurer.run
         |