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
@@ -33,8 +33,8 @@ describe Puppet::Util::RubyGems::Source do
|
|
33
33
|
describe '::Gems18Source' do
|
34
34
|
before(:each) { allow(described_class).to receive(:source).and_return(Puppet::Util::RubyGems::Gems18Source) }
|
35
35
|
|
36
|
-
it "#directories returns the lib subdirs of Gem::Specification.
|
37
|
-
expect(Gem::Specification).to receive(:
|
36
|
+
it "#directories returns the lib subdirs of Gem::Specification.stubs" do
|
37
|
+
expect(Gem::Specification).to receive(:stubs).and_return([fake_gem])
|
38
38
|
|
39
39
|
expect(described_class.new.directories).to eq([gem_lib])
|
40
40
|
end
|
@@ -1,12 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Puppet::Util::RunMode do
|
4
|
-
# Discriminator for tests that attempts to unset HOME since that, for reasons currently unknown,
|
5
|
-
# doesn't work in Ruby >= 2.4.0
|
6
|
-
def self.gte_ruby_2_4
|
7
|
-
@gte_ruby_2_4 ||= SemanticPuppet::Version.parse(RUBY_VERSION) >= SemanticPuppet::Version.parse('2.4.0')
|
8
|
-
end
|
9
|
-
|
10
4
|
before do
|
11
5
|
@run_mode = Puppet::Util::RunMode.new('fake')
|
12
6
|
end
|
@@ -34,14 +28,6 @@ describe Puppet::Util::RunMode do
|
|
34
28
|
as_non_root { expect(@run_mode.conf_dir).to eq(File.expand_path('~/.puppetlabs/etc/puppet')) }
|
35
29
|
end
|
36
30
|
end
|
37
|
-
|
38
|
-
it "fails when asking for the conf_dir as non-root and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
|
39
|
-
as_non_root do
|
40
|
-
without_home do
|
41
|
-
expect { @run_mode.conf_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
31
|
end
|
46
32
|
|
47
33
|
describe "#code_dir" do
|
@@ -62,14 +48,6 @@ describe Puppet::Util::RunMode do
|
|
62
48
|
as_non_root { expect(@run_mode.code_dir).to eq(File.expand_path('~/.puppetlabs/etc/code')) }
|
63
49
|
end
|
64
50
|
end
|
65
|
-
|
66
|
-
it "fails when asking for the code_dir as non-root and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
|
67
|
-
as_non_root do
|
68
|
-
without_home do
|
69
|
-
expect { @run_mode.code_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
51
|
end
|
74
52
|
|
75
53
|
describe "#var_dir" do
|
@@ -80,13 +58,15 @@ describe Puppet::Util::RunMode do
|
|
80
58
|
it "has vardir ~/.puppetlabs/opt/puppet/cache when run as non-root" do
|
81
59
|
as_non_root { expect(@run_mode.var_dir).to eq(File.expand_path('~/.puppetlabs/opt/puppet/cache')) }
|
82
60
|
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#public_dir" do
|
64
|
+
it "has publicdir /opt/puppetlabs/puppet/public when run as root" do
|
65
|
+
as_root { expect(@run_mode.public_dir).to eq(File.expand_path('/opt/puppetlabs/puppet/public')) }
|
66
|
+
end
|
83
67
|
|
84
|
-
it "
|
85
|
-
as_non_root
|
86
|
-
without_home do
|
87
|
-
expect { @run_mode.var_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
88
|
-
end
|
89
|
-
end
|
68
|
+
it "has publicdir ~/.puppetlabs/opt/puppet/public when run as non-root" do
|
69
|
+
as_non_root { expect(@run_mode.public_dir).to eq(File.expand_path('~/.puppetlabs/opt/puppet/public')) }
|
90
70
|
end
|
91
71
|
end
|
92
72
|
|
@@ -101,14 +81,6 @@ describe Puppet::Util::RunMode do
|
|
101
81
|
it "has default logdir ~/.puppetlabs/var/log" do
|
102
82
|
as_non_root { expect(@run_mode.log_dir).to eq(File.expand_path('~/.puppetlabs/var/log')) }
|
103
83
|
end
|
104
|
-
|
105
|
-
it "fails when asking for the log_dir and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
|
106
|
-
as_non_root do
|
107
|
-
without_home do
|
108
|
-
expect { @run_mode.log_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
109
|
-
end
|
110
|
-
end
|
111
|
-
end
|
112
84
|
end
|
113
85
|
end
|
114
86
|
|
@@ -123,103 +95,59 @@ describe Puppet::Util::RunMode do
|
|
123
95
|
it "has default rundir ~/.puppetlabs/var/run" do
|
124
96
|
as_non_root { expect(@run_mode.run_dir).to eq(File.expand_path('~/.puppetlabs/var/run')) }
|
125
97
|
end
|
126
|
-
|
127
|
-
it "fails when asking for the run_dir and there is no $HOME", :unless => gte_ruby_2_4 || Puppet::Util::Platform.windows? do
|
128
|
-
as_non_root do
|
129
|
-
without_home do
|
130
|
-
expect { @run_mode.run_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
98
|
end
|
135
99
|
end
|
136
100
|
end
|
137
101
|
|
138
102
|
describe Puppet::Util::WindowsRunMode, :if => Puppet::Util::Platform.windows? do
|
139
103
|
before do
|
140
|
-
if not Dir.const_defined? :COMMON_APPDATA
|
141
|
-
Dir.const_set :COMMON_APPDATA, "/CommonFakeBase"
|
142
|
-
@remove_const = true
|
143
|
-
end
|
144
104
|
@run_mode = Puppet::Util::WindowsRunMode.new('fake')
|
145
105
|
end
|
146
106
|
|
147
|
-
after do
|
148
|
-
if @remove_const
|
149
|
-
Dir.send :remove_const, :COMMON_APPDATA
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
107
|
describe "#conf_dir" do
|
154
108
|
it "has confdir ending in Puppetlabs/puppet/etc when run as root" do
|
155
|
-
as_root { expect(@run_mode.conf_dir).to eq(File.expand_path(File.join(
|
109
|
+
as_root { expect(@run_mode.conf_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "etc"))) }
|
156
110
|
end
|
157
111
|
|
158
112
|
it "has confdir in ~/.puppetlabs/etc/puppet when run as non-root" do
|
159
113
|
as_non_root { expect(@run_mode.conf_dir).to eq(File.expand_path("~/.puppetlabs/etc/puppet")) }
|
160
114
|
end
|
161
|
-
|
162
|
-
it "fails when asking for the conf_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%", :unless => gte_ruby_2_4 do
|
163
|
-
as_non_root do
|
164
|
-
without_env('HOME') do
|
165
|
-
without_env('HOMEDRIVE') do
|
166
|
-
without_env('USERPROFILE') do
|
167
|
-
expect { @run_mode.conf_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
115
|
end
|
174
116
|
|
175
117
|
describe "#code_dir" do
|
176
118
|
it "has codedir ending in PuppetLabs/code when run as root" do
|
177
|
-
as_root { expect(@run_mode.code_dir).to eq(File.expand_path(File.join(
|
119
|
+
as_root { expect(@run_mode.code_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "code"))) }
|
178
120
|
end
|
179
121
|
|
180
122
|
it "has codedir in ~/.puppetlabs/etc/code when run as non-root" do
|
181
123
|
as_non_root { expect(@run_mode.code_dir).to eq(File.expand_path("~/.puppetlabs/etc/code")) }
|
182
124
|
end
|
183
|
-
|
184
|
-
it "fails when asking for the code_dir as non-root and there is no %HOME%, %HOMEDRIVE%, and %USERPROFILE%", :unless => gte_ruby_2_4 do
|
185
|
-
as_non_root do
|
186
|
-
without_env('HOME') do
|
187
|
-
without_env('HOMEDRIVE') do
|
188
|
-
without_env('USERPROFILE') do
|
189
|
-
expect { @run_mode.code_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
190
|
-
end
|
191
|
-
end
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
125
|
end
|
196
126
|
|
197
127
|
describe "#var_dir" do
|
198
128
|
it "has vardir ending in PuppetLabs/puppet/cache when run as root" do
|
199
|
-
as_root { expect(@run_mode.var_dir).to eq(File.expand_path(File.join(
|
129
|
+
as_root { expect(@run_mode.var_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "cache"))) }
|
200
130
|
end
|
201
131
|
|
202
132
|
it "has vardir in ~/.puppetlabs/opt/puppet/cache when run as non-root" do
|
203
133
|
as_non_root { expect(@run_mode.var_dir).to eq(File.expand_path("~/.puppetlabs/opt/puppet/cache")) }
|
204
134
|
end
|
135
|
+
end
|
136
|
+
|
137
|
+
describe "#public_dir" do
|
138
|
+
it "has publicdir ending in PuppetLabs/puppet/public when run as root" do
|
139
|
+
as_root { expect(@run_mode.public_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "public"))) }
|
140
|
+
end
|
205
141
|
|
206
|
-
it "
|
207
|
-
as_non_root
|
208
|
-
without_env('HOME') do
|
209
|
-
without_env('HOMEDRIVE') do
|
210
|
-
without_env('USERPROFILE') do
|
211
|
-
expect { @run_mode.var_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
142
|
+
it "has publicdir in ~/.puppetlabs/opt/puppet/public when run as non-root" do
|
143
|
+
as_non_root { expect(@run_mode.public_dir).to eq(File.expand_path("~/.puppetlabs/opt/puppet/public")) }
|
216
144
|
end
|
217
145
|
end
|
218
146
|
|
219
147
|
describe "#log_dir" do
|
220
148
|
describe "when run as root" do
|
221
149
|
it "has logdir ending in PuppetLabs/puppet/var/log" do
|
222
|
-
as_root { expect(@run_mode.log_dir).to eq(File.expand_path(File.join(
|
150
|
+
as_root { expect(@run_mode.log_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "var", "log"))) }
|
223
151
|
end
|
224
152
|
end
|
225
153
|
|
@@ -227,25 +155,13 @@ describe Puppet::Util::RunMode do
|
|
227
155
|
it "has default logdir ~/.puppetlabs/var/log" do
|
228
156
|
as_non_root { expect(@run_mode.log_dir).to eq(File.expand_path('~/.puppetlabs/var/log')) }
|
229
157
|
end
|
230
|
-
|
231
|
-
it "fails when asking for the log_dir and there is no $HOME", :unless => gte_ruby_2_4 do
|
232
|
-
as_non_root do
|
233
|
-
without_env('HOME') do
|
234
|
-
without_env('HOMEDRIVE') do
|
235
|
-
without_env('USERPROFILE') do
|
236
|
-
expect { @run_mode.log_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
237
|
-
end
|
238
|
-
end
|
239
|
-
end
|
240
|
-
end
|
241
|
-
end
|
242
158
|
end
|
243
159
|
end
|
244
160
|
|
245
161
|
describe "#run_dir" do
|
246
162
|
describe "when run as root" do
|
247
163
|
it "has rundir ending in PuppetLabs/puppet/var/run" do
|
248
|
-
as_root { expect(@run_mode.run_dir).to eq(File.expand_path(File.join(
|
164
|
+
as_root { expect(@run_mode.run_dir).to eq(File.expand_path(File.join(ENV['ALLUSERSPROFILE'], "PuppetLabs", "puppet", "var", "run"))) }
|
249
165
|
end
|
250
166
|
end
|
251
167
|
|
@@ -253,18 +169,6 @@ describe Puppet::Util::RunMode do
|
|
253
169
|
it "has default rundir ~/.puppetlabs/var/run" do
|
254
170
|
as_non_root { expect(@run_mode.run_dir).to eq(File.expand_path('~/.puppetlabs/var/run')) }
|
255
171
|
end
|
256
|
-
|
257
|
-
it "fails when asking for the run_dir and there is no $HOME", :unless => gte_ruby_2_4 do
|
258
|
-
as_non_root do
|
259
|
-
without_env('HOME') do
|
260
|
-
without_env('HOMEDRIVE') do
|
261
|
-
without_env('USERPROFILE') do
|
262
|
-
expect { @run_mode.run_dir }.to raise_error ArgumentError, /couldn't find HOME/
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
266
|
-
end
|
267
|
-
end
|
268
172
|
end
|
269
173
|
end
|
270
174
|
|
@@ -310,8 +214,4 @@ describe Puppet::Util::RunMode do
|
|
310
214
|
ensure
|
311
215
|
Puppet::Util.set_env(name, saved)
|
312
216
|
end
|
313
|
-
|
314
|
-
def without_home(&block)
|
315
|
-
without_env('HOME', &block)
|
316
|
-
end
|
317
217
|
end
|
@@ -111,15 +111,19 @@ describe Puppet::Util::SELinux do
|
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should return a context" do
|
114
|
-
|
115
|
-
|
116
|
-
|
114
|
+
without_partial_double_verification do
|
115
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
116
|
+
expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:type_t:s0"])
|
117
|
+
expect(get_selinux_current_context("/foo")).to eq("user_u:role_r:type_t:s0")
|
118
|
+
end
|
117
119
|
end
|
118
120
|
|
119
121
|
it "should return nil if lgetfilecon fails" do
|
120
|
-
|
121
|
-
|
122
|
-
|
122
|
+
without_partial_double_verification do
|
123
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
124
|
+
expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return(-1)
|
125
|
+
expect(get_selinux_current_context("/foo")).to be_nil
|
126
|
+
end
|
123
127
|
end
|
124
128
|
end
|
125
129
|
|
@@ -130,47 +134,57 @@ describe Puppet::Util::SELinux do
|
|
130
134
|
end
|
131
135
|
|
132
136
|
it "should return a context if a default context exists" do
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
137
|
+
without_partial_double_verification do
|
138
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
139
|
+
fstat = double('File::Stat', :mode => 0)
|
140
|
+
expect(Puppet::FileSystem).to receive(:lstat).with('/foo').and_return(fstat)
|
141
|
+
expect(self).to receive(:find_fs).with("/foo").and_return("ext3")
|
142
|
+
expect(Selinux).to receive(:matchpathcon).with("/foo", 0).and_return([0, "user_u:role_r:type_t:s0"])
|
143
|
+
|
144
|
+
expect(get_selinux_default_context("/foo")).to eq("user_u:role_r:type_t:s0")
|
145
|
+
end
|
140
146
|
end
|
141
147
|
|
142
148
|
it "handles permission denied errors by issuing a warning" do
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
149
|
+
without_partial_double_verification do
|
150
|
+
allow(self).to receive(:selinux_support?).and_return(true)
|
151
|
+
allow(self).to receive(:selinux_label_support?).and_return(true)
|
152
|
+
allow(Selinux).to receive(:matchpathcon).with("/root/chuj", 0).and_return(-1)
|
153
|
+
allow(self).to receive(:file_lstat).with("/root/chuj").and_raise(Errno::EACCES, "/root/chuj")
|
147
154
|
|
148
|
-
|
155
|
+
expect(get_selinux_default_context("/root/chuj")).to be_nil
|
156
|
+
end
|
149
157
|
end
|
150
158
|
|
151
159
|
it "handles no such file or directory errors by issuing a warning" do
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
160
|
+
without_partial_double_verification do
|
161
|
+
allow(self).to receive(:selinux_support?).and_return(true)
|
162
|
+
allow(self).to receive(:selinux_label_support?).and_return(true)
|
163
|
+
allow(Selinux).to receive(:matchpathcon).with("/root/chuj", 0).and_return(-1)
|
164
|
+
allow(self).to receive(:file_lstat).with("/root/chuj").and_raise(Errno::ENOENT, "/root/chuj")
|
156
165
|
|
157
|
-
|
166
|
+
expect(get_selinux_default_context("/root/chuj")).to be_nil
|
167
|
+
end
|
158
168
|
end
|
159
169
|
|
160
170
|
it "should return nil if matchpathcon returns failure" do
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
171
|
+
without_partial_double_verification do
|
172
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
173
|
+
fstat = double('File::Stat', :mode => 0)
|
174
|
+
expect(Puppet::FileSystem).to receive(:lstat).with('/foo').and_return(fstat)
|
175
|
+
expect(self).to receive(:find_fs).with("/foo").and_return("ext3")
|
176
|
+
expect(Selinux).to receive(:matchpathcon).with("/foo", 0).and_return(-1)
|
177
|
+
|
178
|
+
expect(get_selinux_default_context("/foo")).to be_nil
|
179
|
+
end
|
168
180
|
end
|
169
181
|
|
170
182
|
it "should return nil if selinux_label_support returns false" do
|
171
|
-
|
172
|
-
|
173
|
-
|
183
|
+
without_partial_double_verification do
|
184
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
185
|
+
expect(self).to receive(:find_fs).with("/foo").and_return("nfs")
|
186
|
+
expect(get_selinux_default_context("/foo")).to be_nil
|
187
|
+
end
|
174
188
|
end
|
175
189
|
end
|
176
190
|
|
@@ -261,37 +275,47 @@ describe Puppet::Util::SELinux do
|
|
261
275
|
end
|
262
276
|
|
263
277
|
it "should use lsetfilecon to set a context" do
|
264
|
-
|
265
|
-
|
266
|
-
|
278
|
+
without_partial_double_verification do
|
279
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
280
|
+
expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
|
281
|
+
expect(set_selinux_context("/foo", "user_u:role_r:type_t:s0")).to be_truthy
|
282
|
+
end
|
267
283
|
end
|
268
284
|
|
269
285
|
it "should use lsetfilecon to set user_u user context" do
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
286
|
+
without_partial_double_verification do
|
287
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
288
|
+
expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "foo:role_r:type_t:s0"])
|
289
|
+
expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
|
290
|
+
expect(set_selinux_context("/foo", "user_u", :seluser)).to be_truthy
|
291
|
+
end
|
274
292
|
end
|
275
293
|
|
276
294
|
it "should use lsetfilecon to set role_r role context" do
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
295
|
+
without_partial_double_verification do
|
296
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
297
|
+
expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:foo:type_t:s0"])
|
298
|
+
expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
|
299
|
+
expect(set_selinux_context("/foo", "role_r", :selrole)).to be_truthy
|
300
|
+
end
|
281
301
|
end
|
282
302
|
|
283
303
|
it "should use lsetfilecon to set type_t type context" do
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
304
|
+
without_partial_double_verification do
|
305
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
306
|
+
expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:foo:s0"])
|
307
|
+
expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0").and_return(0)
|
308
|
+
expect(set_selinux_context("/foo", "type_t", :seltype)).to be_truthy
|
309
|
+
end
|
288
310
|
end
|
289
311
|
|
290
312
|
it "should use lsetfilecon to set s0:c3,c5 range context" do
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
313
|
+
without_partial_double_verification do
|
314
|
+
expect(self).to receive(:selinux_support?).and_return(true)
|
315
|
+
expect(Selinux).to receive(:lgetfilecon).with("/foo").and_return([0, "user_u:role_r:type_t:s0"])
|
316
|
+
expect(Selinux).to receive(:lsetfilecon).with("/foo", "user_u:role_r:type_t:s0:c3,c5").and_return(0)
|
317
|
+
expect(set_selinux_context("/foo", "s0:c3,c5", :selrange)).to be_truthy
|
318
|
+
end
|
295
319
|
end
|
296
320
|
end
|
297
321
|
|
@@ -143,9 +143,11 @@ describe Puppet::Util::Storage do
|
|
143
143
|
end
|
144
144
|
|
145
145
|
it "should raise an error if the state file does not contain valid YAML and cannot be renamed" do
|
146
|
+
allow(File).to receive(:rename).and_call_original
|
147
|
+
|
146
148
|
write_state_file('{ invalid')
|
147
149
|
|
148
|
-
expect(File).to receive(:rename).and_raise(SystemCallError)
|
150
|
+
expect(File).to receive(:rename).with(@state_file, "#{@state_file}.bad").and_raise(SystemCallError)
|
149
151
|
|
150
152
|
expect { Puppet::Util::Storage.load }.to raise_error(Puppet::Error, /Could not rename/)
|
151
153
|
end
|
@@ -14,12 +14,14 @@ describe Puppet::Util::SUIDManager do
|
|
14
14
|
pwent = double('pwent', :name => 'fred', :uid => 42, :gid => 42)
|
15
15
|
allow(Etc).to receive(:getpwuid).with(42).and_return(pwent)
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
unless Puppet::Util::Platform.windows?
|
18
|
+
[:euid, :egid, :uid, :gid, :groups].each do |id|
|
19
|
+
allow(Process).to receive("#{id}=") {|value| xids[id] = value}
|
20
|
+
end
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
22
|
-
describe "#initgroups" do
|
24
|
+
describe "#initgroups", unless: Puppet::Util::Platform.windows? do
|
23
25
|
it "should use the primary group of the user as the 'basegid'" do
|
24
26
|
expect(Process).to receive(:initgroups).with('fred', 42)
|
25
27
|
described_class.initgroups(42)
|
@@ -27,7 +29,7 @@ describe Puppet::Util::SUIDManager do
|
|
27
29
|
end
|
28
30
|
|
29
31
|
describe "#uid" do
|
30
|
-
it "should allow setting euid/egid" do
|
32
|
+
it "should allow setting euid/egid", unless: Puppet::Util::Platform.windows? do
|
31
33
|
Puppet::Util::SUIDManager.egid = user[:gid]
|
32
34
|
Puppet::Util::SUIDManager.euid = user[:uid]
|
33
35
|
|
@@ -37,8 +39,7 @@ describe Puppet::Util::SUIDManager do
|
|
37
39
|
end
|
38
40
|
|
39
41
|
describe "#asuser" do
|
40
|
-
it "should not get or set euid/egid when not root" do
|
41
|
-
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
42
|
+
it "should not get or set euid/egid when not root", unless: Puppet::Util::Platform.windows? do
|
42
43
|
allow(Process).to receive(:uid).and_return(1)
|
43
44
|
|
44
45
|
allow(Process).to receive(:egid).and_return(51)
|
@@ -49,13 +50,12 @@ describe Puppet::Util::SUIDManager do
|
|
49
50
|
expect(xids).to be_empty
|
50
51
|
end
|
51
52
|
|
52
|
-
context "when root and not
|
53
|
+
context "when root and not Windows" do
|
53
54
|
before :each do
|
54
55
|
allow(Process).to receive(:uid).and_return(0)
|
55
|
-
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
56
56
|
end
|
57
57
|
|
58
|
-
it "should set euid/egid" do
|
58
|
+
it "should set euid/egid", unless: Puppet::Util::Platform.windows? do
|
59
59
|
allow(Process).to receive(:egid).and_return(51, 51, user[:gid])
|
60
60
|
allow(Process).to receive(:euid).and_return(50, 50, user[:uid])
|
61
61
|
|
@@ -79,29 +79,23 @@ describe Puppet::Util::SUIDManager do
|
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should just yield if user and group are nil" do
|
82
|
-
|
83
|
-
Puppet::Util::SUIDManager.asuser(nil, nil) { yielded = true }
|
84
|
-
expect(yielded).to be_truthy
|
82
|
+
expect { |b| Puppet::Util::SUIDManager.asuser(nil, nil, &b) }.to yield_control
|
85
83
|
expect(xids).to eq({})
|
86
84
|
end
|
87
85
|
|
88
|
-
it "should just change group if only group is given" do
|
89
|
-
|
90
|
-
Puppet::Util::SUIDManager.asuser(nil, 42) { yielded = true }
|
91
|
-
expect(yielded).to be_truthy
|
86
|
+
it "should just change group if only group is given", unless: Puppet::Util::Platform.windows? do
|
87
|
+
expect { |b| Puppet::Util::SUIDManager.asuser(nil, 42, &b) }.to yield_control
|
92
88
|
expect(xids).to eq({ :egid => 42 })
|
93
89
|
end
|
94
90
|
|
95
|
-
it "should change gid to the primary group of uid by default" do
|
91
|
+
it "should change gid to the primary group of uid by default", unless: Puppet::Util::Platform.windows? do
|
96
92
|
allow(Process).to receive(:initgroups)
|
97
93
|
|
98
|
-
|
99
|
-
Puppet::Util::SUIDManager.asuser(42) { yielded = true }
|
100
|
-
expect(yielded).to be_truthy
|
94
|
+
expect { |b| Puppet::Util::SUIDManager.asuser(42, nil, &b) }.to yield_control
|
101
95
|
expect(xids).to eq({ :euid => 42, :egid => 42 })
|
102
96
|
end
|
103
97
|
|
104
|
-
it "should change both uid and gid if given" do
|
98
|
+
it "should change both uid and gid if given", unless: Puppet::Util::Platform.windows? do
|
105
99
|
# I don't like the sequence, but it is the only way to assert on the
|
106
100
|
# internal behaviour in a reliable fashion, given we need multiple
|
107
101
|
# sequenced calls to the same methods. --daniel 2012-02-05
|
@@ -110,21 +104,23 @@ describe Puppet::Util::SUIDManager do
|
|
110
104
|
expect(Puppet::Util::SUIDManager).to receive(:change_group).with(Puppet::Util::SUIDManager.egid, false).ordered()
|
111
105
|
expect(Puppet::Util::SUIDManager).to receive(:change_user).with(Puppet::Util::SUIDManager.euid, false).ordered()
|
112
106
|
|
113
|
-
|
114
|
-
Puppet::Util::SUIDManager.asuser(42, 43) { yielded = true }
|
115
|
-
expect(yielded).to be_truthy
|
107
|
+
expect { |b| Puppet::Util::SUIDManager.asuser(42, 43, &b) }.to yield_control
|
116
108
|
end
|
117
109
|
end
|
118
110
|
|
119
|
-
it "should
|
120
|
-
Puppet::Util::SUIDManager.asuser(
|
121
|
-
|
122
|
-
expect(xids).to be_empty
|
111
|
+
it "should just yield on Windows", if: Puppet::Util::Platform.windows? do
|
112
|
+
expect { |b| Puppet::Util::SUIDManager.asuser(1, 2, &b) }.to yield_control
|
123
113
|
end
|
124
114
|
end
|
125
115
|
|
126
116
|
describe "#change_group" do
|
127
|
-
|
117
|
+
it "raises on Windows", if: Puppet::Util::Platform.windows? do
|
118
|
+
expect {
|
119
|
+
Puppet::Util::SUIDManager.change_group(42, true)
|
120
|
+
}.to raise_error(NotImplementedError, /change_privilege\(\) function is unimplemented/)
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "when changing permanently", unless: Puppet::Util::Platform.windows? do
|
128
124
|
it "should change_privilege" do
|
129
125
|
expect(Process::GID).to receive(:change_privilege) do |gid|
|
130
126
|
Process.gid = gid
|
@@ -150,7 +146,7 @@ describe Puppet::Util::SUIDManager do
|
|
150
146
|
end
|
151
147
|
end
|
152
148
|
|
153
|
-
describe "when changing temporarily" do
|
149
|
+
describe "when changing temporarily", unless: Puppet::Util::Platform.windows? do
|
154
150
|
it "should change only egid" do
|
155
151
|
Puppet::Util::SUIDManager.change_group(42, false)
|
156
152
|
|
@@ -161,7 +157,13 @@ describe Puppet::Util::SUIDManager do
|
|
161
157
|
end
|
162
158
|
|
163
159
|
describe "#change_user" do
|
164
|
-
|
160
|
+
it "raises on Windows", if: Puppet::Util::Platform.windows? do
|
161
|
+
expect {
|
162
|
+
Puppet::Util::SUIDManager.change_user(42, true)
|
163
|
+
}.to raise_error(NotImplementedError, /initgroups\(\) function is unimplemented/)
|
164
|
+
end
|
165
|
+
|
166
|
+
describe "when changing permanently", unless: Puppet::Util::Platform.windows? do
|
165
167
|
it "should change_privilege" do
|
166
168
|
expect(Process::UID).to receive(:change_privilege) do |uid|
|
167
169
|
Process.uid = uid
|
@@ -191,7 +193,7 @@ describe Puppet::Util::SUIDManager do
|
|
191
193
|
end
|
192
194
|
end
|
193
195
|
|
194
|
-
describe "when changing temporarily" do
|
196
|
+
describe "when changing temporarily", unless: Puppet::Util::Platform.windows? do
|
195
197
|
it "should change only euid and groups" do
|
196
198
|
allow(Puppet::Util::SUIDManager).to receive(:initgroups).and_return([])
|
197
199
|
Puppet::Util::SUIDManager.change_user(42, false)
|
@@ -221,12 +223,7 @@ describe Puppet::Util::SUIDManager do
|
|
221
223
|
end
|
222
224
|
|
223
225
|
describe "#root?" do
|
224
|
-
describe "on POSIX systems" do
|
225
|
-
before :each do
|
226
|
-
allow(Puppet.features).to receive(:posix?).and_return(true)
|
227
|
-
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
228
|
-
end
|
229
|
-
|
226
|
+
describe "on POSIX systems", unless: Puppet::Util::Platform.windows? do
|
230
227
|
it "should be root if uid is 0" do
|
231
228
|
allow(Process).to receive(:uid).and_return(0)
|
232
229
|
|
@@ -240,7 +237,7 @@ describe Puppet::Util::SUIDManager do
|
|
240
237
|
end
|
241
238
|
end
|
242
239
|
|
243
|
-
describe "on
|
240
|
+
describe "on Windows", :if => Puppet::Util::Platform.windows? do
|
244
241
|
it "should be root if user is privileged" do
|
245
242
|
allow(Puppet::Util::Windows::User).to receive(:admin?).and_return(true)
|
246
243
|
|
@@ -261,13 +258,19 @@ describe 'Puppet::Util::SUIDManager#groups=' do
|
|
261
258
|
Puppet::Util::SUIDManager
|
262
259
|
end
|
263
260
|
|
264
|
-
it "
|
261
|
+
it "raises on Windows", if: Puppet::Util::Platform.windows? do
|
262
|
+
expect {
|
263
|
+
subject.groups = []
|
264
|
+
}.to raise_error(NotImplementedError, /groups=\(\) function is unimplemented/)
|
265
|
+
end
|
266
|
+
|
267
|
+
it "(#3419) should rescue Errno::EINVAL on OS X", unless: Puppet::Util::Platform.windows? do
|
265
268
|
expect(Process).to receive(:groups=).and_raise(Errno::EINVAL, 'blew up')
|
266
269
|
expect(subject).to receive(:osx_maj_ver).and_return('10.7').twice
|
267
270
|
subject.groups = ['list', 'of', 'groups']
|
268
271
|
end
|
269
272
|
|
270
|
-
it "(#3419) should fail if an Errno::EINVAL is raised NOT on OS X" do
|
273
|
+
it "(#3419) should fail if an Errno::EINVAL is raised NOT on OS X", unless: Puppet::Util::Platform.windows? do
|
271
274
|
expect(Process).to receive(:groups=).and_raise(Errno::EINVAL, 'blew up')
|
272
275
|
expect(subject).to receive(:osx_maj_ver).and_return(false)
|
273
276
|
expect { subject.groups = ['list', 'of', 'groups'] }.to raise_error(Errno::EINVAL)
|