puppet 6.22.1 → 6.25.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +5 -5
- data/Gemfile +2 -2
- data/Gemfile.lock +20 -20
- data/README.md +4 -4
- data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
- data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
- data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
- data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
- data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
- data/{ext → examples}/nagios/check_puppet.rb +2 -2
- data/ext/README.md +13 -0
- data/ext/osx/puppet.plist +2 -0
- data/ext/project_data.yaml +1 -0
- data/lib/puppet/application/agent.rb +16 -5
- data/lib/puppet/application/apply.rb +22 -3
- data/lib/puppet/application/device.rb +2 -1
- data/lib/puppet/application/filebucket.rb +1 -0
- data/lib/puppet/application/resource.rb +32 -16
- data/lib/puppet/application/script.rb +2 -1
- data/lib/puppet/application/ssl.rb +1 -0
- data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
- data/lib/puppet/configurer/downloader.rb +2 -1
- data/lib/puppet/configurer.rb +144 -56
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/defaults.rb +47 -33
- data/lib/puppet/environments.rb +75 -25
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help/action.erb +1 -0
- data/lib/puppet/face/help/face.erb +1 -0
- data/lib/puppet/face/node/clean.rb +11 -0
- data/lib/puppet/facter_impl.rb +96 -0
- data/lib/puppet/file_serving/configuration/parser.rb +2 -0
- data/lib/puppet/file_serving/configuration.rb +3 -0
- data/lib/puppet/file_serving/fileset.rb +14 -2
- data/lib/puppet/file_serving/mount/file.rb +4 -4
- data/lib/puppet/file_serving/mount/scripts.rb +24 -0
- data/lib/puppet/file_system/file_impl.rb +3 -1
- data/lib/puppet/file_system/windows.rb +2 -2
- data/lib/puppet/forge.rb +4 -4
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/empty.rb +8 -0
- data/lib/puppet/functions/find_template.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/strftime.rb +1 -0
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/unwrap.rb +17 -2
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/http/client.rb +1 -1
- data/lib/puppet/http/redirector.rb +5 -0
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +75 -1
- data/lib/puppet/http/service/file_server.rb +2 -1
- data/lib/puppet/indirector/catalog/compiler.rb +25 -6
- data/lib/puppet/indirector/catalog/rest.rb +1 -0
- data/lib/puppet/indirector/facts/facter.rb +6 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/resource/ral.rb +6 -1
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/interface/documentation.rb +1 -0
- data/lib/puppet/module/plan.rb +0 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module.rb +1 -0
- data/lib/puppet/module_tool/applications/installer.rb +12 -4
- data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
- data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
- data/lib/puppet/module_tool/errors/shared.rb +17 -0
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/node/environment.rb +10 -11
- data/lib/puppet/pal/pal_impl.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/parser/resource.rb +1 -1
- data/lib/puppet/parser/scope.rb +1 -0
- data/lib/puppet/parser/templatewrapper.rb +1 -0
- data/lib/puppet/pops/evaluator/closure.rb +7 -5
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
- data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
- data/lib/puppet/pops/model/ast.rb +1 -0
- data/lib/puppet/pops/model/factory.rb +2 -1
- data/lib/puppet/pops/parser/eparser.rb +201 -201
- data/lib/puppet/pops/parser/lexer2.rb +92 -91
- data/lib/puppet/pops/parser/slurp_support.rb +1 -0
- data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
- data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
- data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
- data/lib/puppet/pops/types/type_formatter.rb +4 -3
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/provider/aix_object.rb +1 -1
- data/lib/puppet/provider/exec/posix.rb +16 -4
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/package/nim.rb +11 -6
- data/lib/puppet/provider/package/pip.rb +15 -3
- data/lib/puppet/provider/package/pkg.rb +19 -2
- data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -0
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/init.rb +5 -5
- data/lib/puppet/provider/service/launchd.rb +2 -2
- data/lib/puppet/provider/service/redhat.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +3 -3
- data/lib/puppet/provider/service/systemd.rb +15 -5
- data/lib/puppet/provider/service/upstart.rb +5 -5
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/aix.rb +44 -1
- data/lib/puppet/provider/user/directoryservice.rb +26 -13
- data/lib/puppet/provider/user/useradd.rb +72 -16
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/providers.rb +2 -2
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type_collection.rb +1 -0
- data/lib/puppet/resource.rb +38 -5
- data/lib/puppet/runtime.rb +11 -1
- data/lib/puppet/settings.rb +32 -9
- data/lib/puppet/test/test_helper.rb +4 -1
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +11 -1
- data/lib/puppet/transaction/report.rb +15 -1
- data/lib/puppet/type/exec.rb +35 -5
- data/lib/puppet/type/file/mode.rb +6 -0
- data/lib/puppet/type/file/selcontext.rb +1 -1
- data/lib/puppet/type/file.rb +25 -7
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/group.rb +0 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/service.rb +26 -41
- data/lib/puppet/type/tidy.rb +22 -3
- data/lib/puppet/type/user.rb +38 -21
- data/lib/puppet/type.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -1
- data/lib/puppet/util/filetype.rb +2 -2
- data/lib/puppet/util/json.rb +3 -0
- data/lib/puppet/util/log.rb +1 -2
- data/lib/puppet/util/logging.rb +1 -25
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/util/suidmanager.rb +1 -2
- data/lib/puppet/util/symbolic_file_mode.rb +29 -17
- data/lib/puppet/util/tagging.rb +1 -0
- data/lib/puppet/util/windows/service.rb +0 -5
- data/lib/puppet/util/windows/sid.rb +3 -1
- data/lib/puppet/util/windows/user.rb +0 -2
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util.rb +4 -3
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet.rb +5 -9
- data/locales/puppet.pot +408 -364
- data/man/man5/puppet.conf.5 +303 -275
- data/man/man8/puppet-agent.8 +4 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +9 -9
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +8 -8
- data/man/man8/puppet-filebucket.8 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +7 -7
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +3 -3
- data/man/man8/puppet-node.8 +5 -5
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +5 -5
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +4 -4
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
- data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
- data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/oid-key.pem +117 -0
- data/spec/fixtures/ssl/oid.pem +69 -0
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/integration/application/agent_spec.rb +141 -37
- data/spec/integration/application/filebucket_spec.rb +16 -0
- data/spec/integration/application/module_spec.rb +21 -0
- data/spec/integration/application/resource_spec.rb +64 -0
- data/spec/integration/application/ssl_spec.rb +20 -0
- data/spec/integration/configurer_spec.rb +18 -2
- data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
- data/spec/integration/indirector/facts/facter_spec.rb +93 -39
- data/spec/integration/l10n/compiler_spec.rb +37 -0
- data/spec/integration/parser/pcore_resource_spec.rb +10 -0
- data/spec/integration/transaction/report_spec.rb +1 -1
- data/spec/integration/type/exec_spec.rb +70 -45
- data/spec/integration/type/file_spec.rb +2 -2
- data/spec/integration/type/package_spec.rb +6 -6
- data/spec/integration/util/rdoc/parser_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +1 -9
- data/spec/lib/puppet/test_ca.rb +7 -2
- data/spec/lib/puppet_spec/modules.rb +13 -2
- data/spec/lib/puppet_spec/puppetserver.rb +15 -0
- data/spec/lib/puppet_spec/settings.rb +1 -0
- data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
- data/spec/shared_contexts/l10n.rb +27 -0
- data/spec/spec_helper.rb +1 -10
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/application/apply_spec.rb +76 -56
- data/spec/unit/application/resource_spec.rb +29 -0
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +256 -57
- data/spec/unit/defaults_spec.rb +1 -0
- data/spec/unit/environments_spec.rb +184 -0
- data/spec/unit/facter_impl_spec.rb +31 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
- data/spec/unit/file_serving/configuration_spec.rb +14 -4
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
- data/spec/unit/file_system_spec.rb +13 -0
- data/spec/unit/functions/assert_type_spec.rb +1 -1
- data/spec/unit/functions/empty_spec.rb +10 -0
- data/spec/unit/functions/logging_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +64 -0
- data/spec/unit/functions/unwrap_spec.rb +8 -0
- data/spec/unit/functions4_spec.rb +2 -2
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/client_spec.rb +58 -1
- data/spec/unit/http/service/compiler_spec.rb +131 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
- data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
- data/spec/unit/indirector/indirection_spec.rb +10 -3
- data/spec/unit/indirector/resource/ral_spec.rb +40 -75
- data/spec/unit/interface/action_spec.rb +0 -9
- data/spec/unit/module_spec.rb +15 -1
- data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
- data/spec/unit/network/authstore_spec.rb +0 -15
- data/spec/unit/network/formats_spec.rb +6 -0
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/parser/templatewrapper_spec.rb +12 -2
- data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
- data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +1 -1
- data/spec/unit/provider/package/nim_spec.rb +42 -0
- data/spec/unit/provider/package/pip2_spec.rb +1 -1
- data/spec/unit/provider/package/pip3_spec.rb +1 -1
- data/spec/unit/provider/package/pip_spec.rb +38 -1
- data/spec/unit/provider/package/pkg_spec.rb +29 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
- data/spec/unit/provider/parsedfile_spec.rb +10 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/launchd_spec.rb +11 -0
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/systemd_spec.rb +43 -9
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/provider/user/aix_spec.rb +100 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
- data/spec/unit/provider/user/useradd_spec.rb +43 -2
- data/spec/unit/provider_spec.rb +4 -4
- data/spec/unit/puppet_spec.rb +12 -4
- data/spec/unit/resource/catalog_spec.rb +14 -1
- data/spec/unit/resource_spec.rb +58 -2
- data/spec/unit/settings_spec.rb +97 -56
- data/spec/unit/ssl/certificate_request_spec.rb +8 -14
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/exec_spec.rb +76 -29
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/service_spec.rb +86 -188
- data/spec/unit/type/tidy_spec.rb +24 -7
- data/spec/unit/type/user_spec.rb +45 -0
- data/spec/unit/type_spec.rb +2 -2
- data/spec/unit/util/logging_spec.rb +2 -0
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/spec/unit/util/windows/sid_spec.rb +39 -4
- data/tasks/generate_cert_fixtures.rake +12 -3
- data/tasks/parallel.rake +3 -3
- metadata +49 -95
- data/ext/README.environment +0 -8
- data/ext/dbfix.sql +0 -132
- data/ext/debian/README.Debian +0 -8
- data/ext/debian/README.source +0 -2
- data/ext/debian/TODO.Debian +0 -1
- data/ext/debian/changelog.erb +0 -1122
- data/ext/debian/compat +0 -1
- data/ext/debian/control +0 -144
- data/ext/debian/copyright +0 -339
- data/ext/debian/docs +0 -1
- data/ext/debian/fileserver.conf +0 -41
- data/ext/debian/puppet-common.dirs +0 -13
- data/ext/debian/puppet-common.install +0 -3
- data/ext/debian/puppet-common.lintian-overrides +0 -5
- data/ext/debian/puppet-common.manpages +0 -28
- data/ext/debian/puppet-common.postinst +0 -35
- data/ext/debian/puppet-common.postrm +0 -33
- data/ext/debian/puppet-el.dirs +0 -1
- data/ext/debian/puppet-el.emacsen-install +0 -25
- data/ext/debian/puppet-el.emacsen-remove +0 -11
- data/ext/debian/puppet-el.emacsen-startup +0 -9
- data/ext/debian/puppet-el.install +0 -1
- data/ext/debian/puppet-testsuite.install +0 -2
- data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
- data/ext/debian/puppet.lintian-overrides +0 -3
- data/ext/debian/puppet.logrotate +0 -20
- data/ext/debian/puppet.postinst +0 -20
- data/ext/debian/puppet.postrm +0 -20
- data/ext/debian/puppet.preinst +0 -20
- data/ext/debian/puppetmaster-common.install +0 -2
- data/ext/debian/puppetmaster-common.manpages +0 -2
- data/ext/debian/puppetmaster-common.postinst +0 -6
- data/ext/debian/puppetmaster-passenger.dirs +0 -4
- data/ext/debian/puppetmaster-passenger.postinst +0 -162
- data/ext/debian/puppetmaster-passenger.postrm +0 -61
- data/ext/debian/puppetmaster.README.debian +0 -17
- data/ext/debian/puppetmaster.default +0 -14
- data/ext/debian/puppetmaster.init +0 -137
- data/ext/debian/puppetmaster.lintian-overrides +0 -3
- data/ext/debian/puppetmaster.postinst +0 -20
- data/ext/debian/puppetmaster.postrm +0 -5
- data/ext/debian/puppetmaster.preinst +0 -22
- data/ext/debian/rules +0 -132
- data/ext/debian/source/format +0 -1
- data/ext/debian/source/options +0 -1
- data/ext/debian/vim-puppet.README.Debian +0 -13
- data/ext/debian/vim-puppet.dirs +0 -5
- data/ext/debian/vim-puppet.yaml +0 -7
- data/ext/debian/watch +0 -2
- data/ext/freebsd/puppetd +0 -26
- data/ext/freebsd/puppetmasterd +0 -26
- data/ext/gentoo/conf.d/puppet +0 -5
- data/ext/gentoo/conf.d/puppetmaster +0 -12
- data/ext/gentoo/init.d/puppet +0 -38
- data/ext/gentoo/init.d/puppetmaster +0 -51
- data/ext/gentoo/puppet/fileserver.conf +0 -41
- data/ext/ips/puppet-agent +0 -44
- data/ext/ips/puppet-master +0 -44
- data/ext/ips/puppet.p5m.erb +0 -12
- data/ext/ips/puppetagent.xml +0 -42
- data/ext/ips/puppetmaster.xml +0 -42
- data/ext/ips/rules +0 -19
- data/ext/ips/transforms +0 -34
- data/ext/ldap/puppet.schema +0 -24
- data/ext/logcheck/puppet +0 -23
- data/ext/osx/file_mapping.yaml +0 -33
- data/ext/osx/postflight.erb +0 -109
- data/ext/osx/preflight.erb +0 -52
- data/ext/osx/prototype.plist.erb +0 -38
- data/ext/redhat/fileserver.conf +0 -41
- data/ext/redhat/logrotate +0 -21
- data/ext/redhat/puppet.spec.erb +0 -842
- data/ext/redhat/server.init +0 -128
- data/ext/redhat/server.sysconfig +0 -13
- data/ext/solaris/pkginfo +0 -6
- data/ext/solaris/smf/puppetd.xml +0 -77
- data/ext/solaris/smf/puppetmasterd.xml +0 -77
- data/ext/solaris/smf/svc-puppetd +0 -71
- data/ext/solaris/smf/svc-puppetmasterd +0 -67
- data/ext/suse/puppet.spec +0 -310
- data/ext/suse/server.init +0 -173
- data/ext/yaml_nodes.rb +0 -105
- data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Puppet::FacterImpl' do
|
4
|
+
subject(:facter_impl) { Puppet::FacterImpl.new }
|
5
|
+
|
6
|
+
it { is_expected.to respond_to(:value) }
|
7
|
+
it { is_expected.to respond_to(:add) }
|
8
|
+
|
9
|
+
describe '.value' do
|
10
|
+
let(:method_name) { :value }
|
11
|
+
|
12
|
+
before { allow(Facter).to receive(method_name) }
|
13
|
+
|
14
|
+
it 'delegates to Facter API' do
|
15
|
+
facter_impl.value('test_fact')
|
16
|
+
expect(Facter).to have_received(method_name).with('test_fact')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.add' do
|
21
|
+
let(:block) { Proc.new { setcode 'test' } }
|
22
|
+
let(:method_name) { :add }
|
23
|
+
|
24
|
+
before { allow(Facter).to receive(method_name) }
|
25
|
+
|
26
|
+
it 'delegates to Facter API' do
|
27
|
+
facter_impl.add('test_fact', &block)
|
28
|
+
expect(Facter).to have_received(method_name).with('test_fact', &block)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -104,8 +104,8 @@ describe Puppet::FileBucket::Dipper, :uses_checksums => true do
|
|
104
104
|
# Diff without the context
|
105
105
|
# Lines we need to see match 'Content' instead of trimming diff output filter out
|
106
106
|
# surrounding noise...or hard code the check values
|
107
|
-
if
|
108
|
-
Puppet::Util::Package.versioncmp(
|
107
|
+
if Puppet.runtime[:facter].value(:osfamily) == 'Solaris' &&
|
108
|
+
Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.0') >= 0
|
109
109
|
# Use gdiff on Solaris
|
110
110
|
diff12 = Puppet::Util::Execution.execute("gdiff -uN #{file1} #{file2}| grep Content")
|
111
111
|
diff21 = Puppet::Util::Execution.execute("gdiff -uN #{file2} #{file1}| grep Content")
|
@@ -155,6 +155,29 @@ describe Puppet::FileServing::Configuration::Parser do
|
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
158
|
+
describe Puppet::FileServing::Configuration::Parser, " when parsing the scripts mount" do
|
159
|
+
include FSConfigurationParserTesting
|
160
|
+
|
161
|
+
before do
|
162
|
+
@mount = double('scriptsmount', :name => "scripts", :validate => true)
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should create an instance of the Scripts Mount class" do
|
166
|
+
write_config_file "[scripts]\n"
|
167
|
+
|
168
|
+
expect(Puppet::FileServing::Mount::Scripts).to receive(:new).with("scripts").and_return(@mount)
|
169
|
+
@parser.parse
|
170
|
+
end
|
171
|
+
|
172
|
+
it "should warn if a path is set" do
|
173
|
+
write_config_file "[scripts]\npath /some/path\n"
|
174
|
+
expect(Puppet::FileServing::Mount::Scripts).to receive(:new).with("scripts").and_return(@mount)
|
175
|
+
|
176
|
+
expect(Puppet).to receive(:warning)
|
177
|
+
@parser.parse
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
158
181
|
describe Puppet::FileServing::Configuration::Parser, " when parsing the plugins mount" do
|
159
182
|
include FSConfigurationParserTesting
|
160
183
|
|
@@ -80,15 +80,16 @@ describe Puppet::FileServing::Configuration do
|
|
80
80
|
expect(config.mounted?("one")).to be_truthy
|
81
81
|
end
|
82
82
|
|
83
|
-
it "should add modules, plugins, and tasks mounts even if the file does not exist" do
|
83
|
+
it "should add modules, plugins, scripts, and tasks mounts even if the file does not exist" do
|
84
84
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
|
85
85
|
config = Puppet::FileServing::Configuration.configuration
|
86
86
|
expect(config.mounted?("modules")).to be_truthy
|
87
87
|
expect(config.mounted?("plugins")).to be_truthy
|
88
|
+
expect(config.mounted?("scripts")).to be_truthy
|
88
89
|
expect(config.mounted?("tasks")).to be_truthy
|
89
90
|
end
|
90
91
|
|
91
|
-
it "should allow all access to modules, plugins, and tasks if no fileserver.conf exists" do
|
92
|
+
it "should allow all access to modules, plugins, scripts, and tasks if no fileserver.conf exists" do
|
92
93
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
|
93
94
|
modules = double('modules', :empty? => true)
|
94
95
|
allow(Puppet::FileServing::Mount::Modules).to receive(:new).and_return(modules)
|
@@ -98,6 +99,10 @@ describe Puppet::FileServing::Configuration do
|
|
98
99
|
allow(Puppet::FileServing::Mount::Plugins).to receive(:new).and_return(plugins)
|
99
100
|
expect(plugins).to receive(:allow).with('*')
|
100
101
|
|
102
|
+
scripts = double('scripts', :empty? => true)
|
103
|
+
allow(Puppet::FileServing::Mount::Scripts).to receive(:new).and_return(scripts)
|
104
|
+
expect(scripts).to receive(:allow).with('*')
|
105
|
+
|
101
106
|
tasks = double('tasks', :empty? => true)
|
102
107
|
allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
|
103
108
|
expect(tasks).to receive(:allow).with('*')
|
@@ -105,7 +110,7 @@ describe Puppet::FileServing::Configuration do
|
|
105
110
|
Puppet::FileServing::Configuration.configuration
|
106
111
|
end
|
107
112
|
|
108
|
-
it "should not allow access from all to modules, plugins, and tasks if the fileserver.conf provided some rules" do
|
113
|
+
it "should not allow access from all to modules, plugins, scripts, and tasks if the fileserver.conf provided some rules" do
|
109
114
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
|
110
115
|
|
111
116
|
modules = double('modules', :empty? => false)
|
@@ -116,6 +121,10 @@ describe Puppet::FileServing::Configuration do
|
|
116
121
|
allow(Puppet::FileServing::Mount::Plugins).to receive(:new).and_return(plugins)
|
117
122
|
expect(plugins).not_to receive(:allow).with('*')
|
118
123
|
|
124
|
+
scripts = double('scripts', :empty? => false)
|
125
|
+
allow(Puppet::FileServing::Mount::Scripts).to receive(:new).and_return(scripts)
|
126
|
+
expect(scripts).not_to receive(:allow).with('*')
|
127
|
+
|
119
128
|
tasks = double('tasks', :empty? => false)
|
120
129
|
allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
|
121
130
|
expect(tasks).not_to receive(:allow).with('*')
|
@@ -123,12 +132,13 @@ describe Puppet::FileServing::Configuration do
|
|
123
132
|
Puppet::FileServing::Configuration.configuration
|
124
133
|
end
|
125
134
|
|
126
|
-
it "should add modules, plugins, and tasks mounts even if they are not returned by the parser" do
|
135
|
+
it "should add modules, plugins, scripts, and tasks mounts even if they are not returned by the parser" do
|
127
136
|
expect(@parser).to receive(:parse).and_return("one" => double("mount"))
|
128
137
|
expect(Puppet::FileSystem).to receive(:exist?).and_return(true) # the file doesn't exist
|
129
138
|
config = Puppet::FileServing::Configuration.configuration
|
130
139
|
expect(config.mounted?("modules")).to be_truthy
|
131
140
|
expect(config.mounted?("plugins")).to be_truthy
|
141
|
+
expect(config.mounted?("scripts")).to be_truthy
|
132
142
|
expect(config.mounted?("tasks")).to be_truthy
|
133
143
|
end
|
134
144
|
end
|
@@ -46,6 +46,13 @@ describe Puppet::FileServing::Fileset do
|
|
46
46
|
expect(set.recurselimit).to eq(3)
|
47
47
|
end
|
48
48
|
|
49
|
+
it "accepts a 'max_files' option" do
|
50
|
+
expect(Puppet::FileSystem).to receive(:lstat).with(somefile).and_return(double('stat'))
|
51
|
+
set = Puppet::FileServing::Fileset.new(somefile, :recurselimit => 3, :max_files => 100)
|
52
|
+
expect(set.recurselimit).to eq(3)
|
53
|
+
expect(set.max_files).to eq(100)
|
54
|
+
end
|
55
|
+
|
49
56
|
it "accepts an 'ignore' option" do
|
50
57
|
expect(Puppet::FileSystem).to receive(:lstat).with(somefile).and_return(double('stat'))
|
51
58
|
set = Puppet::FileServing::Fileset.new(somefile, :ignore => ".svn")
|
@@ -160,6 +167,29 @@ describe Puppet::FileServing::Fileset do
|
|
160
167
|
end
|
161
168
|
end
|
162
169
|
|
170
|
+
def mock_big_dir_structure(path, stat_method = :lstat)
|
171
|
+
allow(Puppet::FileSystem).to receive(stat_method).with(path).and_return(@dirstat)
|
172
|
+
|
173
|
+
# Keep track of the files we're stubbing.
|
174
|
+
@files = %w{.}
|
175
|
+
|
176
|
+
top_names = (1..10).map {|i| "dir_#{i}" }
|
177
|
+
sub_names = (1..100).map {|i| "file__#{i}" }
|
178
|
+
|
179
|
+
allow(Dir).to receive(:entries).with(path, encoding: Encoding::UTF_8).and_return(top_names)
|
180
|
+
top_names.each do |subdir|
|
181
|
+
@files << subdir # relative path
|
182
|
+
subpath = File.join(path, subdir)
|
183
|
+
allow(Puppet::FileSystem).to receive(stat_method).with(subpath).and_return(@dirstat)
|
184
|
+
allow(Dir).to receive(:entries).with(subpath, encoding: Encoding::UTF_8).and_return(sub_names)
|
185
|
+
sub_names.each do |file|
|
186
|
+
@files << File.join(subdir, file) # relative path
|
187
|
+
subfile_path = File.join(subpath, file)
|
188
|
+
allow(Puppet::FileSystem).to receive(stat_method).with(subfile_path).and_return(@filestat)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
163
193
|
def setup_mocks_for_dir(mock_dir, base_path)
|
164
194
|
path = File.join(base_path, mock_dir.name)
|
165
195
|
allow(Puppet::FileSystem).to receive(:lstat).with(path).and_return(MockStat.new(path, true))
|
@@ -258,6 +288,36 @@ describe Puppet::FileServing::Fileset do
|
|
258
288
|
expect(@fileset.files.find { |file| file.include?("0") }).to be_nil
|
259
289
|
end
|
260
290
|
|
291
|
+
it "raises exception if number of files is greater than :max_files" do
|
292
|
+
mock_dir_structure(@path)
|
293
|
+
@fileset.recurse = true
|
294
|
+
@fileset.max_files = 22
|
295
|
+
expect { @fileset.files }.to raise_error(Puppet::Error, "The directory '#{@path}' contains 28 entries, which exceeds the limit of 22 specified by the max_files parameter for this resource. The limit may be increased, but be aware that large number of file resources can result in excessive resource consumption and degraded performance. Consider using an alternate method to manage large directory trees")
|
296
|
+
end
|
297
|
+
|
298
|
+
it "logs a warning if number of files is greater than soft max_files limit of 1000" do
|
299
|
+
mock_big_dir_structure(@path)
|
300
|
+
@fileset.recurse = true
|
301
|
+
expect(Puppet).to receive(:warning).with("The directory '#{@path}' contains 1010 entries, which exceeds the default soft limit 1000 and may cause excessive resource consumption and degraded performance. To remove this warning set a value for `max_files` parameter or consider using an alternate method to manage large directory trees")
|
302
|
+
expect { @fileset.files }.to_not raise_error
|
303
|
+
end
|
304
|
+
|
305
|
+
it "does not emit a warning if max_files is -1" do
|
306
|
+
mock_big_dir_structure(@path)
|
307
|
+
@fileset.recurse = true
|
308
|
+
@fileset.max_files = -1
|
309
|
+
expect(Puppet).to receive(:warning).never
|
310
|
+
@fileset.files
|
311
|
+
end
|
312
|
+
|
313
|
+
it "does not emit a warning if max_files is `-1`(string)" do
|
314
|
+
mock_big_dir_structure(@path)
|
315
|
+
@fileset.recurse = true
|
316
|
+
@fileset.max_files = '-1'
|
317
|
+
expect(Puppet).to receive(:warning).never
|
318
|
+
@fileset.files
|
319
|
+
end
|
320
|
+
|
261
321
|
it "ignores files that match a pattern given as a boolean" do
|
262
322
|
mock_dir_structure(@path)
|
263
323
|
@fileset.recurse = true
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/file_serving/mount/scripts'
|
3
|
+
|
4
|
+
describe Puppet::FileServing::Mount::Scripts do
|
5
|
+
before do
|
6
|
+
@mount = Puppet::FileServing::Mount::Scripts.new("scripts")
|
7
|
+
|
8
|
+
@environment = double('environment', :module => nil)
|
9
|
+
@request = double('request', :environment => @environment)
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "when finding files" do
|
13
|
+
it "should fail if no module is specified" do
|
14
|
+
expect { @mount.find("", @request) }.to raise_error(/No module specified/)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should use the provided environment to find the module" do
|
18
|
+
expect(@environment).to receive(:module)
|
19
|
+
|
20
|
+
@mount.find("foo", @request)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should treat the first field of the relative path as the module name" do
|
24
|
+
expect(@environment).to receive(:module).with("foo")
|
25
|
+
@mount.find("foo/bar/baz", @request)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return nil if the specified module does not exist" do
|
29
|
+
expect(@environment).to receive(:module).with("foo")
|
30
|
+
@mount.find("foo/bar/baz", @request)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should return the file path from the module" do
|
34
|
+
mod = double('module')
|
35
|
+
expect(mod).to receive(:script).with("bar/baz").and_return("eh")
|
36
|
+
expect(@environment).to receive(:module).with("foo").and_return(mod)
|
37
|
+
expect(@mount.find("foo/bar/baz", @request)).to eq("eh")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "when searching for files" do
|
42
|
+
it "should fail if no module is specified" do
|
43
|
+
expect { @mount.search("", @request) }.to raise_error(/No module specified/)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should use the node's environment to search the module" do
|
47
|
+
expect(@environment).to receive(:module)
|
48
|
+
|
49
|
+
@mount.search("foo", @request)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should treat the first field of the relative path as the module name" do
|
53
|
+
expect(@environment).to receive(:module).with("foo")
|
54
|
+
@mount.search("foo/bar/baz", @request)
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return nil if the specified module does not exist" do
|
58
|
+
expect(@environment).to receive(:module).with("foo").and_return(nil)
|
59
|
+
@mount.search("foo/bar/baz", @request)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should return the script path as an array from the module" do
|
63
|
+
mod = double('module')
|
64
|
+
expect(mod).to receive(:script).with("bar/baz").and_return("eh")
|
65
|
+
expect(@environment).to receive(:module).with("foo").and_return(mod)
|
66
|
+
expect(@mount.search("foo/bar/baz", @request)).to eq(["eh"])
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -290,6 +290,19 @@ describe "Puppet::FileSystem" do
|
|
290
290
|
expect(Puppet::FileSystem.read_preserve_line_endings(file)).to eq("file content \r\nsecond line \n")
|
291
291
|
end
|
292
292
|
end
|
293
|
+
|
294
|
+
it "should ignore leading BOM" do
|
295
|
+
with_file_content("\uFEFFfile content \n") do |file|
|
296
|
+
expect(Puppet::FileSystem.read_preserve_line_endings(file)).to eq("file content \n")
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
300
|
+
it "should not warn about misusage of BOM with non-UTF encoding" do
|
301
|
+
allow(Encoding).to receive(:default_external).and_return(Encoding::US_ASCII)
|
302
|
+
with_file_content("file content \n") do |file|
|
303
|
+
expect{ Puppet::FileSystem.read_preserve_line_endings(file) }.not_to output(/BOM with non-UTF encoding US-ASCII is nonsense/).to_stderr
|
304
|
+
end
|
305
|
+
end
|
293
306
|
end
|
294
307
|
|
295
308
|
context "read without an encoding specified" do
|
@@ -28,7 +28,7 @@ describe 'the assert_type function' do
|
|
28
28
|
it 'checks that first argument is a type' do
|
29
29
|
expect do
|
30
30
|
func.call({}, 10, 10)
|
31
|
-
end.to raise_error(ArgumentError, "'assert_type' expects one of:
|
31
|
+
end.to raise_error(ArgumentError, "The function 'assert_type' was called with arguments it does not accept. It expects one of:
|
32
32
|
(Type type, Any value, Callable[Type, Type] block?)
|
33
33
|
rejected: parameter 'type' expects a Type value, got Integer
|
34
34
|
(String type_string, Any value, Callable[Type, Type] block?)
|
@@ -56,6 +56,16 @@ describe 'the empty function' do
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
+
context 'for a sensitive string it' do
|
60
|
+
it 'returns true when empty' do
|
61
|
+
expect(compile_to_catalog("notify { String(empty(Sensitive(''))): }")).to have_resource('Notify[true]')
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'returns false when not empty' do
|
65
|
+
expect(compile_to_catalog("notify { String(empty(Sensitive(' '))): }")).to have_resource('Notify[false]')
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
59
69
|
context 'for a binary it' do
|
60
70
|
it 'returns true when empty' do
|
61
71
|
expect(compile_to_catalog("notify { String(empty(Binary(''))): }")).to have_resource('Notify[true]')
|
@@ -870,6 +870,46 @@ describe "The lookup function" do
|
|
870
870
|
end
|
871
871
|
end
|
872
872
|
|
873
|
+
context 'with lookup_options' do
|
874
|
+
let(:environment_files) do
|
875
|
+
{
|
876
|
+
env_name => {
|
877
|
+
'hiera.yaml' => <<-YAML.unindent,
|
878
|
+
---
|
879
|
+
version: 5
|
880
|
+
YAML
|
881
|
+
'data' => {
|
882
|
+
'common.yaml' => common_yaml
|
883
|
+
}
|
884
|
+
}
|
885
|
+
}
|
886
|
+
end
|
887
|
+
|
888
|
+
context 'that are empty' do
|
889
|
+
let(:common_yaml) { <<-YAML.unindent }
|
890
|
+
lookup_options:
|
891
|
+
a: b
|
892
|
+
YAML
|
893
|
+
|
894
|
+
it 'ignores empty options' do
|
895
|
+
expect(lookup('a')).to eq("b")
|
896
|
+
end
|
897
|
+
end
|
898
|
+
|
899
|
+
context 'that contains a legal yaml hash with unexpected types' do
|
900
|
+
let(:common_yaml) { <<-YAML.unindent }
|
901
|
+
lookup_options:
|
902
|
+
:invalid_symbol
|
903
|
+
YAML
|
904
|
+
|
905
|
+
it 'fails lookup and reports a type mismatch' do
|
906
|
+
expect {
|
907
|
+
lookup('a')
|
908
|
+
}.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
|
909
|
+
end
|
910
|
+
end
|
911
|
+
end
|
912
|
+
|
873
913
|
context 'with lookup_options configured using patterns' do
|
874
914
|
let(:mod_common) {
|
875
915
|
<<-YAML.unindent
|
@@ -1019,6 +1059,30 @@ describe "The lookup function" do
|
|
1019
1059
|
})
|
1020
1060
|
end
|
1021
1061
|
|
1062
|
+
context 'and lookup_options is empty' do
|
1063
|
+
let(:mod_common) { <<-YAML.unindent }
|
1064
|
+
lookup_options:
|
1065
|
+
mod::a: b
|
1066
|
+
YAML
|
1067
|
+
|
1068
|
+
it 'ignores empty options' do
|
1069
|
+
expect(lookup('mod::a')).to eq("b")
|
1070
|
+
end
|
1071
|
+
end
|
1072
|
+
|
1073
|
+
context 'and lookup_options contains a legal hash with unexpected types' do
|
1074
|
+
let(:mod_common) { <<-YAML.unindent }
|
1075
|
+
lookup_options:
|
1076
|
+
:invalid_symbol
|
1077
|
+
YAML
|
1078
|
+
|
1079
|
+
it 'fails lookup and reports a type mismatch' do
|
1080
|
+
expect {
|
1081
|
+
lookup('mod::a')
|
1082
|
+
}.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
|
1083
|
+
end
|
1084
|
+
end
|
1085
|
+
|
1022
1086
|
context 'and patterns in module are not limited to module keys' do
|
1023
1087
|
let(:mod_common) {
|
1024
1088
|
<<-YAML.unindent
|
@@ -15,6 +15,14 @@ describe 'the unwrap function' do
|
|
15
15
|
expect(eval_and_collect_notices(code)).to eq(['unwrapped value is 12345'])
|
16
16
|
end
|
17
17
|
|
18
|
+
it 'just returns a non-sensitive value' do
|
19
|
+
code = <<-CODE
|
20
|
+
$non_sensitive = "12345"
|
21
|
+
notice("value is still ${non_sensitive.unwrap}")
|
22
|
+
CODE
|
23
|
+
expect(eval_and_collect_notices(code)).to eq(['value is still 12345'])
|
24
|
+
end
|
25
|
+
|
18
26
|
it 'unwraps a sensitive value when given a code block' do
|
19
27
|
code = <<-CODE
|
20
28
|
$sensitive = Sensitive.new("12345")
|
@@ -160,7 +160,7 @@ describe 'the 4x function api' do
|
|
160
160
|
expect(func.is_a?(Puppet::Functions::Function)).to be_truthy
|
161
161
|
expect do
|
162
162
|
func.call({}, 3, 10, 3, "4")
|
163
|
-
end.to raise_error(ArgumentError, "'min' expects one of:
|
163
|
+
end.to raise_error(ArgumentError, "The function 'min' was called with arguments it does not accept. It expects one of:
|
164
164
|
(Numeric x, Numeric y, Numeric a?, Numeric b?, Numeric c*)
|
165
165
|
rejected: parameter 'b' expects a Numeric value, got String
|
166
166
|
(String x, String y, String a+)
|
@@ -231,7 +231,7 @@ describe 'the 4x function api' do
|
|
231
231
|
expect(func.is_a?(Puppet::Functions::Function)).to be_truthy
|
232
232
|
expect do
|
233
233
|
func.call({}, 10, '20')
|
234
|
-
end.to raise_error(ArgumentError, "'min' expects one of:
|
234
|
+
end.to raise_error(ArgumentError, "The function 'min' was called with arguments it does not accept. It expects one of:
|
235
235
|
(Numeric a, Numeric b)
|
236
236
|
rejected: parameter 'b' expects a Numeric value, got String
|
237
237
|
(String s1, String s2)
|
@@ -27,6 +27,18 @@ describe Puppet::GettextConfig do
|
|
27
27
|
Puppet::GettextConfig.delete_all_text_domains
|
28
28
|
end
|
29
29
|
|
30
|
+
# These tests assume gettext is enabled, but it will be disabled when the
|
31
|
+
# first time the `Puppet[:disable_i18n]` setting is resolved
|
32
|
+
around(:each) do |example|
|
33
|
+
disabled = Puppet::GettextConfig.instance_variable_get(:@gettext_disabled)
|
34
|
+
Puppet::GettextConfig.instance_variable_set(:@gettext_disabled, false)
|
35
|
+
begin
|
36
|
+
example.run
|
37
|
+
ensure
|
38
|
+
Puppet::GettextConfig.instance_variable_set(:@gettext_disabled, disabled)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
30
42
|
describe 'setting and getting the locale' do
|
31
43
|
it 'should return "en" when gettext is unavailable' do
|
32
44
|
allow(Puppet::GettextConfig).to receive(:gettext_loaded?).and_return(false)
|
@@ -597,11 +597,68 @@ describe Puppet::HTTP::Client do
|
|
597
597
|
expect(response).to be_success
|
598
598
|
end
|
599
599
|
|
600
|
-
it "
|
600
|
+
it "does not preserve basic authorization when redirecting to different hosts" do
|
601
|
+
stub_request(:get, start_url).with(basic_auth: credentials).to_return(redirect_to(url: other_host))
|
602
|
+
stub_request(:get, other_host).to_return(status: 200)
|
603
|
+
|
604
|
+
client.get(start_url, options: {basic_auth: {user: 'user', password: 'pass'}})
|
605
|
+
expect(a_request(:get, other_host).
|
606
|
+
with{ |req| !req.headers.key?('Authorization')}).to have_been_made
|
607
|
+
end
|
608
|
+
|
609
|
+
it "does preserve basic authorization when redirecting to the same hosts" do
|
610
|
+
stub_request(:get, start_url).with(basic_auth: credentials).to_return(redirect_to(url: bar_url))
|
611
|
+
stub_request(:get, bar_url).with(basic_auth: credentials).to_return(status: 200)
|
612
|
+
|
613
|
+
client.get(start_url, options: {basic_auth: {user: 'user', password: 'pass'}})
|
614
|
+
expect(a_request(:get, bar_url).
|
615
|
+
with{ |req| req.headers.key?('Authorization')}).to have_been_made
|
616
|
+
end
|
617
|
+
|
618
|
+
it "does not preserve cookie header when redirecting to different hosts" do
|
619
|
+
headers = { 'Cookie' => 'TEST_COOKIE'}
|
620
|
+
|
621
|
+
stub_request(:get, start_url).with(headers: headers).to_return(redirect_to(url: other_host))
|
622
|
+
stub_request(:get, other_host).to_return(status: 200)
|
623
|
+
|
624
|
+
client.get(start_url, headers: headers)
|
625
|
+
expect(a_request(:get, other_host).
|
626
|
+
with{ |req| !req.headers.key?('Cookie')}).to have_been_made
|
627
|
+
end
|
628
|
+
|
629
|
+
it "does preserve cookie header when redirecting to the same hosts" do
|
630
|
+
headers = { 'Cookie' => 'TEST_COOKIE'}
|
631
|
+
|
632
|
+
stub_request(:get, start_url).with(headers: headers).to_return(redirect_to(url: bar_url))
|
633
|
+
stub_request(:get, bar_url).with(headers: headers).to_return(status: 200)
|
634
|
+
|
635
|
+
client.get(start_url, headers: headers)
|
636
|
+
expect(a_request(:get, bar_url).
|
637
|
+
with{ |req| req.headers.key?('Cookie')}).to have_been_made
|
638
|
+
end
|
639
|
+
|
640
|
+
it "does preserves cookie header and basic authentication when Puppet[:location_trusted] is true redirecting to different hosts" do
|
641
|
+
headers = { 'cookie' => 'TEST_COOKIE'}
|
642
|
+
Puppet[:location_trusted] = true
|
643
|
+
|
644
|
+
stub_request(:get, start_url).with(headers: headers, basic_auth: credentials).to_return(redirect_to(url: other_host))
|
645
|
+
stub_request(:get, other_host).with(headers: headers, basic_auth: credentials).to_return(status: 200)
|
646
|
+
|
647
|
+
client.get(start_url, headers: headers, options: {basic_auth: {user: 'user', password: 'pass'}})
|
648
|
+
expect(a_request(:get, other_host).
|
649
|
+
with{ |req| req.headers.key?('Authorization') && req.headers.key?('Cookie')}).to have_been_made
|
650
|
+
end
|
651
|
+
|
652
|
+
it "treats hosts as case-insensitive" do
|
653
|
+
start_url = URI("https://www.EXAmple.com:8140/Start")
|
654
|
+
bar_url = "https://www.example.com:8140/bar"
|
655
|
+
|
601
656
|
stub_request(:get, start_url).with(basic_auth: credentials).to_return(redirect_to(url: bar_url))
|
602
657
|
stub_request(:get, bar_url).with(basic_auth: credentials).to_return(status: 200)
|
603
658
|
|
604
659
|
client.get(start_url, options: {basic_auth: {user: 'user', password: 'pass'}})
|
660
|
+
expect(a_request(:get, bar_url).
|
661
|
+
with{ |req| req.headers.key?('Authorization')}).to have_been_made
|
605
662
|
end
|
606
663
|
|
607
664
|
it "redirects given a relative location" do
|