puppet 4.5.3-universal-darwin → 4.6.1-universal-darwin
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 +7 -0
- data/Gemfile +10 -1
- data/ext/debian/control +2 -4
- data/ext/project_data.yaml +4 -4
- data/install.rb +6 -2
- data/lib/puppet.rb +3 -1
- data/lib/puppet/agent/locker.rb +1 -1
- data/lib/puppet/application.rb +6 -4
- data/lib/puppet/application/agent.rb +2 -1
- data/lib/puppet/application/cert.rb +35 -2
- data/lib/puppet/application/device.rb +1 -1
- data/lib/puppet/application/generate.rb +5 -0
- data/lib/puppet/application/lookup.rb +3 -3
- data/lib/puppet/application_support.rb +1 -1
- data/lib/puppet/compilable_resource_type.rb +15 -0
- data/lib/puppet/configurer.rb +67 -10
- data/lib/puppet/configurer/plugin_handler.rb +2 -4
- data/lib/puppet/data_providers/hiera_config.rb +1 -1
- data/lib/puppet/defaults.rb +34 -7
- data/lib/puppet/environments.rb +4 -2
- data/lib/puppet/error.rb +1 -1
- data/lib/puppet/external/dot.rb +1 -1
- data/lib/puppet/face/ca.rb +4 -1
- data/lib/puppet/face/certificate.rb +7 -1
- data/lib/puppet/face/epp.rb +5 -5
- data/lib/puppet/face/generate.rb +64 -0
- data/lib/puppet/face/help.rb +19 -13
- data/lib/puppet/face/man.rb +1 -1
- data/lib/puppet/feature/external_facts.rb +1 -1
- data/lib/puppet/file_system.rb +16 -0
- data/lib/puppet/file_system/file_impl.rb +5 -0
- data/lib/puppet/file_system/memory_impl.rb +4 -0
- data/lib/puppet/file_system/path_pattern.rb +1 -0
- data/lib/puppet/file_system/windows.rb +19 -0
- data/lib/puppet/functions.rb +3 -5
- data/lib/puppet/functions/assert_type.rb +1 -1
- data/lib/puppet/functions/defined.rb +7 -5
- data/lib/puppet/functions/dig.rb +2 -18
- data/lib/puppet/functions/hiera.rb +1 -1
- data/lib/puppet/functions/lest.rb +1 -37
- data/lib/puppet/functions/new.rb +2 -473
- data/lib/puppet/functions/reverse_each.rb +2 -59
- data/lib/puppet/functions/scanf.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -63
- data/lib/puppet/functions/then.rb +1 -61
- data/lib/puppet/functions/type.rb +1 -40
- data/lib/puppet/functions/unwrap.rb +40 -0
- data/lib/puppet/generate/models/type/property.rb +70 -0
- data/lib/puppet/generate/models/type/type.rb +57 -0
- data/lib/puppet/generate/templates/type/pcore.erb +41 -0
- data/lib/puppet/generate/type.rb +239 -0
- data/lib/puppet/graph/simple_graph.rb +2 -6
- data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
- data/lib/puppet/indirector/facts/facter.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +2 -2
- data/lib/puppet/indirector/request.rb +25 -4
- data/lib/puppet/indirector/rest.rb +73 -3
- data/lib/puppet/info_service/class_information_service.rb +1 -2
- data/lib/puppet/interface/documentation.rb +1 -1
- data/lib/puppet/loaders.rb +2 -0
- data/lib/puppet/metatype/manager.rb +6 -6
- data/lib/puppet/module.rb +8 -1
- data/lib/puppet/module_tool.rb +2 -2
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +2 -2
- data/lib/puppet/module_tool/metadata.rb +1 -1
- data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
- data/lib/puppet/network/http/rack/rest.rb +15 -1
- data/lib/puppet/network/rights.rb +1 -11
- data/lib/puppet/node/environment.rb +7 -3
- data/lib/puppet/node/facts.rb +1 -1
- data/lib/puppet/parameter.rb +23 -3
- data/lib/puppet/parameter/boolean.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parser.rb +0 -1
- data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
- data/lib/puppet/parser/ast/resource.rb +5 -0
- data/lib/puppet/parser/ast/resource_instance.rb +5 -1
- data/lib/puppet/parser/ast/resourceparam.rb +5 -0
- data/lib/puppet/parser/compiler.rb +14 -17
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
- data/lib/puppet/parser/environment_compiler.rb +10 -0
- data/lib/puppet/parser/functions/create_resources.rb +39 -24
- data/lib/puppet/parser/functions/defined.rb +2 -26
- data/lib/puppet/parser/functions/dig.rb +29 -0
- data/lib/puppet/parser/functions/lest.rb +49 -0
- data/lib/puppet/parser/functions/new.rb +530 -0
- data/lib/puppet/parser/functions/require.rb +1 -1
- data/lib/puppet/parser/functions/reverse_each.rb +83 -0
- data/lib/puppet/parser/functions/scanf.rb +4 -4
- data/lib/puppet/parser/functions/step.rb +84 -0
- data/lib/puppet/parser/functions/then.rb +73 -0
- data/lib/puppet/parser/functions/type.rb +53 -0
- data/lib/puppet/parser/resource.rb +16 -7
- data/lib/puppet/parser/scope.rb +36 -28
- data/lib/puppet/parser/type_loader.rb +1 -1
- data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
- data/lib/puppet/pops.rb +13 -0
- data/lib/puppet/pops/adapters.rb +49 -49
- data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
- data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
- data/lib/puppet/pops/evaluator/closure.rb +39 -13
- data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
- data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
- data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
- data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
- data/lib/puppet/pops/functions/function.rb +5 -0
- data/lib/puppet/pops/issues.rb +1 -1
- data/lib/puppet/pops/label_provider.rb +2 -2
- data/lib/puppet/pops/loader/base_loader.rb +12 -15
- data/lib/puppet/pops/loader/loader.rb +15 -50
- data/lib/puppet/pops/loader/loader_paths.rb +28 -2
- data/lib/puppet/pops/loader/module_loaders.rb +16 -1
- data/lib/puppet/pops/loader/null_loader.rb +17 -1
- data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
- data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
- data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
- data/lib/puppet/pops/loader/static_loader.rb +55 -0
- data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
- data/lib/puppet/pops/loader/typed_name.rb +50 -0
- data/lib/puppet/pops/loaders.rb +64 -19
- data/lib/puppet/pops/merge_strategy.rb +7 -7
- data/lib/puppet/pops/migration/migration_checker.rb +4 -0
- data/lib/puppet/pops/model/model_label_provider.rb +2 -0
- data/lib/puppet/pops/parser/egrammar.ra +8 -5
- data/lib/puppet/pops/parser/eparser.rb +1550 -1498
- data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
- data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
- data/lib/puppet/pops/parser/lexer2.rb +14 -1
- data/lib/puppet/pops/parser/locator.rb +30 -1
- data/lib/puppet/pops/parser/parser_support.rb +0 -3
- data/lib/puppet/pops/parser/slurp_support.rb +3 -3
- data/lib/puppet/pops/patterns.rb +9 -1
- data/lib/puppet/pops/pcore.rb +67 -11
- data/lib/puppet/pops/puppet_stack.rb +43 -0
- data/lib/puppet/pops/resource/param.rb +51 -0
- data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
- data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
- data/lib/puppet/pops/serialization.rb +17 -0
- data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
- data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
- data/lib/puppet/pops/serialization/deserializer.rb +60 -0
- data/lib/puppet/pops/serialization/extension.rb +126 -0
- data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
- data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
- data/lib/puppet/pops/serialization/json.rb +247 -0
- data/lib/puppet/pops/serialization/object.rb +63 -0
- data/lib/puppet/pops/serialization/rgen.rb +151 -0
- data/lib/puppet/pops/serialization/serializer.rb +91 -0
- data/lib/puppet/pops/serialization/time_factory.rb +66 -0
- data/lib/puppet/pops/types/annotatable.rb +36 -0
- data/lib/puppet/pops/types/implementation_registry.rb +3 -8
- data/lib/puppet/pops/types/p_meta_type.rb +83 -0
- data/lib/puppet/pops/types/p_object_type.rb +110 -117
- data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
- data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
- data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
- data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
- data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
- data/lib/puppet/pops/types/puppet_object.rb +0 -5
- data/lib/puppet/pops/types/ruby_generator.rb +9 -2
- data/lib/puppet/pops/types/type_calculator.rb +6 -1
- data/lib/puppet/pops/types/type_factory.rb +14 -12
- data/lib/puppet/pops/types/type_formatter.rb +78 -33
- data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
- data/lib/puppet/pops/types/type_parser.rb +27 -2
- data/lib/puppet/pops/types/type_set_reference.rb +59 -0
- data/lib/puppet/pops/types/types.rb +366 -13
- data/lib/puppet/pops/validation.rb +4 -4
- data/lib/puppet/pops/validation/checker4_0.rb +5 -2
- data/lib/puppet/pops/visitor.rb +2 -2
- data/lib/puppet/property.rb +64 -5
- data/lib/puppet/provider.rb +1 -1
- data/lib/puppet/provider/aixobject.rb +3 -3
- data/lib/puppet/provider/group/aix.rb +4 -4
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +1 -1
- data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
- data/lib/puppet/provider/package/appdmg.rb +3 -3
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/dnf.rb +5 -0
- data/lib/puppet/provider/package/nim.rb +1 -1
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pip.rb +5 -3
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkg.rb +5 -5
- data/lib/puppet/provider/package/pkgdmg.rb +4 -4
- data/lib/puppet/provider/package/pkgin.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/portage.rb +48 -8
- data/lib/puppet/provider/package/sun.rb +1 -1
- data/lib/puppet/provider/package/tdnf.rb +28 -0
- data/lib/puppet/provider/package/yum.rb +22 -4
- data/lib/puppet/provider/parsedfile.rb +2 -2
- data/lib/puppet/provider/service/base.rb +1 -1
- data/lib/puppet/provider/service/bsd.rb +1 -1
- data/lib/puppet/provider/service/daemontools.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -3
- data/lib/puppet/provider/service/launchd.rb +16 -2
- data/lib/puppet/provider/service/runit.rb +1 -1
- data/lib/puppet/provider/service/smf.rb +8 -1
- data/lib/puppet/provider/service/systemd.rb +39 -6
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
- data/lib/puppet/provider/user/aix.rb +3 -2
- data/lib/puppet/provider/user/directoryservice.rb +4 -3
- 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/windows_adsi.rb +3 -0
- data/lib/puppet/provider/zfs/zfs.rb +1 -1
- data/lib/puppet/reference/type.rb +1 -1
- data/lib/puppet/resource.rb +33 -7
- data/lib/puppet/resource/capability_finder.rb +74 -54
- data/lib/puppet/resource/status.rb +11 -2
- data/lib/puppet/settings.rb +17 -6
- data/lib/puppet/settings/environment_conf.rb +1 -1
- data/lib/puppet/settings/server_list_setting.rb +20 -0
- data/lib/puppet/ssl/certificate_authority.rb +32 -9
- data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
- data/lib/puppet/ssl/host.rb +3 -3
- data/lib/puppet/ssl/oids.rb +10 -0
- data/lib/puppet/ssl/validator/default_validator.rb +2 -2
- data/lib/puppet/test/test_helper.rb +2 -2
- data/lib/puppet/transaction.rb +12 -0
- data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
- data/lib/puppet/transaction/event.rb +29 -2
- data/lib/puppet/transaction/event_manager.rb +1 -1
- data/lib/puppet/transaction/persistence.rb +84 -0
- data/lib/puppet/transaction/report.rb +49 -2
- data/lib/puppet/transaction/resource_harness.rb +98 -18
- data/lib/puppet/type.rb +63 -21
- data/lib/puppet/type/augeas.rb +3 -3
- data/lib/puppet/type/cron.rb +1 -1
- data/lib/puppet/type/file.rb +39 -2
- data/lib/puppet/type/file/data_sync.rb +13 -5
- data/lib/puppet/type/host.rb +1 -1
- data/lib/puppet/type/mount.rb +2 -6
- data/lib/puppet/type/notify.rb +1 -1
- data/lib/puppet/type/package.rb +1 -1
- data/lib/puppet/type/resources.rb +1 -1
- data/lib/puppet/type/scheduled_task.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/yumrepo.rb +3 -3
- data/lib/puppet/type/zone.rb +1 -1
- data/lib/puppet/util.rb +2 -2
- data/lib/puppet/util/classgen.rb +1 -1
- data/lib/puppet/util/command_line.rb +6 -2
- data/lib/puppet/util/command_line/trollop.rb +1 -1
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/http_proxy.rb +1 -1
- data/lib/puppet/util/inifile.rb +1 -1
- data/lib/puppet/util/instance_loader.rb +1 -1
- data/lib/puppet/util/logging.rb +1 -1
- data/lib/puppet/util/multi_match.rb +1 -1
- data/lib/puppet/util/plist.rb +15 -5
- data/lib/puppet/util/profiler.rb +1 -1
- data/lib/puppet/util/profiler/around_profiler.rb +1 -1
- data/lib/puppet/util/psych_support.rb +1 -1
- data/lib/puppet/util/rdoc.rb +2 -2
- data/lib/puppet/util/rubygems.rb +1 -1
- data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
- data/lib/puppet/util/windows/access_control_entry.rb +1 -1
- data/lib/puppet/util/windows/adsi.rb +30 -8
- data/lib/puppet/util/windows/api_types.rb +1 -1
- data/lib/puppet/util/windows/file.rb +59 -0
- data/lib/puppet/util/windows/process.rb +10 -0
- data/lib/puppet/util/windows/security.rb +1 -1
- data/lib/puppet/util/windows/user.rb +22 -4
- data/lib/puppet/util/yaml.rb +15 -3
- data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
- data/lib/puppet/vendor/rgen_patch.rb +1 -1
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
- data/spec/integration/agent/logging_spec.rb +15 -14
- data/spec/integration/application/apply_spec.rb +1 -0
- data/spec/integration/directory_environments_spec.rb +16 -0
- data/spec/integration/environments/settings_spec.rb +32 -4
- data/spec/integration/faces/documentation_spec.rb +1 -1
- data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
- data/spec/integration/node/environment_spec.rb +21 -0
- data/spec/integration/parser/collection_spec.rb +10 -0
- data/spec/integration/parser/compiler_spec.rb +76 -840
- data/spec/integration/parser/functions/require_spec.rb +3 -3
- data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
- data/spec/integration/parser/pcore_resource_spec.rb +208 -0
- data/spec/integration/parser/resource_expressions_spec.rb +4 -2
- data/spec/integration/provider/yumrepo_spec.rb +4 -1
- data/spec/integration/transaction/report_spec.rb +666 -0
- data/spec/integration/type/file_spec.rb +11 -12
- data/spec/integration/util/windows/adsi_spec.rb +99 -0
- data/spec/integration/util/windows/principal_spec.rb +109 -60
- data/spec/integration/util/windows/process_spec.rb +4 -2
- data/spec/integration/util/windows/security_spec.rb +34 -8
- data/spec/integration/util/windows/user_spec.rb +26 -4
- data/spec/lib/puppet_spec/files.rb +2 -2
- data/spec/lib/puppet_spec/network.rb +12 -8
- data/spec/shared_examples/rhel_package_provider.rb +341 -0
- data/spec/spec_helper.rb +8 -2
- data/spec/unit/application/cert_spec.rb +20 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
- data/spec/unit/configurer_spec.rb +46 -0
- data/spec/unit/defaults_spec.rb +14 -0
- data/spec/unit/face/generate_spec.rb +230 -0
- data/spec/unit/face/help_spec.rb +53 -0
- data/spec/unit/face/parser_spec.rb +6 -0
- data/spec/unit/face/plugin_spec.rb +0 -4
- data/spec/unit/file_system_spec.rb +85 -0
- data/spec/unit/functions/lookup_spec.rb +4 -4
- data/spec/unit/functions/match_spec.rb +2 -2
- data/spec/unit/functions/regsubst_spec.rb +1 -1
- data/spec/unit/functions/split_spec.rb +1 -1
- data/spec/unit/functions/unwrap_spec.rb +29 -0
- data/spec/unit/functions/versioncmp_spec.rb +1 -1
- data/spec/unit/functions4_spec.rb +8 -8
- data/spec/unit/indirector/facts/facter_spec.rb +1 -9
- data/spec/unit/indirector/rest_spec.rb +95 -9
- data/spec/unit/module_spec.rb +43 -7
- data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
- data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
- data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
- data/spec/unit/network/rights_spec.rb +1 -1
- data/spec/unit/parameter_spec.rb +11 -0
- data/spec/unit/parser/compiler_spec.rb +19 -33
- data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
- data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
- data/spec/unit/parser/functions/require_spec.rb +2 -2
- data/spec/unit/parser/resource_spec.rb +21 -11
- data/spec/unit/parser/scope_spec.rb +1 -5
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
- data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
- data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
- data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
- data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
- data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
- data/spec/unit/pops/puppet_stack_spec.rb +79 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
- data/spec/unit/pops/serialization/packer_spec.rb +153 -0
- data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
- data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
- data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
- data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
- data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
- data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
- data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
- data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
- data/spec/unit/pops/types/type_parser_spec.rb +1 -1
- data/spec/unit/pops/types/types_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +18 -1
- data/spec/unit/property_spec.rb +48 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
- data/spec/unit/provider/package/dnf_spec.rb +1 -99
- data/spec/unit/provider/package/pacman_spec.rb +4 -4
- data/spec/unit/provider/package/pip_spec.rb +14 -0
- data/spec/unit/provider/package/pkg_spec.rb +6 -0
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
- data/spec/unit/provider/package/portage_spec.rb +64 -8
- data/spec/unit/provider/package/tdnf_spec.rb +18 -0
- data/spec/unit/provider/package/windows/package_spec.rb +4 -1
- data/spec/unit/provider/package/windows_spec.rb +8 -2
- data/spec/unit/provider/package/yum_spec.rb +6 -377
- data/spec/unit/provider/service/base_spec.rb +6 -0
- data/spec/unit/provider/service/debian_spec.rb +16 -7
- data/spec/unit/provider/service/gentoo_spec.rb +6 -0
- data/spec/unit/provider/service/init_spec.rb +7 -0
- data/spec/unit/provider/service/launchd_spec.rb +35 -4
- data/spec/unit/provider/service/openrc_spec.rb +6 -0
- data/spec/unit/provider/service/smf_spec.rb +31 -6
- data/spec/unit/provider/service/src_spec.rb +6 -0
- data/spec/unit/provider/service/systemd_spec.rb +70 -20
- data/spec/unit/provider/service/upstart_spec.rb +6 -0
- data/spec/unit/provider/user/aix_spec.rb +7 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
- data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
- data/spec/unit/resource/capability_finder_spec.rb +51 -3
- data/spec/unit/resource/catalog_spec.rb +5 -0
- data/spec/unit/resource/type_spec.rb +2 -2
- data/spec/unit/resource_spec.rb +19 -0
- data/spec/unit/settings_spec.rb +13 -0
- data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
- data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
- data/spec/unit/ssl/host_spec.rb +1 -1
- data/spec/unit/ssl/oids_spec.rb +24 -21
- data/spec/unit/transaction/event_spec.rb +3 -1
- data/spec/unit/transaction/persistence_spec.rb +173 -0
- data/spec/unit/transaction/report_spec.rb +64 -1
- data/spec/unit/transaction/resource_harness_spec.rb +91 -0
- data/spec/unit/type/file/content_spec.rb +47 -15
- data/spec/unit/type/file_spec.rb +28 -0
- data/spec/unit/type/mount_spec.rb +5 -12
- data/spec/unit/type/yumrepo_spec.rb +1 -5
- data/spec/unit/type_spec.rb +32 -0
- data/spec/unit/util/command_line_spec.rb +11 -0
- data/spec/unit/util/execution_spec.rb +1 -1
- data/spec/unit/util/plist_spec.rb +16 -3
- data/spec/unit/util/storage_spec.rb +4 -1
- data/spec/unit/util/windows/adsi_spec.rb +23 -2
- data/spec/unit/util/windows/file_spec.rb +56 -1
- data/spec/unit/util/windows/sid_spec.rb +31 -7
- data/spec/unit/util/yaml_spec.rb +12 -0
- data/spec/unit/util_spec.rb +87 -20
- metadata +89 -34
- data/ext/puppetlisten/puppetlisten.rb +0 -77
- data/ext/puppetlisten/puppetrun.rb +0 -38
- data/lib/puppet/resource/type_collection_helper.rb +0 -7
- data/spec/unit/parser/functions/defined_spec.rb +0 -120
- data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -722,11 +722,11 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
722
722
|
|
723
723
|
FileUtils.mkdir_p(srcdir)
|
724
724
|
FileUtils.mkdir_p(dstdir)
|
725
|
-
|
725
|
+
|
726
726
|
srcfile = File.join(srcdir, "file.src")
|
727
727
|
cpyfile = File.join(dstdir, "file.src")
|
728
728
|
ignfile = File.join(srcdir, "file.ign")
|
729
|
-
|
729
|
+
|
730
730
|
File.open(srcfile, "w") { |f| f.puts "don't ignore me" }
|
731
731
|
File.open(ignfile, "w") { |f| f.puts "you better ignore me" }
|
732
732
|
|
@@ -735,7 +735,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
735
735
|
:name => srcdir,
|
736
736
|
:ensure => 'directory',
|
737
737
|
:mode => '0755',)
|
738
|
-
|
738
|
+
|
739
739
|
catalog.add_resource described_class.new(
|
740
740
|
:name => dstdir,
|
741
741
|
:ensure => 'directory',
|
@@ -743,7 +743,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
743
743
|
:source => srcdir,
|
744
744
|
:recurse => true,
|
745
745
|
:ignore => '*.ign',)
|
746
|
-
|
746
|
+
|
747
747
|
catalog.apply
|
748
748
|
expect(Puppet::FileSystem.exist?(srcdir)).to be_truthy
|
749
749
|
expect(Puppet::FileSystem.exist?(dstdir)).to be_truthy
|
@@ -1393,9 +1393,8 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1393
1393
|
describe "when processing SYSTEM ACEs" do
|
1394
1394
|
before do
|
1395
1395
|
@sids = {
|
1396
|
-
:current_user => Puppet::Util::Windows::
|
1396
|
+
:current_user => Puppet::Util::Windows::ADSI::User.current_user_sid.sid,
|
1397
1397
|
:system => Puppet::Util::Windows::SID::LocalSystem,
|
1398
|
-
:guest => Puppet::Util::Windows::SID.name_to_sid("Guest"),
|
1399
1398
|
:users => Puppet::Util::Windows::SID::BuiltinUsers,
|
1400
1399
|
:power_users => Puppet::Util::Windows::SID::PowerUsers,
|
1401
1400
|
:none => Puppet::Util::Windows::SID::Nobody
|
@@ -1415,8 +1414,8 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1415
1414
|
|
1416
1415
|
describe "when permissions are not insync?" do
|
1417
1416
|
before :each do
|
1418
|
-
@file[:owner] =
|
1419
|
-
@file[:group] =
|
1417
|
+
@file[:owner] = @sids[:none]
|
1418
|
+
@file[:group] = @sids[:none]
|
1420
1419
|
end
|
1421
1420
|
|
1422
1421
|
it "preserves the inherited SYSTEM ACE for an existing file" do
|
@@ -1503,8 +1502,8 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1503
1502
|
|
1504
1503
|
describe "when permissions are not insync?" do
|
1505
1504
|
before :each do
|
1506
|
-
@directory[:owner] =
|
1507
|
-
@directory[:group] =
|
1505
|
+
@directory[:owner] = @sids[:none]
|
1506
|
+
@directory[:group] = @sids[:none]
|
1508
1507
|
end
|
1509
1508
|
|
1510
1509
|
it "preserves the inherited SYSTEM ACEs for an existing directory" do
|
@@ -1726,7 +1725,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1726
1725
|
catalog.apply
|
1727
1726
|
expect(Puppet::FileSystem).to be_directory(copy)
|
1728
1727
|
end
|
1729
|
-
|
1728
|
+
|
1730
1729
|
it "should copy the link itself if :links => manage" do
|
1731
1730
|
catalog.add_resource described_class.new(
|
1732
1731
|
:name => target,
|
@@ -1746,7 +1745,7 @@ describe Puppet::Type.type(:file), :uses_checksums => true do
|
|
1746
1745
|
expect(Dir.entries(link)).to eq(Dir.entries(copy))
|
1747
1746
|
end
|
1748
1747
|
end
|
1749
|
-
|
1748
|
+
|
1750
1749
|
context "and the recurse attribute is true" do
|
1751
1750
|
it "should recursively copy the directory if :links => follow" do
|
1752
1751
|
catalog.add_resource described_class.new(
|
@@ -0,0 +1,99 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'puppet/util/windows'
|
4
|
+
|
5
|
+
describe Puppet::Util::Windows::ADSI::User,
|
6
|
+
:if => Puppet.features.microsoft_windows? do
|
7
|
+
|
8
|
+
describe ".initialize" do
|
9
|
+
it "cannot reference BUILTIN accounts like SYSTEM due to WinNT moniker limitations" do
|
10
|
+
system = Puppet::Util::Windows::ADSI::User.new('SYSTEM')
|
11
|
+
# trying to retrieve COM object should fail to load with a localized version of:
|
12
|
+
# ADSI connection error: failed to parse display name of moniker `WinNT://./SYSTEM,user'
|
13
|
+
# HRESULT error code:0x800708ad
|
14
|
+
# The user name could not be found.
|
15
|
+
# Matching on error code alone is sufficient
|
16
|
+
expect { system.native_user }.to raise_error(/0x800708ad/)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '.each' do
|
21
|
+
it 'should return a list of users with UTF-8 names' do
|
22
|
+
begin
|
23
|
+
original_codepage = Encoding.default_external
|
24
|
+
Encoding.default_external = Encoding::CP850 # Western Europe
|
25
|
+
|
26
|
+
Puppet::Util::Windows::ADSI::User.each do |user|
|
27
|
+
expect(user.name.encoding).to be(Encoding::UTF_8)
|
28
|
+
end
|
29
|
+
ensure
|
30
|
+
Encoding.default_external = original_codepage
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '.[]' do
|
36
|
+
it 'should return string attributes as UTF-8' do
|
37
|
+
administrator = Puppet::Util::Windows::ADSI::User.new('Administrator')
|
38
|
+
expect(administrator['Description'].encoding).to eq(Encoding::UTF_8)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '.groups' do
|
43
|
+
it 'should return a list of groups with UTF-8 names' do
|
44
|
+
begin
|
45
|
+
original_codepage = Encoding.default_external
|
46
|
+
Encoding.default_external = Encoding::CP850 # Western Europe
|
47
|
+
|
48
|
+
|
49
|
+
# lookup by English name Administrator is OK on localized Windows
|
50
|
+
administrator = Puppet::Util::Windows::ADSI::User.new('Administrator')
|
51
|
+
administrator.groups.each do |name|
|
52
|
+
expect(name.encoding).to be(Encoding::UTF_8)
|
53
|
+
end
|
54
|
+
ensure
|
55
|
+
Encoding.default_external = original_codepage
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
describe Puppet::Util::Windows::ADSI::Group,
|
62
|
+
:if => Puppet.features.microsoft_windows? do
|
63
|
+
|
64
|
+
let (:administrator_bytes) { [1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0] }
|
65
|
+
let (:administrators_principal) { Puppet::Util::Windows::SID::Principal.lookup_account_sid(administrator_bytes) }
|
66
|
+
|
67
|
+
describe '.each' do
|
68
|
+
it 'should return a list of groups with UTF-8 names' do
|
69
|
+
begin
|
70
|
+
original_codepage = Encoding.default_external
|
71
|
+
Encoding.default_external = Encoding::CP850 # Western Europe
|
72
|
+
|
73
|
+
|
74
|
+
Puppet::Util::Windows::ADSI::Group.each do |group|
|
75
|
+
expect(group.name.encoding).to be(Encoding::UTF_8)
|
76
|
+
end
|
77
|
+
ensure
|
78
|
+
Encoding.default_external = original_codepage
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe '.members' do
|
84
|
+
it 'should return a list of members with UTF-8 names' do
|
85
|
+
begin
|
86
|
+
original_codepage = Encoding.default_external
|
87
|
+
Encoding.default_external = Encoding::CP850 # Western Europe
|
88
|
+
|
89
|
+
# lookup by English name Administrators is not OK on localized Windows
|
90
|
+
admins = Puppet::Util::Windows::ADSI::Group.new(administrators_principal.account)
|
91
|
+
admins.members.each do |name|
|
92
|
+
expect(name.encoding).to be(Encoding::UTF_8)
|
93
|
+
end
|
94
|
+
ensure
|
95
|
+
Encoding.default_external = original_codepage
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -4,38 +4,45 @@ require 'puppet/util/windows'
|
|
4
4
|
|
5
5
|
describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft_windows? do
|
6
6
|
|
7
|
+
let (:current_user_sid) { Puppet::Util::Windows::ADSI::User.current_user_sid }
|
7
8
|
let (:system_bytes) { [1, 1, 0, 0, 0, 0, 0, 5, 18, 0, 0, 0] }
|
9
|
+
let (:null_sid_bytes) { bytes = [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] }
|
8
10
|
let (:administrator_bytes) { [1, 2, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0, 32, 2, 0, 0] }
|
11
|
+
let (:computer_sid) { Puppet::Util::Windows::SID.name_to_sid_object(Socket.gethostname) }
|
12
|
+
# BUILTIN is localized on German Windows, but not French
|
13
|
+
# looking this up like this dilutes the values of the tests as we're comparing two mechanisms
|
14
|
+
# for returning the same values, rather than to a known good
|
15
|
+
let (:builtin_localized) { Puppet::Util::Windows::SID.sid_to_name('S-1-5-32') }
|
9
16
|
|
10
17
|
describe ".lookup_account_name" do
|
11
18
|
it "should create an instance from a well-known account name" do
|
12
|
-
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('
|
13
|
-
expect(principal.account).to eq('
|
14
|
-
expect(principal.sid_bytes).to eq(
|
15
|
-
expect(principal.sid).to eq('S-1-
|
16
|
-
expect(principal.domain).to eq('
|
17
|
-
expect(principal.domain_account).to eq('
|
18
|
-
|
19
|
-
# Windows API LookupAccountSid behaves differently if current user is SYSTEM
|
20
|
-
if Puppet::Util::Windows::ADSI::User.current_user_name != 'SYSTEM'
|
21
|
-
account_type = :SidTypeWellKnownGroup
|
22
|
-
else
|
23
|
-
account_type = :SidTypeUser
|
24
|
-
end
|
25
|
-
|
26
|
-
expect(principal.account_type).to eq(account_type)
|
19
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('NULL SID')
|
20
|
+
expect(principal.account).to eq('NULL SID')
|
21
|
+
expect(principal.sid_bytes).to eq(null_sid_bytes)
|
22
|
+
expect(principal.sid).to eq('S-1-0-0')
|
23
|
+
expect(principal.domain).to eq('')
|
24
|
+
expect(principal.domain_account).to eq('NULL SID')
|
25
|
+
expect(principal.account_type).to eq(:SidTypeWellKnownGroup)
|
27
26
|
end
|
28
27
|
|
29
28
|
it "should create an instance from a well-known account prefixed with NT AUTHORITY" do
|
29
|
+
# a special case that can be used to lookup an account on a localized Windows
|
30
30
|
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('NT AUTHORITY\\SYSTEM')
|
31
|
-
expect(principal.account).to eq('SYSTEM')
|
32
31
|
expect(principal.sid_bytes).to eq(system_bytes)
|
33
32
|
expect(principal.sid).to eq('S-1-5-18')
|
34
|
-
|
35
|
-
|
33
|
+
|
34
|
+
# guard these 3 checks on a US Windows with 1033 - primary language id of 9
|
35
|
+
primary_language_id = 9
|
36
|
+
# even though lookup in English, returned values may be localized
|
37
|
+
# French Windows returns AUTORITE NT\\Syst\u00E8me, German Windows returns NT-AUTORIT\u00C4T\\SYSTEM
|
38
|
+
if (Puppet::Util::Windows::Process.get_system_default_ui_language & primary_language_id == primary_language_id)
|
39
|
+
expect(principal.account).to eq('SYSTEM')
|
40
|
+
expect(principal.domain).to eq('NT AUTHORITY')
|
41
|
+
expect(principal.domain_account).to eq('NT AUTHORITY\\SYSTEM')
|
42
|
+
end
|
36
43
|
|
37
44
|
# Windows API LookupAccountSid behaves differently if current user is SYSTEM
|
38
|
-
if
|
45
|
+
if current_user_sid.sid_bytes != system_bytes
|
39
46
|
account_type = :SidTypeWellKnownGroup
|
40
47
|
else
|
41
48
|
account_type = :SidTypeUser
|
@@ -45,9 +52,11 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
45
52
|
end
|
46
53
|
|
47
54
|
it "should create an instance from a local account prefixed with hostname" do
|
48
|
-
|
49
|
-
|
50
|
-
|
55
|
+
running_as_system = (current_user_sid.sid_bytes == system_bytes)
|
56
|
+
username = running_as_system ?
|
57
|
+
# need to return localized name of Administrator account
|
58
|
+
Puppet::Util::Windows::SID.sid_to_name(computer_sid.sid + '-500').split('\\').last :
|
59
|
+
current_user_sid.account
|
51
60
|
|
52
61
|
user_exists = Puppet::Util::Windows::ADSI::User.exists?(".\\#{username}")
|
53
62
|
|
@@ -65,13 +74,18 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
65
74
|
expect(principal.account_type).to eq(:SidTypeUser)
|
66
75
|
end
|
67
76
|
|
68
|
-
it "should create an instance from a well-known
|
69
|
-
|
70
|
-
|
77
|
+
it "should create an instance from a well-known BUILTIN alias" do
|
78
|
+
# by looking up the localized name of the account, the test value is diluted
|
79
|
+
# this localizes Administrators AND BUILTIN
|
80
|
+
qualified_name = Puppet::Util::Windows::SID.sid_to_name('S-1-5-32-544')
|
81
|
+
domain, name = qualified_name.split('\\')
|
82
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name(name)
|
83
|
+
|
84
|
+
expect(principal.account).to eq(name)
|
71
85
|
expect(principal.sid_bytes).to eq(administrator_bytes)
|
72
86
|
expect(principal.sid).to eq('S-1-5-32-544')
|
73
|
-
expect(principal.domain).to eq(
|
74
|
-
expect(principal.domain_account).to eq(
|
87
|
+
expect(principal.domain).to eq(domain)
|
88
|
+
expect(principal.domain_account).to eq(qualified_name)
|
75
89
|
expect(principal.account_type).to eq(:SidTypeAlias)
|
76
90
|
end
|
77
91
|
|
@@ -79,55 +93,72 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
79
93
|
principal = Puppet::Util::Windows::SID::Principal
|
80
94
|
expect {
|
81
95
|
principal.lookup_account_name('ConanTheBarbarian')
|
82
|
-
}.to raise_error
|
96
|
+
}.to raise_error do |error|
|
97
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
98
|
+
expect(error.code).to eq(1332) # ERROR_NONE_MAPPED
|
99
|
+
end
|
83
100
|
end
|
84
101
|
|
85
102
|
it "should return a BUILTIN domain principal for empty account names" do
|
86
103
|
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name('')
|
87
104
|
expect(principal.account_type).to eq(:SidTypeDomain)
|
88
105
|
expect(principal.sid).to eq('S-1-5-32')
|
89
|
-
expect(principal.account).to eq(
|
90
|
-
expect(principal.domain).to eq(
|
91
|
-
expect(principal.domain_account).to eq(
|
106
|
+
expect(principal.account).to eq(builtin_localized)
|
107
|
+
expect(principal.domain).to eq(builtin_localized)
|
108
|
+
expect(principal.domain_account).to eq(builtin_localized)
|
92
109
|
end
|
93
110
|
|
94
111
|
it "should return a BUILTIN domain principal for BUILTIN account names" do
|
95
|
-
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name(
|
112
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_name(builtin_localized)
|
96
113
|
expect(principal.account_type).to eq(:SidTypeDomain)
|
97
114
|
expect(principal.sid).to eq('S-1-5-32')
|
98
|
-
expect(principal.account).to eq(
|
99
|
-
expect(principal.domain).to eq(
|
100
|
-
expect(principal.domain_account).to eq(
|
115
|
+
expect(principal.account).to eq(builtin_localized)
|
116
|
+
expect(principal.domain).to eq(builtin_localized)
|
117
|
+
expect(principal.domain_account).to eq(builtin_localized)
|
101
118
|
end
|
102
119
|
|
103
120
|
end
|
104
121
|
|
105
122
|
describe ".lookup_account_sid" do
|
106
|
-
it "should create an instance from a
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
expect(principal.account_type).to eq(account_type)
|
123
|
+
it "should create an instance from a user SID" do
|
124
|
+
# take the computer account bytes and append the equivalent of -501 for Guest
|
125
|
+
bytes = (computer_sid.sid_bytes + [245, 1, 0, 0])
|
126
|
+
# computer SID bytes start with [1, 4, ...] but need to be [1, 5, ...]
|
127
|
+
bytes[1] = 5
|
128
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_sid(bytes)
|
129
|
+
# use the returned SID to lookup localized Guest account name in Windows
|
130
|
+
guest_name = Puppet::Util::Windows::SID.sid_to_name(principal.sid)
|
131
|
+
|
132
|
+
expect(principal.sid_bytes).to eq(bytes)
|
133
|
+
expect(principal.sid).to eq(computer_sid.sid + '-501')
|
134
|
+
expect(principal.account).to eq(guest_name.split('\\')[1])
|
135
|
+
expect(principal.domain).to eq(computer_sid.domain)
|
136
|
+
expect(principal.domain_account).to eq(guest_name)
|
137
|
+
expect(principal.account_type).to eq(:SidTypeUser)
|
122
138
|
end
|
123
139
|
|
124
140
|
it "should create an instance from a well-known group SID" do
|
141
|
+
principal = Puppet::Util::Windows::SID::Principal.lookup_account_sid(null_sid_bytes)
|
142
|
+
expect(principal.sid_bytes).to eq(null_sid_bytes)
|
143
|
+
expect(principal.sid).to eq('S-1-0-0')
|
144
|
+
expect(principal.account).to eq('NULL SID')
|
145
|
+
expect(principal.domain).to eq('')
|
146
|
+
expect(principal.domain_account).to eq('NULL SID')
|
147
|
+
expect(principal.account_type).to eq(:SidTypeWellKnownGroup)
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should create an instance from a well-known BUILTIN Alias SID" do
|
125
151
|
principal = Puppet::Util::Windows::SID::Principal.lookup_account_sid(administrator_bytes)
|
126
|
-
|
152
|
+
# by looking up the localized name of the account, the test value is diluted
|
153
|
+
# this localizes Administrators AND BUILTIN
|
154
|
+
qualified_name = Puppet::Util::Windows::SID.sid_to_name('S-1-5-32-544')
|
155
|
+
domain, name = qualified_name.split('\\')
|
156
|
+
|
157
|
+
expect(principal.account).to eq(name)
|
127
158
|
expect(principal.sid_bytes).to eq(administrator_bytes)
|
128
159
|
expect(principal.sid).to eq('S-1-5-32-544')
|
129
|
-
expect(principal.domain).to eq(
|
130
|
-
expect(principal.domain_account).to eq(
|
160
|
+
expect(principal.domain).to eq(domain)
|
161
|
+
expect(principal.domain_account).to eq(qualified_name)
|
131
162
|
expect(principal.account_type).to eq(:SidTypeAlias)
|
132
163
|
end
|
133
164
|
|
@@ -159,7 +190,10 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
159
190
|
principal = Puppet::Util::Windows::SID::Principal
|
160
191
|
expect {
|
161
192
|
principal.lookup_account_sid([0])
|
162
|
-
}.to raise_error
|
193
|
+
}.to raise_error do |error|
|
194
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
195
|
+
expect(error.code).to eq(87) # ERROR_INVALID_PARAMETER
|
196
|
+
end
|
163
197
|
end
|
164
198
|
|
165
199
|
it "should raise an error when trying to lookup a valid SID that doesn't have a matching account" do
|
@@ -167,16 +201,19 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
167
201
|
expect {
|
168
202
|
# S-1-1-1 which is not a valid account
|
169
203
|
principal.lookup_account_sid([1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0])
|
170
|
-
}.to raise_error
|
204
|
+
}.to raise_error do |error|
|
205
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
206
|
+
expect(error.code).to eq(1332) # ERROR_NONE_MAPPED
|
207
|
+
end
|
171
208
|
end
|
172
209
|
|
173
210
|
it "should return a domain principal for BUILTIN SID S-1-5-32" do
|
174
211
|
principal = Puppet::Util::Windows::SID::Principal.lookup_account_sid([1, 1, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0])
|
175
212
|
expect(principal.account_type).to eq(:SidTypeDomain)
|
176
213
|
expect(principal.sid).to eq('S-1-5-32')
|
177
|
-
expect(principal.account).to eq(
|
178
|
-
expect(principal.domain).to eq(
|
179
|
-
expect(principal.domain_account).to eq(
|
214
|
+
expect(principal.account).to eq(builtin_localized)
|
215
|
+
expect(principal.domain).to eq(builtin_localized)
|
216
|
+
expect(principal.domain_account).to eq(builtin_localized)
|
180
217
|
end
|
181
218
|
end
|
182
219
|
|
@@ -184,7 +221,7 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
184
221
|
let(:builtin_sid) { [1, 1, 0, 0, 0, 0, 0, 5, 32, 0, 0, 0] }
|
185
222
|
let(:sid_principal) { Puppet::Util::Windows::SID::Principal.lookup_account_sid(builtin_sid) }
|
186
223
|
|
187
|
-
['.', '
|
224
|
+
['.', ''].each do |name|
|
188
225
|
it "when comparing the one looked up via SID S-1-5-32 to one looked up via non-canonical name #{name} for the BUILTIN domain" do
|
189
226
|
name_principal = Puppet::Util::Windows::SID::Principal.lookup_account_name(name)
|
190
227
|
|
@@ -197,5 +234,17 @@ describe Puppet::Util::Windows::SID::Principal, :if => Puppet.features.microsoft
|
|
197
234
|
end
|
198
235
|
end
|
199
236
|
end
|
237
|
+
|
238
|
+
it "when comparing the one looked up via SID S-1-5-32 to one looked up via non-canonical localized name for the BUILTIN domain" do
|
239
|
+
name_principal = Puppet::Util::Windows::SID::Principal.lookup_account_name(builtin_localized)
|
240
|
+
|
241
|
+
# compares canonical sid
|
242
|
+
expect(sid_principal).to eq(name_principal)
|
243
|
+
|
244
|
+
# compare all properties that have public accessors
|
245
|
+
sid_principal.public_methods(false).reject { |m| m == :== }.each do |method|
|
246
|
+
expect(sid_principal.send(method)).to eq(name_principal.send(method))
|
247
|
+
end
|
248
|
+
end
|
200
249
|
end
|
201
250
|
end
|
@@ -27,8 +27,10 @@ describe "Puppet::Util::Windows::Process", :if => Puppet.features.microsoft_wind
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should raise an error for an unknown privilege name" do
|
30
|
-
|
31
|
-
|
30
|
+
expect { Puppet::Util::Windows::Process.lookup_privilege_value('foo') }.to raise_error do |error|
|
31
|
+
expect(error).to be_a(Puppet::Util::Windows::Error)
|
32
|
+
expect(error.code).to eq(1313) # ERROR_NO_SUCH_PRIVILEGE
|
33
|
+
end
|
32
34
|
end
|
33
35
|
end
|
34
36
|
|