puppet 5.5.16-x64-mingw32 → 5.5.21-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +10 -10
- data/Gemfile +2 -3
- data/Gemfile.lock +57 -52
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- data/ext/project_data.yaml +2 -2
- data/ext/puppet-test +2 -2
- data/ext/regexp_nodes/regexp_nodes.rb +4 -4
- data/ext/windows/service/daemon.rb +54 -8
- data/install.rb +6 -24
- data/lib/puppet.rb +5 -2
- data/lib/puppet/agent.rb +5 -13
- data/lib/puppet/application.rb +1 -1
- data/lib/puppet/application/agent.rb +15 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- data/lib/puppet/application/device.rb +4 -4
- data/lib/puppet/application/doc.rb +1 -1
- data/lib/puppet/application/filebucket.rb +13 -0
- data/lib/puppet/application/lookup.rb +1 -1
- data/lib/puppet/application/resource.rb +4 -4
- data/lib/puppet/application/script.rb +2 -2
- data/lib/puppet/configurer.rb +86 -28
- data/lib/puppet/configurer/downloader.rb +2 -6
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +82 -38
- data/lib/puppet/error.rb +9 -1
- data/lib/puppet/external/nagios/base.rb +1 -1
- data/lib/puppet/face/ca.rb +1 -1
- data/lib/puppet/face/config.rb +10 -48
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/module/list.rb +5 -5
- data/lib/puppet/face/module/search.rb +1 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/module/upgrade.rb +1 -1
- data/lib/puppet/face/plugin.rb +9 -2
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_system.rb +0 -8
- data/lib/puppet/file_system/memory_file.rb +1 -1
- data/lib/puppet/file_system/posix.rb +3 -2
- data/lib/puppet/file_system/uniquefile.rb +4 -0
- data/lib/puppet/forge.rb +3 -3
- data/lib/puppet/functions/epp.rb +4 -4
- data/lib/puppet/functions/inline_epp.rb +5 -5
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph/rb_tree_map.rb +2 -2
- data/lib/puppet/graph/simple_graph.rb +6 -5
- data/lib/puppet/indirector/catalog/compiler.rb +8 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +2 -0
- data/lib/puppet/indirector/resource/ral.rb +1 -3
- data/lib/puppet/indirector/resource/validator.rb +1 -1
- data/lib/puppet/interface.rb +2 -1
- data/lib/puppet/loaders.rb +0 -1
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/applications/uninstaller.rb +3 -3
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/module_tool/shared_behaviors.rb +4 -4
- data/lib/puppet/module_tool/tar/mini.rb +12 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +13 -12
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/connection.rb +14 -12
- data/lib/puppet/network/http/factory.rb +1 -11
- data/lib/puppet/network/http/pool.rb +7 -1
- data/lib/puppet/network/http/rack/rest.rb +2 -2
- data/lib/puppet/network/http/site.rb +1 -1
- data/lib/puppet/network/resolver.rb +2 -2
- data/lib/puppet/node/environment.rb +4 -2
- data/lib/puppet/parameter.rb +8 -0
- data/lib/puppet/parser/ast.rb +1 -1
- data/lib/puppet/parser/ast/resourceparam.rb +1 -1
- 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 +3 -0
- data/lib/puppet/parser/functions.rb +1 -1
- data/lib/puppet/parser/functions/epp.rb +3 -3
- data/lib/puppet/parser/functions/inline_epp.rb +5 -5
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +1 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -2
- data/lib/puppet/pops/evaluator/runtime3_support.rb +4 -4
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loaders.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +1 -0
- data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
- data/lib/puppet/pops/merge_strategy.rb +22 -18
- data/lib/puppet/pops/parser/heredoc_support.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +4 -4
- data/lib/puppet/pops/parser/locator.rb +1 -1
- data/lib/puppet/pops/parser/pn_parser.rb +17 -16
- data/lib/puppet/pops/puppet_stack.rb +51 -48
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/string_converter.rb +10 -10
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/types/types.rb +3 -3
- data/lib/puppet/pops/validation/checker4_0.rb +10 -0
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/provider/augeas/augeas.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +1 -1
- data/lib/puppet/provider/exec.rb +6 -2
- data/lib/puppet/provider/file/posix.rb +5 -0
- data/lib/puppet/provider/group/groupadd.rb +19 -19
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mount.rb +1 -1
- data/lib/puppet/provider/mount/parsed.rb +8 -8
- data/lib/puppet/provider/nameservice.rb +10 -3
- data/lib/puppet/provider/nameservice/directoryservice.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +2 -2
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +14 -3
- data/lib/puppet/provider/package/dnf.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +141 -0
- data/lib/puppet/provider/package/dpkg.rb +16 -18
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/openbsd.rb +14 -2
- data/lib/puppet/provider/package/pip.rb +37 -10
- data/lib/puppet/provider/package/pkg.rb +18 -5
- 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 +4 -4
- data/lib/puppet/provider/package/rpm.rb +57 -19
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +35 -24
- data/lib/puppet/provider/package/zypper.rb +1 -0
- data/lib/puppet/provider/package_targetable.rb +5 -4
- data/lib/puppet/provider/parsedfile.rb +1 -1
- data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +3 -3
- data/lib/puppet/provider/selmodule/semodule.rb +43 -26
- data/lib/puppet/provider/service/daemontools.rb +9 -9
- data/lib/puppet/provider/service/launchd.rb +20 -5
- data/lib/puppet/provider/service/openbsd.rb +1 -1
- data/lib/puppet/provider/service/rcng.rb +2 -2
- data/lib/puppet/provider/service/runit.rb +2 -8
- data/lib/puppet/provider/service/systemd.rb +35 -22
- data/lib/puppet/provider/service/windows.rb +8 -0
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +12 -3
- data/lib/puppet/provider/user/user_role_add.rb +5 -1
- data/lib/puppet/provider/user/useradd.rb +62 -27
- data/lib/puppet/provider/user/windows_adsi.rb +4 -5
- data/lib/puppet/provider/yumrepo/inifile.rb +2 -2
- data/lib/puppet/reference/indirection.rb +2 -2
- data/lib/puppet/reference/metaparameter.rb +1 -3
- data/lib/puppet/reference/providers.rb +1 -1
- data/lib/puppet/reference/type.rb +3 -9
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/resource.rb +18 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/settings.rb +43 -3
- data/lib/puppet/settings/environment_conf.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/certificate_authority.rb +6 -5
- data/lib/puppet/ssl/certificate_authority/interface.rb +1 -1
- data/lib/puppet/ssl/certificate_factory.rb +2 -2
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/test/test_helper.rb +15 -10
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +15 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +21 -9
- data/lib/puppet/type/file.rb +14 -2
- data/lib/puppet/type/file/data_sync.rb +5 -1
- data/lib/puppet/type/group.rb +4 -2
- data/lib/puppet/type/interface.rb +1 -1
- data/lib/puppet/type/notify.rb +3 -2
- data/lib/puppet/type/package.rb +107 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +9 -10
- data/lib/puppet/type/user.rb +6 -24
- data/lib/puppet/type/yumrepo.rb +3 -7
- data/lib/puppet/util.rb +47 -25
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +4 -3
- data/lib/puppet/util/http_proxy.rb +24 -16
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/log.rb +1 -1
- data/lib/puppet/util/log/destinations.rb +3 -12
- data/lib/puppet/util/logging.rb +30 -18
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +1 -1
- data/lib/puppet/util/nagios_maker.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +1 -1
- data/lib/puppet/util/network_device/cisco/interface.rb +2 -2
- data/lib/puppet/util/network_device/transport/ssh.rb +1 -1
- data/lib/puppet/util/pidlock.rb +12 -6
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +2 -4
- data/lib/puppet/util/rdoc.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +8 -2
- data/lib/puppet/util/windows/adsi.rb +60 -30
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +16 -15
- data/lib/puppet/util/windows/registry.rb +17 -15
- data/lib/puppet/util/windows/security.rb +3 -0
- data/lib/puppet/util/windows/service.rb +149 -4
- data/lib/puppet/util/windows/sid.rb +4 -3
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +479 -443
- data/man/man5/puppet.conf.5 +38 -8
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-ca.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-cert.8 +1 -1
- data/man/man8/puppet-certificate.8 +1 -1
- data/man/man8/puppet-certificate_request.8 +1 -1
- data/man/man8/puppet-certificate_revocation_list.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 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +16 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-master.8 +1 -1
- data/man/man8/puppet-module.8 +1 -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-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/provider/mailalias/aliases/test1 +1 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -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/service/systemd/list_unit_files_services +9 -0
- data/spec/integration/configurer_spec.rb +52 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/provider/service/systemd_spec.rb +8 -5
- data/spec/integration/type/file_spec.rb +28 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/execution_spec.rb +27 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/agent_spec.rb +18 -0
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/device_spec.rb +1 -1
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +377 -397
- data/spec/unit/daemon_spec.rb +0 -1
- data/spec/unit/face/facts_spec.rb +9 -0
- data/spec/unit/face/plugin_spec.rb +8 -0
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/forge/forge_spec.rb +1 -3
- data/spec/unit/forge/repository_spec.rb +1 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +45 -26
- data/spec/unit/indirector/resource/ral_spec.rb +4 -4
- data/spec/unit/module_tool/tar/mini_spec.rb +1 -1
- data/spec/unit/network/http/api/indirected_routes_spec.rb +28 -11
- data/spec/unit/network/http/connection_spec.rb +43 -1
- data/spec/unit/network/http/factory_spec.rb +27 -5
- data/spec/unit/network/http/pool_spec.rb +32 -0
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +8 -3
- data/spec/unit/pops/validator/validator_spec.rb +7 -0
- data/spec/unit/provider/exec_spec.rb +209 -0
- data/spec/unit/provider/group/groupadd_spec.rb +30 -1
- 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 +13 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/aptrpm_spec.rb +1 -1
- data/spec/unit/provider/package/dnf_spec.rb +7 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +247 -0
- data/spec/unit/provider/package/dpkg_spec.rb +35 -7
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pip_spec.rb +93 -22
- data/spec/unit/provider/package/pkg_spec.rb +13 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +36 -0
- data/spec/unit/provider/package/portage_spec.rb +4 -4
- data/spec/unit/provider/package/rpm_spec.rb +150 -16
- data/spec/unit/provider/package/yum_spec.rb +66 -0
- data/spec/unit/provider/package/zypper_spec.rb +13 -0
- data/spec/unit/provider/package_targetable_spec.rb +60 -0
- data/spec/unit/provider/selmodule_spec.rb +118 -47
- data/spec/unit/provider/service/daemontools_spec.rb +24 -0
- data/spec/unit/provider/service/launchd_spec.rb +28 -0
- data/spec/unit/provider/service/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +109 -36
- data/spec/unit/provider/service/windows_spec.rb +20 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/hpux_spec.rb +2 -2
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +37 -0
- data/spec/unit/provider/user/useradd_spec.rb +122 -15
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/resource_spec.rb +26 -1
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction_spec.rb +18 -0
- data/spec/unit/type/exec_spec.rb +15 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file/source_spec.rb +4 -4
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/schedule_spec.rb +3 -1
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +25 -8
- data/spec/unit/type/user_spec.rb +32 -26
- data/spec/unit/type/yumrepo_spec.rb +30 -0
- data/spec/unit/type_spec.rb +40 -0
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +121 -1
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -112
- data/spec/unit/util/logging_spec.rb +200 -0
- data/spec/unit/util/pidlock_spec.rb +67 -40
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/windows/adsi_spec.rb +55 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +9 -0
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +18 -13
- data/ext/windows/eventlog/Rakefile +0 -32
- data/ext/windows/eventlog/puppetres.dll +0 -0
- data/ext/windows/eventlog/puppetres.mc +0 -18
- data/lib/puppet/pops/loader/null_loader.rb +0 -60
- data/locales/ja/puppet.po +0 -12114
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "TestHelper" do
|
4
|
+
context "#after_each_test" do
|
5
|
+
it "restores the original environment" do
|
6
|
+
varname = 'test_helper_spec-test_variable'
|
7
|
+
Puppet::Util.set_env(varname, "\u16A0")
|
8
|
+
|
9
|
+
expect(Puppet::Util.get_env(varname)).to eq("\u16A0")
|
10
|
+
|
11
|
+
# Prematurely trigger the after_each_test method
|
12
|
+
Puppet::Test::TestHelper.after_each_test
|
13
|
+
|
14
|
+
expect(Puppet::Util::get_env(varname)).to be_nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -778,6 +778,24 @@ describe Puppet::Transaction do
|
|
778
778
|
|
779
779
|
transaction.evaluate
|
780
780
|
end
|
781
|
+
|
782
|
+
it "should call Selinux.matchpathcon_fini in case Selinux is enabled ", :if => Puppet.features.posix? do
|
783
|
+
unless defined?(Selinux)
|
784
|
+
module Selinux
|
785
|
+
def self.is_selinux_enabled
|
786
|
+
true
|
787
|
+
end
|
788
|
+
end
|
789
|
+
end
|
790
|
+
|
791
|
+
resource = Puppet::Type.type(:file).new(:path => make_absolute("/tmp/foo"))
|
792
|
+
transaction = transaction_with_resource(resource)
|
793
|
+
|
794
|
+
expect(Selinux).to receive(:matchpathcon_fini)
|
795
|
+
expect(Puppet::Util::SELinux).to receive(:selinux_support?).and_return(true)
|
796
|
+
|
797
|
+
transaction.evaluate
|
798
|
+
end
|
781
799
|
end
|
782
800
|
|
783
801
|
describe 'when checking application run state' do
|
data/spec/unit/type/exec_spec.rb
CHANGED
@@ -150,16 +150,13 @@ RSpec.describe Puppet::Type.type(:exec) do
|
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
153
|
-
it "should redact the command on failure" do
|
153
|
+
it "should redact the sensitive command on failure" do
|
154
154
|
output = "output1\noutput2\n"
|
155
155
|
expect { exec_tester('false', 1, :output => output, :logoutput => :on_failure, :sensitive_parameters => [:command]).refresh }.
|
156
156
|
to raise_error(Puppet::Error, /^\[command redacted\] returned 1 instead of/)
|
157
157
|
|
158
|
-
|
159
|
-
|
160
|
-
expect(log.level).to eq(:err)
|
161
|
-
expect(log.message).to eq(line)
|
162
|
-
end
|
158
|
+
expect(@logs).to include(an_object_having_attributes(level: :err, message: '[output redacted]'))
|
159
|
+
expect(@logs).to_not include(an_object_having_attributes(message: /output1|output2/))
|
163
160
|
end
|
164
161
|
|
165
162
|
it "should log the output on failure when returns is specified as an array" do
|
@@ -177,7 +174,7 @@ RSpec.describe Puppet::Type.type(:exec) do
|
|
177
174
|
end
|
178
175
|
end
|
179
176
|
|
180
|
-
it "should redact the command on failure when returns is specified as an array" do
|
177
|
+
it "should redact the sensitive command on failure when returns is specified as an array" do
|
181
178
|
output = "output1\noutput2\n"
|
182
179
|
|
183
180
|
expect {
|
@@ -185,11 +182,8 @@ RSpec.describe Puppet::Type.type(:exec) do
|
|
185
182
|
:logoutput => :on_failure, :sensitive_parameters => [:command]).refresh
|
186
183
|
}.to raise_error(Puppet::Error, /^\[command redacted\] returned 1 instead of/)
|
187
184
|
|
188
|
-
|
189
|
-
|
190
|
-
expect(log.level).to eq(:err)
|
191
|
-
expect(log.message).to eq(line)
|
192
|
-
end
|
185
|
+
expect(@logs).to include(an_object_having_attributes(level: :err, message: '[output redacted]'))
|
186
|
+
expect(@logs).to_not include(an_object_having_attributes(message: /output1|output2/))
|
193
187
|
end
|
194
188
|
|
195
189
|
it "shouldn't log the output on success" do
|
@@ -755,6 +749,15 @@ RSpec.describe Puppet::Type.type(:exec) do
|
|
755
749
|
expect(@test.check_all_attributes).to eq(true)
|
756
750
|
expect(@logs.shift.message).to eq("test output")
|
757
751
|
end
|
752
|
+
|
753
|
+
it "should not emit output to debug if sensitive is true" do
|
754
|
+
Puppet::Util::Log.level = :debug
|
755
|
+
@test[param] = @fail
|
756
|
+
allow(@test.parameters[param]).to receive(:sensitive).and_return(true)
|
757
|
+
expect(@test.check_all_attributes).to eq(true)
|
758
|
+
expect(@logs).not_to include(an_object_having_attributes(level: :debug, message: "test output"))
|
759
|
+
expect(@logs).to include(an_object_having_attributes(level: :debug, message: "[output redacted]"))
|
760
|
+
end
|
758
761
|
end
|
759
762
|
end
|
760
763
|
end
|
@@ -200,15 +200,21 @@ describe Puppet::Type.type(:file).attrclass(:content), :uses_checksums => true d
|
|
200
200
|
end
|
201
201
|
|
202
202
|
it "prints the diff" do
|
203
|
-
expect(content).to receive(:diff).and_return("my diff")
|
204
|
-
expect(content).to receive(:debug).with("\nmy diff")
|
203
|
+
expect(content).to receive(:diff).and_return("my diff")
|
204
|
+
expect(content).to receive(:debug).with("\nmy diff")
|
205
|
+
expect(content).not_to be_safe_insync("other content")
|
206
|
+
end
|
207
|
+
|
208
|
+
it "prints binary file notice if diff is not valid encoding" do
|
209
|
+
expect(content).to receive(:diff).and_return("\xc7\xd1\xfc\x84")
|
210
|
+
expect(content).to receive(:debug).with(/\nBinary files #{filename} and .* differ/)
|
205
211
|
expect(content).not_to be_safe_insync("other content")
|
206
212
|
end
|
207
213
|
|
208
214
|
it "redacts the diff when the property is sensitive" do
|
209
215
|
content.sensitive = true
|
210
216
|
expect(content).not_to receive(:diff)
|
211
|
-
expect(content).to receive(:debug).with("[diff redacted]")
|
217
|
+
expect(content).to receive(:debug).with("[diff redacted]")
|
212
218
|
expect(content).not_to be_safe_insync("other content")
|
213
219
|
end
|
214
220
|
end
|
@@ -34,11 +34,11 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
34
34
|
it "should fail if the set values are not URLs" do
|
35
35
|
expect(URI).to receive(:parse).with('foo').and_raise(RuntimeError)
|
36
36
|
|
37
|
-
expect
|
37
|
+
expect { resource[:source] = %w{foo} }.to raise_error(Puppet::Error)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should fail if the URI is not a local file, file URI, or puppet URI" do
|
41
|
-
expect
|
41
|
+
expect { resource[:source] = %w{ftp://foo/bar} }.to raise_error(Puppet::Error, /Cannot use URLs of type 'ftp' as source for fileserving/)
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should strip trailing forward slashes", :unless => Puppet.features.microsoft_windows? do
|
@@ -61,11 +61,11 @@ describe Puppet::Type.type(:file).attrclass(:source), :uses_checksums => true do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should reject relative URI sources" do
|
64
|
-
expect
|
64
|
+
expect { resource[:source] = 'foo/bar' }.to raise_error(Puppet::Error)
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should reject opaque sources" do
|
68
|
-
expect
|
68
|
+
expect { resource[:source] = 'mailto:foo@com' }.to raise_error(Puppet::Error)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should accept URI authority component" do
|
data/spec/unit/type/file_spec.rb
CHANGED
@@ -477,6 +477,9 @@ describe Puppet::Type.type(:file) do
|
|
477
477
|
end
|
478
478
|
|
479
479
|
describe "#recurse" do
|
480
|
+
let(:name) { 'bar' }
|
481
|
+
let(:child) { double('puppet_type_file') }
|
482
|
+
|
480
483
|
before do
|
481
484
|
file[:recurse] = true
|
482
485
|
@metadata = Puppet::FileServing::Metadata
|
@@ -485,8 +488,9 @@ describe Puppet::Type.type(:file) do
|
|
485
488
|
describe "and a source is set" do
|
486
489
|
it "should pass the already-discovered resources to recurse_remote" do
|
487
490
|
file[:source] = File.expand_path(__FILE__)
|
488
|
-
allow(
|
489
|
-
|
491
|
+
allow(child).to receive(:[]).with(:path).and_return(name)
|
492
|
+
allow(file).to receive(:recurse_local).and_return(name => child)
|
493
|
+
expect(file).to receive(:recurse_remote).with(name => child).and_return([])
|
490
494
|
file.recurse
|
491
495
|
end
|
492
496
|
end
|
@@ -494,8 +498,9 @@ describe Puppet::Type.type(:file) do
|
|
494
498
|
describe "and a target is set" do
|
495
499
|
it "should use recurse_link" do
|
496
500
|
file[:target] = File.expand_path(__FILE__)
|
497
|
-
allow(
|
498
|
-
|
501
|
+
allow(child).to receive(:[]).with(:path).and_return(name)
|
502
|
+
allow(file).to receive(:recurse_local).and_return(name => child)
|
503
|
+
expect(file).to receive(:recurse_link).with(name => child).and_return([])
|
499
504
|
file.recurse
|
500
505
|
end
|
501
506
|
end
|
@@ -30,6 +30,10 @@ describe Puppet::Type.type(:package) do
|
|
30
30
|
expect(Puppet::Type.type(:package).provider_feature(:versionable)).not_to be_nil
|
31
31
|
end
|
32
32
|
|
33
|
+
it "should have a :supports_flavors feature" do
|
34
|
+
expect(Puppet::Type.type(:package).provider_feature(:supports_flavors)).not_to be_nil
|
35
|
+
end
|
36
|
+
|
33
37
|
it "should have a :package_settings feature that requires :package_settings_insync?, :package_settings and :package_settings=" do
|
34
38
|
expect(Puppet::Type.type(:package).provider_feature(:package_settings).methods).to eq([:package_settings_insync?, :package_settings, :package_settings=])
|
35
39
|
end
|
@@ -53,6 +57,10 @@ describe Puppet::Type.type(:package) do
|
|
53
57
|
it "should have a package_settings property" do
|
54
58
|
expect(Puppet::Type.type(:package).attrtype(:package_settings)).to eq(:property)
|
55
59
|
end
|
60
|
+
|
61
|
+
it "should have a flavor property" do
|
62
|
+
expect(Puppet::Type.type(:package).attrtype(:flavor)).to eq(:property)
|
63
|
+
end
|
56
64
|
end
|
57
65
|
|
58
66
|
describe "when validating attribute values" do
|
@@ -446,7 +446,9 @@ describe Puppet::Type.type(:schedule) do
|
|
446
446
|
|
447
447
|
it "should fail if the periodmatch is 'number'" do
|
448
448
|
@schedule[:periodmatch] = :number
|
449
|
-
expect
|
449
|
+
expect {
|
450
|
+
@schedule[:repeat] = 2
|
451
|
+
}.to raise_error(Puppet::Error)
|
450
452
|
end
|
451
453
|
|
452
454
|
it "should match if the previous run was further away than the distance divided by the repeat" do
|
@@ -24,12 +24,10 @@ describe Puppet::Type.type(:selboolean), "when validating values" do
|
|
24
24
|
allow(@provider_class).to receive(:new).and_return(@provider)
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
it "should support :off as a value to :value" do
|
32
|
-
Puppet::Type.type(:selboolean).new(:name => "yay", :value => :off)
|
27
|
+
[:on, :off, :true, :false, true, false].each do |val|
|
28
|
+
it "should support #{val.inspect} as a value to :value" do
|
29
|
+
Puppet::Type.type(:selboolean).new(:name => "yay", :value => val)
|
30
|
+
end
|
33
31
|
end
|
34
32
|
|
35
33
|
it "should support :true as a value to :persistent" do
|
@@ -75,6 +75,13 @@ describe Puppet::Type.type(:service), "when validating attribute values" do
|
|
75
75
|
expect(srv.should(:enable)).to eq(:manual)
|
76
76
|
end
|
77
77
|
|
78
|
+
it "should support :delayed as a value on Windows" do
|
79
|
+
allow(Puppet.features).to receive(:microsoft_windows?).and_return(true)
|
80
|
+
|
81
|
+
srv = Puppet::Type.type(:service).new(:name => "yay", :enable => :delayed)
|
82
|
+
expect(srv.should(:enable)).to eq(:delayed)
|
83
|
+
end
|
84
|
+
|
78
85
|
it "should not support :manual as a value when not on Windows" do
|
79
86
|
allow(Puppet.features).to receive(:microsoft_windows?).and_return(false)
|
80
87
|
|
@@ -83,6 +90,15 @@ describe Puppet::Type.type(:service), "when validating attribute values" do
|
|
83
90
|
/Setting enable to manual is only supported on Microsoft Windows\./
|
84
91
|
)
|
85
92
|
end
|
93
|
+
|
94
|
+
it "should not support :delayed as a value when not on Windows" do
|
95
|
+
allow(Puppet.features).to receive(:microsoft_windows?).and_return(false)
|
96
|
+
|
97
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :enable => :delayed) }.to raise_error(
|
98
|
+
Puppet::Error,
|
99
|
+
/Setting enable to delayed is only supported on Microsoft Windows\./
|
100
|
+
)
|
101
|
+
end
|
86
102
|
end
|
87
103
|
|
88
104
|
it "should support :true as a value to :hasstatus" do
|
@@ -218,20 +234,21 @@ describe Puppet::Type.type(:service), "when changing the host" do
|
|
218
234
|
@service.property(:enable).sync
|
219
235
|
end
|
220
236
|
|
221
|
-
it "should
|
237
|
+
it "should let superclass implementation resolve insyncness when provider does not respond to the 'enabled_insync?' method" do
|
222
238
|
allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
|
223
|
-
|
224
|
-
@service
|
225
|
-
|
239
|
+
@service[:enable] = true
|
240
|
+
allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?).and_return(false)
|
241
|
+
|
226
242
|
expect(@service.property(:enable).insync?(:true)).to eq(true)
|
227
243
|
end
|
228
244
|
|
229
|
-
it "should
|
245
|
+
it "insyncness should be resolved by provider instead of superclass implementation when provider responds to the 'enabled_insync?' method" do
|
230
246
|
allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
|
231
|
-
expect(@service.provider).to receive(:cached_enabled?).and_return('true')
|
232
247
|
@service[:enable] = true
|
233
|
-
|
234
|
-
|
248
|
+
allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?).and_return(true)
|
249
|
+
allow(@service.provider).to receive(:enabled_insync?).and_return(false)
|
250
|
+
|
251
|
+
expect(@service.property(:enable).insync?(:true)).to eq(false)
|
235
252
|
end
|
236
253
|
|
237
254
|
it "should sync the service's enable state when changing the state of :ensure if :enable is being managed" do
|
data/spec/unit/type/user_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# encoding:
|
1
|
+
# encoding: utf-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Puppet::Type.type(:user) do
|
@@ -323,24 +323,24 @@ describe Puppet::Type.type(:user) do
|
|
323
323
|
end
|
324
324
|
|
325
325
|
describe "when managing passwords" do
|
326
|
-
|
327
|
-
|
328
|
-
|
326
|
+
let(:transaction) { Puppet::Transaction.new(Puppet::Resource::Catalog.new, nil, nil) }
|
327
|
+
let(:harness) { Puppet::Transaction::ResourceHarness.new(transaction) }
|
328
|
+
let(:provider) { @provider_class.new(:name => 'foo', :ensure => :present) }
|
329
|
+
let(:resource) { described_class.new(:name => 'foo', :ensure => :present, :password => 'top secret', :provider => provider) }
|
329
330
|
|
330
331
|
it "should not include the password in the change log when adding the password" do
|
331
|
-
|
332
|
+
status = harness.evaluate(resource)
|
333
|
+
sync_event = status.events[0]
|
334
|
+
expect(sync_event.message).not_to include('top secret')
|
335
|
+
expect(sync_event.message).to eql('changed [redacted] to [redacted]')
|
332
336
|
end
|
333
337
|
|
334
338
|
it "should not include the password in the change log when changing the password" do
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
expect(
|
340
|
-
end
|
341
|
-
|
342
|
-
it "should redact the password when displaying the new value" do
|
343
|
-
expect(@password.should_to_s("newpassword")).to match(/^\[new password hash redacted\]$/)
|
339
|
+
resource[:password] = 'super extra classified'
|
340
|
+
status = harness.evaluate(resource)
|
341
|
+
sync_event = status.events[0]
|
342
|
+
expect(sync_event.message).not_to include('super extra classified')
|
343
|
+
expect(sync_event.message).to eql('changed [redacted] to [redacted]')
|
344
344
|
end
|
345
345
|
|
346
346
|
it "should fail if a ':' is included in the password" do
|
@@ -484,22 +484,20 @@ describe Puppet::Type.type(:user) do
|
|
484
484
|
end
|
485
485
|
|
486
486
|
context "with no home directory specified" do
|
487
|
-
|
488
|
-
|
489
|
-
described_class.new(:name => "a", :purge_ssh_keys => true)
|
490
|
-
}.to raise_error(Puppet::Error, /purge_ssh_keys can only be true for users with a defined home directory/)
|
487
|
+
before(:each) do
|
488
|
+
allow(Dir).to receive(:home).with('a').and_return('/home/a')
|
491
489
|
end
|
492
490
|
|
493
|
-
it "should
|
494
|
-
|
495
|
-
described_class.new(:name => "a", :purge_ssh_keys => "~/keys")
|
496
|
-
}.to raise_error(Puppet::Error, /meta character ~ or %h only allowed for users with a defined home directory/)
|
491
|
+
it "should accept true" do
|
492
|
+
described_class.new(:name => "a", :purge_ssh_keys => true)
|
497
493
|
end
|
498
494
|
|
499
|
-
it "should
|
500
|
-
|
501
|
-
|
502
|
-
|
495
|
+
it "should accept the ~ wildcard" do
|
496
|
+
described_class.new(:name => "a", :purge_ssh_keys => "~/keys")
|
497
|
+
end
|
498
|
+
|
499
|
+
it "should accept the %h wildcard" do
|
500
|
+
described_class.new(:name => "a", :purge_ssh_keys => "%h/keys")
|
503
501
|
end
|
504
502
|
end
|
505
503
|
|
@@ -508,6 +506,10 @@ describe Puppet::Type.type(:user) do
|
|
508
506
|
[ "/dev/null", "/tmp/keyfile" ].map { |path| File.expand_path(path) }
|
509
507
|
end
|
510
508
|
|
509
|
+
before(:each) do
|
510
|
+
allow(Dir).to receive(:home).with('test').and_return('/home/test')
|
511
|
+
end
|
512
|
+
|
511
513
|
subject do
|
512
514
|
res = described_class.new(:name => "test", :purge_ssh_keys => paths)
|
513
515
|
res.catalog = Puppet::Resource::Catalog.new
|
@@ -534,6 +536,10 @@ describe Puppet::Type.type(:user) do
|
|
534
536
|
res
|
535
537
|
end
|
536
538
|
|
539
|
+
before(:each) do
|
540
|
+
allow(Dir).to receive(:home).with('test_user_name').and_return('/home/test_user_name')
|
541
|
+
end
|
542
|
+
|
537
543
|
context "when purging is disabled" do
|
538
544
|
let(:purge_param) { false }
|
539
545
|
|
@@ -329,6 +329,36 @@ describe Puppet::Type.type(:yumrepo) do
|
|
329
329
|
|
330
330
|
describe "proxy_password" do
|
331
331
|
it_behaves_like "a yumrepo parameter that can be absent", :proxy_password
|
332
|
+
|
333
|
+
context "for password information in the logs" do
|
334
|
+
let(:transaction) { Puppet::Transaction.new(Puppet::Resource::Catalog.new, nil, nil) }
|
335
|
+
let(:harness) { Puppet::Transaction::ResourceHarness.new(transaction) }
|
336
|
+
let(:provider_class) { described_class.provide(:simple) do
|
337
|
+
mk_resource_methods
|
338
|
+
def create; end
|
339
|
+
def delete; end
|
340
|
+
def exists?; get(:ensure) != :absent; end
|
341
|
+
def flush; end
|
342
|
+
def self.instances; []; end
|
343
|
+
end
|
344
|
+
}
|
345
|
+
let(:provider) { provider_class.new(:name => 'foo', :ensure => :present) }
|
346
|
+
let(:resource) { described_class.new(:name => 'puppetlabs', :proxy_password => 'top secret', :provider => provider) }
|
347
|
+
|
348
|
+
it "redacts on creation" do
|
349
|
+
status = harness.evaluate(resource)
|
350
|
+
sync_event = status.events[0]
|
351
|
+
expect(sync_event.message).to eq 'changed [redacted] to [redacted]'
|
352
|
+
end
|
353
|
+
|
354
|
+
it "redacts on update" do
|
355
|
+
harness.evaluate(resource)
|
356
|
+
resource[:proxy_password] = 'super classified'
|
357
|
+
status = harness.evaluate(resource)
|
358
|
+
sync_event = status.events[0]
|
359
|
+
expect(sync_event.message).to eq 'changed [redacted] to [redacted]'
|
360
|
+
end
|
361
|
+
end
|
332
362
|
end
|
333
363
|
|
334
364
|
describe "s3_enabled" do
|
data/spec/unit/type_spec.rb
CHANGED
@@ -735,6 +735,46 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
735
735
|
end
|
736
736
|
end
|
737
737
|
|
738
|
+
describe "#set_sensitive_parameters" do
|
739
|
+
let(:sensitive_type) do
|
740
|
+
Puppet::Type.newtype(:sensitive_test) do
|
741
|
+
newparam(:name) { isnamevar }
|
742
|
+
newproperty(:secret) do
|
743
|
+
newvalues(/.*/)
|
744
|
+
sensitive true
|
745
|
+
end
|
746
|
+
newproperty(:transparency) do
|
747
|
+
newvalues(/.*/)
|
748
|
+
sensitive false
|
749
|
+
end
|
750
|
+
newproperty(:things) { newvalues(/.*/) }
|
751
|
+
end
|
752
|
+
end
|
753
|
+
|
754
|
+
it "should mark properties as sensitive" do
|
755
|
+
resource = sensitive_type.new(:name => 'foo', :secret => 'uber classified')
|
756
|
+
expect(resource.parameters[:secret].sensitive).to be true
|
757
|
+
end
|
758
|
+
|
759
|
+
it "should not have a sensitive flag when not set" do
|
760
|
+
resource = sensitive_type.new(:name => 'foo', :things => '1337')
|
761
|
+
expect(resource.parameters[:things].sensitive).to be_nil
|
762
|
+
end
|
763
|
+
|
764
|
+
it "should define things as not sensitive" do
|
765
|
+
resource = sensitive_type.new(:name => 'foo', :transparency => 'public knowledge')
|
766
|
+
expect(resource.parameters[:transparency].sensitive).to be false
|
767
|
+
end
|
768
|
+
|
769
|
+
it "should honor when sensitivity is set in a manifest" do
|
770
|
+
resource = sensitive_type.new(:name => 'foo',
|
771
|
+
:transparency => Puppet::Pops::Types::PSensitiveType::Sensitive.new('top secret'),
|
772
|
+
:sensitive_parameters => [:transparency]
|
773
|
+
)
|
774
|
+
expect(resource.parameters[:transparency].sensitive).to be true
|
775
|
+
end
|
776
|
+
end
|
777
|
+
|
738
778
|
describe "when #finish is called on a type" do
|
739
779
|
let(:post_hook_type) do
|
740
780
|
Puppet::Type.newtype(:finish_test) do
|