puppet 3.1.1 → 3.2.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 +2 -2
- data/Gemfile +32 -19
- data/README_DEVELOPER.md +332 -14
- data/Rakefile +9 -5
- data/ext/build_defaults.yaml +2 -3
- data/ext/debian/changelog.erb +6 -0
- data/ext/debian/control +6 -6
- data/ext/envpuppet +4 -4
- data/ext/project_data.yaml +1 -0
- data/ext/puppet-nm-dispatcher +13 -0
- data/ext/redhat/puppet.spec.erb +17 -0
- data/ext/suse/client.init +1 -1
- data/ext/systemd/puppetagent.service +2 -2
- data/ext/systemd/puppetmaster.service +2 -2
- data/lib/hiera/scope.rb +29 -11
- data/lib/hiera_puppet.rb +1 -3
- data/lib/puppet/agent.rb +3 -3
- data/lib/puppet/application.rb +2 -2
- data/lib/puppet/application/agent.rb +27 -12
- data/lib/puppet/application/apply.rb +11 -1
- data/lib/puppet/application/describe.rb +1 -1
- data/lib/puppet/application/doc.rb +13 -9
- data/lib/puppet/application/filebucket.rb +0 -1
- data/lib/puppet/application/kick.rb +1 -0
- data/lib/puppet/application/master.rb +16 -8
- data/lib/puppet/daemon.rb +19 -64
- data/lib/puppet/defaults.rb +61 -5
- data/lib/puppet/error.rb +15 -4
- data/lib/puppet/external/nagios/grammar.ry +1 -1
- data/lib/puppet/external/nagios/makefile +1 -1
- data/lib/puppet/external/nagios/parser.rb +185 -618
- data/lib/puppet/external/pson/pure/parser.rb +47 -1
- data/lib/puppet/face/certificate.rb +3 -3
- data/lib/puppet/face/module.rb +1 -1
- data/lib/puppet/face/module/changes.rb +3 -1
- data/lib/puppet/face/module/uninstall.rb +1 -1
- data/lib/puppet/face/node/clean.rb +5 -5
- data/lib/puppet/feature/base.rb +3 -1
- data/lib/puppet/feature/libuser.rb +8 -0
- data/lib/puppet/file_serving/fileset.rb +9 -1
- data/lib/puppet/forge.rb +28 -5
- data/lib/puppet/forge/errors.rb +34 -0
- data/lib/puppet/forge/repository.rb +1 -1
- data/lib/puppet/indirector.rb +4 -1
- data/lib/puppet/indirector/catalog/compiler.rb +37 -30
- data/lib/puppet/indirector/facts/inventory_active_record.rb +1 -0
- data/lib/puppet/indirector/indirection.rb +28 -15
- data/lib/puppet/indirector/rest.rb +18 -10
- data/lib/puppet/interface.rb +11 -4
- data/lib/puppet/interface/action.rb +1 -3
- data/lib/puppet/interface/action_builder.rb +0 -3
- data/lib/puppet/interface/action_manager.rb +0 -3
- data/lib/puppet/interface/face_collection.rb +0 -2
- data/lib/puppet/interface/option.rb +0 -2
- data/lib/puppet/interface/option_builder.rb +0 -2
- data/lib/puppet/interface/option_manager.rb +0 -2
- data/lib/puppet/metatype/manager.rb +1 -1
- data/lib/puppet/module_tool.rb +1 -0
- data/lib/puppet/module_tool/applications/application.rb +0 -3
- data/lib/puppet/module_tool/applications/builder.rb +8 -20
- data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
- data/lib/puppet/module_tool/applications/installer.rb +1 -0
- data/lib/puppet/module_tool/applications/unpacker.rb +3 -11
- data/lib/puppet/module_tool/checksums.rb +1 -1
- data/lib/puppet/module_tool/errors/installer.rb +18 -1
- data/lib/puppet/module_tool/modulefile.rb +2 -2
- data/lib/puppet/module_tool/skeleton/templates/generator/Modulefile.erb +1 -1
- data/lib/puppet/module_tool/tar.rb +17 -0
- data/lib/puppet/module_tool/tar/gnu.rb +9 -0
- data/lib/puppet/module_tool/tar/mini.rb +39 -0
- data/lib/puppet/module_tool/tar/solaris.rb +5 -0
- data/lib/puppet/network/http.rb +1 -0
- data/lib/puppet/network/http/connection.rb +9 -23
- data/lib/puppet/network/http/handler.rb +38 -7
- data/lib/puppet/network/http/rack/rest.rb +14 -3
- data/lib/puppet/network/http/webrick.rb +3 -1
- data/lib/puppet/network/http/webrick/rest.rb +11 -2
- data/lib/puppet/node/environment.rb +3 -1
- data/lib/puppet/parameter.rb +32 -29
- data/lib/puppet/parameter/package_options.rb +1 -1
- data/lib/puppet/parameter/path.rb +1 -1
- data/lib/puppet/parameter/value.rb +1 -1
- data/lib/puppet/parameter/value_collection.rb +7 -3
- data/lib/puppet/parser/ast.rb +3 -1
- data/lib/puppet/parser/ast/arithmetic_operator.rb +56 -12
- data/lib/puppet/parser/ast/astarray.rb +1 -1
- data/lib/puppet/parser/ast/block_expression.rb +41 -0
- data/lib/puppet/parser/ast/function.rb +13 -2
- data/lib/puppet/parser/ast/lambda.rb +107 -0
- data/lib/puppet/parser/ast/leaf.rb +1 -2
- data/lib/puppet/parser/ast/method_call.rb +77 -0
- data/lib/puppet/parser/ast/vardef.rb +7 -0
- data/lib/puppet/parser/compiler.rb +27 -16
- data/lib/puppet/parser/e_parser_adapter.rb +120 -0
- data/lib/puppet/parser/files.rb +7 -6
- data/lib/puppet/parser/functions.rb +10 -8
- data/lib/puppet/parser/functions/collect.rb +43 -0
- data/lib/puppet/parser/functions/each.rb +96 -0
- data/lib/puppet/parser/functions/foreach.rb +96 -0
- data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
- data/lib/puppet/parser/functions/hiera.rb +20 -2
- data/lib/puppet/parser/functions/hiera_array.rb +21 -2
- data/lib/puppet/parser/functions/hiera_hash.rb +23 -2
- data/lib/puppet/parser/functions/hiera_include.rb +33 -2
- data/lib/puppet/parser/functions/inline_template.rb +4 -4
- data/lib/puppet/parser/functions/reduce.rb +74 -0
- data/lib/puppet/parser/functions/reject.rb +46 -0
- data/lib/puppet/parser/functions/select.rb +46 -0
- data/lib/puppet/parser/functions/slice.rb +96 -0
- data/lib/puppet/parser/functions/template.rb +2 -2
- data/lib/puppet/parser/grammar.ra +7 -4
- data/lib/puppet/parser/lexer.rb +10 -0
- data/lib/puppet/parser/methods.rb +69 -0
- data/lib/puppet/parser/parser.rb +855 -808
- data/lib/puppet/parser/parser_factory.rb +62 -0
- data/lib/puppet/parser/parser_support.rb +8 -2
- data/lib/puppet/parser/scope.rb +153 -47
- data/lib/puppet/parser/templatewrapper.rb +28 -21
- data/lib/puppet/parser/type_loader.rb +3 -1
- data/lib/puppet/pops.rb +40 -0
- data/lib/puppet/pops/adaptable.rb +190 -0
- data/lib/puppet/pops/adapters.rb +65 -0
- data/lib/puppet/pops/containment.rb +37 -0
- data/lib/puppet/pops/issues.rb +258 -0
- data/lib/puppet/pops/label_provider.rb +71 -0
- data/lib/puppet/pops/model/ast_transformer.rb +636 -0
- data/lib/puppet/pops/model/ast_tree_dumper.rb +378 -0
- data/lib/puppet/pops/model/factory.rb +804 -0
- data/lib/puppet/pops/model/model.rb +567 -0
- data/lib/puppet/pops/model/model_label_provider.rb +75 -0
- data/lib/puppet/pops/model/model_tree_dumper.rb +352 -0
- data/lib/puppet/pops/model/tree_dumper.rb +59 -0
- data/lib/puppet/pops/parser/egrammar.ra +723 -0
- data/lib/puppet/pops/parser/eparser.rb +2300 -0
- data/lib/puppet/pops/parser/grammar.ra +746 -0
- data/lib/puppet/pops/parser/lexer.rb +842 -0
- data/lib/puppet/pops/parser/makefile +13 -0
- data/lib/puppet/pops/parser/parser_support.rb +203 -0
- data/lib/puppet/pops/patterns.rb +35 -0
- data/lib/puppet/pops/utils.rb +104 -0
- data/lib/puppet/pops/validation.rb +297 -0
- data/lib/puppet/pops/validation/checker3_1.rb +551 -0
- data/lib/puppet/pops/validation/validator_factory_3_1.rb +41 -0
- data/lib/puppet/pops/visitable.rb +6 -0
- data/lib/puppet/pops/visitor.rb +50 -0
- data/lib/puppet/property.rb +37 -28
- data/lib/puppet/property/ensure.rb +2 -2
- data/lib/puppet/property/ordered_list.rb +1 -1
- data/lib/puppet/provider.rb +26 -30
- data/lib/puppet/provider/aixobject.rb +45 -44
- data/lib/puppet/provider/augeas/augeas.rb +0 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/cron/crontab.rb +107 -67
- data/lib/puppet/provider/group/groupadd.rb +59 -3
- data/lib/puppet/provider/interface/cisco.rb +4 -4
- data/lib/puppet/provider/mount/parsed.rb +1 -1
- data/lib/puppet/provider/nameservice.rb +22 -6
- data/lib/puppet/provider/nameservice/pw.rb +1 -1
- data/lib/puppet/provider/package/aix.rb +28 -4
- data/lib/puppet/provider/package/gem.rb +0 -2
- data/lib/puppet/provider/package/macports.rb +1 -1
- data/lib/puppet/provider/package/nim.rb +249 -4
- data/lib/puppet/provider/package/opkg.rb +77 -0
- data/lib/puppet/provider/package/pacman.rb +2 -2
- data/lib/puppet/provider/package/rpm.rb +30 -16
- data/lib/puppet/provider/package/yum.rb +3 -3
- data/lib/puppet/provider/parsedfile.rb +80 -3
- data/lib/puppet/provider/selmodule/semodule.rb +2 -2
- data/lib/puppet/provider/service/debian.rb +0 -4
- data/lib/puppet/provider/service/freebsd.rb +2 -2
- data/lib/puppet/provider/service/gentoo.rb +0 -9
- data/lib/puppet/provider/service/init.rb +27 -2
- data/lib/puppet/provider/service/launchd.rb +1 -1
- data/lib/puppet/provider/service/openwrt.rb +36 -0
- data/lib/puppet/provider/service/redhat.rb +0 -9
- data/lib/puppet/provider/service/src.rb +38 -4
- data/lib/puppet/provider/service/systemd.rb +2 -2
- data/lib/puppet/provider/service/upstart.rb +1 -8
- data/lib/puppet/provider/user/aix.rb +4 -10
- data/lib/puppet/provider/user/pw.rb +6 -10
- data/lib/puppet/provider/user/useradd.rb +129 -31
- data/lib/puppet/provider/vlan/cisco.rb +4 -4
- data/lib/puppet/reference/function.rb +2 -2
- data/lib/puppet/reference/indirection.rb +46 -5
- data/lib/puppet/reference/metaparameter.rb +2 -2
- data/lib/puppet/reports.rb +5 -5
- data/lib/puppet/reports/rrdgraph.rb +4 -4
- data/lib/puppet/reports/tagmail.rb +1 -1
- data/lib/puppet/resource.rb +1 -1
- data/lib/puppet/resource/type.rb +13 -11
- data/lib/puppet/scheduler.rb +16 -0
- data/lib/puppet/scheduler/job.rb +53 -0
- data/lib/puppet/scheduler/scheduler.rb +45 -0
- data/lib/puppet/scheduler/splay_job.rb +32 -0
- data/lib/puppet/scheduler/timer.rb +13 -0
- data/lib/puppet/settings/base_setting.rb +1 -1
- data/lib/puppet/simple_graph.rb +4 -4
- data/lib/puppet/ssl/base.rb +12 -2
- data/lib/puppet/ssl/certificate.rb +4 -1
- data/lib/puppet/ssl/certificate_request.rb +4 -1
- data/lib/puppet/ssl/certificate_revocation_list.rb +4 -1
- data/lib/puppet/ssl/configuration.rb +32 -0
- data/lib/puppet/ssl/host.rb +18 -21
- data/lib/puppet/ssl/key.rb +4 -1
- data/lib/puppet/ssl/validator.rb +116 -0
- data/lib/puppet/transaction.rb +1 -1
- data/lib/puppet/transaction/event.rb +3 -10
- data/lib/puppet/transaction/event_manager.rb +8 -1
- data/lib/puppet/transaction/report.rb +17 -16
- data/lib/puppet/type.rb +77 -69
- data/lib/puppet/type/cron.rb +20 -8
- data/lib/puppet/type/exec.rb +9 -3
- data/lib/puppet/type/file.rb +95 -21
- data/lib/puppet/type/file/content.rb +1 -1
- data/lib/puppet/type/file/mode.rb +7 -1
- data/lib/puppet/type/file/source.rb +2 -2
- data/lib/puppet/type/group.rb +11 -0
- data/lib/puppet/type/scheduled_task.rb +5 -1
- data/lib/puppet/type/service.rb +1 -1
- data/lib/puppet/type/ssh_authorized_key.rb +2 -2
- data/lib/puppet/type/user.rb +24 -6
- data/lib/puppet/util.rb +12 -2
- data/lib/puppet/util/classgen.rb +4 -4
- data/lib/puppet/util/colors.rb +55 -0
- data/lib/puppet/util/command_line/trollop.rb +4 -4
- data/lib/puppet/util/errors.rb +39 -3
- data/lib/puppet/util/fileparsing.rb +5 -0
- data/lib/puppet/util/filetype.rb +11 -9
- data/lib/puppet/util/instrumentation/instrumentable.rb +2 -2
- data/lib/puppet/util/libuser.conf +15 -0
- data/lib/puppet/util/libuser.rb +12 -0
- data/lib/puppet/util/monkey_patches.rb +48 -0
- data/lib/puppet/util/network_device.rb +1 -1
- data/lib/puppet/util/network_device/base.rb +2 -2
- data/lib/puppet/util/network_device/cisco/device.rb +29 -19
- data/lib/puppet/util/network_device/config.rb +5 -2
- data/lib/puppet/util/network_device/ipcalc.rb +1 -1
- data/lib/puppet/util/network_device/transport/ssh.rb +4 -3
- data/lib/puppet/util/network_device/transport/telnet.rb +4 -2
- data/lib/puppet/util/plugins.rb +4 -4
- data/lib/puppet/util/posix.rb +1 -1
- data/lib/puppet/util/profiler.rb +28 -0
- data/lib/puppet/util/profiler/logging.rb +47 -0
- data/lib/puppet/util/profiler/none.rb +8 -0
- data/lib/puppet/util/profiler/object_counts.rb +17 -0
- data/lib/puppet/util/profiler/wall_clock.rb +34 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/rdoc/parser.rb +5 -5
- data/lib/puppet/util/ssl.rb +38 -0
- data/lib/puppet/util/subclass_loader.rb +1 -5
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/process.rb +3 -0
- data/lib/puppet/util/windows/root_certs.rb +86 -0
- data/lib/puppet/util/windows/security.rb +1 -0
- data/lib/puppet/version.rb +1 -1
- data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +19 -0
- data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +18 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +4 -0
- data/spec/fixtures/integration/provider/cron/crontab/modify_entry +13 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +15 -0
- data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +6 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +12 -0
- data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +16 -0
- data/spec/fixtures/unit/pops/parser/lexer/append.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +14 -0
- data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +65 -0
- data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +20 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +8 -0
- data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +23 -0
- data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +17 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +3 -0
- data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/hash.pp +33 -0
- data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +12 -0
- data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +15 -0
- data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +10 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +7 -0
- data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +13 -0
- data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +49 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +5 -0
- data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +38 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +19 -0
- data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +22 -0
- data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +11 -0
- data/spec/fixtures/unit/pops/parser/lexer/tag.pp +9 -0
- data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +35 -0
- data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +14 -0
- data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +4 -4
- data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +3 -0
- data/spec/fixtures/unit/provider/cron/parsed/managed +6 -0
- data/spec/fixtures/unit/provider/cron/parsed/simple +9 -0
- data/spec/fixtures/unit/provider/parsedfile/simple.txt +4 -0
- data/spec/fixtures/unit/provider/service/systemd/list_units +18 -0
- data/spec/integration/parser/collector_spec.rb +1 -1
- data/spec/integration/parser/compiler_spec.rb +252 -227
- data/spec/integration/parser/parser_spec.rb +171 -53
- data/spec/integration/parser/scope_spec.rb +1 -1
- data/spec/integration/provider/cron/crontab_spec.rb +187 -0
- data/spec/integration/provider/service/systemd_spec.rb +20 -0
- data/spec/integration/type/file_spec.rb +21 -21
- data/spec/integration/type/package_spec.rb +1 -1
- data/spec/lib/puppet_spec/database.rb +2 -5
- data/spec/spec_helper.rb +6 -1
- data/spec/unit/application/apply_spec.rb +16 -1
- data/spec/unit/application/describe_spec.rb +1 -1
- data/spec/unit/application/doc_spec.rb +55 -32
- data/spec/unit/application/kick_spec.rb +8 -6
- data/spec/unit/application/master_spec.rb +4 -4
- data/spec/unit/daemon_spec.rb +1 -1
- data/spec/unit/forge/errors_spec.rb +40 -0
- data/spec/unit/forge/repository_spec.rb +11 -1
- data/spec/unit/forge_spec.rb +13 -3
- data/spec/unit/hiera/backend/puppet_backend_spec.rb +1 -0
- data/spec/unit/hiera/scope_spec.rb +48 -25
- data/spec/unit/indirector/catalog/active_record_spec.rb +6 -3
- data/spec/unit/indirector/catalog/compiler_spec.rb +3 -28
- data/spec/unit/indirector/catalog/static_compiler_spec.rb +1 -1
- data/spec/unit/indirector/facts/inventory_active_record_spec.rb +154 -150
- data/spec/unit/indirector/indirection_spec.rb +5 -0
- data/spec/unit/indirector/resource/active_record_spec.rb +5 -22
- data/spec/unit/indirector_spec.rb +7 -1
- data/spec/unit/interface/action_builder_spec.rb +1 -1
- data/spec/unit/interface/action_manager_spec.rb +0 -2
- data/spec/unit/interface/action_spec.rb +1 -1
- data/spec/unit/interface/documentation_spec.rb +0 -2
- data/spec/unit/interface/face_collection_spec.rb +1 -1
- data/spec/unit/interface/option_builder_spec.rb +1 -1
- data/spec/unit/interface/option_spec.rb +0 -1
- data/spec/unit/module_spec.rb +17 -19
- data/spec/unit/module_tool/application_spec.rb +1 -3
- data/spec/unit/module_tool/applications/builder_spec.rb +38 -0
- data/spec/unit/module_tool/applications/checksummer_spec.rb +134 -0
- data/spec/unit/module_tool/applications/installer_spec.rb +71 -91
- data/spec/unit/module_tool/applications/searcher_spec.rb +1 -3
- data/spec/unit/module_tool/applications/uninstaller_spec.rb +18 -26
- data/spec/unit/module_tool/applications/unpacker_spec.rb +19 -52
- data/spec/unit/module_tool/tar/gnu_spec.rb +19 -0
- data/spec/unit/module_tool/tar/mini_spec.rb +59 -0
- data/spec/unit/module_tool/tar/solaris_spec.rb +19 -0
- data/spec/unit/network/http/connection_spec.rb +17 -2
- data/spec/unit/network/http/handler_spec.rb +195 -167
- data/spec/unit/network/http/rack/rest_spec.rb +26 -4
- data/spec/unit/network/http/webrick/rest_spec.rb +28 -1
- data/spec/unit/network/http/webrick_spec.rb +12 -3
- data/spec/unit/node/environment_spec.rb +421 -404
- data/spec/unit/parser/ast/arithmetic_operator_spec.rb +98 -2
- data/spec/unit/parser/collector_spec.rb +4 -4
- data/spec/unit/parser/compiler_spec.rb +13 -13
- data/spec/unit/parser/eparser_adapter_spec.rb +407 -0
- data/spec/unit/parser/functions/extlookup_spec.rb +20 -17
- data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -0
- data/spec/unit/parser/functions/hiera_include_spec.rb +0 -2
- data/spec/unit/parser/functions/hiera_spec.rb +0 -2
- data/spec/unit/parser/functions_spec.rb +27 -15
- data/spec/unit/parser/methods/collect_spec.rb +110 -0
- data/spec/unit/parser/methods/each_spec.rb +91 -0
- data/spec/unit/parser/methods/foreach_spec.rb +91 -0
- data/spec/unit/parser/methods/reduce_spec.rb +67 -0
- data/spec/unit/parser/methods/reject_spec.rb +73 -0
- data/spec/unit/parser/methods/select_spec.rb +79 -0
- data/spec/unit/parser/methods/shared.rb +61 -0
- data/spec/unit/parser/methods/slice_spec.rb +97 -0
- data/spec/unit/parser/parser_spec.rb +2 -2
- data/spec/unit/parser/scope_spec.rb +39 -16
- data/spec/unit/parser/templatewrapper_spec.rb +6 -5
- data/spec/unit/parser/type_loader_spec.rb +191 -165
- data/spec/unit/pops/adaptable_spec.rb +143 -0
- data/spec/unit/pops/containment_spec.rb +25 -0
- data/spec/unit/pops/factory_rspec_helper.rb +77 -0
- data/spec/unit/pops/factory_spec.rb +329 -0
- data/spec/unit/pops/issues_spec.rb +26 -0
- data/spec/unit/pops/label_provider_spec.rb +42 -0
- data/spec/unit/pops/model/ast_transformer_spec.rb +65 -0
- data/spec/unit/pops/model/model_spec.rb +37 -0
- data/spec/unit/pops/parser/lexer_spec.rb +884 -0
- data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +248 -0
- data/spec/unit/pops/parser/parse_calls_spec.rb +93 -0
- data/spec/unit/pops/parser/parse_conditionals_spec.rb +159 -0
- data/spec/unit/pops/parser/parse_containers_spec.rb +175 -0
- data/spec/unit/pops/parser/parse_resource_spec.rb +228 -0
- data/spec/unit/pops/parser/parser_rspec_helper.rb +11 -0
- data/spec/unit/pops/parser/parser_spec.rb +15 -0
- data/spec/unit/pops/parser/rgen_sanitycheck_spec.rb +16 -0
- data/spec/unit/pops/transformer/transform_basic_expressions_spec.rb +243 -0
- data/spec/unit/pops/transformer/transform_calls_spec.rb +80 -0
- data/spec/unit/pops/transformer/transform_conditionals_spec.rb +132 -0
- data/spec/unit/pops/transformer/transform_containers_spec.rb +182 -0
- data/spec/unit/pops/transformer/transform_resource_spec.rb +185 -0
- data/spec/unit/pops/transformer/transformer_rspec_helper.rb +27 -0
- data/spec/unit/pops/visitor_spec.rb +94 -0
- data/spec/unit/property_spec.rb +11 -0
- data/spec/unit/provider/augeas/augeas_spec.rb +3 -0
- data/spec/unit/provider/cron/crontab_spec.rb +97 -7
- data/spec/unit/provider/cron/parsed_spec.rb +325 -0
- data/spec/unit/provider/exec/posix_spec.rb +1 -1
- data/spec/unit/provider/group/groupadd_spec.rb +33 -3
- data/spec/unit/provider/group/pw_spec.rb +5 -5
- data/spec/unit/provider/nameservice_spec.rb +304 -0
- data/spec/unit/provider/package/aix_spec.rb +53 -11
- data/spec/unit/provider/package/aptrpm_spec.rb +6 -0
- data/spec/unit/provider/package/gem_spec.rb +6 -11
- data/spec/unit/provider/package/nim_spec.rb +216 -7
- data/spec/unit/provider/package/opkg_spec.rb +180 -0
- data/spec/unit/provider/package/rpm_spec.rb +149 -3
- data/spec/unit/provider/package/yum_spec.rb +6 -5
- data/spec/unit/provider/parsedfile_spec.rb +122 -28
- data/spec/unit/provider/service/freebsd_spec.rb +18 -0
- data/spec/unit/provider/service/init_spec.rb +108 -87
- data/spec/unit/provider/service/launchd_spec.rb +2 -2
- data/spec/unit/provider/service/openwrt_spec.rb +109 -0
- data/spec/unit/provider/service/src_spec.rb +117 -41
- data/spec/unit/provider/service/systemd_spec.rb +125 -17
- data/spec/unit/provider/service/upstart_spec.rb +1 -1
- data/spec/unit/provider/user/aix_spec.rb +42 -0
- data/spec/unit/provider/user/directoryservice_spec.rb +1 -0
- data/spec/unit/provider/user/pw_spec.rb +24 -12
- data/spec/unit/provider/user/user_role_add_spec.rb +1 -1
- data/spec/unit/provider/user/useradd_spec.rb +179 -15
- data/spec/unit/resource/type_spec.rb +3 -3
- data/spec/unit/scheduler/job_spec.rb +79 -0
- data/spec/unit/scheduler/scheduler_spec.rb +129 -0
- data/spec/unit/scheduler/splay_job_spec.rb +35 -0
- data/spec/unit/ssl/base_spec.rb +3 -9
- data/spec/unit/ssl/certificate_authority_spec.rb +1 -0
- data/spec/unit/ssl/certificate_request_spec.rb +3 -1
- data/spec/unit/ssl/certificate_spec.rb +3 -1
- data/spec/unit/ssl/configuration_spec.rb +74 -0
- data/spec/unit/ssl/host_spec.rb +28 -7
- data/spec/unit/ssl/validator_spec.rb +311 -0
- data/spec/unit/transaction/event_manager_spec.rb +49 -0
- data/spec/unit/transaction/event_spec.rb +20 -5
- data/spec/unit/transaction/report_spec.rb +8 -0
- data/spec/unit/type/cron_spec.rb +9 -0
- data/spec/unit/type/exec_spec.rb +11 -0
- data/spec/unit/type/file/content_spec.rb +20 -20
- data/spec/unit/type/file/mode_spec.rb +6 -0
- data/spec/unit/type/file/source_spec.rb +9 -7
- data/spec/unit/type/file_spec.rb +22 -3
- data/spec/unit/type/service_spec.rb +34 -21
- data/spec/unit/type_spec.rb +46 -1
- data/spec/unit/util/backups_spec.rb +2 -2
- data/spec/unit/util/execution_spec.rb +4 -1
- data/spec/unit/util/filetype_spec.rb +6 -0
- data/spec/unit/util/monkey_patches_spec.rb +18 -0
- data/spec/unit/util/network_device/cisco/device_spec.rb +37 -0
- data/spec/unit/util/network_device/config_spec.rb +14 -0
- data/spec/unit/util/network_device_spec.rb +3 -3
- data/spec/unit/util/profiler/logging_spec.rb +81 -0
- data/spec/unit/util/profiler/none_spec.rb +12 -0
- data/spec/unit/util/profiler/object_counts_spec.rb +14 -0
- data/spec/unit/util/profiler/wall_clock_spec.rb +13 -0
- data/spec/unit/util/pson_spec.rb +5 -0
- data/spec/unit/util/ssl_spec.rb +51 -0
- data/spec/unit/util/windows/root_certs_spec.rb +15 -0
- data/spec/unit/util_spec.rb +28 -0
- metadata +2593 -2307
- data/spec/unit/module_tool/applications/application_spec.rb +0 -19
@@ -42,7 +42,7 @@ describe Puppet::Type.type(:service).provider(:upstart) do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should not find excluded services" do
|
45
|
-
processes = "wait-for-state stop/waiting"
|
45
|
+
processes = "wait-for-state stop/waiting\nportmap-wait start/running"
|
46
46
|
provider_class.stubs(:execpipe).yields(processes)
|
47
47
|
provider_class.instances.should be_empty
|
48
48
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
provider_class = Puppet::Type.type(:user).provider(:aix)
|
4
|
+
|
5
|
+
describe provider_class do
|
6
|
+
|
7
|
+
let(:lsuser_all_example) do
|
8
|
+
<<-OUTPUT
|
9
|
+
root id=0 pgrp=system groups=system,bin,sys,security,cron,audit,lp home=/root shell=/usr/bin/bash auditclasses=general login=true su=true rlogin=true daemon=true admin=true sugroups=ALL admgroups=lolt,allstaff tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=2097151 cpu=-1 data=262144 stack=65536 core=2097151 rss=65536 nofiles=2000 time_last_login=1358465855 time_last_unsuccessful_login=1358378454 tty_last_login=ssh tty_last_unsuccessful_login=ssh host_last_login=rpm-builder.puppetlabs.lan host_last_unsuccessful_login=192.168.100.78 unsuccessful_login_count=0 roles=
|
10
|
+
guest id=100 pgrp=usr groups=usr home=/home/guest login=true su=true rlogin=true daemon=true admin=false sugroups=ALL admgroups= tpath=nosak ttys=ALL expires=0 auth1=SYSTEM auth2=NONE umask=22 registry=files SYSTEM=compat logintimes= loginretries=0 pwdwarntime=0 account_locked=false minage=0 maxage=0 maxexpired=-1 minalpha=0 minother=0 mindiff=0 maxrepeats=8 minlen=0 histexpire=0 histsize=0 pwdchecks= dictionlist= default_roles= fsize=2097151 cpu=-1 data=262144 stack=65536 core=2097151 rss=65536 nofiles=2000 roles=
|
11
|
+
OUTPUT
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:lsgroup_all_example) do
|
15
|
+
<<-OUTPUT
|
16
|
+
root id=0 pgrp=system groups=system,bin,sys,security,cron,audit,lp home=/root shell=/usr/bin/bash
|
17
|
+
guest id=100 pgrp=usr groups=usr home=/home/guest
|
18
|
+
OUTPUT
|
19
|
+
end
|
20
|
+
|
21
|
+
before do
|
22
|
+
@resource = stub('resource')
|
23
|
+
@provider = provider_class.new(@resource)
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be able to return a group name based on a group ID" do
|
27
|
+
@provider.stubs(:lsgroupscmd)
|
28
|
+
|
29
|
+
@provider.stubs(:execute).returns(lsgroup_all_example)
|
30
|
+
|
31
|
+
@provider.groupname_by_id(100).should == 'guest'
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should be able to list all users" do
|
35
|
+
provider_class.stubs(:command)
|
36
|
+
|
37
|
+
provider_class.stubs(:execute).returns(lsuser_all_example)
|
38
|
+
|
39
|
+
provider_class.list_all.should == ['root', 'guest']
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -17,55 +17,61 @@ describe provider_class do
|
|
17
17
|
|
18
18
|
it "should run pw with no additional flags when no properties are given" do
|
19
19
|
provider.addcmd.must == [provider_class.command(:pw), "useradd", "testuser"]
|
20
|
-
provider.expects(:execute).with([provider_class.command(:pw), "useradd", "testuser"])
|
20
|
+
provider.expects(:execute).with([provider_class.command(:pw), "useradd", "testuser"], kind_of(Hash))
|
21
21
|
provider.create
|
22
22
|
end
|
23
23
|
|
24
24
|
it "should use -o when allowdupe is enabled" do
|
25
25
|
resource[:allowdupe] = true
|
26
|
-
provider.expects(:execute).with(includes("-o"))
|
26
|
+
provider.expects(:execute).with(includes("-o"), kind_of(Hash))
|
27
27
|
provider.create
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should use -c with the correct argument when the comment property is set" do
|
31
31
|
resource[:comment] = "Testuser Name"
|
32
|
-
provider.expects(:execute).with(all_of(includes("-c"), includes("Testuser Name")))
|
32
|
+
provider.expects(:execute).with(all_of(includes("-c"), includes("Testuser Name")), kind_of(Hash))
|
33
33
|
provider.create
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should use -e with the correct argument when the expiry property is set" do
|
37
37
|
resource[:expiry] = "2010-02-19"
|
38
|
-
provider.expects(:execute).with(all_of(includes("-e"), includes("19-02-2010")))
|
38
|
+
provider.expects(:execute).with(all_of(includes("-e"), includes("19-02-2010")), kind_of(Hash))
|
39
|
+
provider.create
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should use -e 00-00-0000 if the expiry property has to be removed" do
|
43
|
+
resource[:expiry] = :absent
|
44
|
+
provider.expects(:execute).with(all_of(includes("-e"), includes("00-00-0000")), kind_of(Hash))
|
39
45
|
provider.create
|
40
46
|
end
|
41
47
|
|
42
48
|
it "should use -g with the correct argument when the gid property is set" do
|
43
49
|
resource[:gid] = 12345
|
44
|
-
provider.expects(:execute).with(all_of(includes("-g"), includes(12345)))
|
50
|
+
provider.expects(:execute).with(all_of(includes("-g"), includes(12345)), kind_of(Hash))
|
45
51
|
provider.create
|
46
52
|
end
|
47
53
|
|
48
54
|
it "should use -G with the correct argument when the groups property is set" do
|
49
55
|
resource[:groups] = "group1"
|
50
|
-
provider.expects(:execute).with(all_of(includes("-G"), includes("group1")))
|
56
|
+
provider.expects(:execute).with(all_of(includes("-G"), includes("group1")), kind_of(Hash))
|
51
57
|
provider.create
|
52
58
|
end
|
53
59
|
|
54
60
|
it "should use -G with all the given groups when the groups property is set to an array" do
|
55
61
|
resource[:groups] = ["group1", "group2"]
|
56
|
-
provider.expects(:execute).with(all_of(includes("-G"), includes("group1,group2")))
|
62
|
+
provider.expects(:execute).with(all_of(includes("-G"), includes("group1,group2")), kind_of(Hash))
|
57
63
|
provider.create
|
58
64
|
end
|
59
65
|
|
60
66
|
it "should use -d with the correct argument when the home property is set" do
|
61
67
|
resource[:home] = "/home/testuser"
|
62
|
-
provider.expects(:execute).with(all_of(includes("-d"), includes("/home/testuser")))
|
68
|
+
provider.expects(:execute).with(all_of(includes("-d"), includes("/home/testuser")), kind_of(Hash))
|
63
69
|
provider.create
|
64
70
|
end
|
65
71
|
|
66
72
|
it "should use -m when the managehome property is enabled" do
|
67
73
|
resource[:managehome] = true
|
68
|
-
provider.expects(:execute).with(includes("-m"))
|
74
|
+
provider.expects(:execute).with(includes("-m"), kind_of(Hash))
|
69
75
|
provider.create
|
70
76
|
end
|
71
77
|
|
@@ -78,13 +84,13 @@ describe provider_class do
|
|
78
84
|
|
79
85
|
it "should use -s with the correct argument when the shell property is set" do
|
80
86
|
resource[:shell] = "/bin/sh"
|
81
|
-
provider.expects(:execute).with(all_of(includes("-s"), includes("/bin/sh")))
|
87
|
+
provider.expects(:execute).with(all_of(includes("-s"), includes("/bin/sh")), kind_of(Hash))
|
82
88
|
provider.create
|
83
89
|
end
|
84
90
|
|
85
91
|
it "should use -u with the correct argument when the uid property is set" do
|
86
92
|
resource[:uid] = 12345
|
87
|
-
provider.expects(:execute).with(all_of(includes("-u"), includes(12345)))
|
93
|
+
provider.expects(:execute).with(all_of(includes("-u"), includes(12345)), kind_of(Hash))
|
88
94
|
provider.create
|
89
95
|
end
|
90
96
|
|
@@ -93,7 +99,7 @@ describe provider_class do
|
|
93
99
|
resource[:password] = "*"
|
94
100
|
provider.addcmd.should_not include("-p")
|
95
101
|
provider.expects(:password=)
|
96
|
-
provider.expects(:execute).with(Not(includes("-p")))
|
102
|
+
provider.expects(:execute).with(Not(includes("-p")), kind_of(Hash))
|
97
103
|
provider.create
|
98
104
|
end
|
99
105
|
end
|
@@ -150,6 +156,12 @@ describe provider_class do
|
|
150
156
|
provider.expiry = "2011-02-19"
|
151
157
|
end
|
152
158
|
|
159
|
+
it "should use -e with the correct argument when the expiry property is removed" do
|
160
|
+
resource[:expiry] = :absent
|
161
|
+
provider.expects(:execute).with(all_of(includes("-e"), includes("00-00-0000")))
|
162
|
+
provider.expiry = :absent
|
163
|
+
end
|
164
|
+
|
153
165
|
it "should use -g with the correct argument when the gid property is changed" do
|
154
166
|
resource[:gid] = 12345
|
155
167
|
provider.expects(:execute).with(all_of(includes("-g"), includes(54321)))
|
@@ -116,7 +116,7 @@ describe Puppet::Type.type(:user).provider(:user_role_add), :unless => Puppet.fe
|
|
116
116
|
|
117
117
|
describe "with :allow_duplicates" do
|
118
118
|
before do
|
119
|
-
resource.
|
119
|
+
resource.stubs(:allowdupe?).returns true
|
120
120
|
provider.stubs(:is_role?).returns(false)
|
121
121
|
provider.stubs(:execute)
|
122
122
|
resource.stubs(:system?).returns false
|
@@ -6,6 +6,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
6
6
|
before :each do
|
7
7
|
described_class.stubs(:command).with(:password).returns '/usr/bin/chage'
|
8
8
|
described_class.stubs(:command).with(:add).returns '/usr/sbin/useradd'
|
9
|
+
described_class.stubs(:command).with(:localadd).returns '/usr/sbin/luseradd'
|
9
10
|
described_class.stubs(:command).with(:modify).returns '/usr/sbin/usermod'
|
10
11
|
described_class.stubs(:command).with(:delete).returns '/usr/sbin/userdel'
|
11
12
|
end
|
@@ -21,11 +22,38 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
21
22
|
|
22
23
|
let(:provider) { described_class.new(:name => 'myuser') }
|
23
24
|
|
25
|
+
|
26
|
+
let(:shadow_entry) {
|
27
|
+
return unless Puppet.features.libshadow?
|
28
|
+
Struct::PasswdEntry.new(
|
29
|
+
'myuser', # login name
|
30
|
+
'$6$FvW8Ib8h$qQMI/CR9m.QzIicZKutLpBgCBBdrch1IX0rTnxuI32K1pD9.RXZrmeKQlaC.RzODNuoUtPPIyQDufunvLOQWF0', # encrypted password
|
31
|
+
15573, # date of last password change
|
32
|
+
10, # minimum password age
|
33
|
+
20, # maximum password age
|
34
|
+
7, # password warning period
|
35
|
+
-1, # password inactivity period
|
36
|
+
15706, # account expiration date
|
37
|
+
-1 # reserved field
|
38
|
+
)
|
39
|
+
}
|
40
|
+
|
24
41
|
describe "#create" do
|
25
42
|
|
43
|
+
before do
|
44
|
+
provider.stubs(:exists?).returns(false)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should add -g when no gid is specified and group already exists" do
|
48
|
+
Puppet::Util.stubs(:gid).returns(true)
|
49
|
+
resource[:ensure] = :present
|
50
|
+
provider.expects(:execute).with(includes('-g'), kind_of(Hash))
|
51
|
+
provider.create
|
52
|
+
end
|
53
|
+
|
26
54
|
it "should add -o when allowdupe is enabled and the user is being created" do
|
27
55
|
resource[:allowdupe] = true
|
28
|
-
provider.expects(:execute).with(includes('-o'))
|
56
|
+
provider.expects(:execute).with(includes('-o'), kind_of(Hash))
|
29
57
|
provider.create
|
30
58
|
end
|
31
59
|
|
@@ -33,7 +61,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
33
61
|
it "should add -r when system is enabled" do
|
34
62
|
resource[:system] = :true
|
35
63
|
provider.should be_system_users
|
36
|
-
provider.expects(:execute).with(includes('-r'))
|
64
|
+
provider.expects(:execute).with(includes('-r'), kind_of(Hash))
|
37
65
|
provider.create
|
38
66
|
end
|
39
67
|
end
|
@@ -42,7 +70,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
42
70
|
it "should not add -r when system is enabled" do
|
43
71
|
resource[:system] = :true
|
44
72
|
provider.should_not be_system_users
|
45
|
-
provider.expects(:execute).with(['/usr/sbin/useradd', 'myuser'])
|
73
|
+
provider.expects(:execute).with(['/usr/sbin/useradd', 'myuser'], kind_of(Hash))
|
46
74
|
provider.create
|
47
75
|
end
|
48
76
|
end
|
@@ -51,10 +79,54 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
51
79
|
described_class.has_feature :manages_password_age
|
52
80
|
resource[:password_min_age] = 5
|
53
81
|
resource[:password_max_age] = 10
|
54
|
-
provider.expects(:execute).with(includes('/usr/sbin/useradd'))
|
82
|
+
provider.expects(:execute).with(includes('/usr/sbin/useradd'), kind_of(Hash))
|
55
83
|
provider.expects(:execute).with(['/usr/bin/chage', '-m', 5, '-M', 10, 'myuser'])
|
56
84
|
provider.create
|
57
85
|
end
|
86
|
+
|
87
|
+
describe "on systems with the libuser and forcelocal=true" do
|
88
|
+
before do
|
89
|
+
described_class.has_feature :libuser
|
90
|
+
resource[:forcelocal] = true
|
91
|
+
end
|
92
|
+
it "should use luseradd instead of useradd" do
|
93
|
+
provider.expects(:execute).with(includes('/usr/sbin/luseradd'), has_entry(:custom_environment, has_key('LIBUSER_CONF')))
|
94
|
+
provider.create
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should NOT use -o when allowdupe=true" do
|
98
|
+
resource[:allowdupe] = :true
|
99
|
+
provider.expects(:execute).with(Not(includes('-o')), has_entry(:custom_environment, has_key('LIBUSER_CONF')))
|
100
|
+
provider.create
|
101
|
+
end
|
102
|
+
|
103
|
+
it "should raise an exception for duplicate UIDs" do
|
104
|
+
resource[:uid] = 505
|
105
|
+
provider.stubs(:finduser).returns(true)
|
106
|
+
lambda { provider.create }.should raise_error(Puppet::Error, "UID 505 already exists, use allowdupe to force user creation")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should not use -G for luseradd and should call usermod with -G after luseradd when groups property is set" do
|
110
|
+
resource[:groups] = ['group1', 'group2']
|
111
|
+
provider.expects(:execute).with(Not(includes("-G")), has_entry(:custom_environment, has_key('LIBUSER_CONF')))
|
112
|
+
provider.expects(:execute).with(includes('/usr/sbin/usermod'))
|
113
|
+
provider.create
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should not use -m when managehome set" do
|
117
|
+
resource[:managehome] = :true
|
118
|
+
provider.expects(:execute).with(Not(includes('-m')), has_entry(:custom_environment, has_key('LIBUSER_CONF')))
|
119
|
+
provider.create
|
120
|
+
end
|
121
|
+
|
122
|
+
it "should not use -e with luseradd, should call usermod with -e after luseradd when expiry is set" do
|
123
|
+
resource[:expiry] = '2038-01-24'
|
124
|
+
provider.expects(:execute).with(all_of(includes('/usr/sbin/luseradd'), Not(includes('-e'))), has_entry(:custom_environment, has_key('LIBUSER_CONF')))
|
125
|
+
provider.expects(:execute).with(all_of(includes('/usr/sbin/usermod'), includes('-e')))
|
126
|
+
provider.create
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
58
130
|
end
|
59
131
|
|
60
132
|
describe "#uid=" do
|
@@ -65,11 +137,29 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
65
137
|
end
|
66
138
|
end
|
67
139
|
|
68
|
-
describe "#
|
69
|
-
it "should
|
70
|
-
|
71
|
-
|
140
|
+
describe "#expiry=" do
|
141
|
+
it "should pass expiry to usermod as MM/DD/YY when on Solaris" do
|
142
|
+
Facter.expects(:value).with(:operatingsystem).returns 'Solaris'
|
143
|
+
resource[:expiry] = '2012-10-31'
|
144
|
+
provider.expects(:execute).with(['/usr/sbin/usermod', '-e', '10/31/2012', 'myuser'])
|
145
|
+
provider.expiry = '2012-10-31'
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should pass expiry to usermod as YYYY-MM-DD when not on Solaris" do
|
149
|
+
Facter.expects(:value).with(:operatingsystem).returns 'not_solaris'
|
150
|
+
resource[:expiry] = '2012-10-31'
|
151
|
+
provider.expects(:execute).with(['/usr/sbin/usermod', '-e', '2012-10-31', 'myuser'])
|
152
|
+
provider.expiry = '2012-10-31'
|
153
|
+
end
|
154
|
+
|
155
|
+
it "should use -e with an empty string when the expiry property is removed" do
|
156
|
+
resource[:expiry] = :absent
|
157
|
+
provider.expects(:execute).with(['/usr/sbin/usermod', '-e', '', 'myuser'])
|
158
|
+
provider.expiry = :absent
|
72
159
|
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "#check_allow_dup" do
|
73
163
|
|
74
164
|
it "should return an array with a flag if dup is allowed" do
|
75
165
|
resource[:allowdupe] = :true
|
@@ -111,10 +201,16 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
111
201
|
describe "#check_manage_home" do
|
112
202
|
it "should return an array with -m flag if home is managed" do
|
113
203
|
resource[:managehome] = :true
|
114
|
-
provider.expects(:execute).with(includes('-m'))
|
204
|
+
provider.expects(:execute).with(includes('-m'), kind_of(Hash))
|
115
205
|
provider.create
|
116
206
|
end
|
117
207
|
|
208
|
+
it "should return an array with -m flag if home is managed and the home directory is modified" do
|
209
|
+
resource[:managehome] = :true
|
210
|
+
provider.expects(:execute).with(includes('-m'))
|
211
|
+
provider.home = '/tmp/myuser'
|
212
|
+
end
|
213
|
+
|
118
214
|
it "should return an array with -r flag if home is managed" do
|
119
215
|
resource[:managehome] = :true
|
120
216
|
resource[:ensure] = :absent
|
@@ -126,14 +222,14 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
126
222
|
it "should use -M flag if home is not managed and on Redhat" do
|
127
223
|
Facter.stubs(:value).with(:osfamily).returns("RedHat")
|
128
224
|
resource[:managehome] = :false
|
129
|
-
provider.expects(:execute).with(includes('-M'))
|
225
|
+
provider.expects(:execute).with(includes('-M'), kind_of(Hash))
|
130
226
|
provider.create
|
131
227
|
end
|
132
228
|
|
133
229
|
it "should not use -M flag if home is not managed and not on Redhat" do
|
134
230
|
Facter.stubs(:value).with(:osfamily).returns("not RedHat")
|
135
231
|
resource[:managehome] = :false
|
136
|
-
provider.expects(:execute).with(Not(includes('-M')))
|
232
|
+
provider.expects(:execute).with(Not(includes('-M')), kind_of(Hash))
|
137
233
|
provider.create
|
138
234
|
end
|
139
235
|
end
|
@@ -143,6 +239,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
143
239
|
resource[:allowdupe] = :true
|
144
240
|
resource[:managehome] = :true
|
145
241
|
resource[:system] = :true
|
242
|
+
resource[:groups] = [ 'somegroup' ]
|
146
243
|
end
|
147
244
|
|
148
245
|
it "should call command with :add" do
|
@@ -190,19 +287,86 @@ describe Puppet::Type.type(:user).provider(:useradd) do
|
|
190
287
|
end
|
191
288
|
end
|
192
289
|
|
193
|
-
it "should return an array with full command" do
|
290
|
+
it "should return an array with the full command and expiry as MM/DD/YY when on Solaris" do
|
291
|
+
Facter.stubs(:value).with(:operatingsystem).returns 'Solaris'
|
194
292
|
described_class.expects(:system_users?).returns true
|
195
|
-
provider.stubs(:add_properties).returns(["-G", "somegroup"])
|
196
293
|
resource[:expiry] = "2012-08-18"
|
294
|
+
provider.addcmd.must == ['/usr/sbin/useradd', '-e', '08/18/2012', '-G', 'somegroup', '-o', '-m', '-r', 'myuser']
|
295
|
+
end
|
197
296
|
|
198
|
-
|
297
|
+
it "should return an array with the full command and expiry as YYYY-MM-DD when not on Solaris" do
|
298
|
+
Facter.stubs(:value).with(:operatingsystem).returns 'not_solaris'
|
299
|
+
described_class.expects(:system_users?).returns true
|
300
|
+
resource[:expiry] = "2012-08-18"
|
301
|
+
provider.addcmd.must == ['/usr/sbin/useradd', '-e', '2012-08-18', '-G', 'somegroup', '-o', '-m', '-r', 'myuser']
|
199
302
|
end
|
200
303
|
|
201
304
|
it "should return an array without -e if expiry is undefined full command" do
|
202
305
|
described_class.expects(:system_users?).returns true
|
203
|
-
provider.stubs(:add_properties).returns(["-G", "somegroup"])
|
204
306
|
provider.addcmd.must == ["/usr/sbin/useradd", "-G", "somegroup", "-o", "-m", "-r", "myuser"]
|
205
307
|
end
|
308
|
+
|
309
|
+
it "should pass -e \"\" if the expiry has to be removed" do
|
310
|
+
described_class.expects(:system_users?).returns true
|
311
|
+
resource[:expiry] = :absent
|
312
|
+
|
313
|
+
provider.addcmd.must == ['/usr/sbin/useradd', '-e', '', '-G', 'somegroup', '-o', '-m', '-r', 'myuser']
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
{
|
318
|
+
:password_min_age => 10,
|
319
|
+
:password_max_age => 20,
|
320
|
+
:password => '$6$FvW8Ib8h$qQMI/CR9m.QzIicZKutLpBgCBBdrch1IX0rTnxuI32K1pD9.RXZrmeKQlaC.RzODNuoUtPPIyQDufunvLOQWF0'
|
321
|
+
}.each_pair do |property, expected_value|
|
322
|
+
describe "##{property}" do
|
323
|
+
before :each do
|
324
|
+
resource # just to link the resource to the provider
|
325
|
+
end
|
326
|
+
|
327
|
+
it "should return absent if libshadow feature is not present" do
|
328
|
+
Puppet.features.stubs(:libshadow?).returns false
|
329
|
+
# Shadow::Passwd.expects(:getspnam).never # if we really don't have libshadow we dont have Shadow::Passwd either
|
330
|
+
provider.send(property).should == :absent
|
331
|
+
end
|
332
|
+
|
333
|
+
it "should return absent if user cannot be found", :if => Puppet.features.libshadow? do
|
334
|
+
Shadow::Passwd.expects(:getspnam).with('myuser').returns nil
|
335
|
+
provider.send(property).should == :absent
|
336
|
+
end
|
337
|
+
|
338
|
+
it "should return the correct value if libshadow is present", :if => Puppet.features.libshadow? do
|
339
|
+
Shadow::Passwd.expects(:getspnam).with('myuser').returns shadow_entry
|
340
|
+
provider.send(property).should == expected_value
|
341
|
+
end
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
345
|
+
describe '#expiry' do
|
346
|
+
before :each do
|
347
|
+
resource # just to link the resource to the provider
|
348
|
+
end
|
349
|
+
|
350
|
+
it "should return absent if libshadow feature is not present" do
|
351
|
+
Puppet.features.stubs(:libshadow?).returns false
|
352
|
+
provider.expiry.should == :absent
|
353
|
+
end
|
354
|
+
|
355
|
+
it "should return absent if user cannot be found", :if => Puppet.features.libshadow? do
|
356
|
+
Shadow::Passwd.expects(:getspnam).with('myuser').returns nil
|
357
|
+
provider.expiry.should == :absent
|
358
|
+
end
|
359
|
+
|
360
|
+
it "should return absent if expiry is -1", :if => Puppet.features.libshadow? do
|
361
|
+
shadow_entry.sp_expire = -1
|
362
|
+
Shadow::Passwd.expects(:getspnam).with('myuser').returns shadow_entry
|
363
|
+
provider.expiry.should == :absent
|
364
|
+
end
|
365
|
+
|
366
|
+
it "should convert to YYYY-MM-DD", :if => Puppet.features.libshadow? do
|
367
|
+
Shadow::Passwd.expects(:getspnam).with('myuser').returns shadow_entry
|
368
|
+
provider.expiry.should == '2013-01-01'
|
369
|
+
end
|
206
370
|
end
|
207
371
|
|
208
372
|
describe "#passcmd" do
|