puppet 5.5.17-x64-mingw32 → 5.5.22-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 +1 -1
- data/Gemfile +4 -5
- data/Gemfile.lock +59 -55
- data/ext/build_defaults.yaml +1 -0
- data/ext/cert_inspector +3 -3
- 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 -6
- 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 +3 -1
- data/lib/puppet/application/apply.rb +2 -2
- data/lib/puppet/application/describe.rb +3 -9
- 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/script.rb +2 -2
- data/lib/puppet/configurer.rb +106 -31
- data/lib/puppet/configurer/downloader.rb +33 -16
- data/lib/puppet/daemon.rb +1 -1
- data/lib/puppet/defaults.rb +86 -40
- 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/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/file_serving/http_metadata.rb +1 -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_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/new.rb +8 -3
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/step.rb +1 -1
- 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 +6 -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 +1 -1
- 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/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 +11 -3
- 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 +14 -10
- 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/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
- 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/iterable.rb +34 -8
- data/lib/puppet/pops/types/p_meta_type.rb +1 -1
- data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
- data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
- 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 +29 -15
- 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/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/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/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/gem.rb +4 -2
- 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/puppet_gem.rb +5 -0
- data/lib/puppet/provider/package/rpm.rb +6 -6
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +28 -20
- 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/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 +31 -13
- data/lib/puppet/provider/user/directoryservice.rb +31 -6
- data/lib/puppet/provider/user/hpux.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +39 -20
- 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 +1 -1
- data/lib/puppet/resource/catalog.rb +1 -1
- data/lib/puppet/resource/type.rb +10 -1
- data/lib/puppet/settings.rb +3 -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 +20 -12
- data/lib/puppet/transaction/report.rb +1 -1
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +8 -4
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/exec.rb +7 -3
- 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 +97 -8
- data/lib/puppet/type/schedule.rb +1 -1
- data/lib/puppet/type/selboolean.rb +17 -3
- data/lib/puppet/type/service.rb +2 -8
- data/lib/puppet/type/user.rb +5 -9
- data/lib/puppet/util.rb +35 -12
- data/lib/puppet/util/autoload.rb +9 -7
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +8 -14
- 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 +3 -1
- 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 +1 -0
- data/lib/puppet/util/windows/sid.rb +3 -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 +362 -318
- data/man/man5/puppet.conf.5 +39 -9
- 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 +66 -0
- data/spec/integration/data_binding_spec.rb +1 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/faces/plugin_spec.rb +29 -47
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/notify_spec.rb +46 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/shared_contexts/types_setup.rb +2 -0
- data/spec/unit/agent_spec.rb +34 -26
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +0 -4
- data/spec/unit/configurer_spec.rb +430 -415
- data/spec/unit/daemon_spec.rb +0 -1
- 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_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/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +43 -1
- 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/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/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/puppet_gem_spec.rb +4 -1
- data/spec/unit/provider/package/yum_spec.rb +90 -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/runit_spec.rb +24 -0
- data/spec/unit/provider/service/systemd_spec.rb +109 -36
- 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/useradd_spec.rb +81 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +3 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +2 -3
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +2 -0
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/type/exec_spec.rb +6 -12
- data/spec/unit/type/file/content_spec.rb +9 -3
- data/spec/unit/type/file_spec.rb +9 -4
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/selboolean_spec.rb +4 -6
- data/spec/unit/type/service_spec.rb +9 -8
- data/spec/unit/type/user_spec.rb +19 -13
- data/spec/unit/util/execution_spec.rb +16 -0
- data/spec/unit/util/http_proxy_spec.rb +97 -0
- data/spec/unit/util/log/destinations_spec.rb +2 -26
- data/spec/unit/util/log_spec.rb +0 -138
- 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/sid_spec.rb +2 -2
- data/tasks/manpages.rake +1 -0
- metadata +16 -7
- 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
| @@ -196,6 +196,17 @@ describe Puppet::Type.type(:user).provider(:directoryservice) do | |
| 196 196 | 
             
                }
         | 
| 197 197 | 
             
              end
         | 
| 198 198 |  | 
| 199 | 
            +
              let (:dsimport_preamble) do
         | 
| 200 | 
            +
                '0x0A 0x5C 0x3A 0x2C dsRecTypeStandard:Users 2 dsAttrTypeStandard:RecordName base64:dsAttrTypeNative:ShadowHashData'
         | 
| 201 | 
            +
              end
         | 
| 202 | 
            +
             | 
| 203 | 
            +
              let (:dsimport_contents) do
         | 
| 204 | 
            +
                <<-DSIMPORT
         | 
| 205 | 
            +
            #{dsimport_preamble}
         | 
| 206 | 
            +
            #{username}:#{Base64.strict_encode64(sha512_embedded_bplist)}
         | 
| 207 | 
            +
                DSIMPORT
         | 
| 208 | 
            +
              end
         | 
| 209 | 
            +
             | 
| 199 210 | 
             
              # The below represents output of 'dscl -plist . readall /Users' converted to
         | 
| 200 211 | 
             
              # a native Ruby hash if only one user were installed on the system.
         | 
| 201 212 | 
             
              # This lets us check the behavior of all the methods necessary to return a
         | 
| @@ -960,6 +971,24 @@ end | |
| 960 971 | 
             
                end
         | 
| 961 972 | 
             
              end
         | 
| 962 973 |  | 
| 974 | 
            +
              describe '#set_shadow_hash_data' do
         | 
| 975 | 
            +
                let(:users_plist) { {'ShadowHashData' => ['string_data'] } }
         | 
| 976 | 
            +
             | 
| 977 | 
            +
                it 'should flush the plist data to disk on OS X < 10.15' do
         | 
| 978 | 
            +
                  allow(provider.class).to receive(:get_os_version).and_return('10.12')
         | 
| 979 | 
            +
             | 
| 980 | 
            +
                  expect(provider).to receive(:write_users_plist_to_disk)
         | 
| 981 | 
            +
                  provider.set_shadow_hash_data(users_plist, pbkdf2_embedded_plist)
         | 
| 982 | 
            +
                end
         | 
| 983 | 
            +
             | 
| 984 | 
            +
                it 'should flush the plist data a temporary file on OS X >= 10.15' do
         | 
| 985 | 
            +
                  allow(provider.class).to receive(:get_os_version).and_return('10.15')
         | 
| 986 | 
            +
             | 
| 987 | 
            +
                  expect(provider).to receive(:write_and_import_shadow_hash_data)
         | 
| 988 | 
            +
                  provider.set_shadow_hash_data(users_plist, pbkdf2_embedded_plist)
         | 
| 989 | 
            +
                end
         | 
| 990 | 
            +
              end
         | 
| 991 | 
            +
             | 
| 963 992 | 
             
              describe '#set_salted_pbkdf2' do
         | 
| 964 993 | 
             
                let(:users_plist) { {'ShadowHashData' => ['string_data'] } }
         | 
| 965 994 | 
             
                let(:entropy_shadow_hash_data) do
         | 
| @@ -1011,6 +1040,18 @@ end | |
| 1011 1040 | 
             
                end
         | 
| 1012 1041 | 
             
              end
         | 
| 1013 1042 |  | 
| 1043 | 
            +
              describe '#write_and_import_shadow_hash_data' do
         | 
| 1044 | 
            +
                it 'should save the passed plist to a temporary file and import it' do
         | 
| 1045 | 
            +
                  tmpfile = double('tempfile', :path => "/tmp/dsimport_#{username}", :flush => nil)
         | 
| 1046 | 
            +
                  allow(Tempfile).to receive(:create).and_yield(tmpfile)
         | 
| 1047 | 
            +
                  allow(provider).to receive(:dscl).with('.', 'delete', user_path, 'ShadowHashData')
         | 
| 1048 | 
            +
             | 
| 1049 | 
            +
                  expect(tmpfile).to receive(:write).with(dsimport_contents)
         | 
| 1050 | 
            +
                  expect(provider).to receive(:dsimport).with(tmpfile.path, '/Local/Default', 'M')
         | 
| 1051 | 
            +
                  provider.write_and_import_shadow_hash_data(sha512_embedded_bplist)
         | 
| 1052 | 
            +
                end
         | 
| 1053 | 
            +
              end
         | 
| 1054 | 
            +
             | 
| 1014 1055 | 
             
              describe '#merge_attribute_with_dscl' do
         | 
| 1015 1056 | 
             
                it 'should raise an error if a dscl command raises an error' do
         | 
| 1016 1057 | 
             
                  expect(provider).to receive(:dscl).with('.', '-merge', user_path, 'GeneratedUID', 'GUID').and_raise(Puppet::ExecutionFailure, 'boom')
         | 
| @@ -56,14 +56,14 @@ describe Puppet::Type.type(:user).provider(:hpuxuseradd), :unless => Puppet.feat | |
| 56 56 | 
             
                it "should add modprpw to modifycmd if Trusted System" do
         | 
| 57 57 | 
             
                  allow(resource).to receive(:allowdupe?).and_return(true)
         | 
| 58 58 | 
             
                  expect(provider).to receive(:exec_getprpw).with('root','-m uid').and_return('uid=0')
         | 
| 59 | 
            -
                  expect(provider).to receive(:execute).with(['/usr/sam/lbin/usermod.sam', '-u', 1000, '-o', 'testuser', ' | 
| 59 | 
            +
                  expect(provider).to receive(:execute).with(['/usr/sam/lbin/usermod.sam', '-F', '-u', 1000, '-o', 'testuser', ';', '/usr/lbin/modprpw', '-v', '-l', 'testuser'], hash_including(custom_environment: {}))
         | 
| 60 60 | 
             
                  provider.uid = 1000
         | 
| 61 61 | 
             
                end
         | 
| 62 62 |  | 
| 63 63 | 
             
                it "should not add modprpw if not Trusted System" do
         | 
| 64 64 | 
             
                  allow(resource).to receive(:allowdupe?).and_return(true)
         | 
| 65 65 | 
             
                  expect(provider).to receive(:exec_getprpw).with('root','-m uid').and_return('System is not trusted')
         | 
| 66 | 
            -
                  expect(provider).to receive(:execute).with(['/usr/sam/lbin/usermod.sam', '-u', 1000, '-o', 'testuser' | 
| 66 | 
            +
                  expect(provider).to receive(:execute).with(['/usr/sam/lbin/usermod.sam', '-F', '-u', 1000, '-o', 'testuser'], hash_including(custom_environment: {}))
         | 
| 67 67 | 
             
                  provider.uid = 1000
         | 
| 68 68 | 
             
                end
         | 
| 69 69 | 
             
              end
         | 
| @@ -45,6 +45,7 @@ describe Puppet::Type.type(:user).provider(:openbsd) do | |
| 45 45 | 
             
              describe "#addcmd" do
         | 
| 46 46 | 
             
                it "should return an array with the full command and expiry as MM/DD/YY" do
         | 
| 47 47 | 
             
                  allow(Facter).to receive(:value).with(:osfamily).and_return('OpenBSD')
         | 
| 48 | 
            +
                  allow(Facter).to receive(:value).with(:operatingsystemmajrelease)
         | 
| 48 49 | 
             
                  resource[:expiry] = "1997-06-01"
         | 
| 49 50 | 
             
                  expect(provider.addcmd).to eq(['/usr/sbin/useradd', '-e', 'June 01 1997', 'myuser'])
         | 
| 50 51 | 
             
                end
         | 
| @@ -72,20 +72,24 @@ describe Puppet::Type.type(:user).provider(:useradd) do | |
| 72 72 | 
             
                  provider.create
         | 
| 73 73 | 
             
                end
         | 
| 74 74 |  | 
| 75 | 
            -
                 | 
| 76 | 
            -
                   | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 75 | 
            +
                context "when setting groups" do
         | 
| 76 | 
            +
                  it "uses -G to set groups" do
         | 
| 77 | 
            +
                    allow(Facter).to receive(:value).with(:osfamily).and_return('Solaris')
         | 
| 78 | 
            +
                    allow(Facter).to receive(:value).with(:operatingsystemmajrelease)
         | 
| 79 | 
            +
                    resource[:ensure] = :present
         | 
| 80 | 
            +
                    resource[:groups] = ['group1', 'group2']
         | 
| 81 | 
            +
                    expect(provider).to receive(:execute).with(['/usr/sbin/useradd', '-G', 'group1,group2', 'myuser'], kind_of(Hash))
         | 
| 82 | 
            +
                    provider.create
         | 
| 83 | 
            +
                  end
         | 
| 82 84 |  | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 85 | 
            +
                  it "uses -G to set groups with -M on supported systems" do
         | 
| 86 | 
            +
                    allow(Facter).to receive(:value).with(:osfamily).and_return('RedHat')
         | 
| 87 | 
            +
                    allow(Facter).to receive(:value).with(:operatingsystemmajrelease)
         | 
| 88 | 
            +
                    resource[:ensure] = :present
         | 
| 89 | 
            +
                    resource[:groups] = ['group1', 'group2']
         | 
| 90 | 
            +
                    expect(provider).to receive(:execute).with(['/usr/sbin/useradd', '-G', 'group1,group2', '-M', 'myuser'], kind_of(Hash))
         | 
| 91 | 
            +
                    provider.create
         | 
| 92 | 
            +
                  end
         | 
| 89 93 | 
             
                end
         | 
| 90 94 |  | 
| 91 95 | 
             
                it "should add -o when allowdupe is enabled and the user is being created" do
         | 
| @@ -315,6 +319,65 @@ describe Puppet::Type.type(:user).provider(:useradd) do | |
| 315 319 | 
             
                  expect(provider).to receive(:execute).with(['/usr/sbin/usermod', '-e', '', 'myuser'], hash_including(custom_environment: {}))
         | 
| 316 320 | 
             
                  provider.expiry = :absent
         | 
| 317 321 | 
             
                end
         | 
| 322 | 
            +
             | 
| 323 | 
            +
                it "should use -e with -1 when the expiry property is removed on SLES11" do
         | 
| 324 | 
            +
                  allow(Facter).to receive(:value).with(:operatingsystem).and_return('SLES')
         | 
| 325 | 
            +
                  allow(Facter).to receive(:value).with(:operatingsystemmajrelease).and_return('11')
         | 
| 326 | 
            +
                  resource[:expiry] = :absent
         | 
| 327 | 
            +
                  expect(provider).to receive(:execute).with(['/usr/sbin/usermod', '-e', -1, 'myuser'], hash_including(custom_environment: {}))
         | 
| 328 | 
            +
                  provider.expiry = :absent
         | 
| 329 | 
            +
                end
         | 
| 330 | 
            +
              end
         | 
| 331 | 
            +
             | 
| 332 | 
            +
              describe "#comment" do
         | 
| 333 | 
            +
                before { described_class.has_feature :libuser }
         | 
| 334 | 
            +
             | 
| 335 | 
            +
                let(:content) { "myuser:x:x:x:local comment:x:x" }
         | 
| 336 | 
            +
             | 
| 337 | 
            +
                it "should return the local comment string when forcelocal is true" do
         | 
| 338 | 
            +
                  resource[:forcelocal] = true
         | 
| 339 | 
            +
                  allow(File).to receive(:read).with('/etc/passwd').and_return(content)
         | 
| 340 | 
            +
                  expect(provider.comment).to eq('local comment')
         | 
| 341 | 
            +
                end
         | 
| 342 | 
            +
             | 
| 343 | 
            +
                it "should fall back to nameservice comment string when forcelocal is false" do
         | 
| 344 | 
            +
                  resource[:forcelocal] = false
         | 
| 345 | 
            +
                  allow(provider).to receive(:get).with(:comment).and_return('remote comment')
         | 
| 346 | 
            +
                  expect(provider).not_to receive(:localcomment)
         | 
| 347 | 
            +
                  expect(provider.comment).to eq('remote comment')
         | 
| 348 | 
            +
                end
         | 
| 349 | 
            +
              end
         | 
| 350 | 
            +
             | 
| 351 | 
            +
              describe "#finduser" do
         | 
| 352 | 
            +
                before { allow(File).to receive(:read).with('/etc/passwd').and_return(content) }
         | 
| 353 | 
            +
             | 
| 354 | 
            +
                let(:content) { "sample_account:sample_password:sample_uid:sample_gid:sample_gecos:sample_directory:sample_shell" }
         | 
| 355 | 
            +
                let(:output) do
         | 
| 356 | 
            +
                  {
         | 
| 357 | 
            +
                    account: 'sample_account',
         | 
| 358 | 
            +
                    password: 'sample_password',
         | 
| 359 | 
            +
                    uid: 'sample_uid',
         | 
| 360 | 
            +
                    gid: 'sample_gid',
         | 
| 361 | 
            +
                    gecos: 'sample_gecos',
         | 
| 362 | 
            +
                    directory: 'sample_directory',
         | 
| 363 | 
            +
                    shell: 'sample_shell',
         | 
| 364 | 
            +
                  }
         | 
| 365 | 
            +
                end
         | 
| 366 | 
            +
             | 
| 367 | 
            +
                [:account, :password, :uid, :gid, :gecos, :directory, :shell].each do |key|
         | 
| 368 | 
            +
                  it "finds an user by #{key} when asked" do
         | 
| 369 | 
            +
                    expect(provider.finduser(key, "sample_#{key}")).to eq(output)
         | 
| 370 | 
            +
                  end
         | 
| 371 | 
            +
                end
         | 
| 372 | 
            +
             | 
| 373 | 
            +
                it "returns false when specified key/value pair is not found" do
         | 
| 374 | 
            +
                  expect(provider.finduser(:account, 'invalid_account')).to eq(false)
         | 
| 375 | 
            +
                end
         | 
| 376 | 
            +
             | 
| 377 | 
            +
                it "reads the user file only once per resource" do
         | 
| 378 | 
            +
                  expect(File).to receive(:read).with('/etc/passwd').once
         | 
| 379 | 
            +
                  5.times { provider.finduser(:account, 'sample_account') }
         | 
| 380 | 
            +
                end
         | 
| 318 381 | 
             
              end
         | 
| 319 382 |  | 
| 320 383 | 
             
              describe "#check_allow_dup" do
         | 
| @@ -370,15 +433,17 @@ describe Puppet::Type.type(:user).provider(:useradd) do | |
| 370 433 | 
             
                  provider.delete
         | 
| 371 434 | 
             
                end
         | 
| 372 435 |  | 
| 373 | 
            -
                it "should use -M flag if home is not managed  | 
| 436 | 
            +
                it "should use -M flag if home is not managed on a supported system" do
         | 
| 374 437 | 
             
                  allow(Facter).to receive(:value).with(:osfamily).and_return("RedHat")
         | 
| 438 | 
            +
                  allow(Facter).to receive(:value).with(:operatingsystemmajrelease)
         | 
| 375 439 | 
             
                  resource[:managehome] = :false
         | 
| 376 440 | 
             
                  expect(provider).to receive(:execute).with(include('-M'), kind_of(Hash))
         | 
| 377 441 | 
             
                  provider.create
         | 
| 378 442 | 
             
                end
         | 
| 379 443 |  | 
| 380 | 
            -
                it "should not use -M flag if home is not managed  | 
| 381 | 
            -
                  allow(Facter).to receive(:value).with(:osfamily).and_return(" | 
| 444 | 
            +
                it "should not use -M flag if home is not managed on an unsupported system" do
         | 
| 445 | 
            +
                  allow(Facter).to receive(:value).with(:osfamily).and_return("Suse")
         | 
| 446 | 
            +
                  allow(Facter).to receive(:value).with(:operatingsystemmajrelease).and_return("11")
         | 
| 382 447 | 
             
                  resource[:managehome] = :false
         | 
| 383 448 | 
             
                  expect(provider).to receive(:execute).with(excluding('-M'), kind_of(Hash))
         | 
| 384 449 | 
             
                  provider.create
         | 
| @@ -78,9 +78,9 @@ describe Puppet::Type.type(:user).provider(:windows_adsi), :if => Puppet.feature | |
| 78 78 | 
             
                let(:group3) { double(:account => 'group3', :domain => '.', :sid => 'group3sid') }
         | 
| 79 79 |  | 
| 80 80 | 
             
                before :each do
         | 
| 81 | 
            -
                  allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('group1').and_return(group1)
         | 
| 82 | 
            -
                  allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('group2').and_return(group2)
         | 
| 83 | 
            -
                  allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('group3').and_return(group3)
         | 
| 81 | 
            +
                  allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('group1', any_args).and_return(group1)
         | 
| 82 | 
            +
                  allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('group2', any_args).and_return(group2)
         | 
| 83 | 
            +
                  allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('group3', any_args).and_return(group3)
         | 
| 84 84 | 
             
                end
         | 
| 85 85 |  | 
| 86 86 | 
             
                it "should return true for same lists of members" do
         | 
| @@ -714,6 +714,9 @@ describe 'Puppet Pal' do | |
| 714 714 |  | 
| 715 715 | 
             
                  context 'facts are supported such that' do
         | 
| 716 716 | 
             
                    it 'they are obtained if they are not given' do
         | 
| 717 | 
            +
                      facts = Puppet::Node::Facts.new(Puppet[:certname], 'puppetversion' => Puppet.version)
         | 
| 718 | 
            +
                      Puppet::Node::Facts.indirection.save(facts)
         | 
| 719 | 
            +
             | 
| 717 720 | 
             
                      testing_env_dir # creates the structure
         | 
| 718 721 | 
             
                      result = Puppet::Pal.in_tmp_environment('pal_env', modulepath: modulepath ) do |ctx|
         | 
| 719 722 | 
             
                        ctx.with_script_compiler {|c| c.evaluate_string("$facts =~ Hash and $facts[puppetversion] == '#{Puppet.version}'") }
         | 
| @@ -876,9 +876,8 @@ describe Puppet::SSL::CertificateAuthority do | |
| 876 876 | 
             
                    @ca.verify("me")
         | 
| 877 877 | 
             
                  end
         | 
| 878 878 |  | 
| 879 | 
            -
                  it "should set the store purpose to OpenSSL::X509:: | 
| 880 | 
            -
                     | 
| 881 | 
            -
                    expect(@store).to receive(:add_file).with(cacert)
         | 
| 879 | 
            +
                  it "should set the store purpose to OpenSSL::X509::PURPOSE_ANY" do
         | 
| 880 | 
            +
                    expect(@store).to receive(:purpose=).with OpenSSL::X509::PURPOSE_ANY
         | 
| 882 881 |  | 
| 883 882 | 
             
                    @ca.verify("me")
         | 
| 884 883 | 
             
                  end
         | 
| @@ -138,6 +138,13 @@ describe Puppet::SSL::Certificate do | |
| 138 138 | 
             
                    expect(cert.custom_extensions).to include('oid' => '1.3.6.1.4.1.34380.1.2.1', 'value' => 'x509 :(')
         | 
| 139 139 | 
             
                  end
         | 
| 140 140 |  | 
| 141 | 
            +
                  it "returns extensions under the ppAuthCertExt" do
         | 
| 142 | 
            +
                    exts = {'pp_auth_role' => 'taketwo'}
         | 
| 143 | 
            +
                    cert = build_cert(:extension_requests => exts)
         | 
| 144 | 
            +
                    sign_wrapped_cert(cert)
         | 
| 145 | 
            +
                    expect(cert.custom_extensions).to include('oid' => 'pp_auth_role', 'value' => 'taketwo')
         | 
| 146 | 
            +
                  end
         | 
| 147 | 
            +
             | 
| 141 148 | 
             
                  it "doesn't return standard extensions" do
         | 
| 142 149 | 
             
                    cert = build_cert(:dns_alt_names => 'foo')
         | 
| 143 150 | 
             
                    expect(cert.custom_extensions).to be_empty
         | 
    
        data/spec/unit/ssl/host_spec.rb
    CHANGED
    
    | @@ -158,6 +158,7 @@ describe Puppet::SSL::Host do | |
| 158 158 |  | 
| 159 159 | 
             
                  it "should not include defaults if we can't resolve our fqdn" do
         | 
| 160 160 | 
             
                    allow(Puppet::SSL::CertificateAuthority).to receive(:ca?).and_return(true)
         | 
| 161 | 
            +
                    allow(Facter).to receive(:value).and_call_original
         | 
| 161 162 | 
             
                    allow(Facter).to receive(:value).with(:fqdn).and_return(nil)
         | 
| 162 163 |  | 
| 163 164 | 
             
                    expect(@cr).to receive(:generate).with(@key, {})
         | 
| @@ -167,6 +168,7 @@ describe Puppet::SSL::Host do | |
| 167 168 |  | 
| 168 169 | 
             
                  it "should provide defaults if we're bootstrapping the local master" do
         | 
| 169 170 | 
             
                    allow(Puppet::SSL::CertificateAuthority).to receive(:ca?).and_return(true)
         | 
| 171 | 
            +
                    allow(Facter).to receive(:value).and_call_original
         | 
| 170 172 | 
             
                    allow(Facter).to receive(:value).with(:fqdn).and_return('web.foo.com')
         | 
| 171 173 | 
             
                    allow(Facter).to receive(:value).with(:domain).and_return('foo.com')
         | 
| 172 174 |  | 
| @@ -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
         | 
    
        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
         | 
| @@ -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
         | 
    
        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
         | 
| @@ -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
         | 
| @@ -234,20 +234,21 @@ describe Puppet::Type.type(:service), "when changing the host" do | |
| 234 234 | 
             
                @service.property(:enable).sync
         | 
| 235 235 | 
             
              end
         | 
| 236 236 |  | 
| 237 | 
            -
              it "should  | 
| 237 | 
            +
              it "should let superclass implementation resolve insyncness when provider does not respond to the 'enabled_insync?' method" do
         | 
| 238 238 | 
             
                allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
         | 
| 239 | 
            -
                 | 
| 240 | 
            -
                @service | 
| 241 | 
            -
             | 
| 239 | 
            +
                @service[:enable] = true
         | 
| 240 | 
            +
                allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?).and_return(false)
         | 
| 241 | 
            +
             | 
| 242 242 | 
             
                expect(@service.property(:enable).insync?(:true)).to eq(true)
         | 
| 243 243 | 
             
              end
         | 
| 244 244 |  | 
| 245 | 
            -
              it "should  | 
| 245 | 
            +
              it "insyncness should be resolved by provider instead of superclass implementation when provider responds to the 'enabled_insync?' method" do
         | 
| 246 246 | 
             
                allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
         | 
| 247 | 
            -
                expect(@service.provider).to receive(:cached_enabled?).and_return('true')
         | 
| 248 247 | 
             
                @service[:enable] = true
         | 
| 249 | 
            -
                 | 
| 250 | 
            -
                 | 
| 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)
         | 
| 251 252 | 
             
              end
         | 
| 252 253 |  | 
| 253 254 | 
             
              it "should sync the service's enable state when changing the state of :ensure if :enable is being managed" do
         |