puppet 7.6.1-x86-mingw32 → 7.7.0-x86-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/Gemfile.lock +9 -9
- data/install.rb +11 -11
- data/lib/hiera_puppet.rb +1 -1
- data/lib/puppet.rb +37 -37
- data/lib/puppet/agent.rb +6 -6
- data/lib/puppet/agent/disabler.rb +1 -1
- data/lib/puppet/agent/locker.rb +2 -2
- data/lib/puppet/application.rb +6 -6
- data/lib/puppet/application/agent.rb +18 -11
- data/lib/puppet/application/apply.rb +6 -5
- data/lib/puppet/application/catalog.rb +1 -1
- data/lib/puppet/application/config.rb +1 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/device.rb +8 -7
- data/lib/puppet/application/doc.rb +7 -7
- data/lib/puppet/application/epp.rb +2 -2
- data/lib/puppet/application/face_base.rb +2 -2
- data/lib/puppet/application/facts.rb +1 -1
- data/lib/puppet/application/filebucket.rb +2 -2
- data/lib/puppet/application/generate.rb +1 -1
- data/lib/puppet/application/help.rb +1 -1
- data/lib/puppet/application/indirection_base.rb +1 -1
- data/lib/puppet/application/lookup.rb +6 -6
- data/lib/puppet/application/module.rb +1 -1
- data/lib/puppet/application/node.rb +1 -1
- data/lib/puppet/application/parser.rb +2 -2
- data/lib/puppet/application/plugin.rb +1 -1
- data/lib/puppet/application/report.rb +1 -1
- data/lib/puppet/application/resource.rb +3 -2
- data/lib/puppet/application/script.rb +6 -5
- data/lib/puppet/application/ssl.rb +2 -2
- data/lib/puppet/application_support.rb +4 -4
- data/lib/puppet/compilable_resource_type.rb +1 -1
- data/lib/puppet/concurrent/lock.rb +1 -1
- data/lib/puppet/configurer.rb +4 -4
- data/lib/puppet/configurer/downloader.rb +4 -3
- data/lib/puppet/configurer/fact_handler.rb +3 -3
- data/lib/puppet/configurer/plugin_handler.rb +1 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/confine/boolean.rb +1 -1
- data/lib/puppet/confine/exists.rb +1 -1
- data/lib/puppet/confine/false.rb +1 -1
- data/lib/puppet/confine/feature.rb +1 -1
- data/lib/puppet/confine/true.rb +1 -1
- data/lib/puppet/confine/variable.rb +1 -1
- data/lib/puppet/confine_collection.rb +1 -1
- data/lib/puppet/confiner.rb +1 -1
- data/lib/puppet/context.rb +2 -2
- data/lib/puppet/context/trusted_information.rb +1 -1
- data/lib/puppet/daemon.rb +2 -2
- data/lib/puppet/data_binding.rb +1 -1
- data/lib/puppet/datatypes/error.rb +1 -1
- data/lib/puppet/defaults.rb +6 -6
- data/lib/puppet/environments.rb +1 -1
- data/lib/puppet/etc.rb +1 -1
- data/lib/puppet/external/pson/common.rb +1 -1
- data/lib/puppet/external/pson/pure.rb +3 -3
- data/lib/puppet/face.rb +1 -1
- data/lib/puppet/face/catalog.rb +1 -1
- data/lib/puppet/face/config.rb +2 -2
- data/lib/puppet/face/epp.rb +6 -6
- data/lib/puppet/face/facts.rb +2 -2
- data/lib/puppet/face/generate.rb +2 -2
- data/lib/puppet/face/help.rb +3 -3
- data/lib/puppet/face/module.rb +3 -3
- data/lib/puppet/face/module/install.rb +2 -2
- data/lib/puppet/face/node.rb +1 -1
- data/lib/puppet/face/parser.rb +4 -4
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/face/report.rb +1 -1
- data/lib/puppet/face/resource.rb +1 -1
- data/lib/puppet/feature/base.rb +2 -2
- data/lib/puppet/feature/bolt.rb +1 -1
- data/lib/puppet/feature/cfpropertylist.rb +1 -1
- data/lib/puppet/feature/eventlog.rb +1 -1
- data/lib/puppet/feature/hiera_eyaml.rb +1 -1
- data/lib/puppet/feature/hocon.rb +1 -1
- data/lib/puppet/feature/libuser.rb +2 -2
- data/lib/puppet/feature/msgpack.rb +1 -1
- data/lib/puppet/feature/pe_license.rb +1 -1
- data/lib/puppet/feature/selinux.rb +1 -1
- data/lib/puppet/feature/ssh.rb +1 -1
- data/lib/puppet/feature/telnet.rb +1 -1
- data/lib/puppet/feature/zlib.rb +1 -1
- data/lib/puppet/ffi/posix.rb +2 -2
- data/lib/puppet/ffi/posix/constants.rb +1 -1
- data/lib/puppet/ffi/posix/functions.rb +1 -1
- data/lib/puppet/ffi/windows.rb +4 -4
- data/lib/puppet/ffi/windows/api_types.rb +2 -2
- data/lib/puppet/ffi/windows/constants.rb +1 -1
- data/lib/puppet/ffi/windows/functions.rb +1 -1
- data/lib/puppet/ffi/windows/structs.rb +1 -1
- data/lib/puppet/file_bucket/dipper.rb +4 -4
- data/lib/puppet/file_bucket/file.rb +3 -3
- data/lib/puppet/file_serving/base.rb +2 -2
- data/lib/puppet/file_serving/configuration.rb +10 -10
- data/lib/puppet/file_serving/configuration/parser.rb +2 -2
- data/lib/puppet/file_serving/content.rb +3 -3
- data/lib/puppet/file_serving/fileset.rb +16 -4
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/metadata.rb +6 -6
- data/lib/puppet/file_serving/mount.rb +4 -4
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -1
- data/lib/puppet/file_serving/mount/modules.rb +1 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -1
- data/lib/puppet/file_serving/mount/plugins.rb +1 -1
- data/lib/puppet/file_serving/mount/tasks.rb +1 -1
- data/lib/puppet/file_serving/terminus_helper.rb +2 -2
- data/lib/puppet/file_serving/terminus_selector.rb +1 -1
- data/lib/puppet/file_system.rb +9 -9
- data/lib/puppet/file_system/jruby.rb +1 -1
- data/lib/puppet/file_system/path_pattern.rb +1 -1
- data/lib/puppet/file_system/uniquefile.rb +1 -1
- data/lib/puppet/file_system/windows.rb +2 -2
- data/lib/puppet/forge.rb +5 -5
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/errors.rb +3 -3
- data/lib/puppet/forge/repository.rb +4 -4
- data/lib/puppet/functions/all.rb +1 -1
- data/lib/puppet/functions/camelcase.rb +1 -1
- data/lib/puppet/functions/capitalize.rb +2 -2
- data/lib/puppet/functions/downcase.rb +2 -2
- data/lib/puppet/functions/get.rb +5 -5
- data/lib/puppet/functions/group_by.rb +13 -5
- data/lib/puppet/functions/lest.rb +1 -1
- data/lib/puppet/functions/new.rb +100 -100
- data/lib/puppet/functions/partition.rb +4 -4
- data/lib/puppet/functions/require.rb +5 -5
- data/lib/puppet/functions/sort.rb +3 -3
- data/lib/puppet/functions/tree_each.rb +7 -9
- data/lib/puppet/functions/type.rb +4 -4
- data/lib/puppet/functions/upcase.rb +2 -2
- data/lib/puppet/functions/versioncmp.rb +1 -1
- data/lib/puppet/generate/models/type/type.rb +1 -1
- data/lib/puppet/generate/type.rb +2 -2
- data/lib/puppet/gettext/config.rb +3 -3
- data/lib/puppet/gettext/module_translations.rb +1 -1
- data/lib/puppet/graph.rb +6 -6
- data/lib/puppet/graph/simple_graph.rb +2 -2
- data/lib/puppet/http.rb +26 -26
- data/lib/puppet/http/factory.rb +2 -2
- data/lib/puppet/http/proxy.rb +1 -1
- data/lib/puppet/http/resolver/server_list.rb +15 -4
- data/lib/puppet/http/service/compiler.rb +73 -1
- data/lib/puppet/http/service/file_server.rb +3 -2
- data/lib/puppet/indirector.rb +5 -5
- data/lib/puppet/indirector/catalog/compiler.rb +7 -6
- data/lib/puppet/indirector/catalog/json.rb +2 -2
- data/lib/puppet/indirector/catalog/msgpack.rb +2 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -2
- data/lib/puppet/indirector/catalog/store_configs.rb +2 -2
- data/lib/puppet/indirector/catalog/yaml.rb +2 -2
- data/lib/puppet/indirector/code.rb +1 -1
- data/lib/puppet/indirector/data_binding/hiera.rb +1 -1
- data/lib/puppet/indirector/data_binding/none.rb +1 -1
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/envelope.rb +1 -1
- data/lib/puppet/indirector/errors.rb +1 -1
- data/lib/puppet/indirector/exec.rb +2 -2
- data/lib/puppet/indirector/face.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +2 -2
- data/lib/puppet/indirector/facts/json.rb +3 -3
- data/lib/puppet/indirector/facts/memory.rb +2 -2
- data/lib/puppet/indirector/facts/network_device.rb +2 -2
- data/lib/puppet/indirector/facts/rest.rb +2 -2
- data/lib/puppet/indirector/facts/store_configs.rb +2 -2
- data/lib/puppet/indirector/facts/yaml.rb +3 -3
- data/lib/puppet/indirector/file_bucket_file/file.rb +4 -4
- data/lib/puppet/indirector/file_bucket_file/rest.rb +2 -2
- data/lib/puppet/indirector/file_bucket_file/selector.rb +1 -1
- data/lib/puppet/indirector/file_content.rb +1 -1
- data/lib/puppet/indirector/file_content/file.rb +3 -3
- data/lib/puppet/indirector/file_content/file_server.rb +3 -3
- data/lib/puppet/indirector/file_content/rest.rb +3 -3
- data/lib/puppet/indirector/file_content/selector.rb +4 -4
- data/lib/puppet/indirector/file_metadata.rb +1 -1
- data/lib/puppet/indirector/file_metadata/file.rb +3 -3
- data/lib/puppet/indirector/file_metadata/file_server.rb +3 -3
- data/lib/puppet/indirector/file_metadata/http.rb +3 -3
- data/lib/puppet/indirector/file_metadata/rest.rb +4 -3
- data/lib/puppet/indirector/file_metadata/selector.rb +4 -4
- data/lib/puppet/indirector/file_server.rb +4 -4
- data/lib/puppet/indirector/generic_http.rb +1 -1
- data/lib/puppet/indirector/hiera.rb +1 -1
- data/lib/puppet/indirector/indirection.rb +5 -5
- data/lib/puppet/indirector/json.rb +2 -2
- data/lib/puppet/indirector/memory.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/exec.rb +2 -2
- data/lib/puppet/indirector/node/json.rb +2 -2
- data/lib/puppet/indirector/node/memory.rb +2 -2
- data/lib/puppet/indirector/node/msgpack.rb +2 -2
- data/lib/puppet/indirector/node/plain.rb +2 -2
- data/lib/puppet/indirector/node/rest.rb +2 -2
- data/lib/puppet/indirector/node/store_configs.rb +2 -2
- data/lib/puppet/indirector/node/yaml.rb +2 -2
- data/lib/puppet/indirector/none.rb +1 -1
- data/lib/puppet/indirector/plain.rb +1 -1
- data/lib/puppet/indirector/report/json.rb +2 -2
- data/lib/puppet/indirector/report/msgpack.rb +2 -2
- data/lib/puppet/indirector/report/processor.rb +3 -3
- data/lib/puppet/indirector/report/rest.rb +1 -1
- data/lib/puppet/indirector/report/yaml.rb +2 -2
- data/lib/puppet/indirector/request.rb +3 -3
- data/lib/puppet/indirector/resource/ral.rb +1 -1
- data/lib/puppet/indirector/resource/store_configs.rb +2 -2
- data/lib/puppet/indirector/terminus.rb +5 -5
- data/lib/puppet/indirector/yaml.rb +2 -2
- data/lib/puppet/info_service.rb +3 -3
- data/lib/puppet/info_service/class_information_service.rb +3 -3
- data/lib/puppet/info_service/plan_information_service.rb +1 -1
- data/lib/puppet/info_service/task_information_service.rb +1 -1
- data/lib/puppet/interface.rb +10 -10
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +21 -21
- data/lib/puppet/metatype/manager.rb +3 -3
- data/lib/puppet/module.rb +4 -4
- data/lib/puppet/module/plan.rb +1 -1
- data/lib/puppet/module/task.rb +1 -1
- data/lib/puppet/module_tool.rb +10 -10
- data/lib/puppet/module_tool/applications.rb +7 -7
- data/lib/puppet/module_tool/applications/application.rb +2 -2
- data/lib/puppet/module_tool/applications/checksummer.rb +2 -2
- data/lib/puppet/module_tool/applications/installer.rb +7 -7
- data/lib/puppet/module_tool/applications/unpacker.rb +2 -2
- data/lib/puppet/module_tool/applications/upgrader.rb +5 -5
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/contents_description.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +2 -2
- data/lib/puppet/module_tool/errors.rb +6 -6
- data/lib/puppet/module_tool/install_directory.rb +2 -2
- data/lib/puppet/module_tool/installed_modules.rb +2 -2
- data/lib/puppet/module_tool/local_tarball.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +3 -3
- data/lib/puppet/module_tool/tar.rb +4 -4
- data/lib/puppet/network/format.rb +1 -1
- data/lib/puppet/network/format_handler.rb +3 -3
- data/lib/puppet/network/format_support.rb +1 -1
- data/lib/puppet/network/formats.rb +2 -2
- data/lib/puppet/network/http.rb +12 -12
- data/lib/puppet/network/http/api.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master.rb +1 -1
- data/lib/puppet/network/http/api/master/v3.rb +2 -2
- data/lib/puppet/network/http/api/master/v3/environments.rb +2 -2
- data/lib/puppet/network/http/api/server/v3.rb +2 -2
- data/lib/puppet/network/http/api/server/v3/environments.rb +1 -1
- data/lib/puppet/network/http/connection.rb +1 -1
- data/lib/puppet/network/http/error.rb +1 -1
- data/lib/puppet/network/http/handler.rb +3 -3
- data/lib/puppet/network/http_pool.rb +1 -1
- data/lib/puppet/node.rb +3 -3
- data/lib/puppet/node/environment.rb +3 -3
- data/lib/puppet/node/facts.rb +3 -3
- data/lib/puppet/pal/pal_api.rb +10 -10
- data/lib/puppet/pal/pal_impl.rb +3 -3
- data/lib/puppet/parameter.rb +4 -4
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +1 -1
- data/lib/puppet/parser.rb +10 -10
- data/lib/puppet/parser/ast.rb +8 -8
- data/lib/puppet/parser/ast/hostclass.rb +1 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +2 -2
- data/lib/puppet/parser/catalog_compiler.rb +2 -2
- data/lib/puppet/parser/compiler.rb +5 -5
- data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
- data/lib/puppet/parser/functions.rb +4 -4
- data/lib/puppet/parser/functions/digest.rb +1 -1
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
- data/lib/puppet/parser/functions/versioncmp.rb +1 -1
- data/lib/puppet/parser/parser_factory.rb +2 -2
- data/lib/puppet/parser/resource.rb +3 -3
- data/lib/puppet/parser/scope.rb +3 -3
- data/lib/puppet/parser/script_compiler.rb +2 -2
- data/lib/puppet/parser/templatewrapper.rb +2 -2
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/configuration.rb +5 -5
- data/lib/puppet/pops.rb +57 -57
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +1 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +7 -7
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/loader/task_instantiator.rb +1 -1
- data/lib/puppet/pops/lookup/invocation.rb +1 -1
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/pn_transformer.rb +1 -1
- data/lib/puppet/pops/parser/eparser.rb +2 -2
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/lexer2.rb +5 -5
- data/lib/puppet/pops/parser/lexer_support.rb +1 -1
- data/lib/puppet/pops/parser/parser_support.rb +4 -4
- data/lib/puppet/pops/puppet_stack.rb +1 -1
- data/lib/puppet/pops/serialization/json.rb +1 -1
- data/lib/puppet/pops/serialization/json_path.rb +1 -1
- data/lib/puppet/pops/time/timespan.rb +1 -1
- data/lib/puppet/pops/types/string_converter.rb +1 -1
- data/lib/puppet/pops/types/type_calculator.rb +1 -1
- data/lib/puppet/pops/types/type_formatter.rb +1 -1
- data/lib/puppet/pops/types/type_parser.rb +1 -1
- data/lib/puppet/pops/types/types.rb +1 -1
- data/lib/puppet/pops/validation/checker4_0.rb +1 -1
- data/lib/puppet/property.rb +3 -3
- data/lib/puppet/property/boolean.rb +1 -1
- data/lib/puppet/property/ensure.rb +1 -1
- data/lib/puppet/property/keyvalue.rb +1 -1
- data/lib/puppet/property/list.rb +1 -1
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +2 -2
- data/lib/puppet/provider/confine.rb +2 -2
- data/lib/puppet/provider/exec.rb +2 -2
- data/lib/puppet/provider/exec/posix.rb +1 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +1 -1
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/aix.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +2 -2
- data/lib/puppet/provider/group/ldap.rb +1 -1
- data/lib/puppet/provider/group/pw.rb +1 -1
- data/lib/puppet/provider/group/windows_adsi.rb +1 -1
- data/lib/puppet/provider/ldap.rb +2 -2
- data/lib/puppet/provider/nameservice.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/nameservice/objectadd.rb +1 -1
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +2 -2
- data/lib/puppet/provider/package/appdmg.rb +2 -2
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +2 -2
- data/lib/puppet/provider/package/dnfmodule.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/gem.rb +3 -3
- data/lib/puppet/provider/package/hpux.rb +1 -1
- data/lib/puppet/provider/package/macports.rb +2 -2
- data/lib/puppet/provider/package/nim.rb +2 -2
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/opkg.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +1 -1
- data/lib/puppet/provider/package/pip.rb +3 -3
- data/lib/puppet/provider/package/pkg.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +3 -3
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/portupgrade.rb +1 -1
- data/lib/puppet/provider/package/puppetserver_gem.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +2 -2
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/windows.rb +3 -3
- data/lib/puppet/provider/package/windows/exe_package.rb +1 -1
- data/lib/puppet/provider/package/windows/msi_package.rb +1 -1
- data/lib/puppet/provider/package/windows/package.rb +4 -4
- data/lib/puppet/provider/package/yum.rb +3 -3
- data/lib/puppet/provider/package_targetable.rb +1 -1
- data/lib/puppet/provider/parsedfile.rb +3 -3
- data/lib/puppet/provider/service/base.rb +6 -4
- data/lib/puppet/provider/service/daemontools.rb +0 -1
- data/lib/puppet/provider/service/debian.rb +3 -5
- data/lib/puppet/provider/service/init.rb +1 -1
- data/lib/puppet/provider/service/launchd.rb +9 -3
- data/lib/puppet/provider/service/service.rb +28 -3
- data/lib/puppet/provider/service/smf.rb +0 -24
- data/lib/puppet/provider/service/src.rb +2 -2
- data/lib/puppet/provider/service/systemd.rb +11 -6
- data/lib/puppet/provider/service/windows.rb +38 -0
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +2 -2
- data/lib/puppet/provider/user/ldap.rb +1 -1
- data/lib/puppet/provider/user/openbsd.rb +1 -1
- data/lib/puppet/provider/user/pw.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +2 -2
- data/lib/puppet/provider/user/useradd.rb +3 -3
- data/lib/puppet/provider/user/windows_adsi.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reference/indirection.rb +4 -4
- data/lib/puppet/reference/report.rb +1 -1
- data/lib/puppet/reports.rb +1 -1
- data/lib/puppet/reports/http.rb +2 -2
- data/lib/puppet/reports/log.rb +1 -1
- data/lib/puppet/reports/store.rb +2 -2
- data/lib/puppet/resource.rb +4 -4
- data/lib/puppet/resource/catalog.rb +5 -5
- data/lib/puppet/resource/status.rb +2 -2
- data/lib/puppet/resource/type.rb +4 -4
- data/lib/puppet/resource/type_collection.rb +4 -4
- data/lib/puppet/runtime.rb +1 -1
- data/lib/puppet/scheduler.rb +4 -4
- data/lib/puppet/settings.rb +28 -28
- data/lib/puppet/settings/autosign_setting.rb +1 -1
- data/lib/puppet/settings/base_setting.rb +2 -2
- data/lib/puppet/settings/certificate_revocation_setting.rb +1 -1
- data/lib/puppet/settings/config_file.rb +1 -1
- data/lib/puppet/settings/errors.rb +1 -1
- data/lib/puppet/settings/priority_setting.rb +3 -3
- data/lib/puppet/ssl.rb +11 -11
- data/lib/puppet/ssl/base.rb +3 -3
- data/lib/puppet/ssl/certificate.rb +1 -1
- data/lib/puppet/ssl/certificate_request.rb +2 -2
- data/lib/puppet/ssl/certificate_request_attributes.rb +2 -2
- data/lib/puppet/ssl/oids.rb +1 -1
- data/lib/puppet/ssl/openssl_loader.rb +1 -1
- data/lib/puppet/ssl/ssl_context.rb +1 -1
- data/lib/puppet/ssl/ssl_provider.rb +1 -1
- data/lib/puppet/ssl/state_machine.rb +2 -2
- data/lib/puppet/ssl/verifier.rb +5 -1
- data/lib/puppet/syntax_checkers/base64.rb +1 -1
- data/lib/puppet/syntax_checkers/epp.rb +1 -1
- data/lib/puppet/syntax_checkers/json.rb +1 -1
- data/lib/puppet/syntax_checkers/pp.rb +1 -1
- data/lib/puppet/transaction.rb +11 -11
- data/lib/puppet/transaction/event.rb +4 -4
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/type.rb +14 -14
- data/lib/puppet/type/component.rb +3 -3
- data/lib/puppet/type/file.rb +37 -19
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/checksum_value.rb +2 -2
- data/lib/puppet/type/file/content.rb +2 -2
- data/lib/puppet/type/file/data_sync.rb +2 -2
- data/lib/puppet/type/file/ensure.rb +1 -1
- data/lib/puppet/type/file/group.rb +1 -1
- data/lib/puppet/type/file/mode.rb +1 -1
- data/lib/puppet/type/file/selcontext.rb +2 -2
- data/lib/puppet/type/file/source.rb +4 -4
- data/lib/puppet/type/filebucket.rb +1 -1
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +2 -2
- data/lib/puppet/type/resources.rb +2 -2
- data/lib/puppet/type/service.rb +10 -29
- data/lib/puppet/type/tidy.rb +24 -5
- data/lib/puppet/type/user.rb +4 -4
- data/lib/puppet/util.rb +43 -34
- data/lib/puppet/util/at_fork.rb +3 -3
- data/lib/puppet/util/at_fork/solaris.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -4
- data/lib/puppet/util/checksums.rb +3 -3
- data/lib/puppet/util/colors.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -6
- data/lib/puppet/util/command_line/puppet_option_parser.rb +2 -2
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/feature.rb +2 -2
- data/lib/puppet/util/filetype.rb +1 -1
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +3 -3
- data/lib/puppet/util/json_lockfile.rb +1 -1
- data/lib/puppet/util/ldap/connection.rb +1 -1
- data/lib/puppet/util/ldap/generator.rb +1 -1
- data/lib/puppet/util/ldap/manager.rb +3 -3
- data/lib/puppet/util/limits.rb +1 -1
- data/lib/puppet/util/log.rb +6 -6
- data/lib/puppet/util/log/destinations.rb +1 -1
- data/lib/puppet/util/logging.rb +2 -2
- data/lib/puppet/util/metric.rb +2 -2
- data/lib/puppet/util/monkey_patches.rb +7 -3
- data/lib/puppet/util/network_device/base.rb +3 -3
- data/lib/puppet/util/network_device/config.rb +2 -2
- data/lib/puppet/util/network_device/transport.rb +1 -1
- data/lib/puppet/util/network_device/transport/base.rb +2 -2
- data/lib/puppet/util/package/version/range.rb +6 -6
- data/lib/puppet/util/package/version/range/eq.rb +1 -1
- data/lib/puppet/util/package/version/range/gt.rb +1 -1
- data/lib/puppet/util/package/version/range/gt_eq.rb +1 -1
- data/lib/puppet/util/package/version/range/lt.rb +1 -1
- data/lib/puppet/util/package/version/range/lt_eq.rb +1 -1
- data/lib/puppet/util/package/version/range/min_max.rb +1 -1
- data/lib/puppet/util/package/version/range/simple.rb +1 -1
- data/lib/puppet/util/package/version/rpm.rb +1 -1
- data/lib/puppet/util/pidlock.rb +1 -1
- data/lib/puppet/util/plist.rb +1 -1
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +3 -3
- data/lib/puppet/util/profiler/aggregate.rb +2 -2
- data/lib/puppet/util/profiler/object_counts.rb +1 -1
- data/lib/puppet/util/profiler/wall_clock.rb +1 -1
- data/lib/puppet/util/provider_features.rb +2 -2
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +2 -2
- data/lib/puppet/util/rdoc/parser.rb +6 -6
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/selinux.rb +30 -4
- data/lib/puppet/util/skip_tags.rb +1 -1
- data/lib/puppet/util/storage.rb +1 -1
- data/lib/puppet/util/suidmanager.rb +2 -2
- data/lib/puppet/util/symbolic_file_mode.rb +1 -1
- data/lib/puppet/util/tag_set.rb +1 -1
- data/lib/puppet/util/tagging.rb +1 -1
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +3 -3
- data/lib/puppet/util/windows.rb +20 -20
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +1 -1
- data/lib/puppet/util/windows/daemon.rb +1 -1
- data/lib/puppet/util/windows/error.rb +2 -2
- data/lib/puppet/util/windows/file.rb +1 -1
- data/lib/puppet/util/windows/monkey_patches/process.rb +2 -2
- data/lib/puppet/util/windows/principal.rb +1 -1
- data/lib/puppet/util/windows/process.rb +2 -2
- data/lib/puppet/util/windows/registry.rb +1 -1
- data/lib/puppet/util/windows/root_certs.rb +2 -2
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/security_descriptor.rb +1 -1
- data/lib/puppet/util/windows/service.rb +1 -1
- data/lib/puppet/util/windows/sid.rb +1 -1
- data/lib/puppet/util/windows/user.rb +1 -1
- data/lib/puppet/vendor.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +4 -4
- data/lib/puppet/x509/cert_provider.rb +1 -1
- data/lib/puppet/x509/pem_store.rb +1 -1
- data/lib/puppet_pal.rb +2 -2
- data/locales/puppet.pot +156 -144
- data/man/man5/puppet.conf.5 +256 -241
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +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 +1 -1
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-lookup.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-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
- data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
- data/spec/fixtures/ssl/ca.pem +57 -35
- data/spec/fixtures/ssl/crl.pem +28 -18
- data/spec/fixtures/ssl/ec-key.pem +11 -11
- data/spec/fixtures/ssl/ec.pem +33 -24
- data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
- data/spec/fixtures/ssl/encrypted-key.pem +108 -58
- data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
- data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
- data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
- data/spec/fixtures/ssl/intermediate.pem +57 -36
- data/spec/fixtures/ssl/pluto-key.pem +107 -57
- data/spec/fixtures/ssl/pluto.pem +52 -30
- data/spec/fixtures/ssl/request-key.pem +107 -57
- data/spec/fixtures/ssl/request.pem +47 -26
- data/spec/fixtures/ssl/revoked-key.pem +107 -57
- data/spec/fixtures/ssl/revoked.pem +52 -30
- data/spec/fixtures/ssl/signed-key.pem +107 -57
- data/spec/fixtures/ssl/signed.pem +52 -30
- data/spec/fixtures/ssl/tampered-cert.pem +52 -30
- data/spec/fixtures/ssl/tampered-csr.pem +47 -26
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
- data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
- data/spec/fixtures/ssl/unknown-ca.pem +55 -33
- data/spec/integration/type/file_spec.rb +5 -5
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/files.rb +1 -1
- data/spec/shared_contexts/provider.rb +16 -0
- data/spec/unit/application/agent_spec.rb +7 -2
- data/spec/unit/configurer/downloader_spec.rb +6 -0
- data/spec/unit/configurer_spec.rb +23 -0
- data/spec/unit/file_bucket/dipper_spec.rb +1 -1
- data/spec/unit/file_serving/fileset_spec.rb +60 -0
- data/spec/unit/gettext/config_spec.rb +12 -0
- data/spec/unit/http/service/compiler_spec.rb +123 -0
- data/spec/unit/indirector/catalog/compiler_spec.rb +14 -10
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
- data/spec/unit/pops/lookup/context_spec.rb +1 -1
- data/spec/unit/provider/package/dnfmodule_spec.rb +3 -3
- data/spec/unit/provider/package/gem_spec.rb +3 -1
- data/spec/unit/provider/package/pip2_spec.rb +3 -1
- data/spec/unit/provider/package/pip3_spec.rb +3 -1
- data/spec/unit/provider/package/pip_spec.rb +3 -1
- data/spec/unit/provider/package/pkg_spec.rb +44 -44
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -1
- data/spec/unit/provider/package/puppetserver_gem_spec.rb +2 -0
- data/spec/unit/provider/service/base_spec.rb +8 -8
- data/spec/unit/provider/service/bsd_spec.rb +0 -4
- data/spec/unit/provider/service/daemontools_spec.rb +1 -1
- data/spec/unit/provider/service/debian_spec.rb +15 -17
- data/spec/unit/provider/service/gentoo_spec.rb +19 -14
- data/spec/unit/provider/service/init_spec.rb +29 -20
- data/spec/unit/provider/service/launchd_spec.rb +10 -12
- data/spec/unit/provider/service/openbsd_spec.rb +21 -35
- data/spec/unit/provider/service/openrc_spec.rb +15 -14
- data/spec/unit/provider/service/openwrt_spec.rb +3 -1
- data/spec/unit/provider/service/redhat_spec.rb +20 -19
- data/spec/unit/provider/service/smf_spec.rb +6 -5
- data/spec/unit/provider/service/src_spec.rb +5 -10
- data/spec/unit/provider/service/systemd_spec.rb +57 -29
- data/spec/unit/provider/service/upstart_spec.rb +25 -20
- data/spec/unit/provider/service/windows_spec.rb +202 -0
- data/spec/unit/resource/catalog_spec.rb +1 -1
- data/spec/unit/ssl/state_machine_spec.rb +19 -5
- data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
- data/spec/unit/transaction_spec.rb +18 -20
- data/spec/unit/type/file/selinux_spec.rb +3 -3
- data/spec/unit/type/service_spec.rb +10 -154
- data/spec/unit/type/tidy_spec.rb +17 -7
- data/spec/unit/util/at_fork_spec.rb +9 -9
- data/spec/unit/util/posix_spec.rb +1 -1
- data/spec/unit/util/selinux_spec.rb +87 -16
- data/tasks/generate_cert_fixtures.rake +2 -2
- metadata +4 -2
@@ -32,6 +32,7 @@ describe 'Puppet::Type::Service::Provider::Openwrt',
|
|
32
32
|
allow(File).to receive(:directory?).with('/etc/init.d').and_return(true)
|
33
33
|
|
34
34
|
allow(Puppet::FileSystem).to receive(:exist?).with('/etc/init.d/myservice').and_return(true)
|
35
|
+
allow(FileTest).to receive(:file?).and_call_original
|
35
36
|
allow(FileTest).to receive(:file?).with('/etc/init.d/myservice').and_return(true)
|
36
37
|
allow(FileTest).to receive(:executable?).with('/etc/init.d/myservice').and_return(true)
|
37
38
|
end
|
@@ -47,7 +48,8 @@ describe 'Puppet::Type::Service::Provider::Openwrt',
|
|
47
48
|
let(:services) {['dnsmasq', 'dropbear', 'firewall', 'led', 'puppet', 'uhttpd' ]}
|
48
49
|
|
49
50
|
before :each do
|
50
|
-
allow(Dir).to receive(:entries).
|
51
|
+
allow(Dir).to receive(:entries).and_call_original
|
52
|
+
allow(Dir).to receive(:entries).with('/etc/init.d').and_return(services)
|
51
53
|
allow(FileTest).to receive(:directory?).and_return(true)
|
52
54
|
allow(FileTest).to receive(:executable?).and_return(true)
|
53
55
|
end
|
@@ -4,15 +4,6 @@ describe 'Puppet::Type::Service::Provider::Redhat',
|
|
4
4
|
unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
|
5
5
|
let(:provider_class) { Puppet::Type.type(:service).provider(:redhat) }
|
6
6
|
|
7
|
-
# `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
|
8
|
-
# but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
|
9
|
-
# In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
|
10
|
-
# Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
|
11
|
-
# $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
|
12
|
-
before(:all) do
|
13
|
-
`exit 0`
|
14
|
-
end
|
15
|
-
|
16
7
|
before :each do
|
17
8
|
@class = Puppet::Type.type(:service).provider(:redhat)
|
18
9
|
@resource = double('resource')
|
@@ -65,7 +56,9 @@ describe 'Puppet::Type::Service::Provider::Redhat',
|
|
65
56
|
it "should call service status when initialized from provider" do
|
66
57
|
allow(@resource).to receive(:[]).with(:status).and_return(nil)
|
67
58
|
allow(@provider).to receive(:get).with(:hasstatus).and_return(true)
|
68
|
-
expect(@provider).to receive(:execute)
|
59
|
+
expect(@provider).to receive(:execute)
|
60
|
+
.with(['/sbin/service', 'myservice', 'status'], any_args)
|
61
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
69
62
|
@provider.send(:status)
|
70
63
|
end
|
71
64
|
end
|
@@ -127,13 +120,17 @@ describe 'Puppet::Type::Service::Provider::Redhat',
|
|
127
120
|
describe "when running #{method}" do
|
128
121
|
it "should use any provided explicit command" do
|
129
122
|
allow(@resource).to receive(:[]).with(method).and_return("/user/specified/command")
|
130
|
-
expect(@provider).to receive(:execute)
|
123
|
+
expect(@provider).to receive(:execute)
|
124
|
+
.with(["/user/specified/command"], any_args)
|
125
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
131
126
|
@provider.send(method)
|
132
127
|
end
|
133
128
|
|
134
129
|
it "should execute the service script with #{method} when no explicit command is provided" do
|
135
130
|
allow(@resource).to receive(:[]).with("has#{method}".intern).and_return(:true)
|
136
|
-
expect(@provider).to receive(:execute)
|
131
|
+
expect(@provider).to receive(:execute)
|
132
|
+
.with(['/sbin/service', 'myservice', method.to_s], any_args)
|
133
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
137
134
|
@provider.send(method)
|
138
135
|
end
|
139
136
|
end
|
@@ -146,20 +143,24 @@ describe 'Puppet::Type::Service::Provider::Redhat',
|
|
146
143
|
end
|
147
144
|
|
148
145
|
it "should execute the service script with fail_on_failure false" do
|
149
|
-
expect(@provider).to receive(:
|
146
|
+
expect(@provider).to receive(:execute)
|
147
|
+
.with(['/sbin/service', 'myservice', 'status'], any_args)
|
148
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
150
149
|
@provider.status
|
151
150
|
end
|
152
151
|
|
153
152
|
it "should consider the process running if the command returns 0" do
|
154
|
-
expect(@provider).to receive(:
|
155
|
-
|
153
|
+
expect(@provider).to receive(:execute)
|
154
|
+
.with(['/sbin/service', 'myservice', 'status'], hash_including(failonfail: false))
|
155
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
156
156
|
expect(@provider.status).to eq(:running)
|
157
157
|
end
|
158
158
|
|
159
159
|
[-10,-1,1,10].each { |ec|
|
160
160
|
it "should consider the process stopped if the command returns something non-0" do
|
161
|
-
expect(@provider).to receive(:
|
162
|
-
|
161
|
+
expect(@provider).to receive(:execute)
|
162
|
+
.with(['/sbin/service', 'myservice', 'status'], hash_including(failonfail: false))
|
163
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', ec))
|
163
164
|
expect(@provider.status).to eq(:stopped)
|
164
165
|
end
|
165
166
|
}
|
@@ -180,8 +181,8 @@ describe 'Puppet::Type::Service::Provider::Redhat',
|
|
180
181
|
|
181
182
|
context "when restarting and hasrestart is not :true" do
|
182
183
|
it "should stop and restart the process with the server script" do
|
183
|
-
expect(@provider).to receive(:
|
184
|
-
expect(@provider).to receive(:
|
184
|
+
expect(@provider).to receive(:execute).with(['/sbin/service', 'myservice', 'stop'], hash_including(failonfail: true))
|
185
|
+
expect(@provider).to receive(:execute).with(['/sbin/service', 'myservice', 'start'], hash_including(failonfail: true))
|
185
186
|
@provider.restart
|
186
187
|
end
|
187
188
|
end
|
@@ -255,12 +255,12 @@ describe 'Puppet::Type::Service::Provider::Smf',
|
|
255
255
|
|
256
256
|
before(:each) do
|
257
257
|
allow(@provider).to receive(:service_fmri).and_return(fmri)
|
258
|
-
allow(@provider).to receive(:
|
258
|
+
allow(@provider).to receive(:execute)
|
259
259
|
allow(@provider).to receive(:wait)
|
260
260
|
end
|
261
261
|
|
262
262
|
it 'should restart the service' do
|
263
|
-
expect(@provider).to receive(:
|
263
|
+
expect(@provider).to receive(:execute)
|
264
264
|
@provider.restart
|
265
265
|
end
|
266
266
|
|
@@ -286,9 +286,9 @@ describe 'Puppet::Type::Service::Provider::Smf',
|
|
286
286
|
|
287
287
|
it "should run the status command if it's passed in" do
|
288
288
|
set_resource_params({ :status => 'status_cmd' })
|
289
|
-
expect(@provider).to receive(:
|
290
|
-
|
291
|
-
|
289
|
+
expect(@provider).to receive(:execute)
|
290
|
+
.with(["status_cmd"], hash_including(failonfail: false))
|
291
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
292
292
|
expect(@provider).not_to receive(:service_states)
|
293
293
|
|
294
294
|
expect(@provider.status).to eql(:running)
|
@@ -338,6 +338,7 @@ describe 'Puppet::Type::Service::Provider::Smf',
|
|
338
338
|
it "should return stopped for an incomplete service on Solaris 11" do
|
339
339
|
allow(Facter).to receive(:value).with(:operatingsystemrelease).and_return('11.3')
|
340
340
|
allow(@provider).to receive(:complete_service?).and_return(false)
|
341
|
+
allow(@provider).to receive(:svcs).with('-l', @provider.resource[:name]).and_return(File.read(my_fixture('svcs_fmri.out')))
|
341
342
|
expect(@provider.status).to eq(:stopped)
|
342
343
|
end
|
343
344
|
end
|
@@ -4,10 +4,6 @@ describe 'Puppet::Type::Service::Provider::Src',
|
|
4
4
|
unless: Puppet::Util::Platform.windows? || Puppet::Util::Platform.jruby? do
|
5
5
|
let(:provider_class) { Puppet::Type.type(:service).provider(:src) }
|
6
6
|
|
7
|
-
before :all do
|
8
|
-
`exit 0`
|
9
|
-
end
|
10
|
-
|
11
7
|
before :each do
|
12
8
|
@resource = double('resource')
|
13
9
|
allow(@resource).to receive(:[]).and_return(nil)
|
@@ -110,20 +106,19 @@ _EOF_
|
|
110
106
|
|
111
107
|
context "when checking if it is enabled" do
|
112
108
|
it "should execute the lsitab command" do
|
113
|
-
expect(@provider).to receive(:execute)
|
114
|
-
|
109
|
+
expect(@provider).to receive(:execute)
|
110
|
+
.with(['/usr/sbin/lsitab', 'myservice'], {:combine => true, :failonfail => false})
|
111
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
115
112
|
@provider.enabled?
|
116
113
|
end
|
117
114
|
|
118
115
|
it "should return false when lsitab returns non-zero" do
|
119
|
-
|
120
|
-
allow($CHILD_STATUS).to receive(:exitstatus).and_return(1)
|
116
|
+
expect(@provider).to receive(:execute).and_return(Puppet::Util::Execution::ProcessOutput.new('', 1))
|
121
117
|
expect(@provider.enabled?).to eq(:false)
|
122
118
|
end
|
123
119
|
|
124
120
|
it "should return true when lsitab returns zero" do
|
125
|
-
allow(@provider).to receive(:execute)
|
126
|
-
allow($CHILD_STATUS).to receive(:exitstatus).and_return(0)
|
121
|
+
allow(@provider).to receive(:execute).and_return(Puppet::Util::Execution::ProcessOutput.new('', 0))
|
127
122
|
expect(@provider.enabled?).to eq(:true)
|
128
123
|
end
|
129
124
|
end
|
@@ -10,19 +10,14 @@ describe 'Puppet::Type::Service::Provider::Systemd',
|
|
10
10
|
allow(provider_class).to receive(:which).with('systemctl').and_return('/bin/systemctl')
|
11
11
|
end
|
12
12
|
|
13
|
-
# `execute` and `texecute` start a new process, consequently setting $CHILD_STATUS to a Process::Status instance,
|
14
|
-
# but because they are mocked, an external process is never executed and $CHILD_STATUS remain nil.
|
15
|
-
# In order to execute some parts of the code under test and to mock $CHILD_STATUS, we need this variable to be a
|
16
|
-
# Process::Status instance. We can achieve this by starting a process that does nothing (exit 0). By doing this,
|
17
|
-
# $CHILD_STATUS will be initialised with a instance of Process::Status and we will be able to mock it.
|
18
|
-
before(:all) do
|
19
|
-
`exit 0`
|
20
|
-
end
|
21
|
-
|
22
13
|
let :provider do
|
23
14
|
provider_class.new(:name => 'sshd.service')
|
24
15
|
end
|
25
16
|
|
17
|
+
let :process_output do
|
18
|
+
Puppet::Util::Execution::ProcessOutput.new('', 0)
|
19
|
+
end
|
20
|
+
|
26
21
|
osfamilies = [ 'archlinux', 'coreos' ]
|
27
22
|
|
28
23
|
osfamilies.each do |osfamily|
|
@@ -335,6 +330,16 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
335
330
|
and_return(Puppet::Util::Execution::ProcessOutput.new("masked\n", 1))
|
336
331
|
expect(provider.enabled?).to eq(:mask)
|
337
332
|
end
|
333
|
+
|
334
|
+
it "should consider nonexistent services to be disabled" do
|
335
|
+
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'doesnotexist'))
|
336
|
+
expect(provider).to receive(:execute).with(['/bin/systemctl','is-enabled', '--', 'doesnotexist'], :failonfail => false)
|
337
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("", 1))
|
338
|
+
expect(provider).to receive(:execute).with(["/usr/sbin/invoke-rc.d", "--quiet", "--query", "doesnotexist", "start"], :failonfail => false)
|
339
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("", 1))
|
340
|
+
|
341
|
+
expect(provider.enabled?).to be(:false)
|
342
|
+
end
|
338
343
|
end
|
339
344
|
|
340
345
|
describe "#enable" do
|
@@ -369,25 +374,29 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
369
374
|
# Note: systemd provider does not care about hasstatus or a custom status
|
370
375
|
# command. I just assume that it does not make sense for systemd.
|
371
376
|
describe "#status" do
|
372
|
-
it "should return running if
|
377
|
+
it "should return running if the command returns 0" do
|
373
378
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
374
|
-
expect(provider).to receive(:execute)
|
375
|
-
|
379
|
+
expect(provider).to receive(:execute)
|
380
|
+
.with(['/bin/systemctl','is-active', '--', 'sshd.service'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
381
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("active\n", 0))
|
376
382
|
expect(provider.status).to eq(:running)
|
377
383
|
end
|
378
384
|
|
379
385
|
[-10,-1,3,10].each { |ec|
|
380
386
|
it "should return stopped if the command returns something non-0" do
|
381
387
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
382
|
-
expect(provider).to receive(:execute)
|
383
|
-
|
388
|
+
expect(provider).to receive(:execute)
|
389
|
+
.with(['/bin/systemctl','is-active', '--', 'sshd.service'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
390
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("inactive\n", ec))
|
384
391
|
expect(provider.status).to eq(:stopped)
|
385
392
|
end
|
386
393
|
}
|
387
394
|
|
388
395
|
it "should use the supplied status command if specified" do
|
389
396
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service', :status => '/bin/foo'))
|
390
|
-
expect(provider).to receive(:execute)
|
397
|
+
expect(provider).to receive(:execute)
|
398
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
399
|
+
.and_return(process_output)
|
391
400
|
provider.status
|
392
401
|
end
|
393
402
|
end
|
@@ -430,8 +439,7 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
430
439
|
[104, 106].each do |status|
|
431
440
|
it "should return true when invoke-rc.d returns #{status}" do
|
432
441
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
433
|
-
allow(provider).to receive(:
|
434
|
-
expect($CHILD_STATUS).to receive(:exitstatus).and_return(status)
|
442
|
+
allow(provider).to receive(:execute).and_return(Puppet::Util::Execution::ProcessOutput.new('', status))
|
435
443
|
expect(provider.debian_enabled?).to eq(:true)
|
436
444
|
end
|
437
445
|
end
|
@@ -439,17 +447,15 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
439
447
|
[101, 105].each do |status|
|
440
448
|
it "should return true when status is #{status} and there are at least 4 start links" do
|
441
449
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
442
|
-
allow(provider).to receive(:
|
450
|
+
allow(provider).to receive(:execute).and_return(Puppet::Util::Execution::ProcessOutput.new('', status))
|
443
451
|
expect(provider).to receive(:get_start_link_count).and_return(4)
|
444
|
-
expect($CHILD_STATUS).to receive(:exitstatus).twice.and_return(status)
|
445
452
|
expect(provider.debian_enabled?).to eq(:true)
|
446
453
|
end
|
447
454
|
|
448
455
|
it "should return false when status is #{status} and there are less than 4 start links" do
|
449
456
|
provider = provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service'))
|
450
|
-
allow(provider).to receive(:
|
457
|
+
allow(provider).to receive(:execute).and_return(Puppet::Util::Execution::ProcessOutput.new('', status))
|
451
458
|
expect(provider).to receive(:get_start_link_count).and_return(1)
|
452
|
-
expect($CHILD_STATUS).to receive(:exitstatus).twice.and_return(status)
|
453
459
|
expect(provider.debian_enabled?).to eq(:false)
|
454
460
|
end
|
455
461
|
end
|
@@ -467,17 +473,39 @@ Jun 14 21:43:23 foo.example.com systemd[1]: sshd.service lacks both ExecStart= a
|
|
467
473
|
context 'when service state is static' do
|
468
474
|
let(:service_state) { 'static' }
|
469
475
|
|
470
|
-
|
471
|
-
|
472
|
-
|
476
|
+
context 'when enable is not mask' do
|
477
|
+
it 'is always enabled_insync even if current value is the same as expected' do
|
478
|
+
expect(provider).to be_enabled_insync(:false)
|
479
|
+
end
|
473
480
|
|
474
|
-
|
475
|
-
|
481
|
+
it 'is always enabled_insync even if current value is not the same as expected' do
|
482
|
+
expect(provider).to be_enabled_insync(:true)
|
483
|
+
end
|
484
|
+
|
485
|
+
it 'logs a debug messsage' do
|
486
|
+
expect(Puppet).to receive(:debug).with("Unable to enable or disable static service sshd.service")
|
487
|
+
provider.enabled_insync?(:true)
|
488
|
+
end
|
476
489
|
end
|
477
490
|
|
478
|
-
|
479
|
-
|
480
|
-
|
491
|
+
context 'when enable is mask' do
|
492
|
+
let(:provider) do
|
493
|
+
provider_class.new(Puppet::Type.type(:service).new(:name => 'sshd.service',
|
494
|
+
:enable => 'mask'))
|
495
|
+
end
|
496
|
+
|
497
|
+
it 'is enabled_insync if current value is the same as expected' do
|
498
|
+
expect(provider).to be_enabled_insync(:mask)
|
499
|
+
end
|
500
|
+
|
501
|
+
it 'is not enabled_insync if current value is not the same as expected' do
|
502
|
+
expect(provider).not_to be_enabled_insync(:true)
|
503
|
+
end
|
504
|
+
|
505
|
+
it 'logs no debug messsage' do
|
506
|
+
expect(Puppet).not_to receive(:debug)
|
507
|
+
provider.enabled_insync?(:true)
|
508
|
+
end
|
481
509
|
end
|
482
510
|
end
|
483
511
|
|
@@ -5,10 +5,7 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
5
5
|
let(:manual) { "\nmanual" }
|
6
6
|
let(:start_on_default_runlevels) { "\nstart on runlevel [2,3,4,5]" }
|
7
7
|
let!(:provider_class) { Puppet::Type.type(:service).provider(:upstart) }
|
8
|
-
|
9
|
-
before :each do
|
10
|
-
`exit 0`
|
11
|
-
end
|
8
|
+
let(:process_output) { Puppet::Util::Execution::ProcessOutput.new('', 0) }
|
12
9
|
|
13
10
|
def given_contents_of(file, content)
|
14
11
|
File.open(file, 'w') do |f|
|
@@ -121,8 +118,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
121
118
|
provider = provider_class.new(resource)
|
122
119
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
123
120
|
|
124
|
-
expect(provider).to receive(:status_exec)
|
125
|
-
|
121
|
+
expect(provider).to receive(:status_exec)
|
122
|
+
.with(["foo"])
|
123
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new("foo start/running, process 1000", 0))
|
126
124
|
expect(provider.status).to eq(:running)
|
127
125
|
end
|
128
126
|
|
@@ -133,8 +131,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
133
131
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
134
132
|
|
135
133
|
expect(provider).not_to receive(:status_exec).with(['foo'])
|
136
|
-
expect(provider).to receive(:execute)
|
137
|
-
|
134
|
+
expect(provider).to receive(:execute)
|
135
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
136
|
+
.and_return(process_output)
|
138
137
|
provider.status
|
139
138
|
end
|
140
139
|
|
@@ -144,8 +143,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
144
143
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
145
144
|
|
146
145
|
expect(provider).not_to receive(:status_exec).with(['foo'])
|
147
|
-
expect(provider).to receive(:execute)
|
148
|
-
|
146
|
+
expect(provider).to receive(:execute)
|
147
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
148
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 1))
|
149
149
|
expect(provider.status).to eq(:stopped)
|
150
150
|
end
|
151
151
|
|
@@ -155,8 +155,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
155
155
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
156
156
|
|
157
157
|
expect(provider).not_to receive(:status_exec).with(['foo'])
|
158
|
-
expect(provider).to receive(:execute)
|
159
|
-
|
158
|
+
expect(provider).to receive(:execute)
|
159
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
160
|
+
.and_return(process_output)
|
160
161
|
expect(provider.status).to eq(:running)
|
161
162
|
end
|
162
163
|
end
|
@@ -190,8 +191,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
190
191
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
191
192
|
|
192
193
|
expect(provider).not_to receive(:status_exec).with(['foo'])
|
193
|
-
expect(provider).to receive(:execute)
|
194
|
-
|
194
|
+
expect(provider).to receive(:execute)
|
195
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
196
|
+
.and_return(process_output)
|
195
197
|
provider.status
|
196
198
|
end
|
197
199
|
|
@@ -201,8 +203,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
201
203
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
202
204
|
|
203
205
|
expect(provider).not_to receive(:status_exec).with(['foo'])
|
204
|
-
expect(provider).to receive(:execute)
|
205
|
-
|
206
|
+
expect(provider).to receive(:execute)
|
207
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
208
|
+
.and_return(Puppet::Util::Execution::ProcessOutput.new('', 1))
|
206
209
|
expect(provider.status).to eq(:stopped)
|
207
210
|
end
|
208
211
|
|
@@ -212,8 +215,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
212
215
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
213
216
|
|
214
217
|
expect(provider).not_to receive(:status_exec).with(['foo'])
|
215
|
-
expect(provider).to receive(:execute)
|
216
|
-
|
218
|
+
expect(provider).to receive(:execute)
|
219
|
+
.with(['/bin/foo'], :failonfail => false, :override_locale => false, :squelch => false, :combine => true)
|
220
|
+
.and_return(process_output)
|
217
221
|
expect(provider.status).to eq(:running)
|
218
222
|
end
|
219
223
|
end
|
@@ -245,8 +249,9 @@ describe 'Puppet::Type::Service::Provider::Upstart',
|
|
245
249
|
provider = provider_class.new(resource)
|
246
250
|
allow(provider).to receive(:is_upstart?).and_return(true)
|
247
251
|
|
248
|
-
expect(provider).to receive(:status_exec)
|
249
|
-
|
252
|
+
expect(provider).to receive(:status_exec)
|
253
|
+
.with(["foostartbar"]).and_return("foostartbar stop/waiting")
|
254
|
+
.and_return(process_output)
|
250
255
|
expect(provider.status).to eq(:stopped)
|
251
256
|
end
|
252
257
|
end
|
@@ -270,4 +270,206 @@ describe 'Puppet::Type::Service::Provider::Windows',
|
|
270
270
|
}.to raise_error(Puppet::Error, /Cannot enable #{name}/)
|
271
271
|
end
|
272
272
|
end
|
273
|
+
|
274
|
+
describe "when managing logon credentials" do
|
275
|
+
before do
|
276
|
+
allow(Puppet::Util::Windows::ADSI).to receive(:computer_name).and_return(computer_name)
|
277
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(principal)
|
278
|
+
allow(Puppet::Util::Windows::Service).to receive(:set_startup_configuration).and_return(nil)
|
279
|
+
end
|
280
|
+
|
281
|
+
let(:computer_name) { 'myPC' }
|
282
|
+
|
283
|
+
describe "#logonaccount=" do
|
284
|
+
before do
|
285
|
+
allow(Puppet::Util::Windows::User).to receive(:password_is?).and_return(true)
|
286
|
+
resource[:logonaccount] = user_input
|
287
|
+
provider.logonaccount_insync?(user_input)
|
288
|
+
end
|
289
|
+
|
290
|
+
let(:user_input) { principal.account }
|
291
|
+
let(:principal) do
|
292
|
+
Puppet::Util::Windows::SID::Principal.new("myUser", nil, nil, computer_name, :SidTypeUser)
|
293
|
+
end
|
294
|
+
|
295
|
+
context "when given user is 'myUser'" do
|
296
|
+
it "should fail when the `Log On As A Service` right is missing from given user" do
|
297
|
+
allow(Puppet::Util::Windows::User).to receive(:get_rights).with(principal.domain_account).and_return("")
|
298
|
+
expect { provider.logonaccount=(user_input) }.to raise_error(Puppet::Error, /".\\#{principal.account}" is missing the 'Log On As A Service' right./)
|
299
|
+
end
|
300
|
+
|
301
|
+
it "should fail when the `Log On As A Service` right is set to denied for given user" do
|
302
|
+
allow(Puppet::Util::Windows::User).to receive(:get_rights).with(principal.domain_account).and_return("SeDenyServiceLogonRight")
|
303
|
+
expect { provider.logonaccount=(user_input) }.to raise_error(Puppet::Error, /".\\#{principal.account}" has the 'Log On As A Service' right set to denied./)
|
304
|
+
end
|
305
|
+
|
306
|
+
it "should not fail when given user has the `Log On As A Service` right" do
|
307
|
+
allow(Puppet::Util::Windows::User).to receive(:get_rights).with(principal.domain_account).and_return("SeServiceLogonRight")
|
308
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
309
|
+
end
|
310
|
+
|
311
|
+
['myUser', 'myPC\\myUser', ".\\myUser", "MYPC\\mYuseR"].each do |user_input_variant|
|
312
|
+
let(:user_input) { user_input_variant }
|
313
|
+
|
314
|
+
it "should succesfully munge #{user_input_variant} to '.\\myUser'" do
|
315
|
+
allow(Puppet::Util::Windows::User).to receive(:get_rights).with(principal.domain_account).and_return("SeServiceLogonRight")
|
316
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
317
|
+
expect(resource[:logonaccount]).to eq(".\\myUser")
|
318
|
+
end
|
319
|
+
end
|
320
|
+
end
|
321
|
+
|
322
|
+
context "when given user is a system account" do
|
323
|
+
before do
|
324
|
+
allow(Puppet::Util::Windows::User).to receive(:default_system_account?).and_return(true)
|
325
|
+
end
|
326
|
+
|
327
|
+
let(:user_input) { principal.account }
|
328
|
+
let(:principal) do
|
329
|
+
Puppet::Util::Windows::SID::Principal.new("LOCAL SERVICE", nil, nil, "NT AUTHORITY", :SidTypeUser)
|
330
|
+
end
|
331
|
+
|
332
|
+
it "should not fail when given user is a default system account even if the `Log On As A Service` right is missing" do
|
333
|
+
expect(Puppet::Util::Windows::User).not_to receive(:get_rights)
|
334
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
335
|
+
end
|
336
|
+
|
337
|
+
['LocalSystem', '.\LocalSystem', 'myPC\LocalSystem', 'lOcALsysTem'].each do |user_input_variant|
|
338
|
+
let(:user_input) { user_input_variant }
|
339
|
+
|
340
|
+
it "should succesfully munge #{user_input_variant} to 'LocalSystem'" do
|
341
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
342
|
+
expect(resource[:logonaccount]).to eq('LocalSystem')
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
context "when domain is different from computer name" do
|
348
|
+
before do
|
349
|
+
allow(Puppet::Util::Windows::User).to receive(:get_rights).and_return("SeServiceLogonRight")
|
350
|
+
end
|
351
|
+
|
352
|
+
context "when given user is from AD" do
|
353
|
+
let(:user_input) { 'myRemoteUser' }
|
354
|
+
let(:principal) do
|
355
|
+
Puppet::Util::Windows::SID::Principal.new("myRemoteUser", nil, nil, "AD", :SidTypeUser)
|
356
|
+
end
|
357
|
+
|
358
|
+
it "should not raise any error" do
|
359
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
360
|
+
end
|
361
|
+
|
362
|
+
it "should succesfully be munged" do
|
363
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
364
|
+
expect(resource[:logonaccount]).to eq('AD\myRemoteUser')
|
365
|
+
end
|
366
|
+
end
|
367
|
+
|
368
|
+
context "when given user is LocalService" do
|
369
|
+
let(:user_input) { 'LocalService' }
|
370
|
+
let(:principal) do
|
371
|
+
Puppet::Util::Windows::SID::Principal.new("LOCAL SERVICE", nil, nil, "NT AUTHORITY", :SidTypeWellKnownGroup)
|
372
|
+
end
|
373
|
+
|
374
|
+
it "should succesfully munge well known user" do
|
375
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
376
|
+
expect(resource[:logonaccount]).to eq('NT AUTHORITY\LOCAL SERVICE')
|
377
|
+
end
|
378
|
+
end
|
379
|
+
|
380
|
+
context "when given user is in SID form" do
|
381
|
+
let(:user_input) { 'S-1-5-20' }
|
382
|
+
let(:principal) do
|
383
|
+
Puppet::Util::Windows::SID::Principal.new("NETWORK SERVICE", nil, nil, "NT AUTHORITY", :SidTypeUser)
|
384
|
+
end
|
385
|
+
|
386
|
+
it "should succesfully munge" do
|
387
|
+
expect { provider.logonaccount=(user_input) }.not_to raise_error
|
388
|
+
expect(resource[:logonaccount]).to eq('NT AUTHORITY\NETWORK SERVICE')
|
389
|
+
end
|
390
|
+
end
|
391
|
+
|
392
|
+
context "when given user is actually a group" do
|
393
|
+
let(:principal) do
|
394
|
+
Puppet::Util::Windows::SID::Principal.new("Administrators", nil, nil, "BUILTIN", :SidTypeAlias)
|
395
|
+
end
|
396
|
+
let(:user_input) { 'Administrators' }
|
397
|
+
|
398
|
+
it "should fail when sid type is not user or well known user" do
|
399
|
+
expect { provider.logonaccount=(user_input) }.to raise_error(Puppet::Error, /"BUILTIN\\#{user_input}" is not a valid account/)
|
400
|
+
end
|
401
|
+
end
|
402
|
+
end
|
403
|
+
end
|
404
|
+
|
405
|
+
describe "#logonpassword=" do
|
406
|
+
before do
|
407
|
+
allow(Puppet::Util::Windows::User).to receive(:get_rights).and_return('SeServiceLogonRight')
|
408
|
+
resource[:logonaccount] = account
|
409
|
+
resource[:logonpassword] = user_input
|
410
|
+
provider.logonaccount_insync?(account)
|
411
|
+
end
|
412
|
+
|
413
|
+
let(:account) { 'LocalSystem' }
|
414
|
+
|
415
|
+
describe "when given logonaccount is a predefined_local_account" do
|
416
|
+
let(:user_input) { 'pass' }
|
417
|
+
let(:principal) { nil }
|
418
|
+
|
419
|
+
it "should pass validation when given account is 'LocalSystem'" do
|
420
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with('LocalSystem').and_return(true)
|
421
|
+
allow(Puppet::Util::Windows::User).to receive(:default_system_account?).with('LocalSystem').and_return(true)
|
422
|
+
|
423
|
+
expect(Puppet::Util::Windows::User).not_to receive(:password_is?)
|
424
|
+
expect { provider.logonpassword=(user_input) }.not_to raise_error
|
425
|
+
end
|
426
|
+
|
427
|
+
['LOCAL SERVICE', 'NETWORK SERVICE', 'SYSTEM'].each do |predefined_local_account|
|
428
|
+
describe "when given account is #{predefined_local_account}" do
|
429
|
+
let(:account) { 'predefined_local_account' }
|
430
|
+
let(:principal) do
|
431
|
+
Puppet::Util::Windows::SID::Principal.new(account, nil, nil, "NT AUTHORITY", :SidTypeUser)
|
432
|
+
end
|
433
|
+
|
434
|
+
it "should pass validation" do
|
435
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with(principal.account).and_return(false)
|
436
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with(principal.domain_account).and_return(false)
|
437
|
+
expect(Puppet::Util::Windows::User).to receive(:default_system_account?).with(principal.domain_account).and_return(true).twice
|
438
|
+
|
439
|
+
expect(Puppet::Util::Windows::User).not_to receive(:password_is?)
|
440
|
+
expect { provider.logonpassword=(user_input) }.not_to raise_error
|
441
|
+
end
|
442
|
+
end
|
443
|
+
end
|
444
|
+
end
|
445
|
+
|
446
|
+
describe "when given logonaccount is not a predefined local account" do
|
447
|
+
before do
|
448
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with(".\\#{principal.account}").and_return(false)
|
449
|
+
allow(Puppet::Util::Windows::User).to receive(:default_system_account?).with(".\\#{principal.account}").and_return(false)
|
450
|
+
end
|
451
|
+
|
452
|
+
let(:account) { 'myUser' }
|
453
|
+
let(:principal) do
|
454
|
+
Puppet::Util::Windows::SID::Principal.new(account, nil, nil, computer_name, :SidTypeUser)
|
455
|
+
end
|
456
|
+
|
457
|
+
describe "when password is proven correct" do
|
458
|
+
let(:user_input) { 'myPass' }
|
459
|
+
it "should pass validation" do
|
460
|
+
allow(Puppet::Util::Windows::User).to receive(:password_is?).with('myUser', 'myPass', '.').and_return(true)
|
461
|
+
expect { provider.logonpassword=(user_input) }.not_to raise_error
|
462
|
+
end
|
463
|
+
end
|
464
|
+
|
465
|
+
describe "when password is not proven correct" do
|
466
|
+
let(:user_input) { 'myWrongPass' }
|
467
|
+
it "should not pass validation" do
|
468
|
+
allow(Puppet::Util::Windows::User).to receive(:password_is?).with('myUser', 'myWrongPass', '.').and_return(false)
|
469
|
+
expect { provider.logonpassword=(user_input) }.to raise_error(Puppet::Error, /The given password is invalid for user '.\\myUser'/)
|
470
|
+
end
|
471
|
+
end
|
472
|
+
end
|
473
|
+
end
|
474
|
+
end
|
273
475
|
end
|