puppet 4.5.3-x86-mingw32 → 4.6.1-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 +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 +91 -48
- 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
@@ -14,6 +14,12 @@ describe Puppet::Face[:parser, :current] do
|
|
14
14
|
from_an_interactive_terminal
|
15
15
|
end
|
16
16
|
|
17
|
+
after(:each) do
|
18
|
+
# Reset cache of loaders (many examples run in the *root* environment
|
19
|
+
# which exists in "eternity")
|
20
|
+
Puppet.lookup(:current_environment).loaders = nil
|
21
|
+
end
|
22
|
+
|
17
23
|
it "validates the configured site manifest when no files are given" do
|
18
24
|
manifest = file_containing('site.pp', "{ invalid =>")
|
19
25
|
|
@@ -12,10 +12,6 @@ describe Puppet::Face[:plugin, :current] do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
context "download" do
|
15
|
-
before :each do
|
16
|
-
Puppet.features.stubs(:external_facts?).returns(true)
|
17
|
-
end
|
18
|
-
|
19
15
|
it "downloads plugins and external facts" do
|
20
16
|
Puppet::Configurer::Downloader.any_instance.expects(:evaluate).twice.returns([])
|
21
17
|
|
@@ -649,5 +649,90 @@ describe "Puppet::FileSystem" do
|
|
649
649
|
end.to raise_error(Errno::EEXIST)
|
650
650
|
end
|
651
651
|
end
|
652
|
+
|
653
|
+
describe 'expand_path' do
|
654
|
+
it 'should raise an error when given nil, like Ruby File.expand_path' do
|
655
|
+
expect { File.expand_path(nil) }.to raise_error(TypeError)
|
656
|
+
|
657
|
+
# match Ruby behavior
|
658
|
+
expect { Puppet::FileSystem.expand_path(nil) }.to raise_error(TypeError)
|
659
|
+
end
|
660
|
+
|
661
|
+
it 'with an expanded path passed to Dir.glob, the same expanded path will be returned' do
|
662
|
+
# this exists specifically for Puppet::Pops::Loader::ModuleLoaders::FileBased#add_to_index
|
663
|
+
# which should receive an expanded path value from it's parent Environment
|
664
|
+
# and will later compare values generated by Dir.glob
|
665
|
+
tmp_long_file = tmpfile('foo.bar', tmpdir('super-long-thing-that-Windows-shortens'))
|
666
|
+
Puppet::FileSystem.touch(tmp_long_file)
|
667
|
+
expanded_path = Puppet::FileSystem.expand_path(tmp_long_file)
|
668
|
+
|
669
|
+
expect(expanded_path).to eq(Dir.glob(expanded_path).first)
|
670
|
+
end
|
671
|
+
|
672
|
+
describe 'on non-Windows', :unless => Puppet::Util::Platform.windows? do
|
673
|
+
it 'should produce the same results as the Ruby File.expand_path' do
|
674
|
+
# on Windows this may be 8.3 style, but not so on other platforms
|
675
|
+
# only done since ::File.expects(:expand_path).with(path).at_least_once
|
676
|
+
# cannot be used since it will cause a stack overflow
|
677
|
+
path = tmpdir('foobar')
|
678
|
+
|
679
|
+
expect(Puppet::FileSystem.expand_path(path)).to eq(File.expand_path(path))
|
680
|
+
end
|
681
|
+
end
|
682
|
+
|
683
|
+
describe 'on Windows', :if => Puppet::Util::Platform.windows? do
|
684
|
+
let(:nonexist_file) { 'C:\\file~1.ext' }
|
685
|
+
let(:nonexist_path) { 'C:\\progra~1\\missing\\path\\file.ext' }
|
686
|
+
|
687
|
+
['/', '\\'].each do |slash|
|
688
|
+
it "should return the absolute path including system drive letter when given #{slash}, like Ruby File.expand_path" do
|
689
|
+
|
690
|
+
# regardless of slash direction, return value is drive letter
|
691
|
+
expanded = Puppet::FileSystem.expand_path(slash)
|
692
|
+
expect(expanded).to eq(ENV['SystemDrive'] + File::SEPARATOR)
|
693
|
+
expect(expanded).to eq(File.expand_path(slash))
|
694
|
+
end
|
695
|
+
end
|
696
|
+
|
697
|
+
it 'should behave like Rubys File.expand_path for a file that doesnt exist' do
|
698
|
+
expect(Puppet::FileSystem.exist?(nonexist_file)).to be_falsey
|
699
|
+
# this will change c:\\file~1.ext to c:/file~1.ext (existing Ruby behavior), but not expand any ~
|
700
|
+
ruby_expanded = File.expand_path(nonexist_file)
|
701
|
+
expect(ruby_expanded).to match(/~/)
|
702
|
+
expect(Puppet::FileSystem.expand_path(nonexist_file)).to eq(ruby_expanded)
|
703
|
+
end
|
704
|
+
|
705
|
+
it 'should behave like Rubys File.expand_path for a file with a parent path that doesnt exist' do
|
706
|
+
expect(Puppet::FileSystem.exist?(nonexist_path)).to be_falsey
|
707
|
+
# this will change c:\\progra~1 to c:/progra~1 (existing Ruby behavior), but not expand any ~
|
708
|
+
ruby_expanded = File.expand_path(nonexist_path)
|
709
|
+
expect(ruby_expanded).to match(/~/)
|
710
|
+
expect(Puppet::FileSystem.expand_path(nonexist_path)).to eq(ruby_expanded)
|
711
|
+
end
|
712
|
+
|
713
|
+
it 'should expand a shortened path completely, unlike Ruby File.expand_path' do
|
714
|
+
tmp_long_dir = tmpdir('super-long-thing-that-Windows-shortens')
|
715
|
+
short_path = Puppet::Util::Windows::File.get_short_pathname(tmp_long_dir)
|
716
|
+
|
717
|
+
# a shortened path to the temp dir will have a least 2 ~
|
718
|
+
# for instance, C:\\Users\\Administrator\\AppData\\Local\\Temp\\rspecrun2016####-####-#######\\super-long-thing-that-Windows-shortens\
|
719
|
+
# or C:\\Windows\\Temp\\rspecrun2016####-####-#######\\super-long-thing-that-Windows-shortens\
|
720
|
+
# will shorten to Temp\\rspecr~#\\super-~1
|
721
|
+
expect(short_path).to match(/~.*~/)
|
722
|
+
|
723
|
+
# expand with Ruby, noting not all ~ have been expanded
|
724
|
+
# which is the primary reason that a Puppet helper exists
|
725
|
+
ruby_expanded = File.expand_path(short_path)
|
726
|
+
expect(ruby_expanded).to match(/~/)
|
727
|
+
|
728
|
+
# Puppet expansion uses the Windows API and has no ~ remaining
|
729
|
+
puppet_expanded = Puppet::FileSystem.expand_path(short_path)
|
730
|
+
expect(puppet_expanded).to_not match(/~/)
|
731
|
+
|
732
|
+
# and the directories are one and the same
|
733
|
+
expect(File.identical?(short_path, puppet_expanded)).to be_truthy
|
734
|
+
end
|
735
|
+
end
|
736
|
+
end
|
652
737
|
end
|
653
738
|
end
|
@@ -558,7 +558,7 @@ EOS
|
|
558
558
|
it 'will explain deep merge results without options' do
|
559
559
|
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
560
560
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
561
|
-
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.
|
561
|
+
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.singleton.parse('Hash[String,String]'), nil, false, 'deep', lookup_invocation)
|
562
562
|
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
563
563
|
Merge strategy deep
|
564
564
|
Data Binding "hiera"
|
@@ -586,7 +586,7 @@ EOS
|
|
586
586
|
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
587
587
|
Hiera.any_instance.expects(:lookup).with(any_parameters).returns({'k1' => 'global_g1'})
|
588
588
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
589
|
-
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.
|
589
|
+
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.singleton.parse('Hash[String,String]'), nil, false, {'strategy' => 'deep', 'merge_hash_arrays' => true}, lookup_invocation)
|
590
590
|
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
591
591
|
Merge strategy deep
|
592
592
|
Options: {
|
@@ -645,7 +645,7 @@ EOS
|
|
645
645
|
it 'will explain value access caused by dot notation in key' do
|
646
646
|
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
647
647
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
648
|
-
Puppet::Pops::Lookup.lookup('abc::f.k1.s1', Puppet::Pops::Types::TypeParser.
|
648
|
+
Puppet::Pops::Lookup.lookup('abc::f.k1.s1', Puppet::Pops::Types::TypeParser.singleton.parse('String'), nil, false, nil, lookup_invocation)
|
649
649
|
expect(lookup_invocation.explainer.to_s).to eq(<<EOS)
|
650
650
|
Merge strategy first
|
651
651
|
Data Binding "hiera"
|
@@ -667,7 +667,7 @@ EOS
|
|
667
667
|
it 'will provide a hash containing all explanation elements' do
|
668
668
|
assemble_and_compile('${r}', "'abc::a'") do |scope|
|
669
669
|
lookup_invocation = Puppet::Pops::Lookup::Invocation.new(scope, {}, {}, true)
|
670
|
-
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.
|
670
|
+
Puppet::Pops::Lookup.lookup('abc::e', Puppet::Pops::Types::TypeParser.singleton.parse('Hash[String,String]'), nil, false, {'strategy' => 'deep', 'merge_hash_arrays' => true}, lookup_invocation)
|
671
671
|
expect(lookup_invocation.explainer.to_hash).to eq(
|
672
672
|
{
|
673
673
|
:branches => [
|
@@ -18,7 +18,7 @@ describe 'the match function' do
|
|
18
18
|
Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'match')
|
19
19
|
end
|
20
20
|
|
21
|
-
let(:type_parser) { Puppet::Pops::Types::TypeParser.
|
21
|
+
let(:type_parser) { Puppet::Pops::Types::TypeParser.singleton }
|
22
22
|
|
23
23
|
|
24
24
|
it 'matches string and regular expression without captures' do
|
@@ -52,6 +52,6 @@ describe 'the match function' do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def type(s)
|
55
|
-
Puppet::Pops::Types::TypeParser.
|
55
|
+
Puppet::Pops::Types::TypeParser.singleton.parse(s)
|
56
56
|
end
|
57
57
|
end
|
@@ -18,7 +18,7 @@ describe 'the regsubst function' do
|
|
18
18
|
Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'regsubst').call({}, *args)
|
19
19
|
end
|
20
20
|
|
21
|
-
let(:type_parser) { Puppet::Pops::Types::TypeParser.
|
21
|
+
let(:type_parser) { Puppet::Pops::Types::TypeParser.singleton }
|
22
22
|
|
23
23
|
context 'when using a string pattern' do
|
24
24
|
it 'should raise an Error if there is less than 3 arguments' do
|
@@ -18,7 +18,7 @@ describe 'the split function' do
|
|
18
18
|
Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'split').call({}, *args)
|
19
19
|
end
|
20
20
|
|
21
|
-
let(:type_parser) { Puppet::Pops::Types::TypeParser.
|
21
|
+
let(:type_parser) { Puppet::Pops::Types::TypeParser.singleton }
|
22
22
|
|
23
23
|
it 'should raise an Error if there is less than 2 arguments' do
|
24
24
|
expect { split('a,b') }.to raise_error(/'split' expects 2 arguments, got 1/)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'puppet_spec/compiler'
|
4
|
+
require 'matchers/resource'
|
5
|
+
|
6
|
+
describe 'the unwrap function' do
|
7
|
+
include PuppetSpec::Compiler
|
8
|
+
include Matchers::Resource
|
9
|
+
|
10
|
+
it 'unwraps a sensitive value' do
|
11
|
+
code = <<-CODE
|
12
|
+
$sensitive = Sensitive.new("12345")
|
13
|
+
notice("unwrapped value is ${sensitive.unwrap}")
|
14
|
+
CODE
|
15
|
+
expect(eval_and_collect_notices(code)).to eq(['unwrapped value is 12345'])
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'unwraps a sensitive value when given a code block' do
|
19
|
+
code = <<-CODE
|
20
|
+
$sensitive = Sensitive.new("12345")
|
21
|
+
$split = $sensitive.unwrap |$unwrapped| {
|
22
|
+
notice("unwrapped value is $unwrapped")
|
23
|
+
$unwrapped.split(/3/)
|
24
|
+
}
|
25
|
+
notice("split is $split")
|
26
|
+
CODE
|
27
|
+
expect(eval_and_collect_notices(code)).to eq(['unwrapped value is 12345', 'split is [12, 45]'])
|
28
|
+
end
|
29
|
+
end
|
@@ -18,7 +18,7 @@ describe "the versioncmp function" do
|
|
18
18
|
Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'versioncmp').call({}, *args)
|
19
19
|
end
|
20
20
|
|
21
|
-
let(:type_parser) { Puppet::Pops::Types::TypeParser.
|
21
|
+
let(:type_parser) { Puppet::Pops::Types::TypeParser.singleton }
|
22
22
|
|
23
23
|
it 'should raise an Error if there is less than 2 arguments' do
|
24
24
|
expect { versioncmp('a,b') }.to raise_error(/expects 2 arguments, got 1/)
|
@@ -14,11 +14,11 @@ module FunctionAPISpecModule
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def add_function(name, function)
|
17
|
-
set_entry(Puppet::Pops::Loader::
|
17
|
+
set_entry(Puppet::Pops::Loader::TypedName.new(:function, name), function, __FILE__)
|
18
18
|
end
|
19
19
|
|
20
20
|
def add_type(name, type)
|
21
|
-
set_entry(Puppet::Pops::Loader::
|
21
|
+
set_entry(Puppet::Pops::Loader::TypedName.new(:type, name), type, __FILE__)
|
22
22
|
end
|
23
23
|
|
24
24
|
def set_entry(typed_name, value, origin = nil)
|
@@ -467,7 +467,7 @@ describe 'the 4x function api' do
|
|
467
467
|
# evaluate a puppet call
|
468
468
|
source = "testing::test(10) |$x| { $x+1 }"
|
469
469
|
program = parser.parse_string(source, __FILE__)
|
470
|
-
Puppet::Pops::Adapters::LoaderAdapter.
|
470
|
+
Puppet::Pops::Adapters::LoaderAdapter.expects(:loader_for_model_object).returns(the_loader)
|
471
471
|
expect(parser.evaluate(scope, program)).to eql(11)
|
472
472
|
end
|
473
473
|
end
|
@@ -491,7 +491,7 @@ describe 'the 4x function api' do
|
|
491
491
|
CODE
|
492
492
|
the_loader.add_function('testing::test', fc.new({}, the_loader))
|
493
493
|
program = parser.parse_string('testing::test(10)', __FILE__)
|
494
|
-
Puppet::Pops::Adapters::LoaderAdapter.
|
494
|
+
Puppet::Pops::Adapters::LoaderAdapter.expects(:loader_for_model_object).returns(the_loader)
|
495
495
|
expect(parser.evaluate({}, program)).to eql(10)
|
496
496
|
end
|
497
497
|
|
@@ -510,7 +510,7 @@ describe 'the 4x function api' do
|
|
510
510
|
CODE
|
511
511
|
the_loader.add_function('testing::test', fc.new({}, the_loader))
|
512
512
|
program = parser.parse_string('testing::test(10)', __FILE__)
|
513
|
-
Puppet::Pops::Adapters::LoaderAdapter.
|
513
|
+
Puppet::Pops::Adapters::LoaderAdapter.expects(:loader_for_model_object).returns(the_loader)
|
514
514
|
expect { parser.evaluate({}, program) }.to raise_error(Puppet::Error, /parameter 'x' references an unresolved type 'MyAlias'/)
|
515
515
|
end
|
516
516
|
|
@@ -532,7 +532,7 @@ describe 'the 4x function api' do
|
|
532
532
|
CODE
|
533
533
|
the_loader.add_function('testing::test', fc.new({}, the_loader))
|
534
534
|
program = parser.parse_string('testing::test([10,20])', __FILE__)
|
535
|
-
Puppet::Pops::Adapters::LoaderAdapter.
|
535
|
+
Puppet::Pops::Adapters::LoaderAdapter.expects(:loader_for_model_object).returns(the_loader)
|
536
536
|
expect(parser.evaluate({}, program)).to eq([10,20])
|
537
537
|
end
|
538
538
|
|
@@ -555,7 +555,7 @@ describe 'the 4x function api' do
|
|
555
555
|
CODE
|
556
556
|
the_loader.add_function('testing::test', fc.new({}, the_loader))
|
557
557
|
program = parser.parse_string("testing::test({'x' => [10,20]})", __FILE__)
|
558
|
-
Puppet::Pops::Adapters::LoaderAdapter.
|
558
|
+
Puppet::Pops::Adapters::LoaderAdapter.expects(:loader_for_model_object).returns(the_loader)
|
559
559
|
expect(parser.evaluate({}, program)).to eq({'x' => [10,20]})
|
560
560
|
end
|
561
561
|
|
@@ -577,7 +577,7 @@ describe 'the 4x function api' do
|
|
577
577
|
CODE
|
578
578
|
the_loader.add_function('testing::test', fc.new({}, the_loader))
|
579
579
|
program = parser.parse_string("testing::test({'x' => {'y' => 'n'}})", __FILE__)
|
580
|
-
Puppet::Pops::Adapters::LoaderAdapter.
|
580
|
+
Puppet::Pops::Adapters::LoaderAdapter.expects(:loader_for_model_object).returns(the_loader)
|
581
581
|
expect(parser.evaluate({}, program)).to eq({'x' => {'y' => 'n'}})
|
582
582
|
end
|
583
583
|
end
|
@@ -60,14 +60,6 @@ describe Puppet::Node::Facts::Facter do
|
|
60
60
|
@facter.find(@request)
|
61
61
|
end
|
62
62
|
|
63
|
-
it 'should not include external facts when feature is not present' do
|
64
|
-
reset = sequence 'reset'
|
65
|
-
Puppet.features.stubs(:external_facts?).returns false
|
66
|
-
Facter.expects(:reset).in_sequence(reset)
|
67
|
-
Puppet::Node::Facts::Facter.expects(:setup_search_paths).in_sequence(reset)
|
68
|
-
@facter.find(@request)
|
69
|
-
end
|
70
|
-
|
71
63
|
it "should return a Facts instance" do
|
72
64
|
expect(@facter.find(@request)).to be_instance_of(Puppet::Node::Facts)
|
73
65
|
end
|
@@ -140,7 +132,7 @@ describe Puppet::Node::Facts::Facter do
|
|
140
132
|
end
|
141
133
|
end
|
142
134
|
|
143
|
-
describe 'when setting up external search paths'
|
135
|
+
describe 'when setting up external search paths' do
|
144
136
|
let(:pluginfactdest) { File.expand_path 'plugin/dest' }
|
145
137
|
let(:modulepath) { File.expand_path 'module/foo' }
|
146
138
|
let(:modulefactsd) { File.expand_path 'module/foo/facts.d' }
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
|
+
require 'json'
|
3
4
|
require 'puppet/indirector'
|
4
5
|
require 'puppet/indirector/errors'
|
5
6
|
require 'puppet/indirector/rest'
|
@@ -12,15 +13,34 @@ shared_examples_for "a REST terminus method" do |terminus_method|
|
|
12
13
|
|
13
14
|
HTTP_ERROR_CODES.each do |code|
|
14
15
|
describe "when the response code is #{code}" do
|
15
|
-
let(:
|
16
|
+
let(:message) { 'error messaged!!!' }
|
17
|
+
let(:body) do
|
18
|
+
JSON.generate({
|
19
|
+
:issue_kind => 'server-error',
|
20
|
+
:message => message,
|
21
|
+
:stacktrace => ['worst/stack/trace/ever.rb:4']
|
22
|
+
})
|
23
|
+
end
|
24
|
+
let(:response) { mock_response(code, body, 'application/json') }
|
25
|
+
|
26
|
+
describe "when the response is plain text" do
|
27
|
+
let(:response) { mock_response(code, message) }
|
28
|
+
|
29
|
+
it "raises an http error with the body of the response when plain text" do
|
30
|
+
|
31
|
+
expect {
|
32
|
+
terminus.send(terminus_method, request)
|
33
|
+
}.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{message}")
|
34
|
+
end
|
35
|
+
end
|
16
36
|
|
17
|
-
it "raises an http error with the body
|
37
|
+
it "raises an http error with the body's message field when json" do
|
18
38
|
expect {
|
19
39
|
terminus.send(terminus_method, request)
|
20
|
-
}.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{
|
40
|
+
}.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{message}")
|
21
41
|
end
|
22
42
|
|
23
|
-
it "does not attempt to deserialize the response" do
|
43
|
+
it "does not attempt to deserialize the response into a model" do
|
24
44
|
model.expects(:convert_from).never
|
25
45
|
|
26
46
|
expect {
|
@@ -40,15 +60,14 @@ shared_examples_for "a REST terminus method" do |terminus_method|
|
|
40
60
|
|
41
61
|
describe "and the body is compressed" do
|
42
62
|
it "raises an http error with the decompressed body of the response" do
|
43
|
-
|
44
|
-
compressed_body = Zlib::Deflate.deflate(uncompressed_body)
|
63
|
+
compressed_body = Zlib::Deflate.deflate(body)
|
45
64
|
|
46
|
-
|
47
|
-
connection.expects(http_method).returns(
|
65
|
+
compressed_response = mock_response(code, compressed_body, 'application/json', 'deflate')
|
66
|
+
connection.expects(http_method).returns(compressed_response)
|
48
67
|
|
49
68
|
expect {
|
50
69
|
terminus.send(terminus_method, request)
|
51
|
-
}.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{
|
70
|
+
}.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{message}")
|
52
71
|
end
|
53
72
|
end
|
54
73
|
end
|
@@ -186,6 +205,73 @@ describe Puppet::Indirector::REST do
|
|
186
205
|
expect(terminus_class.port).to eq(543)
|
187
206
|
end
|
188
207
|
|
208
|
+
it "should use a failover-selected server if set" do
|
209
|
+
terminus_class.expects(:server_setting).returns nil
|
210
|
+
Puppet.override(:server => "myserver") do
|
211
|
+
expect(terminus_class.server).to eq("myserver")
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should use a failover-selected port if set" do
|
216
|
+
terminus_class.expects(:port_setting).returns nil
|
217
|
+
Puppet.override(:serverport => 321) do
|
218
|
+
expect(terminus_class.port).to eq(321)
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
it "should use server_list for server when available" do
|
223
|
+
terminus_class.expects(:server_setting).returns nil
|
224
|
+
Puppet[:server_list] = [["foo", "123"]]
|
225
|
+
expect(terminus_class.server).to eq("foo")
|
226
|
+
end
|
227
|
+
|
228
|
+
it "should prefer failover-selected server from server list" do
|
229
|
+
terminus_class.expects(:server_setting).returns nil
|
230
|
+
Puppet[:server_list] = [["foo", "123"],["bar", "321"]]
|
231
|
+
Puppet.override(:server => "bar") do
|
232
|
+
expect(terminus_class.server).to eq("bar")
|
233
|
+
end
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should use server_list for port when available" do
|
237
|
+
terminus_class.expects(:port_setting).returns nil
|
238
|
+
Puppet[:server_list] = [["foo", "123"]]
|
239
|
+
expect(terminus_class.port).to eq(123)
|
240
|
+
end
|
241
|
+
|
242
|
+
it "should prefer failover-selected port from server list" do
|
243
|
+
terminus_class.expects(:port_setting).returns nil
|
244
|
+
Puppet[:server_list] = [["foo", "123"],["bar", "321"]]
|
245
|
+
Puppet.override(:serverport => "321") do
|
246
|
+
expect(terminus_class.port).to eq(321)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should use an explicitly specified more-speciic server when failover is active" do
|
251
|
+
terminus_class.expects(:server_setting).returns :ca_server
|
252
|
+
Puppet[:ca_server] = "myserver"
|
253
|
+
Puppet.override(:server => "anotherserver") do
|
254
|
+
expect(terminus_class.server).to eq("myserver")
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should use an explicitly specified more-specific port when failover is active" do
|
259
|
+
terminus_class.expects(:port_setting).returns :ca_port
|
260
|
+
Puppet[:ca_port] = 321
|
261
|
+
Puppet.override(:serverport => 543) do
|
262
|
+
expect(terminus_class.port).to eq(321)
|
263
|
+
end
|
264
|
+
end
|
265
|
+
|
266
|
+
it "should use a default port when a more-specific server is set" do
|
267
|
+
terminus_class.expects(:server_setting).returns :ca_server
|
268
|
+
terminus_class.expects(:port_setting).returns :ca_port
|
269
|
+
Puppet[:ca_server] = "myserver"
|
270
|
+
Puppet.override(:server => "anotherserver", :port => 666) do
|
271
|
+
expect(terminus_class.port).to eq(8140)
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
189
275
|
it 'should default to :puppet for the srv_service' do
|
190
276
|
expect(Puppet::Indirector::REST.srv_service).to eq(:puppet)
|
191
277
|
end
|