puppet 3.3.2 → 3.4.0.rc1
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.
- data/CONTRIBUTING.md +22 -0
- data/Gemfile +11 -2
- data/README.md +13 -17
- data/README_DEVELOPER.md +1 -1
- data/Rakefile +1 -1
- data/examples/hiera/README.md +4 -4
- data/ext/debian/puppetmaster.init +1 -0
- data/ext/debian/rules +2 -5
- data/ext/nagios/check_puppet.rb +7 -7
- data/ext/osx/file_mapping.yaml +1 -1
- data/ext/osx/preflight.erb +34 -19
- data/ext/rack/{files/config.ru → config.ru} +0 -0
- data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
- data/ext/redhat/puppet.spec.erb +20 -2
- data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
- data/lib/hiera_puppet.rb +2 -2
- data/lib/puppet/agent.rb +1 -6
- data/lib/puppet/application.rb +15 -2
- data/lib/puppet/application/agent.rb +2 -7
- data/lib/puppet/application/apply.rb +8 -13
- data/lib/puppet/application/cert.rb +47 -7
- data/lib/puppet/application/device.rb +1 -6
- data/lib/puppet/application/face_base.rb +1 -1
- data/lib/puppet/application/filebucket.rb +1 -1
- data/lib/puppet/application/inspect.rb +3 -12
- data/lib/puppet/application/master.rb +1 -6
- data/lib/puppet/application/queue.rb +1 -6
- data/lib/puppet/application/resource.rb +2 -6
- data/lib/puppet/coercion.rb +11 -0
- data/lib/puppet/configurer.rb +5 -3
- data/lib/puppet/configurer/downloader.rb +3 -1
- data/lib/puppet/configurer/plugin_handler.rb +10 -0
- data/lib/puppet/confine.rb +80 -0
- data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
- data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
- data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
- data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
- data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
- data/lib/puppet/daemon.rb +2 -6
- data/lib/puppet/data_binding.rb +2 -30
- data/lib/puppet/defaults.rb +283 -174
- data/lib/puppet/error.rb +1 -0
- data/lib/puppet/external/nagios.rb +0 -2
- data/lib/puppet/external/nagios/base.rb +4 -3
- data/lib/puppet/external/nagios/grammar.ry +173 -112
- data/lib/puppet/external/nagios/parser.rb +233 -184
- data/lib/puppet/face/file/store.rb +1 -1
- data/lib/puppet/face/module/generate.rb +5 -7
- data/lib/puppet/face/parser.rb +12 -2
- data/lib/puppet/face/plugin.rb +6 -0
- data/lib/puppet/feature/base.rb +16 -0
- data/lib/puppet/feature/external_facts.rb +5 -0
- data/lib/puppet/feature/libuser.rb +1 -1
- data/lib/puppet/feature/msgpack.rb +1 -0
- data/lib/puppet/feature/rails.rb +2 -2
- data/lib/puppet/file_bucket/dipper.rb +8 -6
- data/lib/puppet/file_bucket/file.rb +17 -1
- data/lib/puppet/file_serving/base.rb +21 -10
- data/lib/puppet/file_serving/configuration.rb +5 -7
- data/lib/puppet/file_serving/configuration/parser.rb +1 -1
- data/lib/puppet/file_serving/content.rb +1 -1
- data/lib/puppet/file_serving/fileset.rb +3 -3
- data/lib/puppet/file_serving/metadata.rb +22 -18
- data/lib/puppet/file_serving/mount/file.rb +1 -1
- data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
- data/lib/puppet/file_system.rb +3 -0
- data/lib/puppet/file_system/file.rb +261 -0
- data/lib/puppet/file_system/file18.rb +5 -0
- data/lib/puppet/file_system/file19.rb +5 -0
- data/lib/puppet/file_system/file19windows.rb +113 -0
- data/lib/puppet/file_system/memory_file.rb +31 -0
- data/lib/puppet/file_system/tempfile.rb +20 -0
- data/lib/puppet/indirector/active_record.rb +1 -0
- data/lib/puppet/indirector/catalog/compiler.rb +28 -0
- data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
- data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
- data/lib/puppet/indirector/direct_file_server.rb +2 -2
- data/lib/puppet/indirector/facts/facter.rb +25 -0
- data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
- data/lib/puppet/indirector/indirection.rb +5 -1
- data/lib/puppet/indirector/json.rb +1 -1
- data/lib/puppet/indirector/key/ca.rb +4 -0
- data/lib/puppet/indirector/key/file.rb +7 -3
- data/lib/puppet/indirector/key/memory.rb +6 -0
- data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
- data/lib/puppet/indirector/request.rb +17 -11
- data/lib/puppet/indirector/resource/ral.rb +5 -0
- data/lib/puppet/indirector/resource/rest.rb +1 -0
- data/lib/puppet/indirector/resource/store_configs.rb +4 -0
- data/lib/puppet/indirector/rest.rb +2 -1
- data/lib/puppet/indirector/ssl_file.rb +7 -7
- data/lib/puppet/indirector/terminus.rb +4 -0
- data/lib/puppet/indirector/yaml.rb +3 -3
- data/lib/puppet/interface/documentation.rb +4 -11
- data/lib/puppet/module.rb +19 -6
- data/lib/puppet/module_tool/applications/builder.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -1
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/dependency.rb +7 -3
- data/lib/puppet/module_tool/metadata.rb +6 -2
- data/lib/puppet/module_tool/tar.rb +2 -1
- data/lib/puppet/module_tool/tar/gnu.rb +6 -2
- data/lib/puppet/module_tool/tar/mini.rb +2 -0
- data/lib/puppet/module_tool/tar/solaris.rb +2 -5
- data/lib/puppet/network/authconfig.rb +0 -2
- data/lib/puppet/network/authentication.rb +1 -1
- data/lib/puppet/network/authstore.rb +6 -7
- data/lib/puppet/network/format.rb +2 -3
- data/lib/puppet/network/format_handler.rb +16 -11
- data/lib/puppet/network/format_support.rb +14 -0
- data/lib/puppet/network/formats.rb +26 -0
- data/lib/puppet/network/http/connection.rb +8 -41
- data/lib/puppet/network/http/handler.rb +28 -32
- data/lib/puppet/network/http/webrick.rb +15 -22
- data/lib/puppet/network/http_pool.rb +43 -9
- data/lib/puppet/network/rights.rb +0 -0
- data/lib/puppet/node.rb +24 -8
- data/lib/puppet/node/environment.rb +18 -20
- data/lib/puppet/node/facts.rb +23 -6
- data/lib/puppet/parameter.rb +15 -2
- data/lib/puppet/parameter/boolean.rb +5 -0
- data/lib/puppet/parameter/value_collection.rb +6 -4
- data/lib/puppet/parser/ast/resourceparam.rb +2 -1
- data/lib/puppet/parser/compiler.rb +25 -9
- data/lib/puppet/parser/files.rb +1 -1
- data/lib/puppet/parser/functions.rb +12 -21
- data/lib/puppet/parser/functions/collect.rb +6 -35
- data/lib/puppet/parser/functions/contain.rb +26 -0
- data/lib/puppet/parser/functions/create_resources.rb +5 -0
- data/lib/puppet/parser/functions/extlookup.rb +2 -2
- data/lib/puppet/parser/functions/file.rb +1 -1
- data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
- data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
- data/lib/puppet/parser/functions/include.rb +18 -1
- data/lib/puppet/parser/functions/map.rb +44 -0
- data/lib/puppet/parser/functions/select.rb +6 -38
- data/lib/puppet/parser/lexer.rb +1 -1
- data/lib/puppet/parser/parser_support.rb +1 -1
- data/lib/puppet/parser/resource.rb +6 -45
- data/lib/puppet/parser/scope.rb +33 -2
- data/lib/puppet/parser/type_loader.rb +4 -60
- data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
- data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
- data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
- data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
- data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
- data/lib/puppet/pops/issues.rb +4 -0
- data/lib/puppet/pops/model/ast_transformer.rb +4 -1
- data/lib/puppet/pops/model/model_label_provider.rb +1 -1
- data/lib/puppet/pops/parser/egrammar.ra +5 -24
- data/lib/puppet/pops/parser/eparser.rb +859 -902
- data/lib/puppet/pops/parser/lexer.rb +48 -30
- data/lib/puppet/pops/parser/parser_support.rb +1 -1
- data/lib/puppet/pops/patterns.rb +4 -4
- data/lib/puppet/pops/utils.rb +1 -1
- data/lib/puppet/pops/validation/checker3_1.rb +25 -20
- data/lib/puppet/provider.rb +23 -6
- data/lib/puppet/provider/aixobject.rb +0 -0
- data/lib/puppet/provider/augeas/augeas.rb +21 -5
- data/lib/puppet/provider/confine.rb +5 -79
- data/lib/puppet/provider/cron/crontab.rb +0 -0
- data/lib/puppet/provider/exec.rb +9 -7
- data/lib/puppet/provider/exec/posix.rb +10 -1
- data/lib/puppet/provider/exec/windows.rb +1 -1
- data/lib/puppet/provider/file/posix.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +16 -5
- data/lib/puppet/provider/group/aix.rb +0 -0
- data/lib/puppet/provider/group/windows_adsi.rb +33 -1
- data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
- data/lib/puppet/provider/mailalias/aliases.rb +0 -0
- data/lib/puppet/provider/maillist/mailman.rb +0 -0
- data/lib/puppet/provider/mount/parsed.rb +0 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
- data/lib/puppet/provider/package/appdmg.rb +1 -1
- data/lib/puppet/provider/package/apple.rb +1 -1
- data/lib/puppet/provider/package/apt.rb +1 -1
- data/lib/puppet/provider/package/aptitude.rb +0 -0
- data/lib/puppet/provider/package/blastwave.rb +1 -1
- data/lib/puppet/provider/package/dpkg.rb +1 -1
- data/lib/puppet/provider/package/fink.rb +1 -1
- data/lib/puppet/provider/package/freebsd.rb +0 -0
- data/lib/puppet/provider/package/gem.rb +0 -0
- data/lib/puppet/provider/package/macports.rb +0 -0
- data/lib/puppet/provider/package/msi.rb +4 -10
- data/lib/puppet/provider/package/nim.rb +8 -8
- data/lib/puppet/provider/package/openbsd.rb +1 -1
- data/lib/puppet/provider/package/opkg.rb +0 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgutil.rb +1 -1
- data/lib/puppet/provider/package/ports.rb +0 -0
- data/lib/puppet/provider/package/rpm.rb +39 -3
- data/lib/puppet/provider/package/sun.rb +3 -3
- data/lib/puppet/provider/package/sunfreeware.rb +0 -0
- data/lib/puppet/provider/package/windows.rb +12 -19
- data/lib/puppet/provider/package/windows/package.rb +1 -1
- data/lib/puppet/provider/package/yum.rb +2 -2
- data/lib/puppet/provider/parsedfile.rb +0 -0
- data/lib/puppet/provider/port/parsed.rb +0 -0
- data/lib/puppet/provider/service/base.rb +0 -0
- data/lib/puppet/provider/service/bsd.rb +3 -3
- data/lib/puppet/provider/service/daemontools.rb +8 -8
- data/lib/puppet/provider/service/debian.rb +0 -0
- data/lib/puppet/provider/service/freebsd.rb +3 -3
- data/lib/puppet/provider/service/init.rb +5 -4
- data/lib/puppet/provider/service/launchd.rb +35 -24
- data/lib/puppet/provider/service/openbsd.rb +23 -0
- data/lib/puppet/provider/service/redhat.rb +0 -0
- data/lib/puppet/provider/service/runit.rb +3 -3
- data/lib/puppet/provider/service/smf.rb +0 -0
- data/lib/puppet/provider/service/src.rb +0 -0
- data/lib/puppet/provider/service/systemd.rb +0 -0
- data/lib/puppet/provider/service/upstart.rb +3 -3
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
- data/lib/puppet/provider/sshkey/parsed.rb +0 -0
- data/lib/puppet/provider/user/aix.rb +0 -0
- data/lib/puppet/provider/user/directoryservice.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +1 -1
- data/lib/puppet/provider/zone/solaris.rb +1 -1
- data/lib/puppet/rails/benchmark.rb +1 -1
- data/lib/puppet/reference/configuration.rb +1 -2
- data/lib/puppet/reference/indirection.rb +12 -14
- data/lib/puppet/relationship.rb +7 -4
- data/lib/puppet/reports.rb +2 -2
- data/lib/puppet/reports/rrdgraph.rb +1 -1
- data/lib/puppet/reports/store.rb +3 -3
- data/lib/puppet/reports/tagmail.rb +2 -2
- data/lib/puppet/resource.rb +66 -8
- data/lib/puppet/resource/catalog.rb +18 -25
- data/lib/puppet/resource/status.rb +10 -4
- data/lib/puppet/run.rb +6 -2
- data/lib/puppet/settings.rb +39 -119
- data/lib/puppet/settings/base_setting.rb +8 -9
- data/lib/puppet/settings/directory_setting.rb +8 -0
- data/lib/puppet/settings/file_setting.rb +35 -1
- data/lib/puppet/settings/priority_setting.rb +42 -0
- data/lib/puppet/ssl.rb +4 -0
- data/lib/puppet/ssl/certificate.rb +18 -0
- data/lib/puppet/ssl/certificate_authority.rb +101 -72
- data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
- data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
- data/lib/puppet/ssl/certificate_factory.rb +38 -12
- data/lib/puppet/ssl/certificate_request.rb +201 -47
- data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
- data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
- data/lib/puppet/ssl/host.rb +21 -10
- data/lib/puppet/ssl/inventory.rb +6 -10
- data/lib/puppet/ssl/key.rb +1 -1
- data/lib/puppet/ssl/oids.rb +78 -0
- data/lib/puppet/ssl/validator.rb +41 -97
- data/lib/puppet/ssl/validator/default_validator.rb +153 -0
- data/lib/puppet/ssl/validator/no_validator.rb +17 -0
- data/lib/puppet/status.rb +4 -0
- data/lib/puppet/test/test_helper.rb +5 -0
- data/lib/puppet/transaction.rb +13 -0
- data/lib/puppet/transaction/event.rb +8 -3
- data/lib/puppet/transaction/report.rb +6 -2
- data/lib/puppet/transaction/resource_harness.rb +173 -115
- data/lib/puppet/type.rb +30 -13
- data/lib/puppet/type/augeas.rb +12 -46
- data/lib/puppet/type/component.rb +1 -7
- data/lib/puppet/type/cron.rb +0 -0
- data/lib/puppet/type/exec.rb +13 -1
- data/lib/puppet/type/file.rb +19 -10
- data/lib/puppet/type/file/checksum.rb +0 -0
- data/lib/puppet/type/file/content.rb +3 -0
- data/lib/puppet/type/file/ensure.rb +33 -15
- data/lib/puppet/type/file/group.rb +0 -0
- data/lib/puppet/type/file/mode.rb +6 -2
- data/lib/puppet/type/file/owner.rb +0 -0
- data/lib/puppet/type/file/source.rb +65 -14
- data/lib/puppet/type/file/target.rb +6 -6
- data/lib/puppet/type/file/type.rb +0 -0
- data/lib/puppet/type/filebucket.rb +0 -0
- data/lib/puppet/type/group.rb +18 -0
- data/lib/puppet/type/host.rb +0 -0
- data/lib/puppet/type/k5login.rb +4 -4
- data/lib/puppet/type/mailalias.rb +0 -0
- data/lib/puppet/type/maillist.rb +0 -0
- data/lib/puppet/type/mount.rb +15 -1
- data/lib/puppet/type/package.rb +7 -1
- data/lib/puppet/type/port.rb +0 -0
- data/lib/puppet/type/schedule.rb +9 -4
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/sshkey.rb +0 -0
- data/lib/puppet/type/tidy.rb +1 -1
- data/lib/puppet/type/user.rb +3 -0
- data/lib/puppet/type/yumrepo.rb +8 -6
- data/lib/puppet/type/zpool.rb +0 -0
- data/lib/puppet/util.rb +4 -31
- data/lib/puppet/util/adsi.rb +73 -17
- data/lib/puppet/util/autoload.rb +3 -3
- data/lib/puppet/util/backups.rb +4 -4
- data/lib/puppet/util/cacher.rb +7 -13
- data/lib/puppet/util/checksums.rb +2 -2
- data/lib/puppet/util/classgen.rb +3 -1
- data/lib/puppet/util/colors.rb +1 -0
- data/lib/puppet/util/command_line.rb +5 -0
- data/lib/puppet/util/docs.rb +33 -27
- data/lib/puppet/util/execution.rb +42 -18
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/instance_loader.rb +2 -2
- data/lib/puppet/util/instrumentation.rb +23 -42
- data/lib/puppet/util/instrumentation/data.rb +11 -4
- data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
- data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
- data/lib/puppet/util/instrumentation/listener.rb +15 -8
- data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
- data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
- data/lib/puppet/util/limits.rb +12 -0
- data/lib/puppet/util/lockfile.rb +2 -2
- data/lib/puppet/util/log.rb +14 -6
- data/lib/puppet/util/log/destinations.rb +23 -1
- data/lib/puppet/util/metric.rb +9 -3
- data/lib/puppet/util/monkey_patches.rb +7 -2
- data/lib/puppet/util/network_device/config.rb +1 -1
- data/lib/puppet/util/plugins.rb +1 -1
- data/lib/puppet/util/posix.rb +0 -0
- data/lib/puppet/util/profiler.rb +7 -2
- data/lib/puppet/util/provider_features.rb +2 -2
- data/lib/puppet/util/rdoc.rb +28 -30
- data/lib/puppet/util/rdoc/code_objects.rb +75 -25
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +12 -487
- data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
- data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/resource_template.rb +1 -1
- data/lib/puppet/util/selinux.rb +1 -1
- data/lib/puppet/util/storage.rb +2 -2
- data/lib/puppet/util/suidmanager.rb +1 -1
- data/lib/puppet/util/tag_set.rb +29 -0
- data/lib/puppet/util/tagging.rb +8 -24
- data/lib/puppet/util/watched_file.rb +1 -1
- data/lib/puppet/util/watcher.rb +1 -1
- data/lib/puppet/util/windows.rb +3 -0
- data/lib/puppet/util/windows/access_control_entry.rb +84 -0
- data/lib/puppet/util/windows/access_control_list.rb +106 -0
- data/lib/puppet/util/windows/file.rb +213 -0
- data/lib/puppet/util/windows/process.rb +199 -0
- data/lib/puppet/util/windows/root_certs.rb +52 -37
- data/lib/puppet/util/windows/security.rb +270 -245
- data/lib/puppet/util/windows/security_descriptor.rb +62 -0
- data/lib/puppet/util/windows/sid.rb +26 -4
- data/lib/puppet/version.rb +2 -2
- data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
- data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
- data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
- data/spec/fixtures/unit/module/trailing-comma.json +24 -0
- data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
- data/spec/integration/application/apply_spec.rb +1 -1
- data/spec/integration/application/doc_spec.rb +1 -1
- data/spec/integration/configurer_spec.rb +4 -2
- data/spec/integration/data_binding.rb +100 -0
- data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
- data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
- data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
- data/spec/integration/node/facts_spec.rb +1 -1
- data/spec/integration/node_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +90 -0
- data/spec/integration/parser/parser_spec.rb +2 -2
- data/spec/integration/provider/cron/crontab_spec.rb +3 -5
- data/spec/integration/resource/catalog_spec.rb +1 -1
- data/spec/integration/ssl/autosign_spec.rb +90 -0
- data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
- data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
- data/spec/integration/ssl/host_spec.rb +1 -1
- data/spec/integration/transaction_spec.rb +13 -13
- data/spec/integration/type/exec_spec.rb +2 -2
- data/spec/integration/type/file_spec.rb +287 -45
- data/spec/integration/type/tidy_spec.rb +3 -3
- data/spec/integration/util/rdoc/parser_spec.rb +236 -35
- data/spec/integration/util/settings_spec.rb +1 -1
- data/spec/integration/util/windows/process_spec.rb +22 -0
- data/spec/integration/util/windows/security_spec.rb +316 -106
- data/spec/lib/matchers/containment_matchers.rb +52 -0
- data/spec/lib/puppet_spec/compiler.rb +6 -0
- data/spec/lib/puppet_spec/files.rb +20 -21
- data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
- data/spec/shared_behaviours/file_server_terminus.rb +2 -2
- data/spec/shared_contexts/platform.rb +1 -0
- data/spec/spec_helper.rb +13 -1
- data/spec/unit/agent_spec.rb +0 -12
- data/spec/unit/application/agent_spec.rb +4 -4
- data/spec/unit/application/apply_spec.rb +18 -2
- data/spec/unit/application/cert_spec.rb +8 -6
- data/spec/unit/application/device_spec.rb +1 -1
- data/spec/unit/application/filebucket_spec.rb +1 -1
- data/spec/unit/application/inspect_spec.rb +1 -1
- data/spec/unit/application_spec.rb +24 -0
- data/spec/unit/configurer/downloader_spec.rb +8 -7
- data/spec/unit/configurer/fact_handler_spec.rb +23 -0
- data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
- data/spec/unit/configurer_spec.rb +15 -5
- data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
- data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
- data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
- data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
- data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
- data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
- data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
- data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
- data/spec/unit/face/parser_spec.rb +54 -0
- data/spec/unit/file_bucket/dipper_spec.rb +2 -2
- data/spec/unit/file_serving/base_spec.rb +32 -9
- data/spec/unit/file_serving/configuration_spec.rb +7 -7
- data/spec/unit/file_serving/content_spec.rb +12 -7
- data/spec/unit/file_serving/fileset_spec.rb +57 -27
- data/spec/unit/file_serving/metadata_spec.rb +74 -12
- data/spec/unit/file_serving/mount/file_spec.rb +10 -10
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
- data/spec/unit/file_system/file_spec.rb +486 -0
- data/spec/unit/file_system/tempfile_spec.rb +48 -0
- data/spec/unit/graph/relationship_graph_spec.rb +0 -6
- data/spec/unit/hiera_puppet_spec.rb +2 -2
- data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
- data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
- data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
- data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
- data/spec/unit/indirector/facts/facter_spec.rb +33 -0
- data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
- data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
- data/spec/unit/indirector/file_server_spec.rb +4 -4
- data/spec/unit/indirector/json_spec.rb +4 -4
- data/spec/unit/indirector/key/file_spec.rb +13 -14
- data/spec/unit/indirector/resource/ral_spec.rb +7 -0
- data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
- data/spec/unit/indirector/rest_spec.rb +7 -3
- data/spec/unit/indirector/ssl_file_spec.rb +14 -17
- data/spec/unit/indirector/yaml_spec.rb +4 -4
- data/spec/unit/module_spec.rb +43 -15
- data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
- data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
- data/spec/unit/module_tool/tar_spec.rb +45 -0
- data/spec/unit/network/authconfig_spec.rb +2 -1
- data/spec/unit/network/authentication_spec.rb +2 -2
- data/spec/unit/network/format_handler_spec.rb +2 -2
- data/spec/unit/network/formats_spec.rb +24 -0
- data/spec/unit/network/http/connection_spec.rb +76 -199
- data/spec/unit/network/http/handler_spec.rb +33 -34
- data/spec/unit/network/http_pool_spec.rb +8 -5
- data/spec/unit/node/environment_spec.rb +76 -90
- data/spec/unit/node/facts_spec.rb +20 -3
- data/spec/unit/node_spec.rb +43 -0
- data/spec/unit/parameter/boolean_spec.rb +22 -12
- data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
- data/spec/unit/parser/compiler_spec.rb +103 -35
- data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
- data/spec/unit/parser/files_spec.rb +11 -11
- data/spec/unit/parser/functions/contain_spec.rb +185 -0
- data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
- data/spec/unit/parser/functions/generate_spec.rb +1 -1
- data/spec/unit/parser/functions_spec.rb +2 -2
- data/spec/unit/parser/lexer_spec.rb +1 -1
- data/spec/unit/parser/methods/each_spec.rb +1 -1
- data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
- data/spec/unit/parser/methods/map_spec.rb +95 -0
- data/spec/unit/parser/methods/reduce_spec.rb +12 -11
- data/spec/unit/parser/methods/shared.rb +5 -5
- data/spec/unit/parser/methods/slice_spec.rb +13 -13
- data/spec/unit/parser/parser_spec.rb +1 -1
- data/spec/unit/parser/resource/param_spec.rb +44 -0
- data/spec/unit/parser/resource_spec.rb +16 -15
- data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
- data/spec/unit/pops/parser/lexer_spec.rb +22 -5
- data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
- data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
- data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
- data/spec/unit/pops/validator/validator_spec.rb +31 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
- data/spec/unit/provider/exec/posix_spec.rb +8 -3
- data/spec/unit/provider/file/posix_spec.rb +2 -2
- data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
- data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
- data/spec/unit/provider/package/apt_spec.rb +1 -1
- data/spec/unit/provider/package/msi_spec.rb +15 -42
- data/spec/unit/provider/package/openbsd_spec.rb +3 -3
- data/spec/unit/provider/package/rpm_spec.rb +56 -13
- data/spec/unit/provider/package/windows_spec.rb +15 -19
- data/spec/unit/provider/service/base_spec.rb +1 -1
- data/spec/unit/provider/service/daemontools_spec.rb +18 -8
- data/spec/unit/provider/service/freebsd_spec.rb +3 -3
- data/spec/unit/provider/service/gentoo_spec.rb +5 -2
- data/spec/unit/provider/service/init_spec.rb +17 -17
- data/spec/unit/provider/service/launchd_spec.rb +76 -23
- data/spec/unit/provider/service/openbsd_spec.rb +125 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -1
- data/spec/unit/provider/service/runit_spec.rb +12 -5
- data/spec/unit/provider/service/upstart_spec.rb +4 -4
- data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
- data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
- data/spec/unit/provider/zone/solaris_spec.rb +1 -1
- data/spec/unit/provider_spec.rb +2 -2
- data/spec/unit/reports/http_spec.rb +19 -34
- data/spec/unit/reports/store_spec.rb +2 -2
- data/spec/unit/resource/catalog_spec.rb +81 -11
- data/spec/unit/resource/status_spec.rb +11 -1
- data/spec/unit/resource/type_spec.rb +30 -1
- data/spec/unit/resource_spec.rb +40 -4
- data/spec/unit/settings/file_setting_spec.rb +2 -2
- data/spec/unit/settings/path_setting_spec.rb +2 -2
- data/spec/unit/settings/priority_setting_spec.rb +66 -0
- data/spec/unit/settings_spec.rb +16 -31
- data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
- data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
- data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
- data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
- data/spec/unit/ssl/certificate_request_spec.rb +103 -0
- data/spec/unit/ssl/certificate_spec.rb +31 -18
- data/spec/unit/ssl/host_spec.rb +34 -8
- data/spec/unit/ssl/inventory_spec.rb +27 -62
- data/spec/unit/ssl/key_spec.rb +4 -4
- data/spec/unit/ssl/oids_spec.rb +48 -0
- data/spec/unit/ssl/validator_spec.rb +49 -6
- data/spec/unit/status_spec.rb +9 -0
- data/spec/unit/transaction/event_spec.rb +1 -9
- data/spec/unit/transaction/report_spec.rb +20 -1
- data/spec/unit/transaction/resource_harness_spec.rb +60 -210
- data/spec/unit/transaction_spec.rb +54 -8
- data/spec/unit/type/component_spec.rb +2 -2
- data/spec/unit/type/exec_spec.rb +14 -7
- data/spec/unit/type/file/content_spec.rb +13 -2
- data/spec/unit/type/file/ctime_spec.rb +1 -1
- data/spec/unit/type/file/mode_spec.rb +48 -2
- data/spec/unit/type/file/mtime_spec.rb +1 -1
- data/spec/unit/type/file/source_spec.rb +177 -7
- data/spec/unit/type/file_spec.rb +63 -71
- data/spec/unit/type/group_spec.rb +20 -0
- data/spec/unit/type/k5login_spec.rb +3 -3
- data/spec/unit/type/mount_spec.rb +53 -0
- data/spec/unit/type/nagios_spec.rb +216 -0
- data/spec/unit/type/package_spec.rb +7 -1
- data/spec/unit/type/schedule_spec.rb +6 -0
- data/spec/unit/type/service_spec.rb +3 -3
- data/spec/unit/type/tidy_spec.rb +14 -14
- data/spec/unit/type/user_spec.rb +9 -0
- data/spec/unit/type_spec.rb +86 -4
- data/spec/unit/util/adsi_spec.rb +120 -12
- data/spec/unit/util/autoload_spec.rb +14 -14
- data/spec/unit/util/backups_spec.rb +29 -21
- data/spec/unit/util/checksums_spec.rb +2 -1
- data/spec/unit/util/command_line_spec.rb +41 -0
- data/spec/unit/util/docs_spec.rb +91 -0
- data/spec/unit/util/execution_spec.rb +26 -2
- data/spec/unit/util/filetype_spec.rb +7 -7
- data/spec/unit/util/lockfile_spec.rb +2 -2
- data/spec/unit/util/log/destinations_spec.rb +32 -0
- data/spec/unit/util/monkey_patches_spec.rb +41 -0
- data/spec/unit/util/pidlock_spec.rb +6 -6
- data/spec/unit/util/rdoc/parser_spec.rb +15 -13
- data/spec/unit/util/rdoc_spec.rb +18 -24
- data/spec/unit/util/resource_template_spec.rb +3 -3
- data/spec/unit/util/selinux_spec.rb +4 -2
- data/spec/unit/util/storage_spec.rb +4 -4
- data/spec/unit/util/suidmanager_spec.rb +7 -0
- data/spec/unit/util/tag_set_spec.rb +46 -0
- data/spec/unit/util/tagging_spec.rb +82 -45
- data/spec/unit/util/watcher_spec.rb +4 -1
- data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
- data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
- data/spec/unit/util/windows/root_certs_spec.rb +10 -8
- data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
- data/spec/unit/util/windows/sid_spec.rb +69 -0
- data/spec/unit/util_spec.rb +7 -7
- data/tasks/ci.rake +17 -36
- metadata +2811 -2746
- checksums.yaml +0 -7
- data/examples/mac_automount.pp +0 -16
- data/examples/mcx_dock_absent.pp +0 -4
- data/examples/mcx_dock_default.pp +0 -118
- data/examples/mcx_dock_full.pp +0 -125
- data/examples/mcx_dock_invalid.pp +0 -9
- data/examples/mcx_nogroup.pp +0 -118
- data/examples/mcx_notexists_absent.pp +0 -4
- data/ext/rack/README +0 -58
- data/ext/rack/manifest.pp +0 -59
- data/lib/puppet/external/lock.rb +0 -63
- data/lib/puppet/indirector/hiera.rb +0 -39
- data/lib/puppet/parser/functions/foreach.rb +0 -95
- data/spec/integration/network/server/webrick_spec.rb +0 -76
- data/spec/integration/parser/functions_spec.rb +0 -16
- data/spec/unit/indirector/hiera_spec.rb +0 -154
- data/spec/unit/parser/methods/collect_spec.rb +0 -153
- data/spec/unit/parser/methods/foreach_spec.rb +0 -91
- data/spec/unit/parser/methods/reject_spec.rb +0 -73
- data/spec/unit/resource/resource_type.json +0 -34
@@ -51,7 +51,7 @@ describe Puppet::Type.type(:package) do
|
|
51
51
|
:clear => nil,
|
52
52
|
:validate_source => nil
|
53
53
|
)
|
54
|
-
Puppet::Type.type(:package).defaultprovider.
|
54
|
+
Puppet::Type.type(:package).defaultprovider.stubs(:new).returns(@provider)
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should support :present as a value to :ensure" do
|
@@ -100,6 +100,12 @@ describe Puppet::Type.type(:package) do
|
|
100
100
|
it "should accept any string as an argument to :source" do
|
101
101
|
expect { Puppet::Type.type(:package).new(:name => "yay", :source => "stuff") }.to_not raise_error
|
102
102
|
end
|
103
|
+
|
104
|
+
it "should not accept a non-string name" do
|
105
|
+
expect do
|
106
|
+
Puppet::Type.type(:package).new(:name => ["error"])
|
107
|
+
end.to raise_error(Puppet::ResourceError, /Name must be a String/)
|
108
|
+
end
|
103
109
|
end
|
104
110
|
|
105
111
|
module PackageEvaluationTesting
|
@@ -62,6 +62,12 @@ describe Puppet::Type.type(:schedule) do
|
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
it "should not produce default schedules when default_schedules is false" do
|
66
|
+
Puppet[:default_schedules] = false
|
67
|
+
schedules = Puppet::Type.type(:schedule).mkdefaultschedules
|
68
|
+
schedules.must have_exactly(0).items
|
69
|
+
end
|
70
|
+
|
65
71
|
it "should produce a schedule named puppet with a period of hourly and a repeat of 2" do
|
66
72
|
schedules = Puppet::Type.type(:schedule).mkdefaultschedules
|
67
73
|
schedules.find { |s|
|
@@ -120,14 +120,14 @@ describe Puppet::Type.type(:service), "when validating attribute values" do
|
|
120
120
|
end
|
121
121
|
|
122
122
|
it "should split paths on '#{File::PATH_SEPARATOR}'" do
|
123
|
-
|
123
|
+
Puppet::FileSystem::File.stubs(:exist?).returns(true)
|
124
124
|
FileTest.stubs(:directory?).returns(true)
|
125
125
|
svc = Puppet::Type.type(:service).new(:name => "yay", :path => "/one/two#{File::PATH_SEPARATOR}/three/four")
|
126
126
|
svc[:path].should == %w{/one/two /three/four}
|
127
127
|
end
|
128
128
|
|
129
129
|
it "should accept arrays of paths joined by '#{File::PATH_SEPARATOR}'" do
|
130
|
-
|
130
|
+
Puppet::FileSystem::File.stubs(:exist?).returns(true)
|
131
131
|
FileTest.stubs(:directory?).returns(true)
|
132
132
|
svc = Puppet::Type.type(:service).new(:name => "yay", :path => ["/one#{File::PATH_SEPARATOR}/two", "/three#{File::PATH_SEPARATOR}/four"])
|
133
133
|
svc[:path].should == %w{/one /two /three /four}
|
@@ -137,7 +137,7 @@ end
|
|
137
137
|
describe Puppet::Type.type(:service), "when setting default attribute values" do
|
138
138
|
it "should default to the provider's default path if one is available" do
|
139
139
|
FileTest.stubs(:directory?).returns(true)
|
140
|
-
|
140
|
+
Puppet::FileSystem::File.stubs(:exist?).returns(true)
|
141
141
|
|
142
142
|
Puppet::Type.type(:service).defaultprovider.stubs(:respond_to?).returns(true)
|
143
143
|
Puppet::Type.type(:service).defaultprovider.stubs(:defpath).returns("testing")
|
data/spec/unit/type/tidy_spec.rb
CHANGED
@@ -10,17 +10,15 @@ describe tidy do
|
|
10
10
|
before do
|
11
11
|
@basepath = make_absolute("/what/ever")
|
12
12
|
Puppet.settings.stubs(:use)
|
13
|
-
|
14
|
-
# for an unknown reason some of these specs fails when run individually
|
15
|
-
# with a failed expectation on File.lstat in the autoloader.
|
16
|
-
File.stubs(:lstat)
|
17
13
|
end
|
18
14
|
|
19
15
|
it "should use :lstat when stating a file" do
|
20
|
-
|
16
|
+
path = '/foo/bar'
|
17
|
+
resource = tidy.new :path => path, :age => "1d"
|
21
18
|
stat = mock 'stat'
|
22
|
-
|
23
|
-
|
19
|
+
stub_file = stub(path, :lstat => stat)
|
20
|
+
Puppet::FileSystem::File.expects(:new).with(path).returns stub_file
|
21
|
+
resource.stat(path).should == stat
|
24
22
|
end
|
25
23
|
|
26
24
|
[:age, :size, :path, :matches, :type, :recurse, :rmdirs].each do |param|
|
@@ -130,7 +128,8 @@ describe tidy do
|
|
130
128
|
before do
|
131
129
|
@tidy = Puppet::Type.type(:tidy).new :path => @basepath
|
132
130
|
@stat = stub 'stat', :ftype => "directory"
|
133
|
-
|
131
|
+
@stub_file = stub(@basepath, :lstat => @stat)
|
132
|
+
Puppet::FileSystem::File.stubs(:new).with(@basepath).returns @stub_file
|
134
133
|
end
|
135
134
|
|
136
135
|
describe "and generating files" do
|
@@ -160,7 +159,7 @@ describe tidy do
|
|
160
159
|
end
|
161
160
|
|
162
161
|
it "should do nothing if the targeted file does not exist" do
|
163
|
-
|
162
|
+
@stub_file.expects(:lstat).raises Errno::ENOENT
|
164
163
|
|
165
164
|
@tidy.generate.should == []
|
166
165
|
end
|
@@ -311,32 +310,33 @@ describe tidy do
|
|
311
310
|
before do
|
312
311
|
@tidy = Puppet::Type.type(:tidy).new :path => @basepath
|
313
312
|
@stat = stub 'stat', :ftype => "file"
|
314
|
-
|
313
|
+
@stub_file = stub(@basepath, :lstat => @stat)
|
314
|
+
Puppet::FileSystem::File.expects(:new).with(@basepath).returns @stub_file
|
315
315
|
end
|
316
316
|
|
317
317
|
it "should not try to recurse if the file does not exist" do
|
318
318
|
@tidy[:recurse] = true
|
319
319
|
|
320
|
-
|
320
|
+
@stub_file.stubs(:lstat).returns nil
|
321
321
|
|
322
322
|
@tidy.generate.should == []
|
323
323
|
end
|
324
324
|
|
325
325
|
it "should not be tidied if the file does not exist" do
|
326
|
-
|
326
|
+
@stub_file.expects(:lstat).raises Errno::ENOENT
|
327
327
|
|
328
328
|
@tidy.should_not be_tidy(@basepath)
|
329
329
|
end
|
330
330
|
|
331
331
|
it "should not be tidied if the user has no access to the file" do
|
332
|
-
|
332
|
+
@stub_file.expects(:lstat).raises Errno::EACCES
|
333
333
|
|
334
334
|
@tidy.should_not be_tidy(@basepath)
|
335
335
|
end
|
336
336
|
|
337
337
|
it "should not be tidied if it is a directory and rmdirs is set to false" do
|
338
338
|
stat = mock 'stat', :ftype => "directory"
|
339
|
-
|
339
|
+
@stub_file.expects(:lstat).returns stat
|
340
340
|
|
341
341
|
@tidy.should_not be_tidy(@basepath)
|
342
342
|
end
|
data/spec/unit/type/user_spec.rb
CHANGED
@@ -339,6 +339,15 @@ describe Puppet::Type.type(:user) do
|
|
339
339
|
end
|
340
340
|
end
|
341
341
|
|
342
|
+
describe "when managing comment on Ruby 1.9", :if => String.respond_to?(:encode) do
|
343
|
+
it "should force value encoding to ASCII-8BIT" do
|
344
|
+
value = 'abcd'.encode(Encoding::UTF_8)
|
345
|
+
comment = described_class.new(:name => 'foo', :comment => value)
|
346
|
+
comment[:comment].should == 'abcd'
|
347
|
+
comment[:comment].encoding.should == Encoding::ASCII_8BIT
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
342
351
|
describe "when manages_solaris_rbac is enabled" do
|
343
352
|
it "should support a :role value for ensure" do
|
344
353
|
expect { described_class.new(:name => 'foo', :ensure => :role) }.to_not raise_error
|
data/spec/unit/type_spec.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
require 'spec_helper'
|
3
|
-
|
3
|
+
require 'puppet_spec/compiler'
|
4
4
|
|
5
5
|
describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
6
6
|
include PuppetSpec::Files
|
7
|
+
include PuppetSpec::Compiler
|
7
8
|
|
8
9
|
it "should be Comparable" do
|
9
10
|
a = Puppet::Type.type(:notify).new(:name => "a")
|
@@ -63,6 +64,28 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
63
64
|
end
|
64
65
|
end
|
65
66
|
|
67
|
+
it "can retrieve all set parameters" do
|
68
|
+
resource = Puppet::Type.type(:mount).new(:name => "foo", :fstype => "bar", :pass => 1, :ensure => :present, :tag => 'foo')
|
69
|
+
params = resource.parameters_with_value
|
70
|
+
[:name, :provider, :ensure, :fstype, :pass, :dump, :target, :loglevel, :tag].each do |name|
|
71
|
+
params.should be_include(resource.parameter(name))
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
it "can not return any `nil` values when retrieving all set parameters" do
|
76
|
+
resource = Puppet::Type.type(:mount).new(:name => "foo", :fstype => "bar", :pass => 1, :ensure => :present, :tag => 'foo')
|
77
|
+
params = resource.parameters_with_value
|
78
|
+
params.should_not be_include(nil)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "can return an iterator for all set parameters" do
|
82
|
+
resource = Puppet::Type.type(:notify).new(:name=>'foo',:message=>'bar',:tag=>'baz',:require=> "File['foo']")
|
83
|
+
params = [:name, :message, :withpath, :loglevel, :tag, :require]
|
84
|
+
resource.eachparameter { |param|
|
85
|
+
params.should be_include(param.to_s.to_sym)
|
86
|
+
}
|
87
|
+
end
|
88
|
+
|
66
89
|
it "should have a method for setting default values for resources" do
|
67
90
|
Puppet::Type.type(:mount).new(:name => "foo").must respond_to(:set_default)
|
68
91
|
end
|
@@ -109,6 +132,36 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
109
132
|
Puppet::Type.type(:mount).new(:name => "foo").version.should == 0
|
110
133
|
end
|
111
134
|
|
135
|
+
it "reports the correct path even after path is used during setup of the type" do
|
136
|
+
Puppet::Type.newtype(:testing) do
|
137
|
+
newparam(:name) do
|
138
|
+
isnamevar
|
139
|
+
validate do |value|
|
140
|
+
path # forces the computation of the path
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
ral = compile_to_ral(<<-MANIFEST)
|
146
|
+
class something {
|
147
|
+
testing { something: }
|
148
|
+
}
|
149
|
+
include something
|
150
|
+
MANIFEST
|
151
|
+
|
152
|
+
ral.resource("Testing[something]").path.should == "/Stage[main]/Something/Testing[something]"
|
153
|
+
end
|
154
|
+
|
155
|
+
context "alias metaparam" do
|
156
|
+
it "creates a new name that can be used for resource references" do
|
157
|
+
ral = compile_to_ral(<<-MANIFEST)
|
158
|
+
notify { a: alias => c }
|
159
|
+
MANIFEST
|
160
|
+
|
161
|
+
expect(ral.resource("Notify[a]")).to eq(ral.resource("Notify[c]"))
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
112
165
|
context "resource attributes" do
|
113
166
|
let(:resource) {
|
114
167
|
resource = Puppet::Type.type(:mount).new(:name => "foo")
|
@@ -123,7 +176,8 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
123
176
|
end
|
124
177
|
|
125
178
|
it "should have tags" do
|
126
|
-
resource.
|
179
|
+
expect(resource).to be_tagged("mount")
|
180
|
+
expect(resource).to be_tagged("foo")
|
127
181
|
end
|
128
182
|
|
129
183
|
it "should have a path" do
|
@@ -165,13 +219,19 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
165
219
|
@resource.event.default_log_level.should == :warning
|
166
220
|
end
|
167
221
|
|
168
|
-
{:file => "/my/file", :line => 50
|
222
|
+
{:file => "/my/file", :line => 50}.each do |attr, value|
|
169
223
|
it "should set the #{attr}" do
|
170
224
|
@resource.stubs(attr).returns value
|
171
225
|
@resource.event.send(attr).should == value
|
172
226
|
end
|
173
227
|
end
|
174
228
|
|
229
|
+
it "should set the tags" do
|
230
|
+
@resource.tag("abc", "def")
|
231
|
+
@resource.event.should be_tagged("abc")
|
232
|
+
@resource.event.should be_tagged("def")
|
233
|
+
end
|
234
|
+
|
175
235
|
it "should allow specification of event attributes" do
|
176
236
|
@resource.event(:status => "noop").status.should == "noop"
|
177
237
|
end
|
@@ -470,6 +530,28 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
470
530
|
end
|
471
531
|
end
|
472
532
|
|
533
|
+
describe "when #finish is called on a type" do
|
534
|
+
let(:post_hook_type) do
|
535
|
+
Puppet::Type.newtype(:finish_test) do
|
536
|
+
newparam(:name) { isnamevar }
|
537
|
+
|
538
|
+
newparam(:post) do
|
539
|
+
def post_compile
|
540
|
+
raise "post_compile hook ran"
|
541
|
+
end
|
542
|
+
end
|
543
|
+
end
|
544
|
+
end
|
545
|
+
|
546
|
+
let(:post_hook_resource) do
|
547
|
+
post_hook_type.new(:name => 'foo',:post => 'fake_value')
|
548
|
+
end
|
549
|
+
|
550
|
+
it "should call #post_compile on parameters that implement it" do
|
551
|
+
expect { post_hook_resource.finish }.to raise_error(RuntimeError, "post_compile hook ran")
|
552
|
+
end
|
553
|
+
end
|
554
|
+
|
473
555
|
it "should have a class method for converting a hash into a Puppet::Resource instance" do
|
474
556
|
Puppet::Type.type(:mount).must respond_to(:hash2resource)
|
475
557
|
end
|
@@ -588,7 +670,7 @@ describe Puppet::Type, :unless => Puppet.features.microsoft_windows? do
|
|
588
670
|
resource.should be_a Puppet::Resource
|
589
671
|
resource[:fstype].should == 15
|
590
672
|
resource[:remounts].should == :true
|
591
|
-
resource.tags.should
|
673
|
+
resource.tags.should == Puppet::Util::TagSet.new(%w{foo bar baz mount})
|
592
674
|
end
|
593
675
|
end
|
594
676
|
|
data/spec/unit/util/adsi_spec.rb
CHANGED
@@ -52,13 +52,48 @@ describe Puppet::Util::ADSI do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
describe ".sid_uri", :if => Puppet.features.microsoft_windows? do
|
56
|
+
it "should raise an error when the input is not a SID object" do
|
57
|
+
[Object.new, {}, 1, :symbol, '', nil].each do |input|
|
58
|
+
expect {
|
59
|
+
Puppet::Util::ADSI.sid_uri(input)
|
60
|
+
}.to raise_error(Puppet::Error, /Must use a valid SID object/)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should return a SID uri for a well-known SID (SYSTEM)" do
|
65
|
+
sid = Win32::Security::SID.new('SYSTEM')
|
66
|
+
Puppet::Util::ADSI.sid_uri(sid).should == 'WinNT://S-1-5-18'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
55
70
|
describe Puppet::Util::ADSI::User do
|
56
71
|
let(:username) { 'testuser' }
|
72
|
+
let(:domain) { 'DOMAIN' }
|
73
|
+
let(:domain_username) { "#{domain}\\#{username}"}
|
57
74
|
|
58
75
|
it "should generate the correct URI" do
|
59
76
|
Puppet::Util::ADSI::User.uri(username).should == "WinNT://./#{username},user"
|
60
77
|
end
|
61
78
|
|
79
|
+
it "should generate the correct URI for a user with a domain" do
|
80
|
+
Puppet::Util::ADSI::User.uri(username, domain).should == "WinNT://#{domain}/#{username},user"
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should be able to parse a username without a domain" do
|
84
|
+
Puppet::Util::ADSI::User.parse_name(username).should == [username, '.']
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should be able to parse a username with a domain" do
|
88
|
+
Puppet::Util::ADSI::User.parse_name(domain_username).should == [username, domain]
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should raise an error with a username that contains a /" do
|
92
|
+
expect {
|
93
|
+
Puppet::Util::ADSI::User.parse_name("#{domain}/#{username}")
|
94
|
+
}.to raise_error(Puppet::Error, /Value must be in DOMAIN\\user style syntax/)
|
95
|
+
end
|
96
|
+
|
62
97
|
it "should be able to create a user" do
|
63
98
|
adsi_user = stub('adsi')
|
64
99
|
|
@@ -76,6 +111,11 @@ describe Puppet::Util::ADSI do
|
|
76
111
|
Puppet::Util::ADSI::User.exists?(username).should be_true
|
77
112
|
end
|
78
113
|
|
114
|
+
it "should be able to check the existence of a domain user" do
|
115
|
+
Puppet::Util::ADSI.expects(:connect).with("WinNT://#{domain}/#{username},user").returns connection
|
116
|
+
Puppet::Util::ADSI::User.exists?(domain_username).should be_true
|
117
|
+
end
|
118
|
+
|
79
119
|
it "should be able to delete a user" do
|
80
120
|
connection.expects(:Delete).with('user', username)
|
81
121
|
|
@@ -99,7 +139,8 @@ describe Puppet::Util::ADSI do
|
|
99
139
|
end
|
100
140
|
|
101
141
|
describe "an instance" do
|
102
|
-
let(:adsi_user) { stub
|
142
|
+
let(:adsi_user) { stub('user', :objectSID => []) }
|
143
|
+
let(:sid) { stub(:account => username, :domain => 'testcomputername') }
|
103
144
|
let(:user) { Puppet::Util::ADSI::User.new(username, adsi_user) }
|
104
145
|
|
105
146
|
it "should provide its groups as a list of names" do
|
@@ -133,14 +174,16 @@ describe Puppet::Util::ADSI do
|
|
133
174
|
user.password = 'pwd'
|
134
175
|
end
|
135
176
|
|
136
|
-
it "should generate the correct URI" do
|
137
|
-
|
177
|
+
it "should generate the correct URI",:if => Puppet.features.microsoft_windows? do
|
178
|
+
Puppet::Util::Windows::Security.stubs(:octet_string_to_sid_object).returns(sid)
|
179
|
+
user.uri.should == "WinNT://testcomputername/#{username},user"
|
138
180
|
end
|
139
181
|
|
140
|
-
describe "when given a set of groups to which to add the user" do
|
182
|
+
describe "when given a set of groups to which to add the user", :if => Puppet.features.microsoft_windows? do
|
141
183
|
let(:groups_to_set) { 'group1,group2' }
|
142
184
|
|
143
185
|
before(:each) do
|
186
|
+
Puppet::Util::Windows::Security.stubs(:octet_string_to_sid_object).returns(sid)
|
144
187
|
user.expects(:groups).returns ['group2', 'group3']
|
145
188
|
end
|
146
189
|
|
@@ -152,6 +195,7 @@ describe Puppet::Util::ADSI do
|
|
152
195
|
group3 = stub 'group1'
|
153
196
|
group3.expects(:Remove).with("WinNT://testcomputername/#{username},user")
|
154
197
|
|
198
|
+
Puppet::Util::ADSI.expects(:sid_uri).with(sid).returns("WinNT://testcomputername/#{username},user").twice
|
155
199
|
Puppet::Util::ADSI.expects(:connect).with('WinNT://./group1,group').returns group1
|
156
200
|
Puppet::Util::ADSI.expects(:connect).with('WinNT://./group3,group').returns group3
|
157
201
|
|
@@ -164,6 +208,7 @@ describe Puppet::Util::ADSI do
|
|
164
208
|
group1 = stub 'group1'
|
165
209
|
group1.expects(:Add).with("WinNT://testcomputername/#{username},user")
|
166
210
|
|
211
|
+
Puppet::Util::ADSI.expects(:sid_uri).with(sid).returns("WinNT://testcomputername/#{username},user")
|
167
212
|
Puppet::Util::ADSI.expects(:connect).with('WinNT://./group1,group').returns group1
|
168
213
|
|
169
214
|
user.set_groups(groups_to_set, true)
|
@@ -179,19 +224,58 @@ describe Puppet::Util::ADSI do
|
|
179
224
|
describe "an instance" do
|
180
225
|
let(:adsi_group) { stub 'group' }
|
181
226
|
let(:group) { Puppet::Util::ADSI::Group.new(groupname, adsi_group) }
|
227
|
+
let(:someone_sid){ stub(:account => 'someone', :domain => 'testcomputername')}
|
228
|
+
|
229
|
+
it "should be able to add a member (deprecated)", :if => Puppet.features.microsoft_windows? do
|
230
|
+
Puppet.expects(:deprecation_warning).with('Puppet::Util::ADSI::Group#add_members is deprecated; please use Puppet::Util::ADSI::Group#add_member_sids')
|
231
|
+
|
232
|
+
Puppet::Util::Windows::Security.expects(:name_to_sid_object).with('someone').returns(someone_sid)
|
233
|
+
Puppet::Util::ADSI.expects(:sid_uri).with(someone_sid).returns("WinNT://testcomputername/someone,user")
|
182
234
|
|
183
|
-
it "should be able to add a member" do
|
184
235
|
adsi_group.expects(:Add).with("WinNT://testcomputername/someone,user")
|
185
236
|
|
186
237
|
group.add_member('someone')
|
187
238
|
end
|
188
239
|
|
189
|
-
it "should
|
240
|
+
it "should raise when adding a member that can't resolve to a SID (deprecated)", :if => Puppet.features.microsoft_windows? do
|
241
|
+
expect {
|
242
|
+
group.add_member('foobar')
|
243
|
+
}.to raise_error(Puppet::Error, /Could not resolve username: foobar/)
|
244
|
+
end
|
245
|
+
|
246
|
+
it "should be able to remove a member (deprecated)", :if => Puppet.features.microsoft_windows? do
|
247
|
+
Puppet.expects(:deprecation_warning).with('Puppet::Util::ADSI::Group#remove_members is deprecated; please use Puppet::Util::ADSI::Group#remove_member_sids')
|
248
|
+
|
249
|
+
Puppet::Util::Windows::Security.expects(:name_to_sid_object).with('someone').returns(someone_sid)
|
250
|
+
Puppet::Util::ADSI.expects(:sid_uri).with(someone_sid).returns("WinNT://testcomputername/someone,user")
|
251
|
+
|
190
252
|
adsi_group.expects(:Remove).with("WinNT://testcomputername/someone,user")
|
191
253
|
|
192
254
|
group.remove_member('someone')
|
193
255
|
end
|
194
256
|
|
257
|
+
it "should raise when removing a member that can't resolve to a SID (deprecated)", :if => Puppet.features.microsoft_windows? do
|
258
|
+
expect {
|
259
|
+
group.remove_member('foobar')
|
260
|
+
}.to raise_error(Puppet::Error, /Could not resolve username: foobar/)
|
261
|
+
end
|
262
|
+
|
263
|
+
describe "should be able to use SID objects", :if => Puppet.features.microsoft_windows? do
|
264
|
+
let(:system) { Puppet::Util::Windows::Security.name_to_sid_object('SYSTEM') }
|
265
|
+
|
266
|
+
it "to add a member" do
|
267
|
+
adsi_group.expects(:Add).with("WinNT://S-1-5-18")
|
268
|
+
|
269
|
+
group.add_member_sids(system)
|
270
|
+
end
|
271
|
+
|
272
|
+
it "to remove a member" do
|
273
|
+
adsi_group.expects(:Remove).with("WinNT://S-1-5-18")
|
274
|
+
|
275
|
+
group.remove_member_sids(system)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
195
279
|
it "should provide its groups as a list of names" do
|
196
280
|
names = ['user1', 'user2']
|
197
281
|
|
@@ -202,14 +286,38 @@ describe Puppet::Util::ADSI do
|
|
202
286
|
group.members.should =~ names
|
203
287
|
end
|
204
288
|
|
205
|
-
it "should be able to add a list of users to a group" do
|
206
|
-
names = ['user1', 'user2']
|
207
|
-
|
289
|
+
it "should be able to add a list of users to a group", :if => Puppet.features.microsoft_windows? do
|
290
|
+
names = ['DOMAIN\user1', 'user2']
|
291
|
+
sids = [
|
292
|
+
stub(:account => 'user1', :domain => 'DOMAIN'),
|
293
|
+
stub(:account => 'user2', :domain => 'testcomputername'),
|
294
|
+
stub(:account => 'user3', :domain => 'DOMAIN2'),
|
295
|
+
]
|
296
|
+
|
297
|
+
# use stubbed objectSid on member to return stubbed SID
|
298
|
+
Puppet::Util::Windows::Security.expects(:octet_string_to_sid_object).with([0]).returns(sids[0])
|
299
|
+
Puppet::Util::Windows::Security.expects(:octet_string_to_sid_object).with([1]).returns(sids[1])
|
208
300
|
|
209
|
-
|
210
|
-
|
301
|
+
Puppet::Util::Windows::Security.expects(:name_to_sid_object).with('user2').returns(sids[1])
|
302
|
+
Puppet::Util::Windows::Security.expects(:name_to_sid_object).with('DOMAIN2\user3').returns(sids[2])
|
303
|
+
|
304
|
+
Puppet::Util::ADSI.expects(:sid_uri).with(sids[0]).returns("WinNT://DOMAIN/user1,user")
|
305
|
+
Puppet::Util::ADSI.expects(:sid_uri).with(sids[2]).returns("WinNT://DOMAIN2/user3,user")
|
306
|
+
|
307
|
+
members = names.each_with_index.map{|n,i| stub(:Name => n, :objectSID => [i])}
|
308
|
+
adsi_group.expects(:Members).returns members
|
309
|
+
|
310
|
+
adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user')
|
311
|
+
adsi_group.expects(:Add).with('WinNT://DOMAIN2/user3,user')
|
312
|
+
|
313
|
+
group.set_members(['user2', 'DOMAIN2\user3'])
|
314
|
+
end
|
211
315
|
|
212
|
-
|
316
|
+
it "should raise an error when a username does not resolve to a SID", :if => Puppet.features.microsoft_windows? do
|
317
|
+
expect {
|
318
|
+
adsi_group.expects(:Members).returns []
|
319
|
+
group.set_members(['foobar'])
|
320
|
+
}.to raise_error(Puppet::Error, /Could not resolve username: foobar/)
|
213
321
|
end
|
214
322
|
|
215
323
|
it "should generate the correct URI" do
|