puppet 6.12.0-x86-mingw32 → 6.17.0-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +39 -36
- data/README.md +18 -25
- data/ext/project_data.yaml +1 -1
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +52 -13
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/resource.rb +1 -1
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +65 -69
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +154 -58
- data/lib/puppet/environments.rb +27 -20
- data/lib/puppet/face/facts.rb +8 -5
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +14 -10
- data/lib/puppet/file_system/memory_file.rb +6 -0
- data/lib/puppet/file_system/memory_impl.rb +13 -0
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/file_system/windows.rb +7 -10
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/http.rb +5 -0
- data/lib/puppet/http/client.rb +293 -73
- data/lib/puppet/http/errors.rb +2 -0
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +151 -7
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +319 -0
- data/lib/puppet/http/service/file_server.rb +206 -0
- data/lib/puppet/http/service/report.rb +49 -23
- data/lib/puppet/http/session.rb +103 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/compiler.rb +10 -0
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +1 -1
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +27 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/msgpack.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/base_pool.rb +7 -2
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +6 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +2 -0
- data/lib/puppet/network/http/pool.rb +13 -6
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +11 -1
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +4 -29
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +6 -15
- data/lib/puppet/parser/compiler.rb +43 -33
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +18 -13
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/pops/evaluator/access_operator.rb +2 -2
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +6 -6
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +12 -3
- data/lib/puppet/pops/loaders.rb +7 -5
- data/lib/puppet/pops/parser/evaluating_parser.rb +5 -7
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/p_object_type_extension.rb +10 -0
- data/lib/puppet/pops/types/type_calculator.rb +24 -0
- data/lib/puppet/pops/validation/checker4_0.rb +11 -1
- data/lib/puppet/pops/validation/tasks_checker.rb +5 -1
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/aix_object.rb +4 -2
- data/lib/puppet/provider/group/aix.rb +1 -0
- data/lib/puppet/provider/group/groupadd.rb +57 -24
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +78 -4
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +69 -15
- data/lib/puppet/provider/package/dpkg.rb +14 -7
- data/lib/puppet/provider/package/fink.rb +20 -3
- data/lib/puppet/provider/package/gem.rb +41 -7
- data/lib/puppet/provider/package/openbsd.rb +13 -1
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkg.rb +18 -5
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +6 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +109 -25
- data/lib/puppet/provider/package/zypper.rb +59 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -0
- data/lib/puppet/provider/user/directoryservice.rb +30 -5
- data/lib/puppet/provider/user/useradd.rb +22 -12
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/reports/store.rb +1 -1
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -1
- data/lib/puppet/settings.rb +4 -0
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/certificate.rb +2 -1
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +15 -11
- data/lib/puppet/transaction/report.rb +2 -2
- data/lib/puppet/transaction/resource_harness.rb +1 -1
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +18 -6
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +51 -60
- data/lib/puppet/type/group.rb +2 -2
- data/lib/puppet/type/package.rb +102 -10
- data/lib/puppet/type/service.rb +55 -8
- data/lib/puppet/type/user.rb +3 -28
- data/lib/puppet/util.rb +39 -15
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +4 -18
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +2 -11
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +36 -10
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/plist.rb +6 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/storage.rb +0 -1
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +45 -32
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +23 -8
- data/lib/puppet/util/yaml.rb +1 -1
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +707 -574
- data/man/man5/puppet.conf.5 +74 -14
- data/man/man8/puppet-agent.8 +7 -7
- 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 +2 -2
- 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 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- 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 +4 -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 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -102
- data/spec/integration/application/agent_spec.rb +483 -0
- data/spec/integration/application/apply_spec.rb +132 -3
- data/spec/integration/application/filebucket_spec.rb +190 -0
- data/spec/integration/application/plugin_spec.rb +73 -0
- data/spec/integration/configurer_spec.rb +26 -7
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +4 -0
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/module_tool/forge_spec.rb +2 -15
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +40 -5
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/puppetserver.rb +119 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +9 -5
- data/spec/unit/application/apply_spec.rb +2 -12
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/resource_spec.rb +2 -2
- data/spec/unit/configurer/fact_handler_spec.rb +4 -8
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +17 -18
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +25 -2
- data/spec/unit/environments_spec.rb +65 -28
- data/spec/unit/face/facts_spec.rb +24 -20
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +11 -0
- data/spec/unit/file_system_spec.rb +26 -2
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +327 -35
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -2
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -11
- data/spec/unit/http/service/compiler_spec.rb +627 -0
- data/spec/unit/http/service/file_server_spec.rb +308 -0
- data/spec/unit/http/service/report_spec.rb +27 -9
- data/spec/unit/http/service_spec.rb +98 -5
- data/spec/unit/http/session_spec.rb +190 -7
- data/spec/unit/indirector/catalog/compiler_spec.rb +47 -29
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +559 -175
- data/spec/unit/network/http/nocache_pool_spec.rb +25 -3
- data/spec/unit/network/http/pool_spec.rb +89 -11
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +16 -0
- data/spec/unit/node/facts_spec.rb +2 -1
- data/spec/unit/node_spec.rb +7 -4
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +1 -1
- data/spec/unit/pops/serialization/to_from_hr_spec.rb +6 -1
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/pops/validator/validator_spec.rb +7 -2
- data/spec/unit/provider/aix_object_spec.rb +16 -2
- data/spec/unit/provider/group/groupadd_spec.rb +181 -56
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +43 -2
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +76 -15
- data/spec/unit/provider/package/dpkg_spec.rb +28 -6
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/openbsd_spec.rb +17 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkg_spec.rb +15 -1
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +8 -0
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +292 -0
- data/spec/unit/provider/package/zypper_spec.rb +84 -0
- data/spec/unit/provider/service/init_spec.rb +1 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +92 -12
- data/spec/unit/provider/service/windows_spec.rb +22 -14
- data/spec/unit/provider/user/directoryservice_spec.rb +41 -0
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +43 -24
- data/spec/unit/provider/user/windows_adsi_spec.rb +3 -3
- data/spec/unit/puppet_pal_2pec.rb +0 -26
- data/spec/unit/puppet_pal_catalog_spec.rb +46 -0
- data/spec/unit/puppet_spec.rb +47 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/certificate_spec.rb +7 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +1 -10
- data/spec/unit/transaction/report_spec.rb +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/package_spec.rb +8 -0
- data/spec/unit/type/service_spec.rb +185 -8
- data/spec/unit/type/user_spec.rb +1 -2
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +112 -42
- data/spec/unit/util/plist_spec.rb +20 -0
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/storage_spec.rb +1 -8
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +73 -12
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/test/test_helper_spec.rb +0 -31
@@ -30,6 +30,10 @@ describe Puppet::Type.type(:package) do
|
|
30
30
|
expect(Puppet::Type.type(:package).provider_feature(:versionable)).not_to be_nil
|
31
31
|
end
|
32
32
|
|
33
|
+
it "should have a :supports_flavors feature" do
|
34
|
+
expect(Puppet::Type.type(:package).provider_feature(:supports_flavors)).not_to be_nil
|
35
|
+
end
|
36
|
+
|
33
37
|
it "should have a :package_settings feature that requires :package_settings_insync?, :package_settings and :package_settings=" do
|
34
38
|
expect(Puppet::Type.type(:package).provider_feature(:package_settings).methods).to eq([:package_settings_insync?, :package_settings, :package_settings=])
|
35
39
|
end
|
@@ -53,6 +57,10 @@ describe Puppet::Type.type(:package) do
|
|
53
57
|
it "should have a package_settings property" do
|
54
58
|
expect(Puppet::Type.type(:package).attrtype(:package_settings)).to eq(:property)
|
55
59
|
end
|
60
|
+
|
61
|
+
it "should have a flavor property" do
|
62
|
+
expect(Puppet::Type.type(:package).attrtype(:flavor)).to eq(:property)
|
63
|
+
end
|
56
64
|
end
|
57
65
|
|
58
66
|
describe "when validating attribute values" do
|
@@ -145,6 +145,166 @@ describe test_title, "when validating attribute values" do
|
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
148
|
+
describe "the service logon credentials" do
|
149
|
+
before do
|
150
|
+
provider_class_with_logon_credentials = Puppet::Type.type(:service).provide(:simple) do
|
151
|
+
has_features :manages_logon_credentials
|
152
|
+
def logonpassword=(value) end
|
153
|
+
end
|
154
|
+
allow(Puppet::Type.type(:service)).to receive(:defaultprovider).and_return(provider_class_with_logon_credentials)
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "the 'logonaccount' property" do
|
158
|
+
it "should not be munged nor checked when not on Windows" do
|
159
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
160
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'NonWindowsUser')
|
161
|
+
|
162
|
+
expect { service }.not_to raise_error
|
163
|
+
expect(service[:logonaccount]).to eq('NonWindowsUser')
|
164
|
+
end
|
165
|
+
|
166
|
+
context "when on Windows", :if => Puppet::Util::Platform.windows? do
|
167
|
+
before do
|
168
|
+
allow(Puppet::Util::Windows::ADSI).to receive(:computer_name).and_return("myPC")
|
169
|
+
allow(Puppet::Util::Windows::User).to receive(:default_system_account?).and_return(true)
|
170
|
+
end
|
171
|
+
|
172
|
+
['LocalSystem', '.\LocalSystem', 'myPC\LocalSystem', 'lOcALsysTem'].each do |user_input|
|
173
|
+
it "should succesfully munge #{user_input} to 'LocalSystem'" do
|
174
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => user_input)
|
175
|
+
|
176
|
+
expect { service }.not_to raise_error
|
177
|
+
expect(service[:logonaccount]).to eq('LocalSystem')
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
it "should succesfully munge local account" do
|
182
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("myUser", nil, nil, "myPC", :SidTypeUser))
|
183
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser')
|
184
|
+
|
185
|
+
expect { service }.not_to raise_error
|
186
|
+
expect(service[:logonaccount]).to eq('.\myUser')
|
187
|
+
end
|
188
|
+
|
189
|
+
it "should succesfully munge domain account" do
|
190
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("DomainUser", nil, nil, "myDomain", :SidTypeUser))
|
191
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'DomainUser')
|
192
|
+
|
193
|
+
expect { service }.not_to raise_error
|
194
|
+
expect(service[:logonaccount]).to eq('myDomain\DomainUser')
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should succesfully munge well known user" do
|
198
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("LOCAL SERVICE", nil, nil, "NT AUTHORITY", :SidTypeWellKnownGroup))
|
199
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'LocalService')
|
200
|
+
|
201
|
+
expect { service }.not_to raise_error
|
202
|
+
expect(service[:logonaccount]).to eq('NT AUTHORITY\LOCAL SERVICE')
|
203
|
+
end
|
204
|
+
|
205
|
+
it "should succesfully munge a SID" do
|
206
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("NETWORK SERVICE", nil, nil, "NT AUTHORITY", :SidTypeUser))
|
207
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'S-1-5-20')
|
208
|
+
|
209
|
+
expect { service }.not_to raise_error
|
210
|
+
expect(service[:logonaccount]).to eq('NT AUTHORITY\NETWORK SERVICE')
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should fail when account is invalid" do
|
214
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(nil)
|
215
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'InvalidUser') }.to raise_error(Puppet::Error, /\"InvalidUser\" is not a valid account/)
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should fail when sid type is not user or well known user" do
|
219
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(Puppet::Util::Windows::SID::Principal.new("Administrators", nil, nil, "BUILTIN", :SidTypeAlias))
|
220
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'Administrators') }.to raise_error(Puppet::Error, /\"Administrators\" is not a valid account/)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
describe "the logonpassword parameter" do
|
226
|
+
it "should fail when logonaccount is not being managed as well" do
|
227
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonpassword => 'myPass') }.to raise_error(Puppet::Error, /The 'logonaccount' parameter is mandatory when setting 'logonpassword'./)
|
228
|
+
end
|
229
|
+
|
230
|
+
it "should default to empty string when only logonaccount is being managed" do
|
231
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
232
|
+
service = Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser')
|
233
|
+
|
234
|
+
expect { service }.not_to raise_error
|
235
|
+
expect(service[:logonpassword]).to eq("")
|
236
|
+
end
|
237
|
+
|
238
|
+
it "should default to nil when not even logonaccount is being managed" do
|
239
|
+
service = Puppet::Type.type(:service).new(:name => "yay")
|
240
|
+
expect(service[:logonpassword]).to eq(nil)
|
241
|
+
end
|
242
|
+
|
243
|
+
it "should fail when logonpassword includes the ':' character" do
|
244
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
245
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser', :logonpassword => 'my:Pass') }.to raise_error(Puppet::Error, /Passwords cannot include ':'/)
|
246
|
+
end
|
247
|
+
|
248
|
+
it "should not further check the password against given account when not on Windows" do
|
249
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
250
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser', :logonpassword => 'myPass') }.not_to raise_error
|
251
|
+
end
|
252
|
+
|
253
|
+
context "when on Windows", :if => Puppet::Util::Platform.windows? do
|
254
|
+
before do
|
255
|
+
allow(Puppet::Util::Windows::ADSI).to receive(:computer_name).and_return("myPC")
|
256
|
+
allow(Puppet::Util::Windows::SID).to receive(:name_to_principal).and_return(name_to_principal_result)
|
257
|
+
end
|
258
|
+
|
259
|
+
it "should pass validation when given account is 'LocalSystem'" do
|
260
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with('LocalSystem').and_return(true)
|
261
|
+
allow(Puppet::Util::Windows::User).to receive(:default_system_account?).with('LocalSystem').and_return(false)
|
262
|
+
|
263
|
+
expect(Puppet::Util::Windows::SID).not_to receive(:name_to_principal)
|
264
|
+
expect(Puppet::Util::Windows::User).not_to receive(:password_is?)
|
265
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'LocalSystem') }.not_to raise_error
|
266
|
+
end
|
267
|
+
|
268
|
+
['LOCAL SERVICE', 'NETWORK SERVICE', 'SYSTEM'].each do |predefined_local_account|
|
269
|
+
describe "when given account is #{predefined_local_account}" do
|
270
|
+
let(:name_to_principal_result) do
|
271
|
+
Puppet::Util::Windows::SID::Principal.new(predefined_local_account, nil, nil, "NT AUTHORITY", :SidTypeUser)
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should pass validation" do
|
275
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with(predefined_local_account).and_return(false)
|
276
|
+
expect(Puppet::Util::Windows::User).to receive(:default_system_account?).with("NT AUTHORITY\\#{predefined_local_account}").and_return(true)
|
277
|
+
|
278
|
+
expect(Puppet::Util::Windows::User).not_to receive(:password_is?)
|
279
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => predefined_local_account) }.not_to raise_error
|
280
|
+
end
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
let(:name_to_principal_result) do
|
285
|
+
Puppet::Util::Windows::SID::Principal.new("myUser", nil, nil, "myPC", :SidTypeUser)
|
286
|
+
end
|
287
|
+
|
288
|
+
describe "when given logonaccount is not a predefined local account" do
|
289
|
+
before do
|
290
|
+
allow(Puppet::Util::Windows::User).to receive(:localsystem?).with('myUser').and_return(false)
|
291
|
+
allow(Puppet::Util::Windows::User).to receive(:default_system_account?).with('.\\myUser').and_return(false)
|
292
|
+
end
|
293
|
+
|
294
|
+
it "should pass validation if password is proven correct" do
|
295
|
+
allow(Puppet::Util::Windows::User).to receive(:password_is?).with('myUser', 'myPass', '.').and_return(true)
|
296
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser', :logonpassword => 'myPass') }.not_to raise_error
|
297
|
+
end
|
298
|
+
|
299
|
+
it "should not pass validation if password check fails" do
|
300
|
+
allow(Puppet::Util::Windows::User).to receive(:password_is?).with('myUser', 'myWrongPass', '.').and_return(false)
|
301
|
+
expect { Puppet::Type.type(:service).new(:name => "yay", :logonaccount => 'myUser', :logonpassword => 'myWrongPass') }.to raise_error(Puppet::Error, /The given password is invalid for user '.\\myUser'/)
|
302
|
+
end
|
303
|
+
end
|
304
|
+
end
|
305
|
+
end
|
306
|
+
end
|
307
|
+
|
148
308
|
it "should support :true as a value to :hasstatus" do
|
149
309
|
srv = Puppet::Type.type(:service).new(:name => "yay", :hasstatus => :true)
|
150
310
|
expect(srv[:hasstatus]).to eq(:true)
|
@@ -284,20 +444,21 @@ describe test_title, "when changing the host" do
|
|
284
444
|
@service.property(:enable).sync
|
285
445
|
end
|
286
446
|
|
287
|
-
it "should
|
447
|
+
it "should let superclass implementation resolve insyncness when provider does not respond to the 'enabled_insync?' method" do
|
288
448
|
allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
|
289
|
-
|
290
|
-
@service
|
291
|
-
|
449
|
+
@service[:enable] = true
|
450
|
+
allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?).and_return(false)
|
451
|
+
|
292
452
|
expect(@service.property(:enable).insync?(:true)).to eq(true)
|
293
453
|
end
|
294
454
|
|
295
|
-
it "should
|
455
|
+
it "insyncness should be resolved by provider instead of superclass implementation when provider responds to the 'enabled_insync?' method" do
|
296
456
|
allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
|
297
|
-
expect(@service.provider).to receive(:cached_enabled?).and_return('true')
|
298
457
|
@service[:enable] = true
|
299
|
-
|
300
|
-
|
458
|
+
allow(@service.provider).to receive(:respond_to?).with(:enabled_insync?).and_return(true)
|
459
|
+
allow(@service.provider).to receive(:enabled_insync?).and_return(false)
|
460
|
+
|
461
|
+
expect(@service.property(:enable).insync?(:true)).to eq(false)
|
301
462
|
end
|
302
463
|
|
303
464
|
it "should sync the service's enable state when changing the state of :ensure if :enable is being managed" do
|
@@ -313,6 +474,22 @@ describe test_title, "when changing the host" do
|
|
313
474
|
|
314
475
|
@service.property(:ensure).sync
|
315
476
|
end
|
477
|
+
|
478
|
+
it "should sync the service's logonaccount state when changing the state of :ensure if :logonaccount is being managed" do
|
479
|
+
allow(@service.provider.class).to receive(:supports_parameter?).and_return(true)
|
480
|
+
allow(Puppet::Util::Platform).to receive(:windows?).and_return(false)
|
481
|
+
|
482
|
+
@service[:ensure] = :stopped
|
483
|
+
@service[:logonaccount] = 'LocalSystem'
|
484
|
+
|
485
|
+
expect(@service.property(:logonaccount)).to receive(:retrieve).and_return("MyUser")
|
486
|
+
expect(@service.property(:logonaccount)).to receive(:insync?).and_return(false)
|
487
|
+
expect(@service.property(:logonaccount)).to receive(:sync)
|
488
|
+
|
489
|
+
allow(@service.provider).to receive(:stop)
|
490
|
+
|
491
|
+
@service.property(:ensure).sync
|
492
|
+
end
|
316
493
|
end
|
317
494
|
|
318
495
|
describe test_title, "when refreshing the service" do
|
data/spec/unit/type/user_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# encoding:
|
1
|
+
# encoding: utf-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Puppet::Type.type(:user) do
|
@@ -408,7 +408,6 @@ describe Puppet::Type.type(:user) do
|
|
408
408
|
Puppet::Resource::Catalog.new :testing do |conf|
|
409
409
|
[testuser, testrole].each { |resource| conf.add_resource resource }
|
410
410
|
end
|
411
|
-
allow(Puppet::Type::User::ProviderDirectoryservice).to receive(:get_macosx_version_major).and_return("10.5")
|
412
411
|
|
413
412
|
rel = testuser.autorequire[0]
|
414
413
|
expect(rel.source.ref).to eq(testrole.ref)
|
data/spec/unit/type_spec.rb
CHANGED
@@ -1099,6 +1099,56 @@ describe Puppet::Type, :unless => Puppet::Util::Platform.windows? do
|
|
1099
1099
|
expect { expect(type.instances).to eq([]) }.to_not raise_error
|
1100
1100
|
end
|
1101
1101
|
|
1102
|
+
context "with a composite namevar type" do
|
1103
|
+
let :type do
|
1104
|
+
Puppet::Type.newtype(:type_spec_fake_type) do
|
1105
|
+
newparam(:name) do
|
1106
|
+
isnamevar
|
1107
|
+
end
|
1108
|
+
|
1109
|
+
newparam(:path) do
|
1110
|
+
isnamevar
|
1111
|
+
end
|
1112
|
+
|
1113
|
+
def self.title_patterns
|
1114
|
+
[[%r{^(.*)@(.*)$}, [:name, :path]], [%r{^([^@]+)$}, [:name]]]
|
1115
|
+
end
|
1116
|
+
|
1117
|
+
newproperty(:prop1) {}
|
1118
|
+
end
|
1119
|
+
|
1120
|
+
Puppet::Type.type(:type_spec_fake_type)
|
1121
|
+
end
|
1122
|
+
|
1123
|
+
before :each do
|
1124
|
+
type.provide(:default) do
|
1125
|
+
defaultfor :operatingsystem => Facter.value(:operatingsystem)
|
1126
|
+
mk_resource_methods
|
1127
|
+
class << self
|
1128
|
+
attr_accessor :params
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
def title
|
1132
|
+
"#{@property_hash[:name]}@#{@property_hash[:path]}"
|
1133
|
+
end
|
1134
|
+
|
1135
|
+
def self.instance(name, path)
|
1136
|
+
new(:name => name, :path => path, :ensure => :present)
|
1137
|
+
end
|
1138
|
+
|
1139
|
+
def self.instances
|
1140
|
+
@instances ||= params.collect { |param| instance(param.first.to_s, param.last.to_s) }
|
1141
|
+
end
|
1142
|
+
|
1143
|
+
@params = [[:name_one, :path_one], [:name_two, :path_two]]
|
1144
|
+
end
|
1145
|
+
end
|
1146
|
+
|
1147
|
+
it "should return composite titles for the instances" do
|
1148
|
+
expect(type.instances.map(&:title)).to eq(["name_one@path_one", "name_two@path_two"])
|
1149
|
+
end
|
1150
|
+
end
|
1151
|
+
|
1102
1152
|
context "with a default provider" do
|
1103
1153
|
before :each do
|
1104
1154
|
type.provide(:default) do
|
@@ -5,6 +5,7 @@ describe 'Puppet::Util::AtFork' do
|
|
5
5
|
|
6
6
|
before :each do
|
7
7
|
Puppet::Util.class_exec do
|
8
|
+
remove_const(:AtFork) if defined?(Puppet::Util::AtFork)
|
8
9
|
const_set(:AtFork, Module.new)
|
9
10
|
end
|
10
11
|
end
|
@@ -18,7 +19,7 @@ describe 'Puppet::Util::AtFork' do
|
|
18
19
|
describe '.get_handler' do
|
19
20
|
context 'when on Solaris' do
|
20
21
|
before :each do
|
21
|
-
expect(
|
22
|
+
expect(Puppet::Util::Platform).to receive(:solaris?).and_return(true)
|
22
23
|
end
|
23
24
|
|
24
25
|
after :each do
|
@@ -113,7 +114,7 @@ describe 'Puppet::Util::AtFork' do
|
|
113
114
|
|
114
115
|
context 'when NOT on Solaris' do
|
115
116
|
before :each do
|
116
|
-
expect(
|
117
|
+
expect(Puppet::Util::Platform).to receive(:solaris?).and_return(false)
|
117
118
|
end
|
118
119
|
|
119
120
|
def stub_noop_handler(namespace_only = false)
|
@@ -23,10 +23,10 @@ describe Puppet::Util::Autoload do
|
|
23
23
|
|
24
24
|
def with_libdir(libdir)
|
25
25
|
begin
|
26
|
-
Puppet::Util::Autoload.instance_variable_set(:@initialized, false)
|
27
26
|
old_loadpath = $LOAD_PATH.dup
|
28
27
|
old_libdir = Puppet[:libdir]
|
29
28
|
Puppet[:libdir] = libdir
|
29
|
+
$LOAD_PATH.unshift(libdir)
|
30
30
|
yield
|
31
31
|
ensure
|
32
32
|
Puppet[:libdir] = old_libdir
|
@@ -83,6 +83,7 @@ describe Puppet::Util::Autoload do
|
|
83
83
|
|
84
84
|
libdir = File.expand_path('/libdir1')
|
85
85
|
Puppet[:vendormoduledir] = vendor_dir
|
86
|
+
Puppet.initialize_settings
|
86
87
|
|
87
88
|
with_libdir(libdir) do
|
88
89
|
expect(@autoload.class).to receive(:gem_directories).and_return(%w{/one /two})
|
@@ -65,6 +65,22 @@ describe Puppet::Util::Checksums do
|
|
65
65
|
expect(@summer.sumtype("asdfasdfa")).to be_nil
|
66
66
|
end
|
67
67
|
|
68
|
+
it "has a list of known checksum types" do
|
69
|
+
expect(@summer.known_checksum_types).to match_array(content_sums + file_only)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "returns true if the checksum is valid" do
|
73
|
+
expect(@summer).to be_valid_checksum('sha1', 'fcc1715b22278a9dae322b0a34935f10d1608b9f')
|
74
|
+
end
|
75
|
+
|
76
|
+
it "returns false if the checksum is known but invalid" do
|
77
|
+
expect(@summer).to_not be_valid_checksum('sha1', 'wronglength')
|
78
|
+
end
|
79
|
+
|
80
|
+
it "returns false if the checksum type is unknown" do
|
81
|
+
expect(@summer).to_not be_valid_checksum('rot13', 'doesntmatter')
|
82
|
+
end
|
83
|
+
|
68
84
|
{:md5 => Digest::MD5, :sha1 => Digest::SHA1, :sha256 => Digest::SHA256, :sha512 => Digest::SHA512, :sha384 => Digest::SHA384}.each do |sum, klass|
|
69
85
|
describe("when using #{sum}") do
|
70
86
|
it "should use #{klass} to calculate string checksums" do
|
@@ -44,41 +44,13 @@ describe Puppet::Util::Log.desttypes[:file] do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
describe "on POSIX systems", :
|
47
|
+
describe "on POSIX systems", :unless => Puppet::Util::Platform.windows? do
|
48
48
|
describe "with a normal file" do
|
49
49
|
let (:parent) { Pathname.new('/tmp') }
|
50
50
|
let (:abspath) { '/tmp/log' }
|
51
51
|
let (:relpath) { 'log' }
|
52
52
|
|
53
53
|
it_behaves_like "file destination"
|
54
|
-
|
55
|
-
it "logs an error if it can't chown the file owner & group" do
|
56
|
-
allow(File).to receive(:exist?).with(parent).and_return(true)
|
57
|
-
expect(File).to receive(:exist?).with(Pathname.new(abspath)).and_return(false)
|
58
|
-
expect(FileUtils).to receive(:chown).with(Puppet[:user], Puppet[:group], abspath).and_raise(Errno::EPERM)
|
59
|
-
expect(Puppet.features).to receive(:root?).and_return(true)
|
60
|
-
expect(Puppet).to receive(:err).with("Unable to set ownership to #{Puppet[:user]}:#{Puppet[:group]} for log file: #{abspath}")
|
61
|
-
|
62
|
-
@class.new(abspath)
|
63
|
-
end
|
64
|
-
|
65
|
-
it "doesn't attempt to chown when running as non-root" do
|
66
|
-
allow(File).to receive(:exist?).with(parent).and_return(true)
|
67
|
-
expect(File).to receive(:exist?).with(Pathname.new(abspath)).and_return(false)
|
68
|
-
expect(FileUtils).not_to receive(:chown).with(Puppet[:user], Puppet[:group], abspath)
|
69
|
-
expect(Puppet.features).to receive(:root?).and_return(false)
|
70
|
-
|
71
|
-
@class.new(abspath)
|
72
|
-
end
|
73
|
-
|
74
|
-
it "doesn't attempt to chown when file already exists" do
|
75
|
-
allow(File).to receive(:exist?).with(parent).and_return(true)
|
76
|
-
expect(File).to receive(:exist?).with(Pathname.new(abspath)).and_return(true)
|
77
|
-
expect(FileUtils).not_to receive(:chown).with(Puppet[:user], Puppet[:group], abspath)
|
78
|
-
expect(Puppet.features).to receive(:root?).and_return(true)
|
79
|
-
|
80
|
-
@class.new(abspath)
|
81
|
-
end
|
82
54
|
end
|
83
55
|
|
84
56
|
describe "with a JSON file" do
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'puppet/util/package/version/debian'
|
3
|
+
|
4
|
+
describe Puppet::Util::Package::Version::Debian do
|
5
|
+
context "when creating new version should fail" do
|
6
|
+
it "if is parsing symbols" do
|
7
|
+
expect { described_class.parse(:absent) }.to raise_error(described_class::ValidationFailure)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
context "when creating new version" do
|
11
|
+
it "is parsing basic version" do
|
12
|
+
v = described_class.parse('1:20191210.1-0ubuntu0.19.04.2')
|
13
|
+
expect(v.epoch).to eql(1)
|
14
|
+
expect(v.upstream_version).to eql('20191210.1')
|
15
|
+
expect(v.debian_revision).to eql('0ubuntu0.19.04.2')
|
16
|
+
end
|
17
|
+
|
18
|
+
it "is parsing no epoch basic version" do
|
19
|
+
v = described_class.parse('20191210.1-0ubuntu0.19.04.2')
|
20
|
+
expect(v.epoch).to eql(0)
|
21
|
+
expect(v.upstream_version).to eql('20191210.1')
|
22
|
+
expect(v.debian_revision).to eql('0ubuntu0.19.04.2')
|
23
|
+
end
|
24
|
+
|
25
|
+
it "is parsing no debian revision basic version" do
|
26
|
+
v = described_class.parse('2.42.1+19.04')
|
27
|
+
expect(v.epoch).to eql(0)
|
28
|
+
expect(v.upstream_version).to eql('2.42.1+19.04')
|
29
|
+
expect(v.debian_revision).to eql(nil)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "is parsing no epoch complex version" do
|
33
|
+
v = described_class.parse('3.32.2+git20190711-2ubuntu1~19.04.1')
|
34
|
+
expect(v.epoch).to eql(0)
|
35
|
+
expect(v.upstream_version).to eql('3.32.2+git20190711')
|
36
|
+
expect(v.debian_revision).to eql('2ubuntu1~19.04.1')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "is parsing even more complex version" do
|
40
|
+
v = described_class.parse('5:1.0.0+git-20190109.133f4c4-0ubuntu2')
|
41
|
+
expect(v.epoch).to eql(5)
|
42
|
+
expect(v.upstream_version).to eql('1.0.0+git-20190109.133f4c4')
|
43
|
+
expect(v.debian_revision).to eql('0ubuntu2')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
context "when comparing two versions" do
|
47
|
+
it "epoch has precedence" do
|
48
|
+
first = described_class.parse('9:99-99')
|
49
|
+
second = described_class.parse('10:01-01')
|
50
|
+
expect(first < second).to eql(true)
|
51
|
+
end
|
52
|
+
it "handles equals letters-only versions" do
|
53
|
+
lower = described_class.parse('abd-def')
|
54
|
+
higher = described_class.parse('abd-def')
|
55
|
+
expect(lower == higher).to eql(true)
|
56
|
+
end
|
57
|
+
it "shorter version is smaller" do
|
58
|
+
lower = described_class.parse('abd-de')
|
59
|
+
higher = described_class.parse('abd-def')
|
60
|
+
expect(lower < higher).to eql(true)
|
61
|
+
end
|
62
|
+
it "shorter version is smaller even with digits" do
|
63
|
+
lower = described_class.parse('a1b2d-d3e')
|
64
|
+
higher = described_class.parse('a1b2d-d3ef')
|
65
|
+
expect(lower < higher).to eql(true)
|
66
|
+
end
|
67
|
+
it "shorter version is smaller when number is less" do
|
68
|
+
lower = described_class.parse('a1b2d-d9')
|
69
|
+
higher = described_class.parse('a1b2d-d13')
|
70
|
+
expect(lower < higher).to eql(true)
|
71
|
+
end
|
72
|
+
it "handles ~ version" do
|
73
|
+
lower = described_class.parse('a1b2d-d10~')
|
74
|
+
higher = described_class.parse('a1b2d-d10')
|
75
|
+
expect(lower < higher).to eql(true)
|
76
|
+
end
|
77
|
+
it "handles letters versus -" do
|
78
|
+
lower = described_class.parse('a1b2d-d1a')
|
79
|
+
higher = described_class.parse('a1b2d-d1-')
|
80
|
+
expect(lower < higher).to eql(true)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|