puppet 6.19.0-x86-mingw32 → 7.3.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/CODEOWNERS +2 -16
- data/Gemfile +3 -4
- data/Gemfile.lock +33 -28
- data/README.md +1 -1
- data/conf/fileserver.conf +5 -10
- data/ext/build_defaults.yaml +1 -1
- data/ext/osx/file_mapping.yaml +0 -5
- data/ext/project_data.yaml +2 -14
- data/ext/redhat/puppet.spec.erb +0 -1
- data/ext/windows/service/daemon.rb +6 -5
- data/install.rb +21 -17
- data/lib/puppet.rb +11 -20
- data/lib/puppet/application.rb +182 -104
- data/lib/puppet/application/agent.rb +1 -0
- data/lib/puppet/application/apply.rb +3 -2
- data/lib/puppet/application/device.rb +101 -104
- data/lib/puppet/application/filebucket.rb +15 -11
- data/lib/puppet/application/script.rb +1 -0
- data/lib/puppet/application/ssl.rb +1 -1
- data/lib/puppet/application_support.rb +7 -0
- data/lib/puppet/configurer.rb +44 -36
- data/lib/puppet/configurer/plugin_handler.rb +21 -19
- data/lib/puppet/defaults.rb +71 -170
- data/lib/puppet/environments.rb +44 -75
- data/lib/puppet/face/config.rb +10 -0
- data/lib/puppet/face/epp.rb +12 -2
- data/lib/puppet/face/facts.rb +80 -6
- data/lib/puppet/face/help.rb +1 -1
- data/lib/puppet/face/node/clean.rb +8 -0
- data/lib/puppet/face/plugin.rb +5 -8
- data/lib/puppet/ffi/posix.rb +10 -0
- data/lib/puppet/ffi/posix/constants.rb +14 -0
- data/lib/puppet/ffi/posix/functions.rb +24 -0
- data/lib/puppet/ffi/windows.rb +12 -0
- data/lib/puppet/ffi/windows/api_types.rb +311 -0
- data/lib/puppet/ffi/windows/constants.rb +404 -0
- data/lib/puppet/ffi/windows/functions.rb +628 -0
- data/lib/puppet/ffi/windows/structs.rb +338 -0
- data/lib/puppet/file_serving/configuration.rb +0 -5
- data/lib/puppet/file_serving/configuration/parser.rb +6 -32
- data/lib/puppet/file_serving/http_metadata.rb +1 -1
- data/lib/puppet/file_serving/mount.rb +1 -2
- data/lib/puppet/forge/repository.rb +0 -1
- data/lib/puppet/functions/epp.rb +1 -0
- data/lib/puppet/functions/inline_epp.rb +1 -0
- data/lib/puppet/generate/models/type/type.rb +4 -1
- data/lib/puppet/http.rb +22 -13
- data/lib/puppet/http/client.rb +164 -114
- data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
- data/lib/puppet/http/errors.rb +16 -0
- data/lib/puppet/http/external_client.rb +5 -7
- data/lib/puppet/{network/http → http}/factory.rb +8 -11
- data/lib/puppet/{network/http → http}/pool.rb +61 -26
- data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
- data/lib/puppet/http/proxy.rb +137 -0
- data/lib/puppet/http/redirector.rb +4 -12
- data/lib/puppet/http/resolver.rb +5 -15
- data/lib/puppet/http/resolver/server_list.rb +6 -10
- data/lib/puppet/http/resolver/settings.rb +4 -7
- data/lib/puppet/http/resolver/srv.rb +7 -11
- data/lib/puppet/http/response.rb +36 -54
- data/lib/puppet/http/response_converter.rb +24 -0
- data/lib/puppet/http/response_net_http.rb +42 -0
- data/lib/puppet/http/retry_after_handler.rb +4 -13
- data/lib/puppet/http/service.rb +12 -26
- data/lib/puppet/http/service/ca.rb +11 -22
- data/lib/puppet/http/service/compiler.rb +22 -69
- data/lib/puppet/http/service/file_server.rb +18 -27
- data/lib/puppet/http/service/puppetserver.rb +26 -12
- data/lib/puppet/http/service/report.rb +8 -10
- data/lib/puppet/http/session.rb +11 -20
- data/lib/puppet/{network/http → http}/site.rb +1 -2
- data/lib/puppet/indirector/catalog/rest.rb +2 -4
- data/lib/puppet/indirector/fact_search.rb +60 -0
- data/lib/puppet/indirector/facts/facter.rb +24 -3
- data/lib/puppet/indirector/facts/json.rb +27 -0
- data/lib/puppet/indirector/facts/rest.rb +3 -22
- data/lib/puppet/indirector/facts/yaml.rb +3 -58
- data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
- data/lib/puppet/indirector/file_content/rest.rb +2 -6
- data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
- data/lib/puppet/indirector/file_server.rb +1 -8
- data/lib/puppet/indirector/generic_http.rb +0 -11
- data/lib/puppet/indirector/json.rb +5 -1
- data/lib/puppet/indirector/node/json.rb +8 -0
- data/lib/puppet/indirector/node/rest.rb +2 -4
- data/lib/puppet/indirector/report/json.rb +34 -0
- data/lib/puppet/indirector/report/rest.rb +3 -8
- data/lib/puppet/indirector/request.rb +0 -101
- data/lib/puppet/indirector/rest.rb +12 -263
- data/lib/puppet/module_tool/applications.rb +0 -1
- data/lib/puppet/module_tool/applications/installer.rb +48 -2
- data/lib/puppet/module_tool/errors/shared.rb +17 -2
- data/lib/puppet/network/authconfig.rb +2 -96
- data/lib/puppet/network/authorization.rb +13 -35
- data/lib/puppet/network/formats.rb +69 -1
- data/lib/puppet/network/http.rb +3 -3
- data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
- data/lib/puppet/network/http/api/master/v3.rb +11 -13
- data/lib/puppet/network/http/connection.rb +247 -316
- data/lib/puppet/network/http/handler.rb +0 -1
- data/lib/puppet/network/http_pool.rb +16 -34
- data/lib/puppet/node.rb +1 -30
- data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
- data/lib/puppet/pal/pal_impl.rb +73 -18
- data/lib/puppet/parser/ast/leaf.rb +3 -2
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
- data/lib/puppet/parser/compiler.rb +0 -198
- data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
- data/lib/puppet/parser/resource.rb +0 -69
- data/lib/puppet/parser/templatewrapper.rb +1 -1
- data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
- data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
- data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
- data/lib/puppet/pops/issues.rb +0 -5
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
- data/lib/puppet/pops/model/ast.pp +0 -42
- data/lib/puppet/pops/model/ast.rb +0 -290
- data/lib/puppet/pops/model/ast_transformer.rb +1 -1
- data/lib/puppet/pops/model/factory.rb +0 -45
- data/lib/puppet/pops/model/model_label_provider.rb +0 -5
- data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
- data/lib/puppet/pops/model/pn_transformer.rb +0 -16
- data/lib/puppet/pops/parser/egrammar.ra +0 -56
- data/lib/puppet/pops/parser/eparser.rb +1520 -1712
- data/lib/puppet/pops/parser/lexer2.rb +4 -4
- data/lib/puppet/pops/parser/parser_support.rb +0 -5
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
- data/lib/puppet/pops/types/type_calculator.rb +0 -7
- data/lib/puppet/pops/types/type_parser.rb +0 -4
- data/lib/puppet/pops/types/types.rb +0 -1
- data/lib/puppet/pops/validation/checker4_0.rb +9 -37
- data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
- data/lib/puppet/provider.rb +0 -13
- data/lib/puppet/provider/nameservice.rb +0 -18
- data/lib/puppet/provider/package/apt.rb +4 -0
- data/lib/puppet/provider/package/dpkg.rb +0 -10
- data/lib/puppet/provider/package/gem.rb +23 -3
- data/lib/puppet/provider/package/pip.rb +0 -1
- data/lib/puppet/provider/package/pkg.rb +0 -4
- data/lib/puppet/provider/package/portage.rb +1 -1
- data/lib/puppet/provider/package/puppet_gem.rb +1 -4
- data/lib/puppet/provider/service/smf.rb +191 -73
- data/lib/puppet/provider/user/aix.rb +2 -2
- data/lib/puppet/provider/user/directoryservice.rb +0 -10
- data/lib/puppet/reference/configuration.rb +8 -5
- data/lib/puppet/reference/indirection.rb +1 -1
- data/lib/puppet/resource.rb +1 -89
- data/lib/puppet/resource/catalog.rb +1 -14
- data/lib/puppet/resource/type.rb +3 -119
- data/lib/puppet/resource/type_collection.rb +3 -48
- data/lib/puppet/runtime.rb +1 -2
- data/lib/puppet/settings.rb +88 -48
- data/lib/puppet/settings/alias_setting.rb +37 -0
- data/lib/puppet/settings/base_setting.rb +26 -2
- data/lib/puppet/settings/integer_setting.rb +17 -0
- data/lib/puppet/settings/port_setting.rb +15 -0
- data/lib/puppet/settings/priority_setting.rb +5 -4
- data/lib/puppet/ssl.rb +10 -6
- data/lib/puppet/ssl/base.rb +3 -5
- data/lib/puppet/ssl/certificate.rb +0 -6
- data/lib/puppet/ssl/certificate_request.rb +1 -12
- data/lib/puppet/ssl/certificate_signer.rb +6 -0
- data/lib/puppet/ssl/oids.rb +3 -1
- data/lib/puppet/ssl/ssl_provider.rb +17 -0
- data/lib/puppet/ssl/state_machine.rb +3 -1
- data/lib/puppet/ssl/verifier.rb +2 -0
- data/lib/puppet/test/test_helper.rb +1 -3
- data/lib/puppet/transaction.rb +1 -7
- data/lib/puppet/transaction/report.rb +2 -4
- data/lib/puppet/type.rb +0 -76
- data/lib/puppet/type/file.rb +5 -7
- data/lib/puppet/type/file/checksum.rb +1 -1
- data/lib/puppet/type/file/source.rb +1 -1
- data/lib/puppet/type/filebucket.rb +3 -3
- data/lib/puppet/type/package.rb +5 -13
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/util/autoload.rb +1 -8
- data/lib/puppet/util/execution.rb +0 -11
- data/lib/puppet/util/http_proxy.rb +2 -215
- data/lib/puppet/util/monkey_patches.rb +0 -46
- data/lib/puppet/util/posix.rb +54 -5
- data/lib/puppet/util/rdoc.rb +0 -7
- data/lib/puppet/util/retry_action.rb +1 -1
- data/lib/puppet/util/rubygems.rb +5 -1
- data/lib/puppet/util/run_mode.rb +9 -1
- data/lib/puppet/util/windows.rb +3 -8
- data/lib/puppet/util/windows/daemon.rb +360 -0
- data/lib/puppet/util/windows/error.rb +1 -0
- data/lib/puppet/util/windows/eventlog.rb +4 -9
- data/lib/puppet/util/windows/file.rb +8 -242
- data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
- data/lib/puppet/util/windows/process.rb +4 -226
- data/lib/puppet/util/windows/service.rb +9 -460
- data/lib/puppet/util/windows/string.rb +12 -13
- data/lib/puppet/util/yaml.rb +0 -22
- data/lib/puppet/vendor/require_vendored.rb +0 -1
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet/x509.rb +5 -1
- data/lib/puppet/x509/cert_provider.rb +29 -1
- data/locales/puppet.pot +629 -1314
- data/man/man5/puppet.conf.5 +39 -99
- data/man/man8/puppet-agent.8 +2 -2
- data/man/man8/puppet-apply.8 +2 -2
- 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 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +58 -9
- data/man/man8/puppet-filebucket.8 +6 -6
- 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 -58
- data/man/man8/puppet-node.8 +4 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +4 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +2 -2
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
- data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
- data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
- data/spec/integration/application/agent_spec.rb +151 -14
- data/spec/integration/application/apply_spec.rb +20 -1
- data/spec/integration/application/filebucket_spec.rb +16 -16
- data/spec/integration/application/help_spec.rb +2 -0
- data/spec/integration/application/plugin_spec.rb +23 -1
- data/spec/integration/defaults_spec.rb +7 -10
- data/spec/integration/environments/setting_hooks_spec.rb +1 -1
- data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
- data/spec/integration/network/http_pool_spec.rb +3 -21
- data/spec/integration/parser/catalog_spec.rb +0 -38
- data/spec/integration/parser/node_spec.rb +0 -9
- data/spec/integration/parser/pcore_resource_spec.rb +0 -37
- data/spec/integration/resource/type_collection_spec.rb +2 -6
- data/spec/integration/transaction_spec.rb +4 -9
- data/spec/integration/type/file_spec.rb +5 -4
- data/spec/integration/util/windows/adsi_spec.rb +3 -1
- data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
- data/spec/integration/util/windows/registry_spec.rb +0 -10
- data/spec/integration/util/windows/security_spec.rb +1 -1
- data/spec/lib/puppet_spec/puppetserver.rb +1 -1
- data/spec/lib/puppet_spec/settings.rb +7 -1
- data/spec/spec_helper.rb +3 -4
- data/spec/unit/agent_spec.rb +8 -8
- data/spec/unit/application/agent_spec.rb +0 -1
- data/spec/unit/application/config_spec.rb +224 -4
- data/spec/unit/application/facts_spec.rb +35 -0
- data/spec/unit/application/filebucket_spec.rb +41 -41
- data/spec/unit/application/ssl_spec.rb +2 -2
- data/spec/unit/application_spec.rb +51 -9
- data/spec/unit/certificate_factory_spec.rb +1 -1
- data/spec/unit/configurer/downloader_spec.rb +6 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
- data/spec/unit/configurer_spec.rb +12 -9
- data/spec/unit/confine/feature_spec.rb +1 -1
- data/spec/unit/confine_spec.rb +8 -2
- data/spec/unit/context/trusted_information_spec.rb +2 -6
- data/spec/unit/defaults_spec.rb +26 -32
- data/spec/unit/environments_spec.rb +96 -22
- data/spec/unit/face/config_spec.rb +27 -32
- data/spec/unit/face/facts_spec.rb +4 -0
- data/spec/unit/face/node_spec.rb +14 -13
- data/spec/unit/face/plugin_spec.rb +73 -33
- data/spec/unit/file_bucket/file_spec.rb +1 -1
- data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
- data/spec/unit/file_serving/configuration_spec.rb +6 -12
- data/spec/unit/file_serving/metadata_spec.rb +3 -3
- data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
- data/spec/unit/forge/module_release_spec.rb +2 -7
- data/spec/unit/functions/camelcase_spec.rb +1 -1
- data/spec/unit/functions/capitalize_spec.rb +1 -1
- data/spec/unit/functions/downcase_spec.rb +1 -1
- data/spec/unit/functions/inline_epp_spec.rb +26 -1
- data/spec/unit/functions/upcase_spec.rb +1 -1
- data/spec/unit/http/client_spec.rb +7 -8
- data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
- data/spec/unit/http/external_client_spec.rb +4 -4
- data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
- data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
- data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
- data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
- data/spec/unit/http/resolver_spec.rb +13 -13
- data/spec/unit/http/service/compiler_spec.rb +49 -62
- data/spec/unit/http/service/file_server_spec.rb +3 -3
- data/spec/unit/http/service/puppetserver_spec.rb +34 -4
- data/spec/unit/http/service_spec.rb +1 -2
- data/spec/unit/http/session_spec.rb +16 -14
- data/spec/unit/{network/http → http}/site_spec.rb +3 -3
- data/spec/unit/indirector/face_spec.rb +0 -1
- data/spec/unit/indirector/facts/facter_spec.rb +104 -1
- data/spec/unit/indirector/facts/json_spec.rb +255 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
- data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
- data/spec/unit/indirector/file_server_spec.rb +1 -15
- data/spec/unit/indirector/indirection_spec.rb +8 -12
- data/spec/unit/indirector/node/json_spec.rb +33 -0
- data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
- data/spec/unit/indirector/report/rest_spec.rb +2 -17
- data/spec/unit/indirector/report/yaml_spec.rb +72 -8
- data/spec/unit/indirector/request_spec.rb +0 -264
- data/spec/unit/indirector/rest_spec.rb +98 -752
- data/spec/unit/indirector_spec.rb +2 -2
- data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
- data/spec/unit/network/authconfig_spec.rb +2 -132
- data/spec/unit/network/authorization_spec.rb +2 -55
- data/spec/unit/network/formats_spec.rb +45 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
- data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
- data/spec/unit/network/http/api_spec.rb +10 -0
- data/spec/unit/network/http/connection_spec.rb +19 -41
- data/spec/unit/network/http/handler_spec.rb +0 -6
- data/spec/unit/network/http_pool_spec.rb +0 -4
- data/spec/unit/node/environment_spec.rb +33 -21
- data/spec/unit/node_spec.rb +2 -54
- data/spec/unit/parser/compiler_spec.rb +3 -19
- data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
- data/spec/unit/parser/resource_spec.rb +14 -8
- data/spec/unit/parser/templatewrapper_spec.rb +4 -3
- data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
- data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
- data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
- data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
- data/spec/unit/pops/types/type_factory_spec.rb +1 -1
- data/spec/unit/pops/validator/validator_spec.rb +61 -46
- data/spec/unit/pops/visitor_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -0
- data/spec/unit/provider/nameservice_spec.rb +66 -122
- data/spec/unit/provider/package/apt_spec.rb +4 -8
- data/spec/unit/provider/package/base_spec.rb +6 -5
- data/spec/unit/provider/package/dpkg_spec.rb +0 -48
- data/spec/unit/provider/package/gem_spec.rb +32 -0
- data/spec/unit/provider/package/pacman_spec.rb +18 -12
- data/spec/unit/provider/package/pip_spec.rb +6 -11
- data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
- data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
- data/spec/unit/provider/service/smf_spec.rb +401 -165
- data/spec/unit/provider/service/windows_spec.rb +0 -1
- data/spec/unit/provider/user/aix_spec.rb +5 -0
- data/spec/unit/provider/user/hpux_spec.rb +1 -1
- data/spec/unit/provider/user/pw_spec.rb +2 -0
- data/spec/unit/provider/user/useradd_spec.rb +1 -0
- data/spec/unit/provider_spec.rb +6 -20
- data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
- data/spec/unit/resource/type_collection_spec.rb +2 -22
- data/spec/unit/resource/type_spec.rb +1 -1
- data/spec/unit/resource_spec.rb +11 -66
- data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
- data/spec/unit/settings/integer_setting_spec.rb +42 -0
- data/spec/unit/settings/port_setting_spec.rb +31 -0
- data/spec/unit/settings/priority_setting_spec.rb +4 -4
- data/spec/unit/settings_spec.rb +560 -228
- data/spec/unit/ssl/base_spec.rb +36 -4
- data/spec/unit/ssl/certificate_request_spec.rb +15 -45
- data/spec/unit/ssl/certificate_spec.rb +2 -11
- data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
- data/spec/unit/ssl/state_machine_spec.rb +0 -1
- data/spec/unit/ssl/verifier_spec.rb +0 -21
- data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
- data/spec/unit/transaction/event_manager_spec.rb +14 -11
- data/spec/unit/transaction/report_spec.rb +0 -2
- data/spec/unit/transaction/resource_harness_spec.rb +2 -2
- data/spec/unit/transaction_spec.rb +57 -82
- data/spec/unit/type/file/checksum_spec.rb +6 -6
- data/spec/unit/type/file/content_spec.rb +1 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +1 -1
- data/spec/unit/type/file/selinux_spec.rb +0 -2
- data/spec/unit/type/file/source_spec.rb +0 -1
- data/spec/unit/type/file_spec.rb +12 -12
- data/spec/unit/type/group_spec.rb +13 -6
- data/spec/unit/type/package_spec.rb +1 -1
- data/spec/unit/type/resources_spec.rb +7 -7
- data/spec/unit/type/service_spec.rb +1 -1
- data/spec/unit/type/tidy_spec.rb +0 -1
- data/spec/unit/type_spec.rb +22 -2
- data/spec/unit/util/at_fork_spec.rb +2 -2
- data/spec/unit/util/autoload_spec.rb +5 -1
- data/spec/unit/util/backups_spec.rb +1 -4
- data/spec/unit/util/execution_spec.rb +15 -40
- data/spec/unit/util/inifile_spec.rb +6 -14
- data/spec/unit/util/log_spec.rb +8 -7
- data/spec/unit/util/logging_spec.rb +3 -3
- data/spec/unit/util/monkey_patches_spec.rb +0 -6
- data/spec/unit/util/posix_spec.rb +363 -15
- data/spec/unit/util/rubygems_spec.rb +2 -2
- data/spec/unit/util/run_mode_spec.rb +21 -121
- data/spec/unit/util/selinux_spec.rb +76 -52
- data/spec/unit/util/storage_spec.rb +3 -1
- data/spec/unit/util/suidmanager_spec.rb +44 -41
- data/spec/unit/util/windows/string_spec.rb +1 -3
- data/spec/unit/util/yaml_spec.rb +0 -54
- data/spec/unit/util_spec.rb +13 -24
- metadata +66 -226
- data/conf/auth.conf +0 -150
- data/lib/puppet/application/cert.rb +0 -76
- data/lib/puppet/application/key.rb +0 -4
- data/lib/puppet/application/man.rb +0 -4
- data/lib/puppet/application/status.rb +0 -4
- data/lib/puppet/face/key.rb +0 -16
- data/lib/puppet/face/man.rb +0 -145
- data/lib/puppet/face/module/build.rb +0 -14
- data/lib/puppet/face/module/generate.rb +0 -14
- data/lib/puppet/face/module/search.rb +0 -103
- data/lib/puppet/face/status.rb +0 -51
- data/lib/puppet/indirector/certificate/file.rb +0 -9
- data/lib/puppet/indirector/certificate/rest.rb +0 -18
- data/lib/puppet/indirector/certificate_request/file.rb +0 -9
- data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
- data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
- data/lib/puppet/indirector/file_content/http.rb +0 -22
- data/lib/puppet/indirector/key/file.rb +0 -46
- data/lib/puppet/indirector/key/memory.rb +0 -7
- data/lib/puppet/indirector/ssl_file.rb +0 -162
- data/lib/puppet/indirector/status.rb +0 -3
- data/lib/puppet/indirector/status/local.rb +0 -12
- data/lib/puppet/indirector/status/rest.rb +0 -27
- data/lib/puppet/module_tool/applications/searcher.rb +0 -29
- data/lib/puppet/network/auth_config_parser.rb +0 -90
- data/lib/puppet/network/authstore.rb +0 -283
- data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
- data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
- data/lib/puppet/network/http/base_pool.rb +0 -36
- data/lib/puppet/network/http/compression.rb +0 -127
- data/lib/puppet/network/http/connection_adapter.rb +0 -184
- data/lib/puppet/network/http/nocache_pool.rb +0 -28
- data/lib/puppet/network/rest_controller.rb +0 -2
- data/lib/puppet/network/rights.rb +0 -210
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
- data/lib/puppet/parser/environment_compiler.rb +0 -202
- data/lib/puppet/pops/types/enumeration.rb +0 -16
- data/lib/puppet/resource/capability_finder.rb +0 -154
- data/lib/puppet/rest/errors.rb +0 -15
- data/lib/puppet/rest/response.rb +0 -35
- data/lib/puppet/rest/route.rb +0 -85
- data/lib/puppet/rest/routes.rb +0 -135
- data/lib/puppet/ssl/host.rb +0 -505
- data/lib/puppet/ssl/key.rb +0 -61
- data/lib/puppet/ssl/validator.rb +0 -61
- data/lib/puppet/ssl/validator/default_validator.rb +0 -209
- data/lib/puppet/ssl/validator/no_validator.rb +0 -22
- data/lib/puppet/ssl/verifier_adapter.rb +0 -58
- data/lib/puppet/status.rb +0 -40
- data/lib/puppet/util/connection.rb +0 -88
- data/lib/puppet/util/ssl.rb +0 -83
- data/lib/puppet/util/windows/api_types.rb +0 -309
- data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
- data/lib/puppet/vendor/load_pathspec.rb +0 -1
- data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
- data/lib/puppet/vendor/pathspec/LICENSE +0 -201
- data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
- data/lib/puppet/vendor/pathspec/README.md +0 -53
- data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
- data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
- data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
- data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
- data/man/man8/puppet-key.8 +0 -126
- data/man/man8/puppet-man.8 +0 -76
- data/man/man8/puppet-status.8 +0 -108
- data/spec/integration/application/config_spec.rb +0 -74
- data/spec/integration/network/authconfig_spec.rb +0 -256
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
- data/spec/unit/application/man_spec.rb +0 -52
- data/spec/unit/capability_spec.rb +0 -414
- data/spec/unit/face/catalog_spec.rb +0 -6
- data/spec/unit/face/key_spec.rb +0 -9
- data/spec/unit/face/module/search_spec.rb +0 -231
- data/spec/unit/face/module_spec.rb +0 -3
- data/spec/unit/face/status_spec.rb +0 -9
- data/spec/unit/indirector/certificate/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
- data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
- data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
- data/spec/unit/indirector/key/file_spec.rb +0 -79
- data/spec/unit/indirector/ssl_file_spec.rb +0 -305
- data/spec/unit/indirector/status/local_spec.rb +0 -10
- data/spec/unit/indirector/status/rest_spec.rb +0 -50
- data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
- data/spec/unit/network/auth_config_parser_spec.rb +0 -115
- data/spec/unit/network/authstore_spec.rb +0 -422
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
- data/spec/unit/network/http/compression_spec.rb +0 -240
- data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
- data/spec/unit/network/http_spec.rb +0 -9
- data/spec/unit/network/rights_spec.rb +0 -439
- data/spec/unit/parser/environment_compiler_spec.rb +0 -730
- data/spec/unit/pops/types/enumeration_spec.rb +0 -51
- data/spec/unit/resource/capability_finder_spec.rb +0 -143
- data/spec/unit/rest/route_spec.rb +0 -132
- data/spec/unit/ssl/host_spec.rb +0 -650
- data/spec/unit/ssl/key_spec.rb +0 -173
- data/spec/unit/ssl/validator_spec.rb +0 -278
- data/spec/unit/status_spec.rb +0 -45
- data/spec/unit/util/ssl_spec.rb +0 -91
@@ -112,8 +112,8 @@ describe Puppet::Indirector, "when registering an indirection" do
|
|
112
112
|
end
|
113
113
|
|
114
114
|
it "should pass any provided options to the indirection during initialization" do
|
115
|
-
expect(Puppet::Indirector::Indirection).to receive(:new).with(@thingie, :first, {:
|
116
|
-
@indirection = @thingie.indirects :first, :
|
115
|
+
expect(Puppet::Indirector::Indirection).to receive(:new).with(@thingie, :first, {:doc => 'some docs', :indirected_class => 'Thingie'})
|
116
|
+
@indirection = @thingie.indirects :first, :doc => 'some docs'
|
117
117
|
end
|
118
118
|
|
119
119
|
it "should extend the class to handle serialization" do
|
@@ -247,6 +247,21 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
247
247
|
expect(subject).to include :result => :success
|
248
248
|
graph_should_include 'pmtacceptance-mysql', nil => v('0.8.0')
|
249
249
|
end
|
250
|
+
|
251
|
+
context 'with an already installed dependency' do
|
252
|
+
before { preinstall('pmtacceptance-stdlib', '2.6.0') }
|
253
|
+
|
254
|
+
def options
|
255
|
+
super.merge(:version => '0.7.0')
|
256
|
+
end
|
257
|
+
|
258
|
+
it 'installs given version without errors and does not change version of dependency' do
|
259
|
+
expect(subject).to include :result => :success
|
260
|
+
graph_should_include 'pmtacceptance-mysql', nil => v('0.7.0')
|
261
|
+
expect(subject[:error]).to be_nil
|
262
|
+
graph_should_include 'pmtacceptance-stdlib', v('2.6.0') => v('2.6.0')
|
263
|
+
end
|
264
|
+
end
|
250
265
|
end
|
251
266
|
|
252
267
|
context 'with a --version that cannot satisfy' do
|
@@ -258,6 +273,20 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
258
273
|
expect(subject).to include :result => :failure
|
259
274
|
end
|
260
275
|
|
276
|
+
it 'prints a detailed error containing the modules that would not be satisfied' do
|
277
|
+
graph = double(SemanticPuppet::Dependency::Graph, :modules => ['pmtacceptance-mysql'])
|
278
|
+
exception = SemanticPuppet::Dependency::UnsatisfiableGraph.new(graph)
|
279
|
+
allow(exception).to receive(:respond_to?).and_return(true)
|
280
|
+
allow(exception).to receive(:unsatisfied).and_return('pmtacceptance-mysql')
|
281
|
+
allow(SemanticPuppet::Dependency).to receive(:resolve).and_raise(exception)
|
282
|
+
|
283
|
+
expect(subject[:error]).to include(:multiline)
|
284
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (> 1.0.0)")
|
285
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy one or more of the following installed modules:")
|
286
|
+
expect(subject[:error][:multiline]).to include("pmtacceptance-keystone, expects 'pmtacceptance-mysql': >=0.6.1 <1.0.0")
|
287
|
+
expect(subject[:error][:multiline]).to include("Use `puppet module install 'pmtacceptance-mysql' --ignore-dependencies` to install only this module")
|
288
|
+
end
|
289
|
+
|
261
290
|
context 'with --ignore-dependencies' do
|
262
291
|
def options
|
263
292
|
super.merge(:ignore_dependencies => true)
|
@@ -278,6 +307,43 @@ describe Puppet::ModuleTool::Applications::Installer, :unless => RUBY_PLATFORM =
|
|
278
307
|
graph_should_include 'pmtacceptance-mysql', nil => v('2.1.0')
|
279
308
|
end
|
280
309
|
end
|
310
|
+
|
311
|
+
context 'with an already installed dependency' do
|
312
|
+
let(:graph) {
|
313
|
+
double(SemanticPuppet::Dependency::Graph,
|
314
|
+
:dependencies => {
|
315
|
+
'pmtacceptance-mysql' => {
|
316
|
+
:version => '2.1.0'
|
317
|
+
}
|
318
|
+
},
|
319
|
+
:modules => ['pmtacceptance-mysql'],
|
320
|
+
:unsatisfied => 'pmtacceptance-stdlib'
|
321
|
+
)
|
322
|
+
}
|
323
|
+
|
324
|
+
let(:unsatisfiable_graph_exception) { SemanticPuppet::Dependency::UnsatisfiableGraph.new(graph) }
|
325
|
+
|
326
|
+
before do
|
327
|
+
allow(SemanticPuppet::Dependency).to receive(:resolve).and_raise(unsatisfiable_graph_exception)
|
328
|
+
allow(unsatisfiable_graph_exception).to receive(:respond_to?).and_return(true)
|
329
|
+
allow(unsatisfiable_graph_exception).to receive(:unsatisfied).and_return(graph.unsatisfied)
|
330
|
+
|
331
|
+
preinstall('pmtacceptance-stdlib', '2.6.0')
|
332
|
+
end
|
333
|
+
|
334
|
+
def options
|
335
|
+
super.merge(:version => '2.1.0')
|
336
|
+
end
|
337
|
+
|
338
|
+
it 'fails to install and outputs a multiline error containing the versions, expectations and workaround' do
|
339
|
+
expect(subject).to include :result => :failure
|
340
|
+
expect(subject[:error]).to include(:multiline)
|
341
|
+
expect(subject[:error][:multiline]).to include("Could not install module 'pmtacceptance-mysql' (v2.1.0)")
|
342
|
+
expect(subject[:error][:multiline]).to include("The requested version cannot satisfy one or more of the following installed modules:")
|
343
|
+
expect(subject[:error][:multiline]).to include("pmtacceptance-stdlib, installed: 2.6.0, expected: >= 2.2.1")
|
344
|
+
expect(subject[:error][:multiline]).to include("Use `puppet module install 'pmtacceptance-mysql' --ignore-dependencies` to install only this module")
|
345
|
+
end
|
346
|
+
end
|
281
347
|
end
|
282
348
|
end
|
283
349
|
|
@@ -1,138 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
|
3
2
|
require 'puppet/network/authconfig'
|
4
3
|
|
5
|
-
describe Puppet::Network::DefaultAuthProvider do
|
6
|
-
before :each do
|
7
|
-
allow(Puppet::FileSystem).to receive(:stat).and_return(double('stat', :ctime => :now))
|
8
|
-
allow(Time).to receive(:now).and_return(Time.now)
|
9
|
-
|
10
|
-
allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:exists?).and_return(true)
|
11
|
-
# FIXME @authprovider = Puppet::Network::DefaultAuthProvider.new("dummy")
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "when initializing" do
|
15
|
-
it "inserts default ACLs after setting initial rights" do
|
16
|
-
expect_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
|
17
|
-
Puppet::Network::DefaultAuthProvider.new
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "when defining an acl with mk_acl" do
|
22
|
-
before :each do
|
23
|
-
allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
|
24
|
-
@authprovider = Puppet::Network::DefaultAuthProvider.new
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should create a new right for each default acl" do
|
28
|
-
@authprovider.mk_acl(:acl => '/')
|
29
|
-
expect(@authprovider.rights['/']).to be
|
30
|
-
end
|
31
|
-
|
32
|
-
it "allows everyone for each default right" do
|
33
|
-
@authprovider.mk_acl(:acl => '/')
|
34
|
-
expect(@authprovider.rights['/']).to be_globalallow
|
35
|
-
end
|
36
|
-
|
37
|
-
it "accepts an argument to restrict the method" do
|
38
|
-
@authprovider.mk_acl(:acl => '/', :method => :find)
|
39
|
-
expect(@authprovider.rights['/'].methods).to eq([:find])
|
40
|
-
end
|
41
|
-
|
42
|
-
it "creates rights with authentication set to true by default" do
|
43
|
-
@authprovider.mk_acl(:acl => '/')
|
44
|
-
expect(@authprovider.rights['/'].authentication).to be_truthy
|
45
|
-
end
|
46
|
-
|
47
|
-
it "accepts an argument to set the authentication requirement" do
|
48
|
-
@authprovider.mk_acl(:acl => '/', :authenticated => :any)
|
49
|
-
expect(@authprovider.rights['/'].authentication).to be_falsey
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
describe "when adding default ACLs" do
|
54
|
-
before :each do
|
55
|
-
allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
|
56
|
-
@authprovider = Puppet::Network::DefaultAuthProvider.new
|
57
|
-
allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl).and_call_original
|
58
|
-
end
|
59
|
-
|
60
|
-
Puppet::Network::DefaultAuthProvider::default_acl.each do |acl|
|
61
|
-
it "should create a default right for #{acl[:acl]}" do
|
62
|
-
allow(@authprovider).to receive(:mk_acl)
|
63
|
-
expect(@authprovider).to receive(:mk_acl).with(acl)
|
64
|
-
@authprovider.insert_default_acl
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
it "should log at info loglevel" do
|
69
|
-
expect(Puppet).to receive(:info).at_least(:once)
|
70
|
-
@authprovider.insert_default_acl
|
71
|
-
end
|
72
|
-
|
73
|
-
it "creates an empty catch-all rule for '/' for any authentication request state" do
|
74
|
-
allow(@authprovider).to receive(:mk_acl)
|
75
|
-
|
76
|
-
@authprovider.insert_default_acl
|
77
|
-
expect(@authprovider.rights['/']).to be_empty
|
78
|
-
expect(@authprovider.rights['/'].authentication).to be_falsey
|
79
|
-
end
|
80
|
-
|
81
|
-
it '(CVE-2013-2275) allows report submission only for the node matching the certname by default' do
|
82
|
-
acl = {
|
83
|
-
:acl => "~ ^#{Puppet::Network::HTTP::MASTER_URL_PREFIX}\/v3\/report\/([^\/]+)$",
|
84
|
-
:method => :save,
|
85
|
-
:allow => '$1',
|
86
|
-
:authenticated => true
|
87
|
-
}
|
88
|
-
allow(@authprovider).to receive(:mk_acl)
|
89
|
-
expect(@authprovider).to receive(:mk_acl).with(acl)
|
90
|
-
@authprovider.insert_default_acl
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "when checking authorization" do
|
95
|
-
it "should ask for authorization to the ACL subsystem" do
|
96
|
-
params = {
|
97
|
-
:ip => "127.0.0.1",
|
98
|
-
:node => "me",
|
99
|
-
:environment => :env,
|
100
|
-
:authenticated => true
|
101
|
-
}
|
102
|
-
|
103
|
-
expect_any_instance_of(Puppet::Network::Rights).to receive(:is_request_forbidden_and_why?).with(:save, "/path/to/resource", params)
|
104
|
-
|
105
|
-
described_class.new.check_authorization(:save, "/path/to/resource", params)
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
4
|
describe Puppet::Network::AuthConfig do
|
111
|
-
|
112
|
-
Puppet::Network::AuthConfig.authprovider_class =
|
113
|
-
end
|
114
|
-
|
115
|
-
class TestAuthProvider
|
116
|
-
def initialize(rights=nil); end
|
117
|
-
def check_authorization(method, path, params); end
|
118
|
-
end
|
119
|
-
|
120
|
-
it "instantiates authprovider_class with rights" do
|
121
|
-
Puppet::Network::AuthConfig.authprovider_class = TestAuthProvider
|
122
|
-
rights = Puppet::Network::Rights.new
|
123
|
-
expect(TestAuthProvider).to receive(:new).with(rights)
|
124
|
-
described_class.new(rights)
|
125
|
-
end
|
126
|
-
|
127
|
-
it "delegates authorization check to authprovider_class" do
|
128
|
-
Puppet::Network::AuthConfig.authprovider_class = TestAuthProvider
|
129
|
-
expect_any_instance_of(TestAuthProvider).to receive(:check_authorization).with(:save, '/path/to/resource', {})
|
130
|
-
described_class.new.check_authorization(:save, '/path/to/resource', {})
|
131
|
-
end
|
132
|
-
|
133
|
-
it "uses DefaultAuthProvider by default" do
|
134
|
-
Puppet::Network::AuthConfig.authprovider_class = nil
|
135
|
-
expect_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:check_authorization).with(:save, '/path/to/resource', {})
|
136
|
-
described_class.new.check_authorization(:save, '/path/to/resource', {})
|
5
|
+
it "accepts an auth provider class" do
|
6
|
+
Puppet::Network::AuthConfig.authprovider_class = Object
|
137
7
|
end
|
138
8
|
end
|
@@ -1,61 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'puppet/network/http'
|
3
|
-
require 'puppet/network/http/api/indirected_routes'
|
4
2
|
require 'puppet/network/authorization'
|
5
3
|
|
6
4
|
describe Puppet::Network::Authorization do
|
7
|
-
class
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
subject { AuthTest.new }
|
12
|
-
|
13
|
-
context "when creating an authconfig object" do
|
14
|
-
before :each do
|
15
|
-
# Other tests may have created an authconfig, so we have to undo that.
|
16
|
-
@orig_auth_config = Puppet::Network::AuthConfigLoader.instance_variable_get(:@auth_config)
|
17
|
-
@orig_auth_config_file = Puppet::Network::AuthConfigLoader.instance_variable_get(:@auth_config_file)
|
18
|
-
|
19
|
-
Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config, nil)
|
20
|
-
Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config_file, nil)
|
21
|
-
end
|
22
|
-
|
23
|
-
after :each do
|
24
|
-
Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config, @orig_auth_config)
|
25
|
-
Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config_file, @orig_auth_config_file)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "creates default ACL entries if no file has been read" do
|
29
|
-
expect(Puppet::Network::AuthConfigParser).to receive(:new_from_file).and_raise(Errno::ENOENT)
|
30
|
-
expect_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
|
31
|
-
|
32
|
-
subject.authconfig
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class TestAuthConfig
|
37
|
-
def check_authorization(method, path, params); end
|
38
|
-
end
|
39
|
-
|
40
|
-
class TestAuthConfigLoader
|
41
|
-
def self.authconfig
|
42
|
-
TestAuthConfig.new
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "when checking authorization" do
|
47
|
-
after :each do
|
48
|
-
Puppet::Network::Authorization.authconfigloader_class = nil
|
49
|
-
end
|
50
|
-
|
51
|
-
it "delegates to the authconfig object" do
|
52
|
-
Puppet::Network::Authorization.authconfigloader_class =
|
53
|
-
TestAuthConfigLoader
|
54
|
-
expect_any_instance_of(TestAuthConfig).to receive(:check_authorization).with(
|
55
|
-
:save, '/mypath', {:param1 => "value1"}).and_return("yay, it worked!")
|
56
|
-
expect(subject.check_authorization(
|
57
|
-
:save, '/mypath',
|
58
|
-
{:param1 => "value1"})).to eq("yay, it worked!")
|
59
|
-
end
|
5
|
+
it "accepts an auth config loader class" do
|
6
|
+
Puppet::Network::Authorization.authconfigloader_class = Object
|
60
7
|
end
|
61
8
|
end
|
@@ -161,19 +161,19 @@ describe "Puppet Network Format" do
|
|
161
161
|
end
|
162
162
|
|
163
163
|
it 'raises when interning an instance of an unacceptable indirected type' do
|
164
|
-
obj =
|
164
|
+
obj = :something
|
165
165
|
|
166
166
|
expect {
|
167
167
|
yaml.intern(obj.class, YAML.dump(obj))
|
168
|
-
}.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class:
|
168
|
+
}.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class: Symbol/)
|
169
169
|
end
|
170
170
|
|
171
171
|
it 'raises when interning multple instances of an unacceptable indirected type' do
|
172
|
-
obj =
|
172
|
+
obj = :something
|
173
173
|
|
174
174
|
expect {
|
175
175
|
yaml.intern_multiple(obj.class, YAML.dump([obj]))
|
176
|
-
}.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class:
|
176
|
+
}.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class: Symbol/)
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
@@ -534,4 +534,45 @@ EOT
|
|
534
534
|
end
|
535
535
|
end
|
536
536
|
end
|
537
|
+
|
538
|
+
describe ":flat format" do
|
539
|
+
let(:flat) { Puppet::Network::FormatHandler.format(:flat) }
|
540
|
+
|
541
|
+
it "should include a flat format" do
|
542
|
+
expect(flat).to be_an_instance_of Puppet::Network::Format
|
543
|
+
end
|
544
|
+
|
545
|
+
[:intern, :intern_multiple].each do |method|
|
546
|
+
it "should not implement #{method}" do
|
547
|
+
expect { flat.send(method, String, 'blah') }.to raise_error NotImplementedError
|
548
|
+
end
|
549
|
+
end
|
550
|
+
|
551
|
+
context "when rendering arrays" do
|
552
|
+
{
|
553
|
+
[] => "",
|
554
|
+
[1, 2] => "0=1\n1=2\n",
|
555
|
+
["one"] => "0=one\n",
|
556
|
+
[{"one" => 1}, {"two" => 2}] => "0.one=1\n1.two=2\n",
|
557
|
+
[['something', 'for'], ['the', 'test']] => "0=[\"something\", \"for\"]\n1=[\"the\", \"test\"]\n"
|
558
|
+
}.each_pair do |input, output|
|
559
|
+
it "should render #{input.inspect} as one item per line" do
|
560
|
+
expect(flat.render(input)).to eq(output)
|
561
|
+
end
|
562
|
+
end
|
563
|
+
end
|
564
|
+
|
565
|
+
context "when rendering hashes" do
|
566
|
+
{
|
567
|
+
{} => "",
|
568
|
+
{1 => 2} => "1=2\n",
|
569
|
+
{"one" => "two"} => "one=two\n",
|
570
|
+
{[1,2] => 3, [2,3] => 5, [3,4] => 7} => "[1, 2]=3\n[2, 3]=5\n[3, 4]=7\n",
|
571
|
+
}.each_pair do |input, output|
|
572
|
+
it "should render #{input.inspect}" do
|
573
|
+
expect(flat.render(input)).to eq(output)
|
574
|
+
end
|
575
|
+
end
|
576
|
+
end
|
577
|
+
end
|
537
578
|
end
|
@@ -17,7 +17,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
17
17
|
before do
|
18
18
|
Puppet::IndirectorTesting.indirection.terminus_class = :memory
|
19
19
|
Puppet::IndirectorTesting.indirection.terminus.clear
|
20
|
-
allow(handler).to receive(:warn_if_near_expiration)
|
21
20
|
end
|
22
21
|
|
23
22
|
describe "when converting a URI into a request" do
|
@@ -25,10 +24,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
25
24
|
let(:env_loaders) { Puppet::Environments::Static.new(environment) }
|
26
25
|
let(:params) { { :environment => "env" } }
|
27
26
|
|
28
|
-
before do
|
29
|
-
allow(handler).to receive(:handler).and_return("foo")
|
30
|
-
end
|
31
|
-
|
32
27
|
around do |example|
|
33
28
|
Puppet.override(:environments => env_loaders) do
|
34
29
|
example.run
|
@@ -63,7 +58,7 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
63
58
|
}.to raise_error(bad_request_error)
|
64
59
|
end
|
65
60
|
|
66
|
-
it "should not pass a
|
61
|
+
it "should not pass a bucket_path parameter through (See Bugs #13553, #13518, #13511)" do
|
67
62
|
expect(handler.uri2indirection("GET", "#{master_url_prefix}/node/bar",
|
68
63
|
{ :environment => "env",
|
69
64
|
:bucket_path => "/malicious/path" })[3]).not_to include({ :bucket_path => "/malicious/path" })
|
@@ -123,10 +118,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
123
118
|
expect(handler.uri2indirection("PUT", "#{master_url_prefix}/facts/puppet.node.test", params)[0].name).to eq(:facts)
|
124
119
|
end
|
125
120
|
|
126
|
-
it "should change indirection name to 'status' if the http method is a GET and the indirection name is statuses" do
|
127
|
-
expect(handler.uri2indirection("GET", "#{master_url_prefix}/statuses/bar", params)[0].name).to eq(:status)
|
128
|
-
end
|
129
|
-
|
130
121
|
it "should change indirection name to 'node' if the http method is a GET and the indirection name is nodes" do
|
131
122
|
expect(handler.uri2indirection("GET", "#{master_url_prefix}/nodes/bar", params)[0].name).to eq(:node)
|
132
123
|
end
|
@@ -150,100 +141,9 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
|
|
150
141
|
_, _, key, _ = handler.uri2indirection("GET", "#{master_url_prefix}/node/#{escaped}", params)
|
151
142
|
expect(key).to eq(escaped)
|
152
143
|
end
|
153
|
-
|
154
|
-
it "should not unescape the URI passed through in a call to check_authorization" do
|
155
|
-
key_escaped = Puppet::Util.uri_encode("foo bar")
|
156
|
-
uri_escaped = "#{master_url_prefix}/node/#{key_escaped}"
|
157
|
-
expect(handler).to receive(:check_authorization).with(anything, uri_escaped, anything)
|
158
|
-
handler.uri2indirection("GET", uri_escaped, params)
|
159
|
-
end
|
160
|
-
|
161
|
-
it "when the environment is unknown should remove :environment from params passed to check_authorization and therefore fail" do
|
162
|
-
expect(handler).to receive(:check_authorization).with(anything,
|
163
|
-
anything,
|
164
|
-
excluding(:environment))
|
165
|
-
expect { handler.uri2indirection("GET",
|
166
|
-
"#{master_url_prefix}/node/bar",
|
167
|
-
{:environment => 'bogus'})
|
168
|
-
}.to raise_error(not_found_error)
|
169
|
-
end
|
170
|
-
|
171
|
-
it "should not URI unescape the indirection key as passed through to a call to check_authorization" do
|
172
|
-
expect(handler).to receive(:check_authorization).with(anything, anything, hash_including(environment: be_a(Puppet::Node::Environment).and(have_attributes(name: :env))))
|
173
|
-
|
174
|
-
handler.uri2indirection("GET", "#{master_url_prefix}/node/bar", params)
|
175
|
-
end
|
176
|
-
|
177
|
-
end
|
178
|
-
|
179
|
-
describe "when converting a request into a URI" do
|
180
|
-
let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
|
181
|
-
let(:request) { Puppet::Indirector::Request.new(:foo, :find, "with spaces", nil, :foo => :bar, :environment => environment) }
|
182
|
-
|
183
|
-
before do
|
184
|
-
allow(handler).to receive(:handler).and_return("foo")
|
185
|
-
end
|
186
|
-
|
187
|
-
it "should include the environment in the query string of the URI" do
|
188
|
-
expect(handler.class.request_to_uri(request)).to eq("#{master_url_prefix}/foo/with%20spaces?environment=myenv&foo=bar")
|
189
|
-
end
|
190
|
-
|
191
|
-
it "should include the correct url prefix if it is a ca request" do
|
192
|
-
allow(request).to receive(:indirection_name).and_return("certificate")
|
193
|
-
expect(handler.class.request_to_uri(request)).to eq("#{ca_url_prefix}/certificate/with%20spaces?environment=myenv&foo=bar")
|
194
|
-
end
|
195
|
-
|
196
|
-
it "should pluralize the indirection name if the method is 'search'" do
|
197
|
-
allow(request).to receive(:method).and_return(:search)
|
198
|
-
expect(handler.class.request_to_uri(request).split("/")[3]).to eq("foos")
|
199
|
-
end
|
200
|
-
|
201
|
-
it "should add the query string to the URI" do
|
202
|
-
expect(request).to receive(:query_string).and_return("query")
|
203
|
-
expect(handler.class.request_to_uri(request)).to match(/\&query$/)
|
204
|
-
end
|
205
|
-
end
|
206
|
-
|
207
|
-
describe "when converting a request into a URI with body" do
|
208
|
-
let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
|
209
|
-
let(:request) { Puppet::Indirector::Request.new(:foo, :find, "with spaces", nil, :foo => :bar, :environment => environment) }
|
210
|
-
|
211
|
-
it "should use the indirection as the first field of the URI" do
|
212
|
-
expect(handler.class.request_to_uri_and_body(request).first.split("/")[3]).to eq("foo")
|
213
|
-
end
|
214
|
-
|
215
|
-
it "should use the escaped key as the remainder of the URI" do
|
216
|
-
escaped = Puppet::Util.uri_encode("with spaces")
|
217
|
-
expect(handler.class.request_to_uri_and_body(request).first.split("/")[4].sub(/\?.+/, '')).to eq(escaped)
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should include the correct url prefix if it is a master request" do
|
221
|
-
expect(handler.class.request_to_uri_and_body(request).first).to eq("#{master_url_prefix}/foo/with%20spaces")
|
222
|
-
end
|
223
|
-
|
224
|
-
it "should include the correct url prefix if it is a ca request" do
|
225
|
-
allow(request).to receive(:indirection_name).and_return("certificate")
|
226
|
-
expect(handler.class.request_to_uri_and_body(request).first).to eq("#{ca_url_prefix}/certificate/with%20spaces")
|
227
|
-
end
|
228
|
-
|
229
|
-
it "should return the URI and body separately" do
|
230
|
-
expect(handler.class.request_to_uri_and_body(request)).to eq(["#{master_url_prefix}/foo/with%20spaces", "environment=myenv&foo=bar"])
|
231
|
-
end
|
232
144
|
end
|
233
145
|
|
234
146
|
describe "when processing a request" do
|
235
|
-
it "should raise not_authorized_error when authorization fails" do
|
236
|
-
data = Puppet::IndirectorTesting.new("my data")
|
237
|
-
indirection.save(data, "my data")
|
238
|
-
request = a_request_that_heads(data)
|
239
|
-
|
240
|
-
expect(handler).to receive(:check_authorization).and_raise(Puppet::Network::AuthorizationError.new("forbidden"))
|
241
|
-
|
242
|
-
expect {
|
243
|
-
handler.call(request, response)
|
244
|
-
}.to raise_error(not_authorized_error)
|
245
|
-
end
|
246
|
-
|
247
147
|
it "should raise not_found_error if the indirection does not support remote requests" do
|
248
148
|
request = a_request_that_heads(Puppet::IndirectorTesting.new("my data"))
|
249
149
|
|