puppet 6.0.10-universal-darwin → 6.1.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +31 -27
- data/Guardfile.example +76 -0
- data/LICENSE +189 -4
- data/MAINTAINERS +47 -0
- data/README.md +3 -3
- data/lib/hiera/scope.rb +0 -7
- data/lib/puppet.rb +6 -5
- data/lib/puppet/application.rb +3 -3
- data/lib/puppet/application/cert.rb +2 -2
- data/lib/puppet/application/device.rb +83 -109
- data/lib/puppet/application/filebucket.rb +1 -10
- data/lib/puppet/application/ssl.rb +0 -2
- data/lib/puppet/configurer.rb +9 -10
- data/lib/puppet/confine/false.rb +1 -7
- data/lib/puppet/confine/true.rb +1 -7
- data/lib/puppet/defaults.rb +39 -51
- data/lib/puppet/forge.rb +1 -4
- data/lib/puppet/functions/abs.rb +1 -1
- data/lib/puppet/functions/call.rb +1 -2
- data/lib/puppet/functions/new.rb +1 -1
- data/lib/puppet/indirector/request.rb +15 -26
- data/lib/puppet/network/http/connection.rb +12 -32
- data/lib/puppet/network/http/factory.rb +0 -5
- data/lib/puppet/pal/catalog_compiler.rb +96 -0
- data/lib/puppet/pal/compiler.rb +221 -0
- data/lib/puppet/pal/function_signature.rb +52 -0
- data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
- data/lib/puppet/pal/pal_api.rb +15 -0
- data/lib/puppet/pal/pal_impl.rb +523 -0
- data/lib/puppet/pal/plan_signature.rb +71 -0
- data/lib/puppet/pal/script_compiler.rb +71 -0
- data/lib/puppet/pal/task_signature.rb +58 -0
- data/lib/puppet/parser/functions/generate.rb +7 -6
- data/lib/puppet/plugins/configuration.rb +5 -1
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
- data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
- data/lib/puppet/pops/issues.rb +0 -4
- data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +4 -60
- data/lib/puppet/pops/model/factory.rb +4 -38
- data/lib/puppet/pops/model/pn_transformer.rb +0 -5
- data/lib/puppet/pops/parser/egrammar.ra +2 -2
- data/lib/puppet/pops/parser/heredoc_support.rb +7 -17
- data/lib/puppet/pops/parser/lexer2.rb +1 -6
- data/lib/puppet/pops/parser/locator.rb +86 -106
- data/lib/puppet/pops/parser/parser_support.rb +2 -11
- data/lib/puppet/pops/types/string_converter.rb +7 -2
- data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
- data/lib/puppet/pops/types/types.rb +3 -5
- data/lib/puppet/pops/validation/checker4_0.rb +13 -0
- data/lib/puppet/provider.rb +2 -1
- data/lib/puppet/provider/exec.rb +6 -1
- data/lib/puppet/provider/file/windows.rb +1 -49
- data/lib/puppet/provider/group/windows_adsi.rb +1 -4
- data/lib/puppet/provider/package.rb +0 -2
- data/lib/puppet/provider/package/dpkg.rb +2 -15
- data/lib/puppet/provider/package/gem.rb +42 -102
- data/lib/puppet/provider/package/pip.rb +111 -135
- data/lib/puppet/provider/package/pip3.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +37 -21
- data/lib/puppet/provider/package/puppet_gem.rb +1 -1
- data/lib/puppet/provider/package/rpm.rb +16 -27
- data/lib/puppet/provider/package/windows.rb +1 -5
- data/lib/puppet/provider/package/yum.rb +1 -2
- data/lib/puppet/provider/service/systemd.rb +17 -0
- data/lib/puppet/provider/service/upstart.rb +5 -17
- data/lib/puppet/provider/service/windows.rb +8 -3
- data/lib/puppet/provider/user/directoryservice.rb +4 -16
- data/lib/puppet/provider/user/useradd.rb +13 -16
- data/lib/puppet/resource.rb +3 -1
- data/lib/puppet/rest/client.rb +83 -0
- data/lib/puppet/rest/route.rb +1 -1
- data/lib/puppet/settings.rb +5 -10
- data/lib/puppet/settings/server_list_setting.rb +0 -9
- data/lib/puppet/ssl/host.rb +11 -0
- data/lib/puppet/ssl/validator/default_validator.rb +0 -31
- data/lib/puppet/syntax_checkers/epp.rb +34 -0
- data/lib/puppet/syntax_checkers/pp.rb +34 -0
- data/lib/puppet/transaction.rb +7 -12
- data/lib/puppet/transaction/event_manager.rb +5 -1
- data/lib/puppet/transaction/resource_harness.rb +0 -1
- data/lib/puppet/type.rb +6 -0
- data/lib/puppet/type/exec.rb +5 -27
- data/lib/puppet/type/file/mode.rb +1 -6
- data/lib/puppet/type/file/source.rb +1 -0
- data/lib/puppet/type/filebucket.rb +8 -12
- data/lib/puppet/type/package.rb +11 -44
- data/lib/puppet/type/schedule.rb +0 -4
- data/lib/puppet/type/service.rb +12 -0
- data/lib/puppet/type/user.rb +1 -1
- data/lib/puppet/util/command_line.rb +1 -5
- data/lib/puppet/util/connection.rb +6 -15
- data/lib/puppet/util/http_proxy.rb +2 -3
- data/lib/puppet/util/log.rb +2 -7
- data/lib/puppet/util/pidlock.rb +1 -15
- data/lib/puppet/util/windows/process.rb +5 -73
- data/lib/puppet/util/windows/registry.rb +1 -7
- data/lib/puppet/util/windows/security.rb +8 -29
- data/lib/puppet/util/windows/service.rb +33 -27
- data/lib/puppet/util/windows/user.rb +4 -14
- data/lib/puppet/version.rb +1 -1
- data/lib/puppet_pal.rb +5 -1132
- data/locales/ja/puppet.po +297 -363
- data/locales/puppet.pot +445 -517
- data/man/man5/puppet.conf.5 +12 -20
- data/man/man8/puppet-agent.8 +1 -1
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +1 -1
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +2 -6
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +1 -1
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +1 -1
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +1 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +1 -1
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
- data/spec/integration/agent/logging_spec.rb +7 -5
- data/spec/integration/application/apply_spec.rb +16 -18
- data/spec/integration/application/doc_spec.rb +2 -1
- data/spec/integration/application/lookup_spec.rb +5 -5
- data/spec/integration/configurer_spec.rb +6 -5
- data/spec/integration/defaults_spec.rb +6 -5
- data/spec/integration/directory_environments_spec.rb +1 -1
- data/spec/integration/faces/config_spec.rb +4 -3
- data/spec/integration/faces/documentation_spec.rb +1 -0
- data/spec/integration/faces/plugin_spec.rb +1 -1
- data/spec/integration/file_bucket/file_spec.rb +4 -2
- data/spec/integration/file_serving/content_spec.rb +1 -0
- data/spec/integration/file_serving/fileset_spec.rb +1 -0
- data/spec/integration/file_serving/metadata_spec.rb +1 -0
- data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
- data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
- data/spec/integration/indirector/facts/facter_spec.rb +5 -4
- data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
- data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
- data/spec/integration/network/authconfig_spec.rb +24 -23
- data/spec/integration/network/formats_spec.rb +1 -0
- data/spec/integration/node/environment_spec.rb +1 -0
- data/spec/integration/node/facts_spec.rb +10 -9
- data/spec/integration/node_spec.rb +7 -6
- data/spec/integration/parser/catalog_spec.rb +5 -1
- data/spec/integration/parser/collection_spec.rb +2 -1
- data/spec/integration/parser/compiler_spec.rb +6 -6
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/parser/undef_param_spec.rb +1 -1
- data/spec/integration/provider/service/init_spec.rb +5 -4
- data/spec/integration/provider/service/systemd_spec.rb +2 -0
- data/spec/integration/provider/service/windows_spec.rb +2 -1
- data/spec/integration/reference/providers_spec.rb +2 -1
- data/spec/integration/reports_spec.rb +2 -1
- data/spec/integration/resource/catalog_spec.rb +17 -14
- data/spec/integration/resource/type_collection_spec.rb +5 -4
- data/spec/integration/ssl/certificate_request_spec.rb +1 -0
- data/spec/integration/ssl/host_spec.rb +2 -1
- data/spec/integration/ssl/key_spec.rb +1 -0
- data/spec/integration/test/test_helper_spec.rb +1 -0
- data/spec/integration/transaction/report_spec.rb +11 -6
- data/spec/integration/transaction_spec.rb +19 -18
- data/spec/integration/type/exec_spec.rb +1 -0
- data/spec/integration/type/file_spec.rb +33 -13
- data/spec/integration/type/package_spec.rb +24 -20
- data/spec/integration/type/tidy_spec.rb +2 -1
- data/spec/integration/type_spec.rb +1 -0
- data/spec/integration/util/autoload_spec.rb +2 -1
- data/spec/integration/util/rdoc/parser_spec.rb +1 -0
- data/spec/integration/util/settings_spec.rb +1 -0
- data/spec/integration/util/windows/adsi_spec.rb +5 -3
- data/spec/integration/util/windows/principal_spec.rb +1 -0
- data/spec/integration/util/windows/process_spec.rb +6 -4
- data/spec/integration/util/windows/registry_spec.rb +51 -93
- data/spec/integration/util/windows/security_spec.rb +4 -2
- data/spec/integration/util/windows/user_spec.rb +20 -37
- data/spec/integration/util_spec.rb +7 -4
- data/spec/lib/puppet_spec/compiler.rb +1 -1
- data/spec/lib/puppet_spec/files.rb +1 -0
- data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
- data/spec/lib/puppet_spec/scope.rb +2 -1
- data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
- data/spec/shared_behaviours/file_server_terminus.rb +9 -8
- data/spec/shared_behaviours/file_serving.rb +8 -6
- data/spec/shared_behaviours/file_serving_model.rb +5 -3
- data/spec/shared_behaviours/hiera_indirections.rb +4 -3
- data/spec/shared_behaviours/iterative_functions.rb +1 -0
- data/spec/shared_behaviours/memory_terminus.rb +2 -2
- data/spec/shared_examples/rhel_package_provider.rb +70 -112
- data/spec/spec_helper.rb +2 -11
- data/spec/unit/agent/disabler_spec.rb +5 -4
- data/spec/unit/agent/locker_spec.rb +13 -12
- data/spec/unit/agent_spec.rb +85 -80
- data/spec/unit/application/agent_spec.rb +93 -88
- data/spec/unit/application/apply_spec.rb +83 -82
- data/spec/unit/application/config_spec.rb +1 -0
- data/spec/unit/application/describe_spec.rb +7 -6
- data/spec/unit/application/device_spec.rb +419 -395
- data/spec/unit/application/doc_spec.rb +46 -44
- data/spec/unit/application/face_base_spec.rb +62 -61
- data/spec/unit/application/facts_spec.rb +4 -3
- data/spec/unit/application/filebucket_spec.rb +74 -66
- data/spec/unit/application/indirection_base_spec.rb +6 -8
- data/spec/unit/application/lookup_spec.rb +26 -26
- data/spec/unit/application/resource_spec.rb +48 -42
- data/spec/unit/application/ssl_spec.rb +3 -8
- data/spec/unit/application_spec.rb +98 -86
- data/spec/unit/capability_spec.rb +6 -6
- data/spec/unit/certificate_factory_spec.rb +5 -3
- data/spec/unit/configurer/downloader_spec.rb +21 -20
- data/spec/unit/configurer/fact_handler_spec.rb +3 -2
- data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
- data/spec/unit/configurer_spec.rb +198 -194
- data/spec/unit/confine/exists_spec.rb +15 -17
- data/spec/unit/confine/false_spec.rb +6 -32
- data/spec/unit/confine/feature_spec.rb +5 -7
- data/spec/unit/confine/true_spec.rb +6 -32
- data/spec/unit/confine/variable_spec.rb +15 -14
- data/spec/unit/confine_collection_spec.rb +29 -28
- data/spec/unit/confine_spec.rb +14 -13
- data/spec/unit/confiner_spec.rb +11 -10
- data/spec/unit/context/trusted_information_spec.rb +1 -1
- data/spec/unit/daemon_spec.rb +36 -35
- data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
- data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
- data/spec/unit/datatypes_spec.rb +4 -3
- data/spec/unit/defaults_spec.rb +27 -18
- data/spec/unit/environments_spec.rb +7 -7
- data/spec/unit/etc_spec.rb +32 -30
- data/spec/unit/external/pson_spec.rb +1 -0
- data/spec/unit/face/catalog_spec.rb +1 -0
- data/spec/unit/face/config_spec.rb +35 -31
- data/spec/unit/face/epp_face_spec.rb +4 -3
- data/spec/unit/face/facts_spec.rb +6 -5
- data/spec/unit/face/generate_spec.rb +5 -4
- data/spec/unit/face/help_spec.rb +8 -7
- data/spec/unit/face/key_spec.rb +1 -0
- data/spec/unit/face/man_spec.rb +2 -1
- data/spec/unit/face/module/install_spec.rb +5 -3
- data/spec/unit/face/module/list_spec.rb +12 -2
- data/spec/unit/face/module/search_spec.rb +9 -11
- data/spec/unit/face/module/uninstall_spec.rb +8 -4
- data/spec/unit/face/node_spec.rb +24 -23
- data/spec/unit/face/parser_spec.rb +18 -3
- data/spec/unit/face/plugin_spec.rb +9 -36
- data/spec/unit/face/status_spec.rb +1 -0
- data/spec/unit/file_bucket/dipper_spec.rb +20 -24
- data/spec/unit/file_bucket/file_spec.rb +2 -0
- data/spec/unit/file_serving/base_spec.rb +15 -14
- data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
- data/spec/unit/file_serving/configuration_spec.rb +66 -63
- data/spec/unit/file_serving/content_spec.rb +11 -10
- data/spec/unit/file_serving/fileset_spec.rb +58 -63
- data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
- data/spec/unit/file_serving/metadata_spec.rb +36 -36
- data/spec/unit/file_serving/mount/file_spec.rb +32 -31
- data/spec/unit/file_serving/mount/locales_spec.rb +24 -23
- data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +24 -23
- data/spec/unit/file_serving/mount/plugins_spec.rb +24 -23
- data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
- data/spec/unit/file_serving/mount_spec.rb +1 -0
- data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
- data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
- data/spec/unit/file_system/uniquefile_spec.rb +4 -4
- data/spec/unit/file_system_spec.rb +2 -2
- data/spec/unit/forge/errors_spec.rb +1 -1
- data/spec/unit/forge/forge_spec.rb +16 -17
- data/spec/unit/forge/module_release_spec.rb +18 -18
- data/spec/unit/forge/repository_spec.rb +30 -29
- data/spec/unit/forge_spec.rb +11 -15
- data/spec/unit/functions/binary_file_spec.rb +3 -3
- data/spec/unit/functions/contain_spec.rb +2 -0
- data/spec/unit/functions/defined_spec.rb +1 -0
- data/spec/unit/functions/epp_spec.rb +2 -2
- data/spec/unit/functions/find_file_spec.rb +7 -7
- data/spec/unit/functions/include_spec.rb +4 -0
- data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
- data/spec/unit/functions/lookup_spec.rb +2 -1
- data/spec/unit/functions/module_directory_spec.rb +12 -12
- data/spec/unit/functions/new_spec.rb +0 -15
- data/spec/unit/functions/require_spec.rb +3 -0
- data/spec/unit/functions/shared.rb +8 -5
- data/spec/unit/functions/versioncmp_spec.rb +2 -1
- data/spec/unit/functions4_spec.rb +10 -9
- data/spec/unit/gettext/config_spec.rb +4 -4
- data/spec/unit/gettext/module_loading_spec.rb +7 -7
- data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
- data/spec/unit/graph/relationship_graph_spec.rb +2 -1
- data/spec/unit/graph/simple_graph_spec.rb +10 -9
- data/spec/unit/hiera/scope_spec.rb +0 -7
- data/spec/unit/hiera_puppet_spec.rb +20 -20
- data/spec/unit/indirector/catalog/compiler_spec.rb +149 -147
- data/spec/unit/indirector/catalog/json_spec.rb +2 -1
- data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
- data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
- data/spec/unit/indirector/certificate/file_spec.rb +1 -0
- data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
- data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
- data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
- data/spec/unit/indirector/direct_file_server_spec.rb +18 -17
- data/spec/unit/indirector/envelope_spec.rb +2 -1
- data/spec/unit/indirector/exec_spec.rb +5 -4
- data/spec/unit/indirector/face_spec.rb +9 -9
- data/spec/unit/indirector/facts/facter_spec.rb +43 -37
- data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
- data/spec/unit/indirector/facts/rest_spec.rb +8 -7
- data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/facts/yaml_spec.rb +1 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -3
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
- data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_content/file_spec.rb +1 -0
- data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
- data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
- data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
- data/spec/unit/indirector/file_server_spec.rb +87 -87
- data/spec/unit/indirector/indirection_spec.rb +226 -242
- data/spec/unit/indirector/json_spec.rb +9 -7
- data/spec/unit/indirector/key/file_spec.rb +22 -21
- data/spec/unit/indirector/memory_spec.rb +7 -6
- data/spec/unit/indirector/msgpack_spec.rb +9 -7
- data/spec/unit/indirector/node/exec_spec.rb +3 -2
- data/spec/unit/indirector/node/memory_spec.rb +4 -2
- data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/node/plain_spec.rb +4 -2
- data/spec/unit/indirector/node/rest_spec.rb +1 -0
- data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/node/yaml_spec.rb +1 -0
- data/spec/unit/indirector/none_spec.rb +5 -5
- data/spec/unit/indirector/plain_spec.rb +8 -7
- data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
- data/spec/unit/indirector/report/processor_spec.rb +22 -21
- data/spec/unit/indirector/report/rest_spec.rb +12 -11
- data/spec/unit/indirector/report/yaml_spec.rb +1 -0
- data/spec/unit/indirector/request_spec.rb +12 -11
- data/spec/unit/indirector/resource/ral_spec.rb +54 -47
- data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/rest_spec.rb +110 -113
- data/spec/unit/indirector/ssl_file_spec.rb +65 -64
- data/spec/unit/indirector/status/local_spec.rb +1 -0
- data/spec/unit/indirector/status/rest_spec.rb +1 -0
- data/spec/unit/indirector/store_configs_spec.rb +1 -0
- data/spec/unit/indirector/terminus_spec.rb +27 -27
- data/spec/unit/indirector/yaml_spec.rb +6 -5
- data/spec/unit/indirector_spec.rb +2 -1
- data/spec/unit/info_service_spec.rb +1 -1
- data/spec/unit/interface/action_builder_spec.rb +1 -0
- data/spec/unit/interface/action_manager_spec.rb +1 -0
- data/spec/unit/interface/action_spec.rb +3 -2
- data/spec/unit/interface/documentation_spec.rb +1 -0
- data/spec/unit/interface/face_collection_spec.rb +12 -19
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/man_spec.rb +4 -3
- data/spec/unit/module_spec.rb +51 -46
- data/spec/unit/module_tool/applications/installer_spec.rb +11 -10
- data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
- data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
- data/spec/unit/module_tool/applications/upgrader_spec.rb +5 -5
- data/spec/unit/module_tool/install_directory_spec.rb +8 -8
- data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
- data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
- data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
- data/spec/unit/module_tool/tar_spec.rb +13 -12
- data/spec/unit/module_tool_spec.rb +12 -7
- data/spec/unit/network/auth_config_parser_spec.rb +13 -11
- data/spec/unit/network/authconfig_spec.rb +18 -17
- data/spec/unit/network/authorization_spec.rb +5 -4
- data/spec/unit/network/authstore_spec.rb +1 -0
- data/spec/unit/network/format_handler_spec.rb +1 -0
- data/spec/unit/network/format_spec.rb +10 -9
- data/spec/unit/network/format_support_spec.rb +29 -28
- data/spec/unit/network/formats_spec.rb +5 -4
- data/spec/unit/network/http/api/indirected_routes_spec.rb +29 -24
- data/spec/unit/network/http/api/master/v3/authorization_spec.rb +2 -2
- data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -1
- data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
- data/spec/unit/network/http/api_spec.rb +2 -0
- data/spec/unit/network/http/compression_spec.rb +22 -21
- data/spec/unit/network/http/connection_spec.rb +121 -30
- data/spec/unit/network/http/factory_spec.rb +6 -11
- data/spec/unit/network/http/handler_spec.rb +18 -9
- data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
- data/spec/unit/network/http/pool_spec.rb +29 -28
- data/spec/unit/network/http/request_spec.rb +2 -0
- data/spec/unit/network/http/response_spec.rb +13 -11
- data/spec/unit/network/http/route_spec.rb +1 -0
- data/spec/unit/network/http/session_spec.rb +2 -1
- data/spec/unit/network/http/site_spec.rb +1 -0
- data/spec/unit/network/http_pool_spec.rb +9 -18
- data/spec/unit/network/http_spec.rb +1 -0
- data/spec/unit/network/resolver_spec.rb +26 -25
- data/spec/unit/network/rights_spec.rb +53 -52
- data/spec/unit/node/environment_spec.rb +15 -14
- data/spec/unit/node/facts_spec.rb +7 -5
- data/spec/unit/node_spec.rb +10 -4
- data/spec/unit/other/selinux_spec.rb +1 -0
- data/spec/unit/parameter/boolean_spec.rb +2 -1
- data/spec/unit/parameter/package_options_spec.rb +2 -1
- data/spec/unit/parameter/path_spec.rb +1 -0
- data/spec/unit/parameter/value_collection_spec.rb +1 -0
- data/spec/unit/parameter/value_spec.rb +1 -0
- data/spec/unit/parameter_spec.rb +9 -9
- data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
- data/spec/unit/parser/ast/leaf_spec.rb +21 -20
- data/spec/unit/parser/compiler_spec.rb +96 -84
- data/spec/unit/parser/environment_compiler_spec.rb +8 -7
- data/spec/unit/parser/files_spec.rb +1 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
- data/spec/unit/parser/functions/digest_spec.rb +1 -0
- data/spec/unit/parser/functions/fail_spec.rb +2 -1
- data/spec/unit/parser/functions/file_spec.rb +14 -13
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
- data/spec/unit/parser/functions/generate_spec.rb +8 -7
- data/spec/unit/parser/functions/inline_template_spec.rb +1 -0
- data/spec/unit/parser/functions/regsubst_spec.rb +1 -0
- data/spec/unit/parser/functions/scanf_spec.rb +1 -0
- data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
- data/spec/unit/parser/functions/split_spec.rb +1 -0
- data/spec/unit/parser/functions/sprintf_spec.rb +1 -0
- data/spec/unit/parser/functions/tag_spec.rb +2 -1
- data/spec/unit/parser/functions/tagged_spec.rb +3 -2
- data/spec/unit/parser/functions/template_spec.rb +13 -13
- data/spec/unit/parser/functions/versioncmp_spec.rb +2 -1
- data/spec/unit/parser/functions_spec.rb +7 -6
- data/spec/unit/parser/relationship_spec.rb +1 -0
- data/spec/unit/parser/resource_spec.rb +42 -42
- data/spec/unit/parser/scope_spec.rb +35 -39
- data/spec/unit/parser/templatewrapper_spec.rb +12 -11
- data/spec/unit/parser/type_loader_spec.rb +19 -17
- data/spec/unit/pops/adaptable_spec.rb +1 -0
- data/spec/unit/pops/benchmark_spec.rb +1 -0
- data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +47 -10
- data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
- data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +1 -0
- data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
- data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
- data/spec/unit/pops/factory_spec.rb +4 -3
- data/spec/unit/pops/issues_spec.rb +20 -19
- data/spec/unit/pops/loaders/loader_spec.rb +4 -8
- data/spec/unit/pops/loaders/loaders_spec.rb +31 -101
- data/spec/unit/pops/lookup/context_spec.rb +1 -0
- data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
- data/spec/unit/pops/merge_strategy_spec.rb +1 -0
- data/spec/unit/pops/migration_spec.rb +5 -3
- data/spec/unit/pops/model/model_spec.rb +1 -0
- data/spec/unit/pops/model/pn_transformer_spec.rb +1 -4
- data/spec/unit/pops/parser/locator_spec.rb +6 -48
- data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_heredoc_spec.rb +15 -111
- data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
- data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
- data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
- data/spec/unit/pops/pn_spec.rb +1 -0
- data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
- data/spec/unit/pops/serialization/serialization_spec.rb +1 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
- data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
- data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
- data/spec/unit/pops/types/string_converter_spec.rb +5 -1
- data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
- data/spec/unit/pops/types/type_calculator_spec.rb +30 -30
- data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
- data/spec/unit/pops/types/type_parser_spec.rb +13 -13
- data/spec/unit/pops/validator/validator_spec.rb +2 -1
- data/spec/unit/pops/visitor_spec.rb +1 -0
- data/spec/unit/property/boolean_spec.rb +1 -1
- data/spec/unit/property/ensure_spec.rb +1 -0
- data/spec/unit/property/keyvalue_spec.rb +34 -32
- data/spec/unit/property/list_spec.rb +27 -26
- data/spec/unit/property/ordered_list_spec.rb +14 -10
- data/spec/unit/property_spec.rb +43 -42
- data/spec/unit/provider/aix_object_spec.rb +45 -47
- data/spec/unit/provider/command_spec.rb +9 -9
- data/spec/unit/provider/exec/posix_spec.rb +31 -6
- data/spec/unit/provider/exec/shell_spec.rb +1 -0
- data/spec/unit/provider/exec/windows_spec.rb +4 -2
- data/spec/unit/provider/exec_spec.rb +1 -0
- data/spec/unit/provider/file/posix_spec.rb +24 -22
- data/spec/unit/provider/file/windows_spec.rb +17 -15
- data/spec/unit/provider/group/aix_spec.rb +2 -3
- data/spec/unit/provider/group/groupadd_spec.rb +26 -30
- data/spec/unit/provider/group/ldap_spec.rb +18 -18
- data/spec/unit/provider/group/pw_spec.rb +11 -11
- data/spec/unit/provider/group/windows_adsi_spec.rb +53 -59
- data/spec/unit/provider/ldap_spec.rb +62 -61
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +36 -35
- data/spec/unit/provider/nameservice_spec.rb +40 -38
- data/spec/unit/provider/package/aix_spec.rb +15 -15
- data/spec/unit/provider/package/appdmg_spec.rb +13 -13
- data/spec/unit/provider/package/apt_spec.rb +27 -44
- data/spec/unit/provider/package/aptitude_spec.rb +7 -6
- data/spec/unit/provider/package/aptrpm_spec.rb +12 -7
- data/spec/unit/provider/package/base_spec.rb +4 -4
- data/spec/unit/provider/package/dnf_spec.rb +20 -18
- data/spec/unit/provider/package/dpkg_spec.rb +53 -70
- data/spec/unit/provider/package/freebsd_spec.rb +11 -11
- data/spec/unit/provider/package/gem_spec.rb +55 -132
- data/spec/unit/provider/package/hpux_spec.rb +8 -8
- data/spec/unit/provider/package/macports_spec.rb +42 -46
- data/spec/unit/provider/package/nim_spec.rb +39 -30
- data/spec/unit/provider/package/openbsd_spec.rb +39 -36
- data/spec/unit/provider/package/opkg_spec.rb +26 -23
- data/spec/unit/provider/package/pacman_spec.rb +118 -97
- data/spec/unit/provider/package/pip3_spec.rb +0 -17
- data/spec/unit/provider/package/pip_spec.rb +106 -95
- data/spec/unit/provider/package/pkg_spec.rb +109 -109
- data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
- data/spec/unit/provider/package/pkgin_spec.rb +8 -10
- data/spec/unit/provider/package/pkgng_spec.rb +31 -22
- data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
- data/spec/unit/provider/package/portage_spec.rb +74 -70
- data/spec/unit/provider/package/puppet_gem_spec.rb +13 -37
- data/spec/unit/provider/package/rpm_spec.rb +76 -154
- data/spec/unit/provider/package/sun_spec.rb +18 -16
- data/spec/unit/provider/package/tdnf_spec.rb +2 -2
- data/spec/unit/provider/package/up2date_spec.rb +4 -2
- data/spec/unit/provider/package/urpmi_spec.rb +17 -15
- data/spec/unit/provider/package/windows/exe_package_spec.rb +15 -12
- data/spec/unit/provider/package/windows/msi_package_spec.rb +22 -19
- data/spec/unit/provider/package/windows/package_spec.rb +42 -37
- data/spec/unit/provider/package/windows_spec.rb +32 -47
- data/spec/unit/provider/package/yum_spec.rb +7 -7
- data/spec/unit/provider/package/zypper_spec.rb +87 -87
- data/spec/unit/provider/parsedfile_spec.rb +45 -44
- data/spec/unit/provider/service/base_spec.rb +5 -4
- data/spec/unit/provider/service/bsd_spec.rb +29 -27
- data/spec/unit/provider/service/daemontools_spec.rb +35 -35
- data/spec/unit/provider/service/debian_spec.rb +38 -38
- data/spec/unit/provider/service/freebsd_spec.rb +18 -18
- data/spec/unit/provider/service/gentoo_spec.rb +55 -50
- data/spec/unit/provider/service/init_spec.rb +52 -53
- data/spec/unit/provider/service/launchd_spec.rb +116 -138
- data/spec/unit/provider/service/openbsd_spec.rb +50 -50
- data/spec/unit/provider/service/openrc_spec.rb +45 -43
- data/spec/unit/provider/service/openwrt_spec.rb +31 -26
- data/spec/unit/provider/service/rcng_spec.rb +14 -14
- data/spec/unit/provider/service/redhat_spec.rb +43 -45
- data/spec/unit/provider/service/runit_spec.rb +27 -29
- data/spec/unit/provider/service/smf_spec.rb +66 -74
- data/spec/unit/provider/service/src_spec.rb +47 -46
- data/spec/unit/provider/service/systemd_spec.rb +136 -109
- data/spec/unit/provider/service/upstart_spec.rb +93 -77
- data/spec/unit/provider/service/windows_spec.rb +41 -33
- data/spec/unit/provider/user/aix_spec.rb +31 -31
- data/spec/unit/provider/user/directoryservice_spec.rb +114 -146
- data/spec/unit/provider/user/hpux_spec.rb +16 -16
- data/spec/unit/provider/user/ldap_spec.rb +57 -57
- data/spec/unit/provider/user/openbsd_spec.rb +12 -10
- data/spec/unit/provider/user/pw_spec.rb +35 -37
- data/spec/unit/provider/user/user_role_add_spec.rb +93 -93
- data/spec/unit/provider/user/useradd_spec.rb +92 -93
- data/spec/unit/provider/user/windows_adsi_spec.rb +60 -59
- data/spec/unit/provider_spec.rb +35 -35
- data/spec/unit/puppet_pal_2pec.rb +5 -4
- data/spec/unit/puppet_pal_spec.rb +1 -0
- data/spec/unit/puppet_spec.rb +7 -6
- data/spec/unit/relationship_spec.rb +1 -0
- data/spec/unit/reports/http_spec.rb +23 -21
- data/spec/unit/reports/store_spec.rb +4 -3
- data/spec/unit/reports_spec.rb +14 -12
- data/spec/unit/resource/capability_finder_spec.rb +17 -15
- data/spec/unit/resource/catalog_spec.rb +68 -72
- data/spec/unit/resource/status_spec.rb +8 -6
- data/spec/unit/resource/type_collection_spec.rb +18 -17
- data/spec/unit/resource/type_spec.rb +35 -34
- data/spec/unit/resource_spec.rb +63 -36
- data/spec/unit/rest/client_spec.rb +135 -0
- data/spec/unit/rest/route_spec.rb +6 -6
- data/spec/unit/scheduler/job_spec.rb +1 -0
- data/spec/unit/scheduler/scheduler_spec.rb +1 -0
- data/spec/unit/scheduler/splay_job_spec.rb +2 -1
- data/spec/unit/settings/array_setting_spec.rb +1 -1
- data/spec/unit/settings/autosign_setting_spec.rb +9 -9
- data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
- data/spec/unit/settings/config_file_spec.rb +1 -0
- data/spec/unit/settings/directory_setting_spec.rb +7 -2
- data/spec/unit/settings/duration_setting_spec.rb +2 -1
- data/spec/unit/settings/enum_setting_spec.rb +1 -1
- data/spec/unit/settings/environment_conf_spec.rb +6 -4
- data/spec/unit/settings/file_setting_spec.rb +46 -44
- data/spec/unit/settings/path_setting_spec.rb +2 -1
- data/spec/unit/settings/priority_setting_spec.rb +2 -1
- data/spec/unit/settings/string_setting_spec.rb +15 -14
- data/spec/unit/settings/terminus_setting_spec.rb +2 -1
- data/spec/unit/settings/value_translator_spec.rb +1 -0
- data/spec/unit/settings_spec.rb +224 -253
- data/spec/unit/ssl/base_spec.rb +15 -14
- data/spec/unit/ssl/certificate_request_spec.rb +58 -62
- data/spec/unit/ssl/certificate_spec.rb +25 -23
- data/spec/unit/ssl/digest_spec.rb +1 -0
- data/spec/unit/ssl/host_spec.rb +149 -166
- data/spec/unit/ssl/key_spec.rb +31 -30
- data/spec/unit/ssl/validator_spec.rb +39 -40
- data/spec/unit/task_spec.rb +45 -44
- data/spec/unit/transaction/additional_resource_generator_spec.rb +5 -3
- data/spec/unit/transaction/event_manager_spec.rb +88 -87
- data/spec/unit/transaction/event_spec.rb +15 -16
- data/spec/unit/transaction/persistence_spec.rb +17 -16
- data/spec/unit/transaction/report_spec.rb +12 -11
- data/spec/unit/transaction/resource_harness_spec.rb +31 -52
- data/spec/unit/transaction_spec.rb +87 -140
- data/spec/unit/type/component_spec.rb +1 -0
- data/spec/unit/type/exec_spec.rb +50 -101
- data/spec/unit/type/file/checksum_spec.rb +10 -9
- data/spec/unit/type/file/checksum_value_spec.rb +32 -31
- data/spec/unit/type/file/content_spec.rb +61 -58
- data/spec/unit/type/file/ctime_spec.rb +1 -0
- data/spec/unit/type/file/ensure_spec.rb +13 -12
- data/spec/unit/type/file/group_spec.rb +7 -5
- data/spec/unit/type/file/mode_spec.rb +6 -4
- data/spec/unit/type/file/mtime_spec.rb +1 -0
- data/spec/unit/type/file/owner_spec.rb +8 -6
- data/spec/unit/type/file/selinux_spec.rb +19 -17
- data/spec/unit/type/file/source_spec.rb +101 -104
- data/spec/unit/type/file/type_spec.rb +1 -0
- data/spec/unit/type/file_spec.rb +185 -195
- data/spec/unit/type/filebucket_spec.rb +10 -11
- data/spec/unit/type/group_spec.rb +8 -6
- data/spec/unit/type/noop_metaparam_spec.rb +2 -1
- data/spec/unit/type/package/package_settings_spec.rb +23 -44
- data/spec/unit/type/package_spec.rb +57 -56
- data/spec/unit/type/resources_spec.rb +74 -72
- data/spec/unit/type/schedule_spec.rb +26 -24
- data/spec/unit/type/service_spec.rb +75 -49
- data/spec/unit/type/stage_spec.rb +1 -0
- data/spec/unit/type/tidy_spec.rb +62 -61
- data/spec/unit/type/user_spec.rb +25 -24
- data/spec/unit/type/whit_spec.rb +1 -0
- data/spec/unit/type_spec.rb +54 -55
- data/spec/unit/util/at_fork_spec.rb +19 -18
- data/spec/unit/util/autoload_spec.rb +56 -55
- data/spec/unit/util/backups_spec.rb +35 -34
- data/spec/unit/util/character_encoding_spec.rb +5 -5
- data/spec/unit/util/checksums_spec.rb +39 -38
- data/spec/unit/util/colors_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +20 -40
- data/spec/unit/util/constant_inflector_spec.rb +1 -0
- data/spec/unit/util/diff_spec.rb +8 -7
- data/spec/unit/util/errors_spec.rb +1 -0
- data/spec/unit/util/execution_spec.rb +163 -187
- data/spec/unit/util/execution_stub_spec.rb +1 -0
- data/spec/unit/util/feature_spec.rb +14 -21
- data/spec/unit/util/filetype_spec.rb +49 -49
- data/spec/unit/util/http_proxy_spec.rb +12 -12
- data/spec/unit/util/inifile_spec.rb +31 -26
- data/spec/unit/util/json_lockfile_spec.rb +5 -3
- data/spec/unit/util/ldap/connection_spec.rb +25 -26
- data/spec/unit/util/ldap/generator_spec.rb +1 -0
- data/spec/unit/util/ldap/manager_spec.rb +101 -102
- data/spec/unit/util/lockfile_spec.rb +1 -0
- data/spec/unit/util/log/destinations_spec.rb +33 -30
- data/spec/unit/util/log_spec.rb +34 -48
- data/spec/unit/util/logging_spec.rb +72 -58
- data/spec/unit/util/metric_spec.rb +1 -0
- data/spec/unit/util/monkey_patches_spec.rb +9 -7
- data/spec/unit/util/multi_match_spec.rb +1 -0
- data/spec/unit/util/network_device/config_spec.rb +1 -0
- data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
- data/spec/unit/util/network_device_spec.rb +9 -7
- data/spec/unit/util/package_spec.rb +1 -0
- data/spec/unit/util/pidlock_spec.rb +15 -60
- data/spec/unit/util/plist_spec.rb +33 -40
- data/spec/unit/util/posix_spec.rb +51 -54
- data/spec/unit/util/rdoc_spec.rb +10 -9
- data/spec/unit/util/reference_spec.rb +1 -0
- data/spec/unit/util/resource_template_spec.rb +20 -20
- data/spec/unit/util/retry_action_spec.rb +8 -7
- data/spec/unit/util/rubygems_spec.rb +8 -7
- data/spec/unit/util/run_mode_spec.rb +4 -3
- data/spec/unit/util/selinux_spec.rb +72 -79
- data/spec/unit/util/splayer_spec.rb +9 -8
- data/spec/unit/util/ssl_spec.rb +1 -0
- data/spec/unit/util/storage_spec.rb +23 -22
- data/spec/unit/util/suidmanager_spec.rb +54 -45
- data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
- data/spec/unit/util/tag_set_spec.rb +1 -0
- data/spec/unit/util/tagging_spec.rb +1 -0
- data/spec/unit/util/terminal_spec.rb +10 -9
- data/spec/unit/util/user_attr_spec.rb +2 -1
- data/spec/unit/util/warnings_spec.rb +4 -3
- data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
- data/spec/unit/util/watcher_spec.rb +21 -51
- data/spec/unit/util/windows/access_control_entry_spec.rb +1 -0
- data/spec/unit/util/windows/access_control_list_spec.rb +1 -0
- data/spec/unit/util/windows/adsi_spec.rb +138 -136
- data/spec/unit/util/windows/api_types_spec.rb +1 -0
- data/spec/unit/util/windows/eventlog_spec.rb +12 -9
- data/spec/unit/util/windows/file_spec.rb +1 -0
- data/spec/unit/util/windows/root_certs_spec.rb +1 -0
- data/spec/unit/util/windows/security_descriptor_spec.rb +2 -0
- data/spec/unit/util/windows/service_spec.rb +103 -100
- data/spec/unit/util/windows/sid_spec.rb +13 -11
- data/spec/unit/util/windows/string_spec.rb +1 -0
- data/spec/unit/util_spec.rb +57 -55
- data/spec/unit/version_spec.rb +6 -6
- metadata +20 -32
- data/CODEOWNERS +0 -30
- data/ext/autotest/Rakefile +0 -8
- data/ext/autotest/config +0 -43
- data/ext/autotest/readme.rst +0 -16
- data/lib/puppet/confine/boolean.rb +0 -45
- data/lib/puppet/provider/package_targetable.rb +0 -68
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
- data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
- data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
- data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
- data/spec/integration/network/http_pool_spec.rb +0 -120
- data/spec/integration/provider/file/windows_spec.rb +0 -162
- data/spec/lib/puppet_spec/https.rb +0 -166
- data/spec/unit/settings/server_list_setting_spec.rb +0 -21
- data/spec/watchr.rb +0 -137
data/spec/unit/ssl/base_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
require 'puppet/ssl/certificate'
|
@@ -14,23 +15,23 @@ describe Puppet::SSL::Certificate do
|
|
14
15
|
|
15
16
|
describe "when creating new instances" do
|
16
17
|
it "should fail if given an object that is not an instance of the wrapped class" do
|
17
|
-
obj =
|
18
|
+
obj = stub 'obj', :is_a? => false
|
18
19
|
expect { @class.from_instance(obj) }.to raise_error(ArgumentError)
|
19
20
|
end
|
20
21
|
|
21
22
|
it "should fail if a name is not supplied and can't be determined from the object" do
|
22
|
-
obj =
|
23
|
+
obj = stub 'obj', :is_a? => true
|
23
24
|
expect { @class.from_instance(obj) }.to raise_error(ArgumentError)
|
24
25
|
end
|
25
26
|
|
26
27
|
it "should determine the name from the object if it has a subject" do
|
27
|
-
obj =
|
28
|
+
obj = stub 'obj', :is_a? => true, :subject => '/CN=foo'
|
28
29
|
|
29
|
-
inst =
|
30
|
-
|
30
|
+
inst = stub 'base'
|
31
|
+
inst.expects(:content=).with(obj)
|
31
32
|
|
32
|
-
|
33
|
-
|
33
|
+
@class.expects(:new).with('foo').returns inst
|
34
|
+
@class.expects(:name_from_subject).with('/CN=foo').returns('foo')
|
34
35
|
|
35
36
|
expect(@class.from_instance(obj)).to eq(inst)
|
36
37
|
end
|
@@ -38,8 +39,8 @@ describe Puppet::SSL::Certificate do
|
|
38
39
|
|
39
40
|
describe "when determining a name from a certificate subject" do
|
40
41
|
it "should extract only the CN and not any other components" do
|
41
|
-
subject =
|
42
|
-
|
42
|
+
subject = stub 'sub'
|
43
|
+
Puppet::Util::SSL.expects(:cn_from_subject).with(subject).returns 'host.domain.com'
|
43
44
|
expect(@class.name_from_subject(subject)).to eq('host.domain.com')
|
44
45
|
end
|
45
46
|
end
|
@@ -47,14 +48,14 @@ describe Puppet::SSL::Certificate do
|
|
47
48
|
describe "when initializing wrapped class from a file with #read" do
|
48
49
|
it "should open the file with ASCII encoding" do
|
49
50
|
path = '/foo/bar/cert'
|
50
|
-
|
51
|
-
|
51
|
+
Puppet::SSL::Base.stubs(:valid_certname).returns(true)
|
52
|
+
Puppet::FileSystem.expects(:read).with(path, :encoding => Encoding::ASCII).returns("bar")
|
52
53
|
@base.read(path)
|
53
54
|
end
|
54
55
|
end
|
55
56
|
|
56
57
|
describe "#digest_algorithm" do
|
57
|
-
let(:content) {
|
58
|
+
let(:content) { stub 'content' }
|
58
59
|
let(:base) {
|
59
60
|
b = Puppet::SSL::Base.new('base')
|
60
61
|
b.content = content
|
@@ -78,13 +79,13 @@ describe Puppet::SSL::Certificate do
|
|
78
79
|
'dsaWithSHA1' => 'sha1',
|
79
80
|
}.each do |signature, digest|
|
80
81
|
it "returns '#{digest}' for signature algorithm '#{signature}'" do
|
81
|
-
|
82
|
+
content.stubs(:signature_algorithm).returns(signature)
|
82
83
|
expect(base.digest_algorithm).to eq(digest)
|
83
84
|
end
|
84
85
|
end
|
85
86
|
|
86
87
|
it "raises an error on an unknown signature algorithm" do
|
87
|
-
|
88
|
+
content.stubs(:signature_algorithm).returns("nonsense")
|
88
89
|
expect {
|
89
90
|
base.digest_algorithm
|
90
91
|
}.to raise_error(Puppet::Error, "Unknown signature algorithm 'nonsense'")
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
require 'puppet/ssl/certificate_request'
|
@@ -11,6 +12,7 @@ describe Puppet::SSL::CertificateRequest do
|
|
11
12
|
k
|
12
13
|
}
|
13
14
|
|
15
|
+
|
14
16
|
it "should be extended with the Indirector module" do
|
15
17
|
expect(described_class.singleton_class).to be_include(Puppet::Indirector)
|
16
18
|
end
|
@@ -29,15 +31,15 @@ describe Puppet::SSL::CertificateRequest do
|
|
29
31
|
|
30
32
|
describe "when converting from a string" do
|
31
33
|
it "should create a CSR instance with its name set to the CSR subject and its content set to the extracted CSR" do
|
32
|
-
csr =
|
34
|
+
csr = stub 'csr',
|
33
35
|
:subject => OpenSSL::X509::Name.parse("/CN=Foo.madstop.com"),
|
34
|
-
:is_a? => true
|
35
|
-
|
36
|
+
:is_a? => true
|
37
|
+
OpenSSL::X509::Request.expects(:new).with("my csr").returns(csr)
|
36
38
|
|
37
|
-
mycsr =
|
38
|
-
|
39
|
+
mycsr = stub 'sslcsr'
|
40
|
+
mycsr.expects(:content=).with(csr)
|
39
41
|
|
40
|
-
|
42
|
+
described_class.expects(:new).with("Foo.madstop.com").returns mycsr
|
41
43
|
|
42
44
|
described_class.from_s("my csr")
|
43
45
|
end
|
@@ -58,9 +60,9 @@ describe Puppet::SSL::CertificateRequest do
|
|
58
60
|
|
59
61
|
it "should be able to read requests from disk" do
|
60
62
|
path = "/my/path"
|
61
|
-
|
62
|
-
my_req =
|
63
|
-
|
63
|
+
Puppet::FileSystem.expects(:read).with(path, :encoding => Encoding::ASCII).returns("my request")
|
64
|
+
my_req = mock 'request'
|
65
|
+
OpenSSL::X509::Request.expects(:new).with("my request").returns(my_req)
|
64
66
|
expect(request.read(path)).to equal(my_req)
|
65
67
|
expect(request.content).to equal(my_req)
|
66
68
|
end
|
@@ -75,8 +77,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
75
77
|
end
|
76
78
|
|
77
79
|
it "should have a :to_text method that it delegates to the actual key" do
|
78
|
-
real_request =
|
79
|
-
|
80
|
+
real_request = mock 'request'
|
81
|
+
real_request.expects(:to_text).returns "requesttext"
|
80
82
|
request.content = real_request
|
81
83
|
expect(request.to_text).to eq("requesttext")
|
82
84
|
end
|
@@ -300,26 +302,26 @@ describe Puppet::SSL::CertificateRequest do
|
|
300
302
|
|
301
303
|
it "should verify the generated request using the public key" do
|
302
304
|
# Stupid keys don't have a competent == method.
|
303
|
-
|
305
|
+
OpenSSL::X509::Request.any_instance.expects(:verify).with { |public_key|
|
304
306
|
public_key.to_s == key.content.public_key.to_s
|
305
|
-
|
307
|
+
}.returns true
|
306
308
|
request.generate(key)
|
307
309
|
end
|
308
310
|
|
309
311
|
it "should fail if verification fails" do
|
310
|
-
|
312
|
+
OpenSSL::X509::Request.any_instance.expects(:verify).with { |public_key|
|
311
313
|
public_key.to_s == key.content.public_key.to_s
|
312
|
-
|
314
|
+
}.returns false
|
313
315
|
|
314
|
-
expect
|
316
|
+
expect {
|
315
317
|
request.generate(key)
|
316
|
-
|
318
|
+
}.to raise_error(Puppet::Error, /CSR sign verification failed/)
|
317
319
|
end
|
318
320
|
|
319
321
|
it "should log the fingerprint" do
|
320
|
-
|
321
|
-
|
322
|
-
|
322
|
+
Puppet::SSL::Digest.any_instance.stubs(:to_hex).returns("FINGERPRINT")
|
323
|
+
Puppet.stubs(:info)
|
324
|
+
Puppet.expects(:info).with { |s| s =~ /FINGERPRINT/ }
|
323
325
|
request.generate(key)
|
324
326
|
end
|
325
327
|
|
@@ -331,8 +333,8 @@ describe Puppet::SSL::CertificateRequest do
|
|
331
333
|
|
332
334
|
it "should use SHA1 to sign the csr when SHA256 isn't available" do
|
333
335
|
csr = OpenSSL::X509::Request.new
|
334
|
-
|
335
|
-
|
336
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA256").returns(false)
|
337
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA1").returns(true)
|
336
338
|
signer = Puppet::SSL::CertificateSigner.new
|
337
339
|
signer.sign(csr, key.content)
|
338
340
|
expect(csr.verify(key.content)).to be_truthy
|
@@ -342,49 +344,46 @@ describe Puppet::SSL::CertificateRequest do
|
|
342
344
|
# So commenting it out till it is sorted out
|
343
345
|
# The problem seems to be with the ability to sign a CSR when using either of
|
344
346
|
# these hash algorithms
|
345
|
-
pending "should use SHA512 to sign the csr when SHA256 and SHA1 aren't available" do
|
346
|
-
csr = OpenSSL::X509::Request.new
|
347
|
-
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
|
348
|
-
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
|
349
|
-
expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(true)
|
350
|
-
signer = Puppet::SSL::CertificateSigner.new
|
351
|
-
signer.sign(csr, key.content)
|
352
|
-
expect(csr.verify(key.content)).to be_truthy
|
353
|
-
end
|
354
347
|
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
expect(
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
348
|
+
# it "should use SHA512 to sign the csr when SHA256 and SHA1 aren't available" do
|
349
|
+
# csr = OpenSSL::X509::Request.new
|
350
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA256").returns(false)
|
351
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA1").returns(false)
|
352
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA512").returns(true)
|
353
|
+
# signer = Puppet::SSL::CertificateSigner.new
|
354
|
+
# signer.sign(csr, key.content)
|
355
|
+
# expect(csr.verify(key.content)).to be_truthy
|
356
|
+
# end
|
357
|
+
|
358
|
+
# it "should use SHA384 to sign the csr when SHA256/SHA1/SHA512 aren't available" do
|
359
|
+
# csr = OpenSSL::X509::Request.new
|
360
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA256").returns(false)
|
361
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA1").returns(false)
|
362
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA512").returns(false)
|
363
|
+
# OpenSSL::Digest.expects(:const_defined?).with("SHA384").returns(true)
|
364
|
+
# signer = Puppet::SSL::CertificateSigner.new
|
365
|
+
# signer.sign(csr, key.content)
|
366
|
+
# expect(csr.verify(key.content)).to be_truthy
|
367
|
+
# end
|
369
368
|
|
370
369
|
it "should use SHA224 to sign the csr when SHA256/SHA1/SHA512/SHA384 aren't available" do
|
371
370
|
csr = OpenSSL::X509::Request.new
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
371
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA256").returns(false)
|
372
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA1").returns(false)
|
373
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA512").returns(false)
|
374
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA384").returns(false)
|
375
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA224").returns(true)
|
377
376
|
signer = Puppet::SSL::CertificateSigner.new
|
378
377
|
signer.sign(csr, key.content)
|
379
378
|
expect(csr.verify(key.content)).to be_truthy
|
380
379
|
end
|
381
380
|
|
382
381
|
it "should raise an error if neither SHA256/SHA1/SHA512/SHA384/SHA224 are available" do
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
382
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA256").returns(false)
|
383
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA1").returns(false)
|
384
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA512").returns(false)
|
385
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA384").returns(false)
|
386
|
+
OpenSSL::Digest.expects(:const_defined?).with("SHA224").returns(false)
|
388
387
|
expect {
|
389
388
|
Puppet::SSL::CertificateSigner.new
|
390
389
|
}.to raise_error(Puppet::Error)
|
@@ -393,13 +392,10 @@ describe Puppet::SSL::CertificateRequest do
|
|
393
392
|
|
394
393
|
it "should save the CSR" do
|
395
394
|
csr = Puppet::SSL::CertificateRequest.new("me")
|
396
|
-
terminus =
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
expect(request.instance).to eq(csr)
|
401
|
-
expect(request.key).to eq("me")
|
402
|
-
end
|
395
|
+
terminus = mock 'terminus'
|
396
|
+
terminus.stubs(:validate)
|
397
|
+
Puppet::SSL::CertificateRequest.indirection.expects(:prepare).returns(terminus)
|
398
|
+
terminus.expects(:save).with { |request| request.instance == csr && request.key == "me" }
|
403
399
|
Puppet::SSL::CertificateRequest.indirection.save(csr)
|
404
400
|
end
|
405
401
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
require 'puppet/certificate_factory'
|
3
4
|
|
@@ -30,26 +31,24 @@ describe Puppet::SSL::Certificate do
|
|
30
31
|
|
31
32
|
describe "when converting from a string" do
|
32
33
|
it "should create a certificate instance with its name set to the certificate subject and its content set to the extracted certificate" do
|
33
|
-
cert =
|
34
|
-
'certificate',
|
34
|
+
cert = stub 'certificate',
|
35
35
|
:subject => OpenSSL::X509::Name.parse("/CN=Foo.madstop.com"),
|
36
36
|
:is_a? => true
|
37
|
-
)
|
38
|
-
expect(OpenSSL::X509::Certificate).to receive(:new).with("my certificate").and_return(cert)
|
37
|
+
OpenSSL::X509::Certificate.expects(:new).with("my certificate").returns(cert)
|
39
38
|
|
40
|
-
mycert =
|
41
|
-
|
39
|
+
mycert = stub 'sslcert'
|
40
|
+
mycert.expects(:content=).with(cert)
|
42
41
|
|
43
|
-
|
42
|
+
@class.expects(:new).with("Foo.madstop.com").returns mycert
|
44
43
|
|
45
44
|
@class.from_s("my certificate")
|
46
45
|
end
|
47
46
|
|
48
47
|
it "should create multiple certificate instances when asked" do
|
49
|
-
cert1 =
|
50
|
-
|
51
|
-
cert2 =
|
52
|
-
|
48
|
+
cert1 = stub 'cert1'
|
49
|
+
@class.expects(:from_s).with("cert1").returns cert1
|
50
|
+
cert2 = stub 'cert2'
|
51
|
+
@class.expects(:from_s).with("cert2").returns cert2
|
53
52
|
|
54
53
|
expect(@class.from_multiple_s("cert1\n---\ncert2")).to eq([cert1, cert2])
|
55
54
|
end
|
@@ -65,15 +64,15 @@ describe Puppet::SSL::Certificate do
|
|
65
64
|
end
|
66
65
|
|
67
66
|
it "should convert the certificate to pem format" do
|
68
|
-
certificate =
|
67
|
+
certificate = mock 'certificate', :to_pem => "pem"
|
69
68
|
@certificate.content = certificate
|
70
69
|
expect(@certificate.to_s).to eq("pem")
|
71
70
|
end
|
72
71
|
|
73
72
|
it "should be able to convert multiple instances to a string" do
|
74
73
|
cert2 = @class.new("foo")
|
75
|
-
|
76
|
-
|
74
|
+
@certificate.expects(:to_s).returns "cert1"
|
75
|
+
cert2.expects(:to_s).returns "cert2"
|
77
76
|
|
78
77
|
expect(@class.to_multiple_s([@certificate, cert2])).to eq("cert1\n---\ncert2")
|
79
78
|
|
@@ -81,6 +80,7 @@ describe Puppet::SSL::Certificate do
|
|
81
80
|
end
|
82
81
|
|
83
82
|
describe "when managing instances" do
|
83
|
+
|
84
84
|
def build_cert(opts)
|
85
85
|
key = Puppet::SSL::Key.new('quux')
|
86
86
|
key.generate
|
@@ -139,35 +139,36 @@ describe Puppet::SSL::Certificate do
|
|
139
139
|
cert = build_cert(:dns_alt_names => 'foo')
|
140
140
|
expect(cert.custom_extensions).to be_empty
|
141
141
|
end
|
142
|
+
|
142
143
|
end
|
143
144
|
|
144
145
|
it "should return a nil expiration if there is no actual certificate" do
|
145
|
-
|
146
|
+
@certificate.stubs(:content).returns nil
|
146
147
|
|
147
148
|
expect(@certificate.expiration).to be_nil
|
148
149
|
end
|
149
150
|
|
150
151
|
it "should use the expiration of the certificate as its expiration date" do
|
151
|
-
cert =
|
152
|
-
|
152
|
+
cert = stub 'cert'
|
153
|
+
@certificate.stubs(:content).returns cert
|
153
154
|
|
154
|
-
|
155
|
+
cert.expects(:not_after).returns "sometime"
|
155
156
|
|
156
157
|
expect(@certificate.expiration).to eq("sometime")
|
157
158
|
end
|
158
159
|
|
159
160
|
it "should be able to read certificates from disk" do
|
160
161
|
path = "/my/path"
|
161
|
-
|
162
|
-
certificate =
|
163
|
-
|
162
|
+
Puppet::FileSystem.expects(:read).with(path, :encoding => Encoding::ASCII).returns("my certificate")
|
163
|
+
certificate = mock 'certificate'
|
164
|
+
OpenSSL::X509::Certificate.expects(:new).with("my certificate").returns(certificate)
|
164
165
|
expect(@certificate.read(path)).to equal(certificate)
|
165
166
|
expect(@certificate.content).to equal(certificate)
|
166
167
|
end
|
167
168
|
|
168
169
|
it "should have a :to_text method that it delegates to the actual key" do
|
169
|
-
real_certificate =
|
170
|
-
|
170
|
+
real_certificate = mock 'certificate'
|
171
|
+
real_certificate.expects(:to_text).returns "certificatetext"
|
171
172
|
@certificate.content = real_certificate
|
172
173
|
expect(@certificate.to_text).to eq("certificatetext")
|
173
174
|
end
|
@@ -181,5 +182,6 @@ describe Puppet::SSL::Certificate do
|
|
181
182
|
expect(exts.find { |ext| ext['oid'] == 'pp_instance_id'}['value']).to eq('i_am_an_id')
|
182
183
|
expect(exts.find { |ext| ext['oid'] == 'pp_image_name'}['value']).to eq('i_am_an_image_name')
|
183
184
|
end
|
185
|
+
|
184
186
|
end
|
185
187
|
end
|
data/spec/unit/ssl/host_spec.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
require 'spec_helper'
|
2
3
|
require 'puppet/test_ca'
|
3
4
|
|
@@ -36,19 +37,19 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
36
37
|
end
|
37
38
|
|
38
39
|
it "should retrieve its public key from its private key" do
|
39
|
-
realkey =
|
40
|
-
key =
|
41
|
-
|
42
|
-
pubkey =
|
43
|
-
|
40
|
+
realkey = mock 'realkey'
|
41
|
+
key = stub 'key', :content => realkey
|
42
|
+
Puppet::SSL::Key.indirection.stubs(:find).returns(key)
|
43
|
+
pubkey = mock 'public_key'
|
44
|
+
realkey.expects(:public_key).returns pubkey
|
44
45
|
|
45
46
|
expect(@host.public_key).to equal(pubkey)
|
46
47
|
end
|
47
48
|
|
48
49
|
describe 'localhost' do
|
49
50
|
before(:each) do
|
50
|
-
|
51
|
-
|
51
|
+
Puppet::SSL::Host.any_instance.stubs(:certificate).returns nil
|
52
|
+
Puppet::SSL::Host.any_instance.stubs(:generate)
|
52
53
|
end
|
53
54
|
|
54
55
|
it "should have a method for producing an instance to manage the local host's keys" do
|
@@ -62,40 +63,40 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
62
63
|
end
|
63
64
|
|
64
65
|
it "should generate the certificate for the localhost instance if no certificate is available" do
|
65
|
-
host =
|
66
|
-
|
66
|
+
host = stub 'host', :key => nil
|
67
|
+
Puppet::SSL::Host.expects(:new).returns host
|
67
68
|
|
68
|
-
|
69
|
-
|
69
|
+
host.expects(:certificate).returns nil
|
70
|
+
host.expects(:generate)
|
70
71
|
|
71
72
|
expect(Puppet::SSL::Host.localhost).to equal(host)
|
72
73
|
end
|
73
74
|
|
74
75
|
it "should always read the key for the localhost instance in from disk" do
|
75
|
-
host =
|
76
|
-
|
77
|
-
|
76
|
+
host = stub 'host', :certificate => "eh"
|
77
|
+
host.expects(:key)
|
78
|
+
Puppet::SSL::Host.expects(:new).returns host
|
78
79
|
|
79
80
|
Puppet::SSL::Host.localhost
|
80
81
|
end
|
81
82
|
|
82
83
|
it "should cache the localhost instance" do
|
83
|
-
host =
|
84
|
-
|
84
|
+
host = stub 'host', :certificate => "eh", :key => 'foo'
|
85
|
+
Puppet::SSL::Host.expects(:new).once.returns host
|
85
86
|
expect(Puppet::SSL::Host.localhost).to eq(Puppet::SSL::Host.localhost)
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
89
90
|
context "with dns_alt_names" do
|
90
91
|
before :each do
|
91
|
-
@key =
|
92
|
-
key =
|
93
|
-
|
94
|
-
|
92
|
+
@key = stub('key content')
|
93
|
+
key = stub('key', :generate => true, :content => @key)
|
94
|
+
Puppet::SSL::Key.stubs(:new).returns key
|
95
|
+
Puppet::SSL::Key.indirection.stubs(:save).with(key)
|
95
96
|
|
96
|
-
@cr =
|
97
|
-
|
98
|
-
|
97
|
+
@cr = stub('certificate request', :render => "csr pem")
|
98
|
+
Puppet::SSL::CertificateRequest.stubs(:new).returns @cr
|
99
|
+
Puppet::SSL::Host.any_instance.stubs(:submit_certificate_request)
|
99
100
|
end
|
100
101
|
|
101
102
|
describe "explicitly specified" do
|
@@ -104,13 +105,13 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
104
105
|
end
|
105
106
|
|
106
107
|
it "should not include subjectAltName if not the local node" do
|
107
|
-
|
108
|
+
@cr.expects(:generate).with(@key, {})
|
108
109
|
|
109
110
|
Puppet::SSL::Host.new('not-the-' + Puppet[:certname]).generate_certificate_request
|
110
111
|
end
|
111
112
|
|
112
113
|
it "should include subjectAltName if the local node" do
|
113
|
-
|
114
|
+
@cr.expects(:generate).with(@key, { :dns_alt_names => 'one, two' })
|
114
115
|
|
115
116
|
Puppet::SSL::Host.new(Puppet[:certname]).generate_certificate_request
|
116
117
|
end
|
@@ -123,55 +124,55 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
123
124
|
|
124
125
|
it "should consider the certificate invalid if it cannot find a key" do
|
125
126
|
host = Puppet::SSL::Host.new("foo")
|
126
|
-
certificate =
|
127
|
-
|
127
|
+
certificate = mock('cert', :fingerprint => 'DEADBEEF')
|
128
|
+
host.expects(:key).returns nil
|
128
129
|
expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, "No private key with which to validate certificate with fingerprint: DEADBEEF")
|
129
130
|
end
|
130
131
|
|
131
132
|
it "should consider the certificate invalid if it cannot find a certificate" do
|
132
133
|
host = Puppet::SSL::Host.new("foo")
|
133
|
-
|
134
|
+
host.expects(:key).never
|
134
135
|
expect { host.validate_certificate_with_key(nil) }.to raise_error(Puppet::Error, "No certificate to validate.")
|
135
136
|
end
|
136
137
|
|
137
138
|
it "should consider the certificate invalid if the SSL certificate's key verification fails" do
|
138
139
|
host = Puppet::SSL::Host.new("foo")
|
139
|
-
key =
|
140
|
-
sslcert =
|
141
|
-
certificate =
|
142
|
-
|
143
|
-
|
140
|
+
key = mock 'key', :content => "private_key"
|
141
|
+
sslcert = mock 'sslcert'
|
142
|
+
certificate = mock 'cert', {:content => sslcert, :fingerprint => 'DEADBEEF'}
|
143
|
+
host.stubs(:key).returns key
|
144
|
+
sslcert.expects(:check_private_key).with("private_key").returns false
|
144
145
|
expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, /DEADBEEF/)
|
145
146
|
end
|
146
147
|
|
147
148
|
it "should consider the certificate valid if the SSL certificate's key verification succeeds" do
|
148
149
|
host = Puppet::SSL::Host.new("foo")
|
149
|
-
key =
|
150
|
-
sslcert =
|
151
|
-
certificate =
|
152
|
-
|
153
|
-
|
150
|
+
key = mock 'key', :content => "private_key"
|
151
|
+
sslcert = mock 'sslcert'
|
152
|
+
certificate = mock 'cert', :content => sslcert
|
153
|
+
host.stubs(:key).returns key
|
154
|
+
sslcert.expects(:check_private_key).with("private_key").returns true
|
154
155
|
expect{ host.validate_certificate_with_key(certificate) }.not_to raise_error
|
155
156
|
end
|
156
157
|
|
157
158
|
it "should output agent-specific commands when validation fails" do
|
158
159
|
host = Puppet::SSL::Host.new("foo")
|
159
|
-
key =
|
160
|
-
sslcert =
|
161
|
-
certificate =
|
162
|
-
|
163
|
-
|
160
|
+
key = mock 'key', :content => "private_key"
|
161
|
+
sslcert = mock 'sslcert'
|
162
|
+
certificate = mock 'cert', {:content => sslcert, :fingerprint => 'DEADBEEF'}
|
163
|
+
host.stubs(:key).returns key
|
164
|
+
sslcert.expects(:check_private_key).with("private_key").returns false
|
164
165
|
expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, /puppet ssl clean \n/)
|
165
166
|
end
|
166
167
|
|
167
168
|
it "should output device-specific commands when validation fails" do
|
168
169
|
Puppet[:certname] = "device.example.com"
|
169
170
|
host = Puppet::SSL::Host.new("device.example.com", true)
|
170
|
-
key =
|
171
|
-
sslcert =
|
172
|
-
certificate =
|
173
|
-
|
174
|
-
|
171
|
+
key = mock 'key', :content => "private_key"
|
172
|
+
sslcert = mock 'sslcert'
|
173
|
+
certificate = mock 'cert', {:content => sslcert, :fingerprint => 'DEADBEEF'}
|
174
|
+
host.stubs(:key).returns key
|
175
|
+
sslcert.expects(:check_private_key).with("private_key").returns false
|
175
176
|
expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, /puppet ssl clean --target device.example.com/)
|
176
177
|
end
|
177
178
|
|
@@ -195,37 +196,37 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
195
196
|
end
|
196
197
|
|
197
198
|
it "should return nil if the key is not set and cannot be found" do
|
198
|
-
|
199
|
+
Puppet::SSL::Key.indirection.expects(:find).with("myname").returns(nil)
|
199
200
|
expect(@host.key).to be_nil
|
200
201
|
end
|
201
202
|
|
202
203
|
it "should find the key in the Key class and return the Puppet instance" do
|
203
|
-
|
204
|
+
Puppet::SSL::Key.indirection.expects(:find).with("myname").returns(@key)
|
204
205
|
expect(@host.key).to equal(@key)
|
205
206
|
end
|
206
207
|
|
207
208
|
it "should be able to generate and save a new key" do
|
208
|
-
|
209
|
+
Puppet::SSL::Key.expects(:new).with("myname").returns(@key)
|
209
210
|
|
210
|
-
|
211
|
-
|
211
|
+
@key.expects(:generate)
|
212
|
+
Puppet::SSL::Key.indirection.expects(:save)
|
212
213
|
|
213
214
|
expect(@host.generate_key).to be_truthy
|
214
215
|
expect(@host.key).to equal(@key)
|
215
216
|
end
|
216
217
|
|
217
218
|
it "should not retain keys that could not be saved" do
|
218
|
-
|
219
|
+
Puppet::SSL::Key.expects(:new).with("myname").returns(@key)
|
219
220
|
|
220
|
-
|
221
|
-
|
221
|
+
@key.stubs(:generate)
|
222
|
+
Puppet::SSL::Key.indirection.expects(:save).raises "eh"
|
222
223
|
|
223
224
|
expect { @host.generate_key }.to raise_error(RuntimeError)
|
224
225
|
expect(@host.key).to be_nil
|
225
226
|
end
|
226
227
|
|
227
228
|
it "should return any previously found key without requerying" do
|
228
|
-
|
229
|
+
Puppet::SSL::Key.indirection.expects(:find).with("myname").returns(@key).once
|
229
230
|
expect(@host.key).to equal(@key)
|
230
231
|
expect(@host.key).to equal(@key)
|
231
232
|
end
|
@@ -243,52 +244,52 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
243
244
|
let(:key) { Puppet::SSL::Key.from_s(@pki[:leaf_key].to_s, @host.name) }
|
244
245
|
|
245
246
|
it "should generate a new key when generating the cert request if no key exists" do
|
246
|
-
|
247
|
-
|
247
|
+
@host.expects(:key).times(2).returns(nil).then.returns(key)
|
248
|
+
@host.expects(:generate_key).returns(key)
|
248
249
|
|
249
|
-
|
250
|
+
@host.stubs(:submit_certificate_request)
|
250
251
|
|
251
252
|
@host.generate_certificate_request
|
252
253
|
expect(Puppet::FileSystem.exist?(File.join(Puppet[:requestdir], "#{@host.name}.pem"))).to be true
|
253
254
|
end
|
254
255
|
|
255
256
|
it "should be able to generate and save a new request using the private key" do
|
256
|
-
|
257
|
-
|
257
|
+
@host.stubs(:key).returns(key)
|
258
|
+
@host.stubs(:submit_certificate_request)
|
258
259
|
|
259
260
|
expect(@host.generate_certificate_request).to be_truthy
|
260
261
|
expect(Puppet::FileSystem.exist?(File.join(Puppet[:requestdir], "#{@host.name}.pem"))).to be true
|
261
262
|
end
|
262
263
|
|
263
264
|
it "should send a new request to the CA for signing" do
|
264
|
-
@http =
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
request =
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
265
|
+
@http = mock("http")
|
266
|
+
@host.stubs(:http_client).returns(@http)
|
267
|
+
@host.stubs(:ssl_store).returns(mock("ssl store"))
|
268
|
+
@host.stubs(:key).returns(key)
|
269
|
+
request = mock("request")
|
270
|
+
request.stubs(:generate)
|
271
|
+
request.expects(:render).returns("my request").twice
|
272
|
+
Puppet::SSL::CertificateRequest.expects(:new).returns(request)
|
273
|
+
|
274
|
+
Puppet::Rest::Routes.expects(:put_certificate_request)
|
274
275
|
.with("my request", @host.name, anything)
|
275
|
-
.
|
276
|
+
.returns(nil)
|
276
277
|
|
277
278
|
expect(@host.generate_certificate_request).to be true
|
278
279
|
end
|
279
280
|
|
280
281
|
it "should return any previously found request without requerying" do
|
281
|
-
request =
|
282
|
-
|
282
|
+
request = mock("request")
|
283
|
+
@host.expects(:load_certificate_request_from_file).returns(request).once
|
283
284
|
|
284
285
|
expect(@host.certificate_request).to equal(request)
|
285
286
|
expect(@host.certificate_request).to equal(request)
|
286
287
|
end
|
287
288
|
|
288
289
|
it "should not keep its certificate request in memory if the request cannot be saved" do
|
289
|
-
|
290
|
-
|
291
|
-
|
290
|
+
@host.stubs(:key).returns(key)
|
291
|
+
@host.stubs(:submit_certificate_request)
|
292
|
+
Puppet::Util.expects(:replace_file).raises(RuntimeError)
|
292
293
|
|
293
294
|
expect { @host.generate_certificate_request }.to raise_error(RuntimeError)
|
294
295
|
|
@@ -303,57 +304,57 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
303
304
|
|
304
305
|
before(:each) do
|
305
306
|
Puppet[:certdir] = tmpdir('certs')
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
307
|
+
@host.stubs(:key).returns mock("key")
|
308
|
+
@host.stubs(:validate_certificate_with_key)
|
309
|
+
@host.stubs(:http_client).returns(@http)
|
310
|
+
@host.stubs(:ssl_store).returns(mock("ssl store"))
|
310
311
|
end
|
311
312
|
|
312
313
|
let(:ca_cert_response) { @pki[:ca_bundle] }
|
313
314
|
let(:host_cert_response) { @pki[:unrevoked_leaf_node_cert] }
|
314
315
|
|
315
316
|
it "should find the CA certificate and save it to disk" do
|
316
|
-
|
317
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
317
318
|
.with(Puppet::SSL::CA_NAME, anything)
|
318
|
-
.
|
319
|
-
|
319
|
+
.returns(ca_cert_response)
|
320
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
320
321
|
.with(@host.name, anything)
|
321
|
-
.
|
322
|
-
|
322
|
+
.raises(Puppet::Rest::ResponseError.new('no client cert',
|
323
|
+
mock('response', code: '404')))
|
323
324
|
@host.certificate
|
324
325
|
actual_ca_bundle = Puppet::FileSystem.read(Puppet[:localcacert])
|
325
326
|
expect(actual_ca_bundle).to match(/BEGIN CERTIFICATE.*END CERTIFICATE.*BEGIN CERTIFICATE/m)
|
326
327
|
end
|
327
328
|
|
328
329
|
it "should return nil if it cannot find a CA certificate" do
|
329
|
-
|
330
|
-
|
330
|
+
@host.expects(:ensure_ca_certificate).returns(false)
|
331
|
+
@host.expects(:get_host_certificate).never
|
331
332
|
|
332
333
|
expect(@host.certificate).to be_nil
|
333
334
|
end
|
334
335
|
|
335
336
|
it "should find the key if it does not have one" do
|
336
|
-
|
337
|
-
|
338
|
-
|
337
|
+
@host.expects(:ensure_ca_certificate).returns(true)
|
338
|
+
@host.expects(:get_host_certificate).returns(nil)
|
339
|
+
@host.expects(:key).returns mock("key")
|
339
340
|
@host.certificate
|
340
341
|
end
|
341
342
|
|
342
343
|
it "should generate the key if one cannot be found" do
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
344
|
+
@host.expects(:ensure_ca_certificate).returns(true)
|
345
|
+
@host.expects(:get_host_certificate).returns(nil)
|
346
|
+
@host.expects(:key).returns nil
|
347
|
+
@host.expects(:generate_key)
|
347
348
|
@host.certificate
|
348
349
|
end
|
349
350
|
|
350
351
|
it "should find the host certificate, write it to file, and return the Puppet certificate instance" do
|
351
|
-
|
352
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
352
353
|
.with(Puppet::SSL::CA_NAME, anything)
|
353
|
-
.
|
354
|
-
|
354
|
+
.returns(ca_cert_response)
|
355
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
355
356
|
.with(@host.name, anything)
|
356
|
-
.
|
357
|
+
.returns(host_cert_response)
|
357
358
|
expected_cert = Puppet::SSL::Certificate.from_s(@pki[:unrevoked_leaf_node_cert])
|
358
359
|
actual_cert = @host.certificate
|
359
360
|
expect(actual_cert).to be_a(Puppet::SSL::Certificate)
|
@@ -363,9 +364,9 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
363
364
|
end
|
364
365
|
|
365
366
|
it "should return any previously found certificate" do
|
366
|
-
cert =
|
367
|
-
|
368
|
-
|
367
|
+
cert = mock 'cert'
|
368
|
+
@host.expects(:ensure_ca_certificate).returns(true).once
|
369
|
+
@host.expects(:get_host_certificate).returns(cert).once
|
369
370
|
|
370
371
|
expect(@host.certificate).to equal(cert)
|
371
372
|
expect(@host.certificate).to equal(cert)
|
@@ -373,19 +374,19 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
373
374
|
|
374
375
|
context 'invalid certificates' do
|
375
376
|
it "should raise if the CA certificate downloaded from CA is invalid" do
|
376
|
-
|
377
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
377
378
|
.with(Puppet::SSL::CA_NAME, anything)
|
378
|
-
.
|
379
|
+
.returns('garbage')
|
379
380
|
expect { @host.certificate }.to raise_error(Puppet::Error, /did not contain a valid CA certificate/)
|
380
381
|
end
|
381
382
|
|
382
383
|
it "should warn if the host certificate downloaded from CA is invalid" do
|
383
|
-
|
384
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
384
385
|
.with(Puppet::SSL::CA_NAME, anything)
|
385
|
-
.
|
386
|
-
|
386
|
+
.returns(ca_cert_response)
|
387
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
387
388
|
.with(@host.name, anything)
|
388
|
-
.
|
389
|
+
.returns('garbage')
|
389
390
|
expect { @host.certificate }.to raise_error(Puppet::Error, /did not contain a valid certificate for #{@host.name}/)
|
390
391
|
end
|
391
392
|
|
@@ -397,9 +398,9 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
397
398
|
end
|
398
399
|
|
399
400
|
it 'should warn if the host certificate loaded from disk in invalid' do
|
400
|
-
|
401
|
+
Puppet::Rest::Routes.expects(:get_certificate)
|
401
402
|
.with(Puppet::SSL::CA_NAME, anything)
|
402
|
-
.
|
403
|
+
.returns(ca_cert_response)
|
403
404
|
Puppet::FileSystem.open(File.join(Puppet[:certdir], "#{@host.name}.pem"), nil, "w:ASCII") do |f|
|
404
405
|
f.puts 'garbage'
|
405
406
|
end
|
@@ -415,22 +416,22 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
415
416
|
describe "when generating files" do
|
416
417
|
before do
|
417
418
|
@host = Puppet::SSL::Host.new("me")
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
419
|
+
@host.stubs(:generate_key)
|
420
|
+
@host.stubs(:generate_certificate_request)
|
421
|
+
@host.stubs(:certificate_request)
|
422
|
+
@host.stubs(:certificate)
|
422
423
|
end
|
423
424
|
|
424
425
|
it "should generate a key if one is not present" do
|
425
|
-
|
426
|
-
|
426
|
+
@host.stubs(:key).returns nil
|
427
|
+
@host.expects(:generate_key)
|
427
428
|
|
428
429
|
@host.generate
|
429
430
|
end
|
430
431
|
|
431
432
|
it "should generate a certificate request if one is not present" do
|
432
|
-
|
433
|
-
|
433
|
+
@host.expects(:certificate_request).returns nil
|
434
|
+
@host.expects(:generate_certificate_request)
|
434
435
|
|
435
436
|
@host.generate
|
436
437
|
end
|
@@ -446,9 +447,10 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
446
447
|
end
|
447
448
|
|
448
449
|
it "should accept a purpose" do
|
449
|
-
store =
|
450
|
-
|
451
|
-
|
450
|
+
store = mock 'store'
|
451
|
+
store.stub_everything
|
452
|
+
OpenSSL::X509::Store.expects(:new).returns store
|
453
|
+
store.expects(:purpose=).with(OpenSSL::X509::PURPOSE_SSL_SERVER)
|
452
454
|
host = Puppet::SSL::Host.new("me")
|
453
455
|
host.crl_usage = false
|
454
456
|
|
@@ -461,8 +463,8 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
461
463
|
@revoked_cert = @pki[:revoked_root_node_cert]
|
462
464
|
localcacert = Puppet.settings[:localcacert]
|
463
465
|
Puppet::Util.replace_file(localcacert, 0644) {|f| f.write @pki[:ca_bundle] }
|
464
|
-
@http =
|
465
|
-
|
466
|
+
@http = mock 'http'
|
467
|
+
@host.stubs(:http_client).returns(@http)
|
466
468
|
end
|
467
469
|
|
468
470
|
after do
|
@@ -471,9 +473,9 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
471
473
|
end
|
472
474
|
|
473
475
|
it "retrieves it from the server" do
|
474
|
-
|
476
|
+
Puppet::Rest::Routes.expects(:get_crls)
|
475
477
|
.with(Puppet::SSL::CA_NAME, anything)
|
476
|
-
.
|
478
|
+
.returns(@pki[:crl_chain])
|
477
479
|
|
478
480
|
@host.ssl_store
|
479
481
|
expect(Puppet::FileSystem.read(Puppet.settings[:hostcrl], :encoding => Encoding::UTF_8)).to eq(@pki[:crl_chain])
|
@@ -573,73 +575,54 @@ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
|
|
573
575
|
end
|
574
576
|
|
575
577
|
it "should generate its certificate request and attempt to read the certificate again if no certificate is found" do
|
576
|
-
|
577
|
-
|
578
|
+
@host.expects(:certificate).times(2).returns(nil).then.returns "foo"
|
579
|
+
@host.expects(:generate)
|
578
580
|
@host.wait_for_cert(1)
|
579
581
|
end
|
580
582
|
|
581
583
|
it "should catch and log errors during CSR saving" do
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
times_generate_called += 1
|
586
|
-
raise RuntimeError if times_generate_called == 1
|
587
|
-
nil
|
588
|
-
end
|
589
|
-
allow(@host).to receive(:sleep)
|
584
|
+
@host.expects(:certificate).times(2).returns(nil).then.returns "foo"
|
585
|
+
@host.expects(:generate).raises(RuntimeError).then.returns nil
|
586
|
+
@host.stubs(:sleep)
|
590
587
|
@host.wait_for_cert(1)
|
591
588
|
end
|
592
589
|
|
593
590
|
it "should sleep and retry after failures saving the CSR if waitforcert is enabled" do
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
times_generate_called += 1
|
598
|
-
raise RuntimeError if times_generate_called == 1
|
599
|
-
nil
|
600
|
-
end
|
601
|
-
expect(@host).to receive(:sleep).with(1)
|
591
|
+
@host.expects(:certificate).times(2).returns(nil).then.returns "foo"
|
592
|
+
@host.expects(:generate).raises(RuntimeError).then.returns nil
|
593
|
+
@host.expects(:sleep).with(1)
|
602
594
|
@host.wait_for_cert(1)
|
603
595
|
end
|
604
596
|
|
605
597
|
it "should exit after failures saving the CSR of waitforcert is disabled" do
|
606
|
-
|
607
|
-
|
608
|
-
|
598
|
+
@host.expects(:certificate).returns(nil)
|
599
|
+
@host.expects(:generate).raises(RuntimeError)
|
600
|
+
@host.expects(:puts)
|
609
601
|
expect { @host.wait_for_cert(0) }.to exit_with 1
|
610
602
|
end
|
611
603
|
|
612
604
|
it "should exit if the wait time is 0 and it can neither find nor retrieve a certificate" do
|
613
|
-
|
614
|
-
|
615
|
-
|
605
|
+
@host.stubs(:certificate).returns nil
|
606
|
+
@host.expects(:generate)
|
607
|
+
@host.expects(:puts)
|
616
608
|
expect { @host.wait_for_cert(0) }.to exit_with 1
|
617
609
|
end
|
618
610
|
|
619
611
|
it "should sleep for the specified amount of time if no certificate is found after generating its certificate request" do
|
620
|
-
|
621
|
-
|
612
|
+
@host.expects(:certificate).times(3).returns(nil).then.returns(nil).then.returns "foo"
|
613
|
+
@host.expects(:generate)
|
622
614
|
|
623
|
-
|
615
|
+
@host.expects(:sleep).with(1)
|
624
616
|
|
625
617
|
@host.wait_for_cert(1)
|
626
618
|
end
|
627
619
|
|
628
620
|
it "should catch and log exceptions during certificate retrieval" do
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
if times_certificate_called == 1
|
633
|
-
return nil
|
634
|
-
elsif times_certificate_called == 2
|
635
|
-
raise RuntimeError
|
636
|
-
end
|
637
|
-
"foo"
|
638
|
-
end.exactly(3).times()
|
639
|
-
allow(@host).to receive(:generate)
|
640
|
-
allow(@host).to receive(:sleep)
|
621
|
+
@host.expects(:certificate).times(3).returns(nil).then.raises(RuntimeError).then.returns("foo")
|
622
|
+
@host.stubs(:generate)
|
623
|
+
@host.stubs(:sleep)
|
641
624
|
|
642
|
-
|
625
|
+
Puppet.expects(:log_exception)
|
643
626
|
|
644
627
|
@host.wait_for_cert(1)
|
645
628
|
end
|