puppet 0.24.6 → 0.24.7
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/CHANGELOG +115 -0
- data/Rakefile +43 -14
- data/bin/puppetca +6 -5
- data/bin/puppetdoc +109 -15
- data/bin/ralsh +3 -1
- data/conf/redhat/puppet.spec +74 -48
- data/examples/mcx_dock_absent.pp +4 -0
- data/examples/mcx_dock_default.pp +118 -0
- data/examples/mcx_dock_full.pp +125 -0
- data/examples/mcx_dock_invalid.pp +9 -0
- data/examples/mcx_nogroup.pp +118 -0
- data/examples/mcx_notexists_absent.pp +4 -0
- data/ext/emacs/puppet-mode.el +1 -1
- data/lib/puppet.rb +1 -1
- data/lib/puppet/external/nagios/base.rb +114 -71
- data/lib/puppet/feature/base.rb +6 -0
- data/lib/puppet/indirector/yaml.rb +12 -3
- data/lib/puppet/module.rb +1 -1
- data/lib/puppet/network/client/master.rb +1 -1
- data/lib/puppet/network/xmlrpc/client.rb +3 -1
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast.rb +15 -0
- data/lib/puppet/parser/ast/astarray.rb +1 -2
- data/lib/puppet/parser/ast/casestatement.rb +2 -0
- data/lib/puppet/parser/ast/collection.rb +2 -0
- data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
- data/lib/puppet/parser/ast/definition.rb +2 -0
- data/lib/puppet/parser/ast/else.rb +3 -0
- data/lib/puppet/parser/ast/function.rb +19 -12
- data/lib/puppet/parser/ast/hostclass.rb +9 -1
- data/lib/puppet/parser/ast/ifstatement.rb +3 -0
- data/lib/puppet/parser/ast/node.rb +3 -0
- data/lib/puppet/parser/ast/resource.rb +3 -0
- data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
- data/lib/puppet/parser/ast/resource_override.rb +3 -0
- data/lib/puppet/parser/ast/vardef.rb +3 -0
- data/lib/puppet/parser/functions.rb +14 -0
- data/lib/puppet/parser/functions/inline_template.rb +21 -0
- data/lib/puppet/parser/functions/template.rb +3 -2
- data/lib/puppet/parser/lexer.rb +56 -7
- data/lib/puppet/parser/parser.rb +114 -98
- data/lib/puppet/parser/parser_support.rb +24 -4
- data/lib/puppet/parser/resource/reference.rb +4 -3
- data/lib/puppet/parser/templatewrapper.rb +30 -22
- data/lib/puppet/property.rb +1 -1
- data/lib/puppet/property/list.rb +7 -2
- data/lib/puppet/property/ordered_list.rb +22 -0
- data/lib/puppet/provider/augeas/augeas.rb +189 -0
- data/lib/puppet/provider/computer/computer.rb +22 -0
- data/lib/puppet/provider/confine.rb +4 -1
- data/lib/puppet/provider/confine/variable.rb +13 -2
- data/lib/puppet/provider/confine_collection.rb +4 -1
- data/lib/puppet/provider/confiner.rb +1 -1
- data/lib/puppet/provider/group/directoryservice.rb +6 -3
- data/lib/puppet/provider/group/groupadd.rb +5 -2
- data/lib/puppet/provider/group/ldap.rb +11 -9
- data/lib/puppet/provider/group/netinfo.rb +8 -4
- data/lib/puppet/provider/group/pw.rb +5 -1
- data/lib/puppet/provider/host/netinfo.rb +5 -2
- data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
- data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
- data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
- data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
- data/lib/puppet/provider/package/appdmg.rb +0 -3
- data/lib/puppet/provider/package/apt.rb +6 -0
- data/lib/puppet/provider/package/rpm.rb +2 -0
- data/lib/puppet/provider/package/yum.rb +5 -1
- data/lib/puppet/provider/package/yumhelper.py +9 -0
- data/lib/puppet/provider/service/base.rb +9 -6
- data/lib/puppet/provider/service/daemontools.rb +25 -15
- data/lib/puppet/provider/service/debian.rb +6 -2
- data/lib/puppet/provider/service/freebsd.rb +5 -2
- data/lib/puppet/provider/service/gentoo.rb +6 -3
- data/lib/puppet/provider/service/init.rb +31 -21
- data/lib/puppet/provider/service/launchd.rb +195 -0
- data/lib/puppet/provider/service/redhat.rb +5 -2
- data/lib/puppet/provider/service/runit.rb +30 -20
- data/lib/puppet/provider/service/smf.rb +7 -4
- data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
- data/lib/puppet/provider/user/directoryservice.rb +1 -0
- data/lib/puppet/provider/user/netinfo.rb +9 -3
- data/lib/puppet/provider/user/user_role_add.rb +43 -6
- data/lib/puppet/provider/zfs/solaris.rb +45 -0
- data/lib/puppet/provider/zone/solaris.rb +8 -4
- data/lib/puppet/provider/zpool/solaris.rb +116 -0
- data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
- data/lib/puppet/rails/database/schema.rb +1 -0
- data/lib/puppet/rails/host.rb +4 -0
- data/lib/puppet/reference/configuration.rb +1 -1
- data/lib/puppet/reports/tagmail.rb +15 -6
- data/lib/puppet/transaction/change.rb +3 -5
- data/lib/puppet/transportable.rb +1 -0
- data/lib/puppet/type/augeas.rb +155 -0
- data/lib/puppet/type/computer.rb +62 -0
- data/lib/puppet/type/exec.rb +2 -1
- data/lib/puppet/type/file.rb +1 -1
- data/lib/puppet/type/file/ensure.rb +8 -5
- data/lib/puppet/type/file/mode.rb +0 -14
- data/lib/puppet/type/file/owner.rb +32 -64
- data/lib/puppet/type/file/selcontext.rb +3 -8
- data/lib/puppet/type/group.rb +27 -45
- data/lib/puppet/type/k5login.rb +1 -1
- data/lib/puppet/type/macauthorization.rb +141 -0
- data/lib/puppet/type/mcx.rb +115 -0
- data/lib/puppet/type/mount.rb +1 -1
- data/lib/puppet/type/nagios_hostdependency.rb +3 -0
- data/lib/puppet/type/ssh_authorized_key.rb +16 -0
- data/lib/puppet/type/tidy.rb +43 -14
- data/lib/puppet/type/user.rb +25 -1
- data/lib/puppet/type/zfs.rb +51 -0
- data/lib/puppet/type/zone.rb +8 -0
- data/lib/puppet/type/zpool.rb +93 -0
- data/lib/puppet/util.rb +17 -38
- data/lib/puppet/util/file_locking.rb +44 -0
- data/lib/puppet/util/filetype.rb +3 -3
- data/lib/puppet/util/log.rb +1 -16
- data/lib/puppet/util/metric.rb +0 -5
- data/lib/puppet/util/rdoc.rb +85 -0
- data/lib/puppet/util/rdoc/code_objects.rb +219 -0
- data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
- data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
- data/lib/puppet/util/rdoc/parser.rb +437 -0
- data/lib/puppet/util/selinux.rb +135 -63
- data/lib/puppet/util/settings.rb +136 -126
- data/lib/puppet/util/storage.rb +4 -2
- data/spec/Rakefile +91 -0
- data/spec/integration/checksum.rb +47 -0
- data/spec/integration/defaults.rb +47 -0
- data/spec/integration/file_serving/configuration.rb +43 -0
- data/spec/integration/file_serving/content.rb +18 -0
- data/spec/integration/file_serving/metadata.rb +18 -0
- data/spec/integration/indirector/direct_file_server.rb +80 -0
- data/spec/integration/indirector/file_content/file_server.rb +18 -0
- data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
- data/spec/integration/indirector/module_files.rb +57 -0
- data/spec/integration/indirector/node/ldap.rb +15 -0
- data/spec/integration/indirector/rest.rb +464 -0
- data/spec/integration/network/server/mongrel.rb +48 -0
- data/spec/integration/network/server/webrick.rb +48 -0
- data/spec/integration/node.rb +93 -0
- data/spec/integration/node/catalog.rb +54 -0
- data/spec/integration/node/facts.rb +45 -0
- data/spec/integration/provider/package.rb +26 -0
- data/spec/integration/provider/service/init.rb +32 -0
- data/spec/integration/reference/providers.rb +17 -0
- data/spec/integration/reports.rb +14 -0
- data/spec/integration/transaction/report.rb +26 -0
- data/spec/integration/type/package.rb +22 -0
- data/spec/integration/util/file_locking.rb +36 -0
- data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
- data/spec/monkey_patches/alias_should_to_must.rb +5 -0
- data/spec/shared_behaviours/file_server_terminus.rb +42 -0
- data/spec/shared_behaviours/file_serving.rb +64 -0
- data/spec/shared_behaviours/memory_terminus.rb +32 -0
- data/spec/spec.opts +5 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/executables/client/certhandler.rb +122 -0
- data/spec/unit/file_serving/configuration.rb +224 -0
- data/spec/unit/file_serving/configuration/parser.rb +135 -0
- data/spec/unit/file_serving/content.rb +71 -0
- data/spec/unit/file_serving/file_base.rb +124 -0
- data/spec/unit/file_serving/fileset.rb +239 -0
- data/spec/unit/file_serving/indirection_hooks.rb +124 -0
- data/spec/unit/file_serving/metadata.rb +187 -0
- data/spec/unit/file_serving/mount.rb +143 -0
- data/spec/unit/file_serving/terminus_helper.rb +76 -0
- data/spec/unit/indirector.rb +152 -0
- data/spec/unit/indirector/catalog/compiler.rb +156 -0
- data/spec/unit/indirector/catalog/yaml.rb +25 -0
- data/spec/unit/indirector/checksum/file.rb +139 -0
- data/spec/unit/indirector/code.rb +33 -0
- data/spec/unit/indirector/direct_file_server.rb +89 -0
- data/spec/unit/indirector/envelope.rb +47 -0
- data/spec/unit/indirector/exec.rb +51 -0
- data/spec/unit/indirector/facts/facter.rb +76 -0
- data/spec/unit/indirector/facts/yaml.rb +26 -0
- data/spec/unit/indirector/file.rb +154 -0
- data/spec/unit/indirector/file_content/file.rb +18 -0
- data/spec/unit/indirector/file_content/file_server.rb +18 -0
- data/spec/unit/indirector/file_content/modules.rb +18 -0
- data/spec/unit/indirector/file_content/rest.rb +11 -0
- data/spec/unit/indirector/file_metadata/file.rb +52 -0
- data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
- data/spec/unit/indirector/file_metadata/modules.rb +42 -0
- data/spec/unit/indirector/file_metadata/rest.rb +9 -0
- data/spec/unit/indirector/file_server.rb +184 -0
- data/spec/unit/indirector/indirection.rb +731 -0
- data/spec/unit/indirector/ldap.rb +143 -0
- data/spec/unit/indirector/memory.rb +29 -0
- data/spec/unit/indirector/module_files.rb +259 -0
- data/spec/unit/indirector/node/exec.rb +69 -0
- data/spec/unit/indirector/node/ldap.rb +424 -0
- data/spec/unit/indirector/node/memory.rb +19 -0
- data/spec/unit/indirector/node/plain.rb +19 -0
- data/spec/unit/indirector/node/rest.rb +13 -0
- data/spec/unit/indirector/node/yaml.rb +25 -0
- data/spec/unit/indirector/plain.rb +29 -0
- data/spec/unit/indirector/report/processor.rb +81 -0
- data/spec/unit/indirector/request.rb +87 -0
- data/spec/unit/indirector/rest.rb +372 -0
- data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
- data/spec/unit/indirector/terminus.rb +245 -0
- data/spec/unit/indirector/yaml.rb +145 -0
- data/spec/unit/module.rb +247 -0
- data/spec/unit/network/client.rb +45 -0
- data/spec/unit/network/client/master.rb +442 -0
- data/spec/unit/network/handler/fileserver.rb +179 -0
- data/spec/unit/network/http.rb +35 -0
- data/spec/unit/network/http/mongrel.rb +117 -0
- data/spec/unit/network/http/mongrel/rest.rb +377 -0
- data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
- data/spec/unit/network/http/webrick.rb +127 -0
- data/spec/unit/network/http/webrick/rest.rb +323 -0
- data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
- data/spec/unit/network/http_pool.rb +238 -0
- data/spec/unit/network/server.rb +316 -0
- data/spec/unit/network/xmlrpc/client.rb +13 -0
- data/spec/unit/node.rb +167 -0
- data/spec/unit/node/catalog.rb +864 -0
- data/spec/unit/node/environment.rb +37 -0
- data/spec/unit/node/facts.rb +44 -0
- data/spec/unit/other/checksum.rb +92 -0
- data/spec/unit/other/pgraph.rb +210 -0
- data/spec/unit/other/transaction.rb +33 -0
- data/spec/unit/other/transbucket.rb +172 -0
- data/spec/unit/other/transobject.rb +92 -0
- data/spec/unit/parameter.rb +24 -0
- data/spec/unit/parser/ast.rb +37 -0
- data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
- data/spec/unit/parser/ast/astarray.rb +66 -0
- data/spec/unit/parser/ast/boolean_operator.rb +53 -0
- data/spec/unit/parser/ast/collexpr.rb +92 -0
- data/spec/unit/parser/ast/comparison_operator.rb +92 -0
- data/spec/unit/parser/ast/definition.rb +195 -0
- data/spec/unit/parser/ast/function.rb +77 -0
- data/spec/unit/parser/ast/hostclass.rb +148 -0
- data/spec/unit/parser/ast/minus.rb +36 -0
- data/spec/unit/parser/ast/node.rb +125 -0
- data/spec/unit/parser/ast/nop.rb +20 -0
- data/spec/unit/parser/ast/not.rb +30 -0
- data/spec/unit/parser/ast/resource_override.rb +51 -0
- data/spec/unit/parser/ast/resource_reference.rb +63 -0
- data/spec/unit/parser/ast/vardef.rb +47 -0
- data/spec/unit/parser/collector.rb +426 -0
- data/spec/unit/parser/compiler.rb +561 -0
- data/spec/unit/parser/functions.rb +83 -0
- data/spec/unit/parser/functions/inline_template.rb +59 -0
- data/spec/unit/parser/functions/template.rb +62 -0
- data/spec/unit/parser/interpreter.rb +138 -0
- data/spec/unit/parser/lexer.rb +646 -0
- data/spec/unit/parser/parser.rb +228 -0
- data/spec/unit/parser/resource.rb +336 -0
- data/spec/unit/parser/resource/reference.rb +95 -0
- data/spec/unit/parser/scope.rb +87 -0
- data/spec/unit/parser/templatewrapper.rb +129 -0
- data/spec/unit/property.rb +35 -0
- data/spec/unit/property/keyvalue.rb +168 -0
- data/spec/unit/property/list.rb +156 -0
- data/spec/unit/property/ordered_list.rb +64 -0
- data/spec/unit/provider/augeas/augeas.rb +238 -0
- data/spec/unit/provider/confine.rb +78 -0
- data/spec/unit/provider/confine/exists.rb +81 -0
- data/spec/unit/provider/confine/false.rb +53 -0
- data/spec/unit/provider/confine/feature.rb +60 -0
- data/spec/unit/provider/confine/true.rb +53 -0
- data/spec/unit/provider/confine/variable.rb +107 -0
- data/spec/unit/provider/confine_collection.rb +134 -0
- data/spec/unit/provider/confiner.rb +63 -0
- data/spec/unit/provider/group/groupadd.rb +31 -0
- data/spec/unit/provider/group/ldap.rb +105 -0
- data/spec/unit/provider/ldap.rb +248 -0
- data/spec/unit/provider/macauthorization.rb +147 -0
- data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
- data/spec/unit/provider/mount.rb +130 -0
- data/spec/unit/provider/mount/parsed.rb +185 -0
- data/spec/unit/provider/package/apt.rb +138 -0
- data/spec/unit/provider/package/dpkg.rb +163 -0
- data/spec/unit/provider/package/gem.rb +87 -0
- data/spec/unit/provider/package/hpux.rb +52 -0
- data/spec/unit/provider/selboolean.rb +37 -0
- data/spec/unit/provider/selmodule-example.pp +0 -0
- data/spec/unit/provider/selmodule.rb +66 -0
- data/spec/unit/provider/service/daemontools.rb +124 -0
- data/spec/unit/provider/service/launchd.rb +134 -0
- data/spec/unit/provider/service/runit.rb +117 -0
- data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
- data/spec/unit/provider/user/hpux.rb +25 -0
- data/spec/unit/provider/user/ldap.rb +279 -0
- data/spec/unit/provider/user/user_role_add.rb +249 -0
- data/spec/unit/provider/user/useradd.rb +115 -0
- data/spec/unit/provider/zfs/solaris.rb +87 -0
- data/spec/unit/provider/zone/solaris.rb +42 -0
- data/spec/unit/provider/zpool/solaris.rb +179 -0
- data/spec/unit/rails.rb +125 -0
- data/spec/unit/relationship.rb +149 -0
- data/spec/unit/reports.rb +61 -0
- data/spec/unit/resource_reference.rb +73 -0
- data/spec/unit/simple_graph.rb +280 -0
- data/spec/unit/transaction/change.rb +187 -0
- data/spec/unit/transaction/event.rb +25 -0
- data/spec/unit/transaction/report.rb +40 -0
- data/spec/unit/type.rb +64 -0
- data/spec/unit/type/augeas.rb +113 -0
- data/spec/unit/type/computer.rb +82 -0
- data/spec/unit/type/exec.rb +91 -0
- data/spec/unit/type/file.rb +155 -0
- data/spec/unit/type/file/ensure.rb +21 -0
- data/spec/unit/type/file/group.rb +118 -0
- data/spec/unit/type/file/owner.rb +132 -0
- data/spec/unit/type/file/selinux.rb +82 -0
- data/spec/unit/type/group.rb +40 -0
- data/spec/unit/type/macauthorization.rb +78 -0
- data/spec/unit/type/mcx.rb +108 -0
- data/spec/unit/type/mount.rb +219 -0
- data/spec/unit/type/nagios.rb +63 -0
- data/spec/unit/type/noop_metaparam.rb +38 -0
- data/spec/unit/type/package.rb +246 -0
- data/spec/unit/type/resources.rb +27 -0
- data/spec/unit/type/schedule.rb +339 -0
- data/spec/unit/type/selboolean.rb +47 -0
- data/spec/unit/type/selmodule.rb +18 -0
- data/spec/unit/type/service.rb +254 -0
- data/spec/unit/type/ssh_authorized_key.rb +106 -0
- data/spec/unit/type/tidy.rb +68 -0
- data/spec/unit/type/user.rb +260 -0
- data/spec/unit/type/zfs.rb +45 -0
- data/spec/unit/type/zone.rb +20 -0
- data/spec/unit/type/zpool.rb +110 -0
- data/spec/unit/util/checksums.rb +99 -0
- data/spec/unit/util/constant_inflector.rb +70 -0
- data/spec/unit/util/file_locking.rb +115 -0
- data/spec/unit/util/ldap/connection.rb +169 -0
- data/spec/unit/util/ldap/generator.rb +54 -0
- data/spec/unit/util/ldap/manager.rb +654 -0
- data/spec/unit/util/loadedfile.rb +65 -0
- data/spec/unit/util/log.rb +107 -0
- data/spec/unit/util/metric.rb +95 -0
- data/spec/unit/util/nagios_maker.rb +128 -0
- data/spec/unit/util/posix.rb +256 -0
- data/spec/unit/util/resource_template.rb +58 -0
- data/spec/unit/util/selinux.rb +219 -0
- data/spec/unit/util/settings.rb +847 -0
- data/spec/unit/util/storage.rb +248 -0
- data/spec/unit/util/tagging.rb +92 -0
- data/spec/unit/util/uri_helper.rb +41 -0
- data/spec/unit/util/user_attr.rb +47 -0
- data/spec/unit/util/warnings.rb +35 -0
- data/test/certmgr/support.rb +0 -6
- data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
- data/test/data/snippets/multilinecomments.pp +6 -0
- data/test/data/snippets/multipleclass.pp +9 -0
- data/test/language/functions.rb +11 -1
- data/test/language/snippets.rb +16 -0
- data/test/lib/puppettest/runnable_test.rb +1 -1
- data/test/network/handler/fileserver.rb +5 -0
- data/test/other/report.rb +0 -4
- data/test/ral/type/resources.rb +2 -19
- data/test/util/settings.rb +4 -4
- data/test/util/storage.rb +0 -24
- data/test/util/utiltest.rb +0 -33
- metadata +319 -26
- data/conf/debian/README.source +0 -2
- data/conf/debian/TODO.Debian +0 -1
- data/conf/debian/changelog +0 -257
- data/conf/debian/compat +0 -1
- data/conf/debian/control +0 -45
- data/conf/debian/copyright +0 -17
- data/conf/debian/docs +0 -1
- data/conf/debian/fileserver.conf +0 -12
- data/conf/debian/puppet.NEWS +0 -63
- data/conf/debian/puppet.conf +0 -8
- data/conf/debian/puppet.dirs +0 -7
- data/conf/debian/puppet.files +0 -6
- data/conf/debian/puppet.init +0 -64
- data/conf/debian/puppet.logrotate +0 -11
- data/conf/debian/puppet.postinst +0 -9
- data/conf/debian/puppet.postrm +0 -21
- data/conf/debian/puppet.preinst +0 -25
- data/conf/debian/puppetmaster.files +0 -4
- data/conf/debian/puppetmaster.init +0 -58
- data/conf/debian/rules +0 -115
- data/conf/debian/watch +0 -2
- data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,46 @@
|
|
1
|
+
dir = File.expand_path(File.dirname(__FILE__))
|
2
|
+
[ "#{dir}/../../lib", "#{dir}/../../test/lib"].each do |dir|
|
3
|
+
fulldir = File.expand_path(dir)
|
4
|
+
$LOAD_PATH.unshift(fulldir) unless $LOAD_PATH.include?(fulldir)
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'spec'
|
8
|
+
require 'puppettest'
|
9
|
+
require 'puppettest/runnable_test'
|
10
|
+
|
11
|
+
module Spec
|
12
|
+
module Runner
|
13
|
+
class ExampleGroupRunner
|
14
|
+
def run
|
15
|
+
prepare
|
16
|
+
success = true
|
17
|
+
example_groups.each do |example_group|
|
18
|
+
unless example_group.runnable?
|
19
|
+
warn "Skipping unsuitable example group %s: %s" % [example_group.description, example_group.messages.join(", ")]
|
20
|
+
next
|
21
|
+
end
|
22
|
+
success = success & example_group.run
|
23
|
+
end
|
24
|
+
return success
|
25
|
+
ensure
|
26
|
+
finish
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
module Spec
|
33
|
+
module Example
|
34
|
+
class ExampleGroup
|
35
|
+
extend PuppetTest::RunnableTest
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
module Test
|
41
|
+
module Unit
|
42
|
+
class TestCase
|
43
|
+
extend PuppetTest::RunnableTest
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
describe "Puppet::Indirector::FileServerTerminus", :shared => true do
|
7
|
+
# This only works if the shared behaviour is included before
|
8
|
+
# the 'before' block in the including context.
|
9
|
+
before do
|
10
|
+
Puppet::FileServing::Configuration.clear_cache
|
11
|
+
FileTest.stubs(:exists?).with(Puppet[:fileserverconfig]).returns(true)
|
12
|
+
FileTest.stubs(:exists?).with("/my/mount/path").returns(true)
|
13
|
+
FileTest.stubs(:directory?).with("/my/mount/path").returns(true)
|
14
|
+
FileTest.stubs(:readable?).with("/my/mount/path").returns(true)
|
15
|
+
|
16
|
+
# Use a real mount, so the integration is a bit deeper.
|
17
|
+
@mount1 = Puppet::FileServing::Configuration::Mount.new("one")
|
18
|
+
@mount1.path = "/my/mount/path"
|
19
|
+
|
20
|
+
@parser = stub 'parser', :changed? => false
|
21
|
+
@parser.stubs(:parse).returns("one" => @mount1)
|
22
|
+
|
23
|
+
Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
|
24
|
+
|
25
|
+
# Stub out the modules terminus
|
26
|
+
@modules = mock 'modules terminus'
|
27
|
+
|
28
|
+
@request = Puppet::Indirector::Request.new(:indirection, :method, "puppetmounts://myhost/one/my/file")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should use the file server configuration to find files" do
|
32
|
+
@modules.stubs(:find).returns(nil)
|
33
|
+
@terminus.indirection.stubs(:terminus).with(:modules).returns(@modules)
|
34
|
+
|
35
|
+
path = "/my/mount/path/my/file"
|
36
|
+
FileTest.stubs(:exists?).with(path).returns(true)
|
37
|
+
FileTest.stubs(:exists?).with("/my/mount/path").returns(true)
|
38
|
+
@mount1.expects(:file).with("my/file", :node => nil).returns(path)
|
39
|
+
|
40
|
+
@terminus.find(@request).should be_instance_of(@test_class)
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Created by Luke Kanies on 2007-10-18.
|
4
|
+
# Copyright (c) 2007. All rights reserved.
|
5
|
+
|
6
|
+
describe "Puppet::FileServing::Files", :shared => true do
|
7
|
+
it "should use the rest terminus when the 'puppet' URI scheme is used and a host name is present" do
|
8
|
+
uri = "puppet://myhost/fakemod/my/file"
|
9
|
+
@indirection.terminus(:rest).expects(:find)
|
10
|
+
@test_class.find(uri)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should use the rest terminus when the 'puppet' URI scheme is used, no host name is present, and the process name is not 'puppet'" do
|
14
|
+
uri = "puppet:///fakemod/my/file"
|
15
|
+
Puppet.settings.stubs(:value).with(:name).returns("puppetd")
|
16
|
+
Puppet.settings.stubs(:value).with(:modulepath).returns("")
|
17
|
+
@indirection.terminus(:rest).expects(:find)
|
18
|
+
@test_class.find(uri)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should use the file_server terminus when the 'puppet' URI scheme is used, no host name is present, and the process name is 'puppet'" do
|
22
|
+
uri = "puppet:///fakemod/my/file"
|
23
|
+
Puppet::Node::Environment.stubs(:new).returns(stub("env", :name => "testing"))
|
24
|
+
Puppet.settings.stubs(:value).with(:name).returns("puppet")
|
25
|
+
Puppet.settings.stubs(:value).with(:modulepath, "testing").returns("")
|
26
|
+
Puppet.settings.stubs(:value).with(:modulepath).returns("")
|
27
|
+
Puppet.settings.stubs(:value).with(:libdir).returns("")
|
28
|
+
Puppet.settings.stubs(:value).with(:fileserverconfig).returns("/whatever")
|
29
|
+
Puppet.settings.stubs(:value).with(:environment).returns("")
|
30
|
+
@indirection.terminus(:file_server).expects(:find)
|
31
|
+
@indirection.terminus(:file_server).stubs(:authorized?).returns(true)
|
32
|
+
@test_class.find(uri)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should use the file_server terminus when the 'puppetmounts' URI scheme is used" do
|
36
|
+
uri = "puppetmounts:///fakemod/my/file"
|
37
|
+
@indirection.terminus(:file_server).expects(:find)
|
38
|
+
@indirection.terminus(:file_server).stubs(:authorized?).returns(true)
|
39
|
+
@test_class.find(uri)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should use the file terminus when the 'file' URI scheme is used" do
|
43
|
+
uri = "file:///fakemod/my/file"
|
44
|
+
@indirection.terminus(:file).expects(:find)
|
45
|
+
@test_class.find(uri)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "should use the file terminus when a fully qualified path is provided" do
|
49
|
+
uri = "/fakemod/my/file"
|
50
|
+
@indirection.terminus(:file).expects(:find)
|
51
|
+
@test_class.find(uri)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should use the configuration to test whether the request is allowed" do
|
55
|
+
uri = "puppetmounts:///fakemod/my/file"
|
56
|
+
config = mock 'configuration'
|
57
|
+
@indirection.terminus(:file_server).stubs(:configuration).returns config
|
58
|
+
|
59
|
+
@indirection.terminus(:file_server).expects(:find)
|
60
|
+
config.expects(:authorized?).returns(true)
|
61
|
+
@test_class.find(uri, :node => "foo", :ip => "bar")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#
|
2
|
+
# Created by Luke Kanies on 2008-4-8.
|
3
|
+
# Copyright (c) 2008. All rights reserved.
|
4
|
+
|
5
|
+
describe "A Memory Terminus", :shared => true do
|
6
|
+
it "should find no instances by default" do
|
7
|
+
@searcher.find(@request).should be_nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should be able to find instances that were previously saved" do
|
11
|
+
@searcher.save(@request)
|
12
|
+
@searcher.find(@request).should equal(@instance)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should replace existing saved instances when a new instance with the same name is saved" do
|
16
|
+
@searcher.save(@request)
|
17
|
+
two = stub 'second', :name => @name
|
18
|
+
trequest = stub 'request', :key => @name, :instance => two
|
19
|
+
@searcher.save(trequest)
|
20
|
+
@searcher.find(@request).should equal(two)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should be able to remove previously saved instances" do
|
24
|
+
@searcher.save(@request)
|
25
|
+
@searcher.destroy(@request)
|
26
|
+
@searcher.find(@request).should be_nil
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should fail when asked to destroy an instance that does not exist" do
|
30
|
+
proc { @searcher.destroy(@request) }.should raise_error(ArgumentError)
|
31
|
+
end
|
32
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
dir = File.expand_path(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift("#{dir}/")
|
4
|
+
$LOAD_PATH.unshift("#{dir}/../lib")
|
5
|
+
$LOAD_PATH.unshift("#{dir}/../test/lib") # Add the old test dir, so that we can still find our local mocha and spec
|
6
|
+
|
7
|
+
# include any gems in vendor/gems
|
8
|
+
Dir["#{dir}/../vendor/gems/**"].each do |path|
|
9
|
+
libpath = File.join(path, "lib")
|
10
|
+
if File.directory?(libpath)
|
11
|
+
$LOAD_PATH.unshift(libpath)
|
12
|
+
else
|
13
|
+
$LOAD_PATH.unshift(path)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
require 'puppettest'
|
18
|
+
require 'puppettest/runnable_test'
|
19
|
+
require 'mocha'
|
20
|
+
require 'spec'
|
21
|
+
|
22
|
+
# load any monkey-patches
|
23
|
+
Dir["#{dir}/monkey_patches/*.rb"].map { |file| require file }
|
24
|
+
|
25
|
+
Spec::Runner.configure do |config|
|
26
|
+
config.mock_with :mocha
|
27
|
+
|
28
|
+
# config.prepend_before :all do
|
29
|
+
# setup_mocks_for_rspec
|
30
|
+
# setup() if respond_to? :setup
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# config.prepend_after :all do
|
34
|
+
# teardown() if respond_to? :teardown
|
35
|
+
# end
|
36
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
Dir.chdir(File.dirname(__FILE__)) { (s = lambda { |f| File.exist?(f) ? require(f) : Dir.chdir("..") { s.call(f) } }).call("spec/spec_helper.rb") }
|
4
|
+
|
5
|
+
require 'puppet/executables/client/certhandler'
|
6
|
+
|
7
|
+
cert_handler = Puppet::Executables::Client::CertHandler
|
8
|
+
|
9
|
+
describe cert_handler, "when handling certificates" do
|
10
|
+
before do
|
11
|
+
@caclient = mock('caclient')
|
12
|
+
caclient_class = mock('caclient_class')
|
13
|
+
caclient_class.stubs(:new).returns(@caclient)
|
14
|
+
Puppet::Network::Client.stubs(:ca).returns(caclient_class)
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "when reading or retrieving the certificate" do
|
18
|
+
before do
|
19
|
+
@handler = cert_handler.new(1,true)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should attempt to read the certificate" do
|
23
|
+
@handler.expects(:read_cert).returns true
|
24
|
+
@handler.read_retrieve
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should delegate to Puppet::Network::HttpPool to read the certificate" do
|
28
|
+
Puppet::Network::HttpPool.expects(:read_cert).returns(true)
|
29
|
+
@handler.read_retrieve
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should not attempt to retrieve a certificate if one can be read" do
|
33
|
+
@handler.stubs(:read_cert).returns true
|
34
|
+
@handler.expects(:retrieve_cert).never
|
35
|
+
@handler.read_retrieve
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should attempt to retrieve a certificate if none can be read" do
|
39
|
+
@handler.stubs(:read_cert).returns false
|
40
|
+
@handler.expects(:retrieve_cert)
|
41
|
+
@handler.read_retrieve
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should delegate to caclient to retrieve a certificate" do
|
45
|
+
@handler.stubs(:read_cert).returns false
|
46
|
+
@caclient.expects(:request_cert).returns(true)
|
47
|
+
@handler.stubs(:read_new_cert).returns(true)
|
48
|
+
@handler.read_retrieve
|
49
|
+
end
|
50
|
+
|
51
|
+
it "should return true if the certificate exists" do
|
52
|
+
@handler.stubs(:read_cert).returns true
|
53
|
+
@handler.read_retrieve.should be_true
|
54
|
+
end
|
55
|
+
|
56
|
+
it "should return false when getting a new cert" do
|
57
|
+
#This is the second call to httppool that happens in 'read_new_cert'
|
58
|
+
Puppet::Network::HttpPool.expects(:read_cert).returns(true)
|
59
|
+
@caclient.stubs(:request_cert).returns(true)
|
60
|
+
@handler.stubs(:read_cert).returns(false)
|
61
|
+
@handler.read_retrieve.should be_false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "when waiting for cert" do
|
66
|
+
before do
|
67
|
+
@handler = cert_handler.new(1,false)
|
68
|
+
@handler.stubs(:read_cert).returns false
|
69
|
+
#all waiting for cert tests should loop, which will always happen if sleep is called
|
70
|
+
#yeah, I put the expectation in the setup, deal with it
|
71
|
+
@handler.expects(:sleep).with(1)
|
72
|
+
|
73
|
+
#This is needed to get out of the loop
|
74
|
+
@handler.stubs(:read_new_cert).returns(true)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should loop when the cert request does not return a certificate" do
|
78
|
+
@caclient.stubs(:request_cert).times(2).returns(false).then.returns(true)
|
79
|
+
@handler.retrieve_cert
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should loop when the cert request raises an Error" do
|
83
|
+
@caclient.stubs(:request_cert).times(2).raises(StandardError, 'Testing').then.returns(true)
|
84
|
+
@handler.retrieve_cert
|
85
|
+
end
|
86
|
+
|
87
|
+
it "should loop when the new cert can't be read" do
|
88
|
+
@caclient.stubs(:request_cert).returns(true)
|
89
|
+
@handler.stubs(:read_new_cert).times(2).returns(false).then.returns(true)
|
90
|
+
@handler.retrieve_cert
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe "when in one time mode" do
|
95
|
+
before do
|
96
|
+
#true puts us in onetime mode
|
97
|
+
@handler = cert_handler.new(1,true)
|
98
|
+
@handler.stubs(:read_cert).returns false
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should exit if the cert request does not return a certificate" do
|
102
|
+
@caclient.stubs(:request_cert).returns(false)
|
103
|
+
@handler.expects(:exit).with(1).raises(SystemExit)
|
104
|
+
lambda { @handler.retrieve_cert }.should raise_error(SystemExit)
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
it "should exit if the cert request raises an exception" do
|
109
|
+
@caclient.stubs(:request_cert).raises(StandardError, 'Testing')
|
110
|
+
@handler.expects(:exit).with(23).raises(SystemExit)
|
111
|
+
lambda { @handler.retrieve_cert }.should raise_error(SystemExit)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should exit if the new cert can't be read" do
|
115
|
+
@caclient.stubs(:request_cert).returns(true)
|
116
|
+
#this is the second, call to httppool inside read_new_cert
|
117
|
+
Puppet::Network::HttpPool.stubs(:read_cert).returns(false)
|
118
|
+
@handler.expects(:exit).with(34).raises(SystemExit)
|
119
|
+
lambda { @handler.retrieve_cert }.should raise_error(SystemExit)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,224 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
4
|
+
|
5
|
+
require 'puppet/file_serving/configuration'
|
6
|
+
|
7
|
+
describe Puppet::FileServing::Configuration do
|
8
|
+
it "should make :new a private method" do
|
9
|
+
proc { Puppet::FileServing::Configuration.new }.should raise_error
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should return the same configuration each time :create is called" do
|
13
|
+
Puppet::FileServing::Configuration.create.should equal(Puppet::FileServing::Configuration.create)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have a method for removing the current configuration instance" do
|
17
|
+
old = Puppet::FileServing::Configuration.create
|
18
|
+
Puppet::FileServing::Configuration.clear_cache
|
19
|
+
Puppet::FileServing::Configuration.create.should_not equal(old)
|
20
|
+
end
|
21
|
+
|
22
|
+
after do
|
23
|
+
Puppet::FileServing::Configuration.clear_cache
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
describe Puppet::FileServing::Configuration do
|
28
|
+
|
29
|
+
before :each do
|
30
|
+
@path = "/path/to/configuration/file.conf"
|
31
|
+
Puppet.settings.stubs(:value).with(:fileserverconfig).returns(@path)
|
32
|
+
end
|
33
|
+
|
34
|
+
after :each do
|
35
|
+
Puppet::FileServing::Configuration.clear_cache
|
36
|
+
end
|
37
|
+
|
38
|
+
describe Puppet::FileServing::Configuration, " when initializing" do
|
39
|
+
|
40
|
+
it "should work without a configuration file" do
|
41
|
+
FileTest.stubs(:exists?).with(@path).returns(false)
|
42
|
+
proc { Puppet::FileServing::Configuration.create }.should_not raise_error
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should parse the configuration file if present" do
|
46
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
47
|
+
@parser = mock 'parser'
|
48
|
+
@parser.expects(:parse).returns({})
|
49
|
+
Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
|
50
|
+
Puppet::FileServing::Configuration.create
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should determine the path to the configuration file from the Puppet settings" do
|
54
|
+
Puppet::FileServing::Configuration.create
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe Puppet::FileServing::Configuration, " when parsing the configuration file" do
|
59
|
+
|
60
|
+
before do
|
61
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
62
|
+
@parser = mock 'parser'
|
63
|
+
Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should set the mount list to the results of parsing" do
|
67
|
+
@parser.expects(:parse).returns("one" => mock("mount"))
|
68
|
+
config = Puppet::FileServing::Configuration.create
|
69
|
+
config.mounted?("one").should be_true
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should not raise exceptions" do
|
73
|
+
@parser.expects(:parse).raises(ArgumentError)
|
74
|
+
proc { Puppet::FileServing::Configuration.create }.should_not raise_error
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should replace the existing mount list with the results of reparsing" do
|
78
|
+
@parser.expects(:parse).returns("one" => mock("mount"))
|
79
|
+
config = Puppet::FileServing::Configuration.create
|
80
|
+
config.mounted?("one").should be_true
|
81
|
+
# Now parse again
|
82
|
+
@parser.expects(:parse).returns("two" => mock('other'))
|
83
|
+
config.send(:readconfig, false)
|
84
|
+
config.mounted?("one").should be_false
|
85
|
+
config.mounted?("two").should be_true
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should not replace the mount list until the file is entirely parsed successfully" do
|
89
|
+
@parser.expects(:parse).returns("one" => mock("mount"))
|
90
|
+
@parser.expects(:parse).raises(ArgumentError)
|
91
|
+
config = Puppet::FileServing::Configuration.create
|
92
|
+
# Now parse again, so the exception gets thrown
|
93
|
+
config.send(:readconfig, false)
|
94
|
+
config.mounted?("one").should be_true
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe Puppet::FileServing::Configuration, " when finding files" do
|
99
|
+
|
100
|
+
before do
|
101
|
+
@parser = mock 'parser'
|
102
|
+
@parser.stubs(:changed?).returns true
|
103
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
104
|
+
Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
|
105
|
+
|
106
|
+
@mount1 = stub 'mount', :name => "one"
|
107
|
+
@mounts = {"one" => @mount1}
|
108
|
+
|
109
|
+
Facter.stubs(:value).with("hostname").returns("whatever")
|
110
|
+
|
111
|
+
@config = Puppet::FileServing::Configuration.create
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should fail if the uri does not match a leading slash followed by a valid mount name" do
|
115
|
+
@parser.expects(:parse).returns(@mounts)
|
116
|
+
proc { @config.file_path("something") }.should raise_error(ArgumentError)
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should use the first term after the first slash for the mount name" do
|
120
|
+
@parser.expects(:parse).returns(@mounts)
|
121
|
+
FileTest.stubs(:exists?).returns(true)
|
122
|
+
@mount1.expects(:file)
|
123
|
+
@config.file_path("/one")
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should use the remainder of the URI after the mount name as the file name" do
|
127
|
+
@parser.expects(:parse).returns(@mounts)
|
128
|
+
@mount1.expects(:file).with("something/else", {})
|
129
|
+
FileTest.stubs(:exists?).returns(true)
|
130
|
+
@config.file_path("/one/something/else")
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should treat a bare name as a mount and no relative file" do
|
134
|
+
@parser.expects(:parse).returns(@mounts)
|
135
|
+
@mount1.expects(:file).with(nil, {})
|
136
|
+
FileTest.stubs(:exists?).returns(true)
|
137
|
+
@config.file_path("/one")
|
138
|
+
end
|
139
|
+
|
140
|
+
it "should treat a name with a trailing slash equivalently to a name with no trailing slash" do
|
141
|
+
@parser.expects(:parse).returns(@mounts)
|
142
|
+
@mount1.expects(:file).with(nil, {})
|
143
|
+
FileTest.stubs(:exists?).returns(true)
|
144
|
+
@config.file_path("/one/")
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should return nil if the mount cannot be found" do
|
148
|
+
@parser.expects(:changed?).returns(true)
|
149
|
+
@parser.expects(:parse).returns({})
|
150
|
+
@config.file_path("/one/something").should be_nil
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should return nil if the mount does not contain the file" do
|
154
|
+
@parser.expects(:parse).returns(@mounts)
|
155
|
+
@mount1.expects(:file).with("something/else", {}).returns(nil)
|
156
|
+
@config.file_path("/one/something/else").should be_nil
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should return the fully qualified path if the mount exists" do
|
160
|
+
@parser.expects(:parse).returns(@mounts)
|
161
|
+
@mount1.expects(:file).with("something/else", {}).returns("/full/path")
|
162
|
+
@config.file_path("/one/something/else").should == "/full/path"
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should reparse the configuration file when it has changed" do
|
166
|
+
@mount1.stubs(:file).returns("whatever")
|
167
|
+
@parser.expects(:changed?).returns(true)
|
168
|
+
@parser.expects(:parse).returns(@mounts)
|
169
|
+
FileTest.stubs(:exists?).returns(true)
|
170
|
+
@config.file_path("/one/something")
|
171
|
+
|
172
|
+
@parser.expects(:changed?).returns(true)
|
173
|
+
@parser.expects(:parse).returns({})
|
174
|
+
@config.file_path("/one/something").should be_nil
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
describe Puppet::FileServing::Configuration, " when checking authorization" do
|
179
|
+
|
180
|
+
before do
|
181
|
+
@parser = mock 'parser'
|
182
|
+
@parser.stubs(:changed?).returns true
|
183
|
+
FileTest.stubs(:exists?).with(@path).returns(true)
|
184
|
+
Puppet::FileServing::Configuration::Parser.stubs(:new).returns(@parser)
|
185
|
+
|
186
|
+
@mount1 = stub 'mount', :name => "one"
|
187
|
+
@mounts = {"one" => @mount1}
|
188
|
+
@parser.stubs(:parse).returns(@mounts)
|
189
|
+
|
190
|
+
Facter.stubs(:value).with("hostname").returns("whatever")
|
191
|
+
|
192
|
+
@config = Puppet::FileServing::Configuration.create
|
193
|
+
end
|
194
|
+
|
195
|
+
it "should return false if the mount cannot be found" do
|
196
|
+
@config.authorized?("/nope/my/file").should be_false
|
197
|
+
end
|
198
|
+
|
199
|
+
it "should use the mount to determine authorization" do
|
200
|
+
@mount1.expects(:allowed?)
|
201
|
+
@config.authorized?("/one/my/file")
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should pass the client's name to the mount if provided" do
|
205
|
+
@mount1.expects(:allowed?).with("myhost", nil)
|
206
|
+
@config.authorized?("/one/my/file", :node => "myhost")
|
207
|
+
end
|
208
|
+
|
209
|
+
it "should pass the client's IP to the mount if provided" do
|
210
|
+
@mount1.expects(:allowed?).with("myhost", "myip")
|
211
|
+
@config.authorized?("/one/my/file", :node => "myhost", :ipaddress => "myip")
|
212
|
+
end
|
213
|
+
|
214
|
+
it "should return true if the mount allows the client" do
|
215
|
+
@mount1.expects(:allowed?).returns(true)
|
216
|
+
@config.authorized?("/one/my/file").should be_true
|
217
|
+
end
|
218
|
+
|
219
|
+
it "should return false if the mount denies the client" do
|
220
|
+
@mount1.expects(:allowed?).returns(false)
|
221
|
+
@config.authorized?("/one/my/file").should be_false
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|