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.

Files changed (383) hide show
  1. data/CHANGELOG +115 -0
  2. data/Rakefile +43 -14
  3. data/bin/puppetca +6 -5
  4. data/bin/puppetdoc +109 -15
  5. data/bin/ralsh +3 -1
  6. data/conf/redhat/puppet.spec +74 -48
  7. data/examples/mcx_dock_absent.pp +4 -0
  8. data/examples/mcx_dock_default.pp +118 -0
  9. data/examples/mcx_dock_full.pp +125 -0
  10. data/examples/mcx_dock_invalid.pp +9 -0
  11. data/examples/mcx_nogroup.pp +118 -0
  12. data/examples/mcx_notexists_absent.pp +4 -0
  13. data/ext/emacs/puppet-mode.el +1 -1
  14. data/lib/puppet.rb +1 -1
  15. data/lib/puppet/external/nagios/base.rb +114 -71
  16. data/lib/puppet/feature/base.rb +6 -0
  17. data/lib/puppet/indirector/yaml.rb +12 -3
  18. data/lib/puppet/module.rb +1 -1
  19. data/lib/puppet/network/client/master.rb +1 -1
  20. data/lib/puppet/network/xmlrpc/client.rb +3 -1
  21. data/lib/puppet/parameter.rb +1 -1
  22. data/lib/puppet/parser/ast.rb +15 -0
  23. data/lib/puppet/parser/ast/astarray.rb +1 -2
  24. data/lib/puppet/parser/ast/casestatement.rb +2 -0
  25. data/lib/puppet/parser/ast/collection.rb +2 -0
  26. data/lib/puppet/parser/ast/comparison_operator.rb +4 -0
  27. data/lib/puppet/parser/ast/definition.rb +2 -0
  28. data/lib/puppet/parser/ast/else.rb +3 -0
  29. data/lib/puppet/parser/ast/function.rb +19 -12
  30. data/lib/puppet/parser/ast/hostclass.rb +9 -1
  31. data/lib/puppet/parser/ast/ifstatement.rb +3 -0
  32. data/lib/puppet/parser/ast/node.rb +3 -0
  33. data/lib/puppet/parser/ast/resource.rb +3 -0
  34. data/lib/puppet/parser/ast/resource_defaults.rb +2 -0
  35. data/lib/puppet/parser/ast/resource_override.rb +3 -0
  36. data/lib/puppet/parser/ast/vardef.rb +3 -0
  37. data/lib/puppet/parser/functions.rb +14 -0
  38. data/lib/puppet/parser/functions/inline_template.rb +21 -0
  39. data/lib/puppet/parser/functions/template.rb +3 -2
  40. data/lib/puppet/parser/lexer.rb +56 -7
  41. data/lib/puppet/parser/parser.rb +114 -98
  42. data/lib/puppet/parser/parser_support.rb +24 -4
  43. data/lib/puppet/parser/resource/reference.rb +4 -3
  44. data/lib/puppet/parser/templatewrapper.rb +30 -22
  45. data/lib/puppet/property.rb +1 -1
  46. data/lib/puppet/property/list.rb +7 -2
  47. data/lib/puppet/property/ordered_list.rb +22 -0
  48. data/lib/puppet/provider/augeas/augeas.rb +189 -0
  49. data/lib/puppet/provider/computer/computer.rb +22 -0
  50. data/lib/puppet/provider/confine.rb +4 -1
  51. data/lib/puppet/provider/confine/variable.rb +13 -2
  52. data/lib/puppet/provider/confine_collection.rb +4 -1
  53. data/lib/puppet/provider/confiner.rb +1 -1
  54. data/lib/puppet/provider/group/directoryservice.rb +6 -3
  55. data/lib/puppet/provider/group/groupadd.rb +5 -2
  56. data/lib/puppet/provider/group/ldap.rb +11 -9
  57. data/lib/puppet/provider/group/netinfo.rb +8 -4
  58. data/lib/puppet/provider/group/pw.rb +5 -1
  59. data/lib/puppet/provider/host/netinfo.rb +5 -2
  60. data/lib/puppet/provider/macauthorization/macauthorization.rb +315 -0
  61. data/lib/puppet/provider/mcx/mcxcontent.rb +201 -0
  62. data/lib/puppet/provider/nameservice/directoryservice.rb +210 -107
  63. data/lib/puppet/provider/nameservice/netinfo.rb +7 -2
  64. data/lib/puppet/provider/package/appdmg.rb +0 -3
  65. data/lib/puppet/provider/package/apt.rb +6 -0
  66. data/lib/puppet/provider/package/rpm.rb +2 -0
  67. data/lib/puppet/provider/package/yum.rb +5 -1
  68. data/lib/puppet/provider/package/yumhelper.py +9 -0
  69. data/lib/puppet/provider/service/base.rb +9 -6
  70. data/lib/puppet/provider/service/daemontools.rb +25 -15
  71. data/lib/puppet/provider/service/debian.rb +6 -2
  72. data/lib/puppet/provider/service/freebsd.rb +5 -2
  73. data/lib/puppet/provider/service/gentoo.rb +6 -3
  74. data/lib/puppet/provider/service/init.rb +31 -21
  75. data/lib/puppet/provider/service/launchd.rb +195 -0
  76. data/lib/puppet/provider/service/redhat.rb +5 -2
  77. data/lib/puppet/provider/service/runit.rb +30 -20
  78. data/lib/puppet/provider/service/smf.rb +7 -4
  79. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +21 -1
  80. data/lib/puppet/provider/user/directoryservice.rb +1 -0
  81. data/lib/puppet/provider/user/netinfo.rb +9 -3
  82. data/lib/puppet/provider/user/user_role_add.rb +43 -6
  83. data/lib/puppet/provider/zfs/solaris.rb +45 -0
  84. data/lib/puppet/provider/zone/solaris.rb +8 -4
  85. data/lib/puppet/provider/zpool/solaris.rb +116 -0
  86. data/lib/puppet/rails/database/003_add_environment_to_host.rb +9 -0
  87. data/lib/puppet/rails/database/schema.rb +1 -0
  88. data/lib/puppet/rails/host.rb +4 -0
  89. data/lib/puppet/reference/configuration.rb +1 -1
  90. data/lib/puppet/reports/tagmail.rb +15 -6
  91. data/lib/puppet/transaction/change.rb +3 -5
  92. data/lib/puppet/transportable.rb +1 -0
  93. data/lib/puppet/type/augeas.rb +155 -0
  94. data/lib/puppet/type/computer.rb +62 -0
  95. data/lib/puppet/type/exec.rb +2 -1
  96. data/lib/puppet/type/file.rb +1 -1
  97. data/lib/puppet/type/file/ensure.rb +8 -5
  98. data/lib/puppet/type/file/mode.rb +0 -14
  99. data/lib/puppet/type/file/owner.rb +32 -64
  100. data/lib/puppet/type/file/selcontext.rb +3 -8
  101. data/lib/puppet/type/group.rb +27 -45
  102. data/lib/puppet/type/k5login.rb +1 -1
  103. data/lib/puppet/type/macauthorization.rb +141 -0
  104. data/lib/puppet/type/mcx.rb +115 -0
  105. data/lib/puppet/type/mount.rb +1 -1
  106. data/lib/puppet/type/nagios_hostdependency.rb +3 -0
  107. data/lib/puppet/type/ssh_authorized_key.rb +16 -0
  108. data/lib/puppet/type/tidy.rb +43 -14
  109. data/lib/puppet/type/user.rb +25 -1
  110. data/lib/puppet/type/zfs.rb +51 -0
  111. data/lib/puppet/type/zone.rb +8 -0
  112. data/lib/puppet/type/zpool.rb +93 -0
  113. data/lib/puppet/util.rb +17 -38
  114. data/lib/puppet/util/file_locking.rb +44 -0
  115. data/lib/puppet/util/filetype.rb +3 -3
  116. data/lib/puppet/util/log.rb +1 -16
  117. data/lib/puppet/util/metric.rb +0 -5
  118. data/lib/puppet/util/rdoc.rb +85 -0
  119. data/lib/puppet/util/rdoc/code_objects.rb +219 -0
  120. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +829 -0
  121. data/lib/puppet/util/rdoc/generators/template/puppet/puppet.rb +1051 -0
  122. data/lib/puppet/util/rdoc/parser.rb +437 -0
  123. data/lib/puppet/util/selinux.rb +135 -63
  124. data/lib/puppet/util/settings.rb +136 -126
  125. data/lib/puppet/util/storage.rb +4 -2
  126. data/spec/Rakefile +91 -0
  127. data/spec/integration/checksum.rb +47 -0
  128. data/spec/integration/defaults.rb +47 -0
  129. data/spec/integration/file_serving/configuration.rb +43 -0
  130. data/spec/integration/file_serving/content.rb +18 -0
  131. data/spec/integration/file_serving/metadata.rb +18 -0
  132. data/spec/integration/indirector/direct_file_server.rb +80 -0
  133. data/spec/integration/indirector/file_content/file_server.rb +18 -0
  134. data/spec/integration/indirector/file_metadata/file_server.rb +18 -0
  135. data/spec/integration/indirector/module_files.rb +57 -0
  136. data/spec/integration/indirector/node/ldap.rb +15 -0
  137. data/spec/integration/indirector/rest.rb +464 -0
  138. data/spec/integration/network/server/mongrel.rb +48 -0
  139. data/spec/integration/network/server/webrick.rb +48 -0
  140. data/spec/integration/node.rb +93 -0
  141. data/spec/integration/node/catalog.rb +54 -0
  142. data/spec/integration/node/facts.rb +45 -0
  143. data/spec/integration/provider/package.rb +26 -0
  144. data/spec/integration/provider/service/init.rb +32 -0
  145. data/spec/integration/reference/providers.rb +17 -0
  146. data/spec/integration/reports.rb +14 -0
  147. data/spec/integration/transaction/report.rb +26 -0
  148. data/spec/integration/type/package.rb +22 -0
  149. data/spec/integration/util/file_locking.rb +36 -0
  150. data/spec/monkey_patches/add_confine_and_runnable_to_rspec_dsl.rb +46 -0
  151. data/spec/monkey_patches/alias_should_to_must.rb +5 -0
  152. data/spec/shared_behaviours/file_server_terminus.rb +42 -0
  153. data/spec/shared_behaviours/file_serving.rb +64 -0
  154. data/spec/shared_behaviours/memory_terminus.rb +32 -0
  155. data/spec/spec.opts +5 -0
  156. data/spec/spec_helper.rb +36 -0
  157. data/spec/unit/executables/client/certhandler.rb +122 -0
  158. data/spec/unit/file_serving/configuration.rb +224 -0
  159. data/spec/unit/file_serving/configuration/parser.rb +135 -0
  160. data/spec/unit/file_serving/content.rb +71 -0
  161. data/spec/unit/file_serving/file_base.rb +124 -0
  162. data/spec/unit/file_serving/fileset.rb +239 -0
  163. data/spec/unit/file_serving/indirection_hooks.rb +124 -0
  164. data/spec/unit/file_serving/metadata.rb +187 -0
  165. data/spec/unit/file_serving/mount.rb +143 -0
  166. data/spec/unit/file_serving/terminus_helper.rb +76 -0
  167. data/spec/unit/indirector.rb +152 -0
  168. data/spec/unit/indirector/catalog/compiler.rb +156 -0
  169. data/spec/unit/indirector/catalog/yaml.rb +25 -0
  170. data/spec/unit/indirector/checksum/file.rb +139 -0
  171. data/spec/unit/indirector/code.rb +33 -0
  172. data/spec/unit/indirector/direct_file_server.rb +89 -0
  173. data/spec/unit/indirector/envelope.rb +47 -0
  174. data/spec/unit/indirector/exec.rb +51 -0
  175. data/spec/unit/indirector/facts/facter.rb +76 -0
  176. data/spec/unit/indirector/facts/yaml.rb +26 -0
  177. data/spec/unit/indirector/file.rb +154 -0
  178. data/spec/unit/indirector/file_content/file.rb +18 -0
  179. data/spec/unit/indirector/file_content/file_server.rb +18 -0
  180. data/spec/unit/indirector/file_content/modules.rb +18 -0
  181. data/spec/unit/indirector/file_content/rest.rb +11 -0
  182. data/spec/unit/indirector/file_metadata/file.rb +52 -0
  183. data/spec/unit/indirector/file_metadata/file_server.rb +18 -0
  184. data/spec/unit/indirector/file_metadata/modules.rb +42 -0
  185. data/spec/unit/indirector/file_metadata/rest.rb +9 -0
  186. data/spec/unit/indirector/file_server.rb +184 -0
  187. data/spec/unit/indirector/indirection.rb +731 -0
  188. data/spec/unit/indirector/ldap.rb +143 -0
  189. data/spec/unit/indirector/memory.rb +29 -0
  190. data/spec/unit/indirector/module_files.rb +259 -0
  191. data/spec/unit/indirector/node/exec.rb +69 -0
  192. data/spec/unit/indirector/node/ldap.rb +424 -0
  193. data/spec/unit/indirector/node/memory.rb +19 -0
  194. data/spec/unit/indirector/node/plain.rb +19 -0
  195. data/spec/unit/indirector/node/rest.rb +13 -0
  196. data/spec/unit/indirector/node/yaml.rb +25 -0
  197. data/spec/unit/indirector/plain.rb +29 -0
  198. data/spec/unit/indirector/report/processor.rb +81 -0
  199. data/spec/unit/indirector/request.rb +87 -0
  200. data/spec/unit/indirector/rest.rb +372 -0
  201. data/spec/unit/indirector/ssl_rsa/file.rb +116 -0
  202. data/spec/unit/indirector/terminus.rb +245 -0
  203. data/spec/unit/indirector/yaml.rb +145 -0
  204. data/spec/unit/module.rb +247 -0
  205. data/spec/unit/network/client.rb +45 -0
  206. data/spec/unit/network/client/master.rb +442 -0
  207. data/spec/unit/network/handler/fileserver.rb +179 -0
  208. data/spec/unit/network/http.rb +35 -0
  209. data/spec/unit/network/http/mongrel.rb +117 -0
  210. data/spec/unit/network/http/mongrel/rest.rb +377 -0
  211. data/spec/unit/network/http/mongrel/xmlrpc.rb +0 -0
  212. data/spec/unit/network/http/webrick.rb +127 -0
  213. data/spec/unit/network/http/webrick/rest.rb +323 -0
  214. data/spec/unit/network/http/webrick/xmlrpc.rb +0 -0
  215. data/spec/unit/network/http_pool.rb +238 -0
  216. data/spec/unit/network/server.rb +316 -0
  217. data/spec/unit/network/xmlrpc/client.rb +13 -0
  218. data/spec/unit/node.rb +167 -0
  219. data/spec/unit/node/catalog.rb +864 -0
  220. data/spec/unit/node/environment.rb +37 -0
  221. data/spec/unit/node/facts.rb +44 -0
  222. data/spec/unit/other/checksum.rb +92 -0
  223. data/spec/unit/other/pgraph.rb +210 -0
  224. data/spec/unit/other/transaction.rb +33 -0
  225. data/spec/unit/other/transbucket.rb +172 -0
  226. data/spec/unit/other/transobject.rb +92 -0
  227. data/spec/unit/parameter.rb +24 -0
  228. data/spec/unit/parser/ast.rb +37 -0
  229. data/spec/unit/parser/ast/arithmetic_operator.rb +73 -0
  230. data/spec/unit/parser/ast/astarray.rb +66 -0
  231. data/spec/unit/parser/ast/boolean_operator.rb +53 -0
  232. data/spec/unit/parser/ast/collexpr.rb +92 -0
  233. data/spec/unit/parser/ast/comparison_operator.rb +92 -0
  234. data/spec/unit/parser/ast/definition.rb +195 -0
  235. data/spec/unit/parser/ast/function.rb +77 -0
  236. data/spec/unit/parser/ast/hostclass.rb +148 -0
  237. data/spec/unit/parser/ast/minus.rb +36 -0
  238. data/spec/unit/parser/ast/node.rb +125 -0
  239. data/spec/unit/parser/ast/nop.rb +20 -0
  240. data/spec/unit/parser/ast/not.rb +30 -0
  241. data/spec/unit/parser/ast/resource_override.rb +51 -0
  242. data/spec/unit/parser/ast/resource_reference.rb +63 -0
  243. data/spec/unit/parser/ast/vardef.rb +47 -0
  244. data/spec/unit/parser/collector.rb +426 -0
  245. data/spec/unit/parser/compiler.rb +561 -0
  246. data/spec/unit/parser/functions.rb +83 -0
  247. data/spec/unit/parser/functions/inline_template.rb +59 -0
  248. data/spec/unit/parser/functions/template.rb +62 -0
  249. data/spec/unit/parser/interpreter.rb +138 -0
  250. data/spec/unit/parser/lexer.rb +646 -0
  251. data/spec/unit/parser/parser.rb +228 -0
  252. data/spec/unit/parser/resource.rb +336 -0
  253. data/spec/unit/parser/resource/reference.rb +95 -0
  254. data/spec/unit/parser/scope.rb +87 -0
  255. data/spec/unit/parser/templatewrapper.rb +129 -0
  256. data/spec/unit/property.rb +35 -0
  257. data/spec/unit/property/keyvalue.rb +168 -0
  258. data/spec/unit/property/list.rb +156 -0
  259. data/spec/unit/property/ordered_list.rb +64 -0
  260. data/spec/unit/provider/augeas/augeas.rb +238 -0
  261. data/spec/unit/provider/confine.rb +78 -0
  262. data/spec/unit/provider/confine/exists.rb +81 -0
  263. data/spec/unit/provider/confine/false.rb +53 -0
  264. data/spec/unit/provider/confine/feature.rb +60 -0
  265. data/spec/unit/provider/confine/true.rb +53 -0
  266. data/spec/unit/provider/confine/variable.rb +107 -0
  267. data/spec/unit/provider/confine_collection.rb +134 -0
  268. data/spec/unit/provider/confiner.rb +63 -0
  269. data/spec/unit/provider/group/groupadd.rb +31 -0
  270. data/spec/unit/provider/group/ldap.rb +105 -0
  271. data/spec/unit/provider/ldap.rb +248 -0
  272. data/spec/unit/provider/macauthorization.rb +147 -0
  273. data/spec/unit/provider/mcx/mcxcontent.rb +175 -0
  274. data/spec/unit/provider/mount.rb +130 -0
  275. data/spec/unit/provider/mount/parsed.rb +185 -0
  276. data/spec/unit/provider/package/apt.rb +138 -0
  277. data/spec/unit/provider/package/dpkg.rb +163 -0
  278. data/spec/unit/provider/package/gem.rb +87 -0
  279. data/spec/unit/provider/package/hpux.rb +52 -0
  280. data/spec/unit/provider/selboolean.rb +37 -0
  281. data/spec/unit/provider/selmodule-example.pp +0 -0
  282. data/spec/unit/provider/selmodule.rb +66 -0
  283. data/spec/unit/provider/service/daemontools.rb +124 -0
  284. data/spec/unit/provider/service/launchd.rb +134 -0
  285. data/spec/unit/provider/service/runit.rb +117 -0
  286. data/spec/unit/provider/ssh_authorized_key/parsed.rb +102 -0
  287. data/spec/unit/provider/user/hpux.rb +25 -0
  288. data/spec/unit/provider/user/ldap.rb +279 -0
  289. data/spec/unit/provider/user/user_role_add.rb +249 -0
  290. data/spec/unit/provider/user/useradd.rb +115 -0
  291. data/spec/unit/provider/zfs/solaris.rb +87 -0
  292. data/spec/unit/provider/zone/solaris.rb +42 -0
  293. data/spec/unit/provider/zpool/solaris.rb +179 -0
  294. data/spec/unit/rails.rb +125 -0
  295. data/spec/unit/relationship.rb +149 -0
  296. data/spec/unit/reports.rb +61 -0
  297. data/spec/unit/resource_reference.rb +73 -0
  298. data/spec/unit/simple_graph.rb +280 -0
  299. data/spec/unit/transaction/change.rb +187 -0
  300. data/spec/unit/transaction/event.rb +25 -0
  301. data/spec/unit/transaction/report.rb +40 -0
  302. data/spec/unit/type.rb +64 -0
  303. data/spec/unit/type/augeas.rb +113 -0
  304. data/spec/unit/type/computer.rb +82 -0
  305. data/spec/unit/type/exec.rb +91 -0
  306. data/spec/unit/type/file.rb +155 -0
  307. data/spec/unit/type/file/ensure.rb +21 -0
  308. data/spec/unit/type/file/group.rb +118 -0
  309. data/spec/unit/type/file/owner.rb +132 -0
  310. data/spec/unit/type/file/selinux.rb +82 -0
  311. data/spec/unit/type/group.rb +40 -0
  312. data/spec/unit/type/macauthorization.rb +78 -0
  313. data/spec/unit/type/mcx.rb +108 -0
  314. data/spec/unit/type/mount.rb +219 -0
  315. data/spec/unit/type/nagios.rb +63 -0
  316. data/spec/unit/type/noop_metaparam.rb +38 -0
  317. data/spec/unit/type/package.rb +246 -0
  318. data/spec/unit/type/resources.rb +27 -0
  319. data/spec/unit/type/schedule.rb +339 -0
  320. data/spec/unit/type/selboolean.rb +47 -0
  321. data/spec/unit/type/selmodule.rb +18 -0
  322. data/spec/unit/type/service.rb +254 -0
  323. data/spec/unit/type/ssh_authorized_key.rb +106 -0
  324. data/spec/unit/type/tidy.rb +68 -0
  325. data/spec/unit/type/user.rb +260 -0
  326. data/spec/unit/type/zfs.rb +45 -0
  327. data/spec/unit/type/zone.rb +20 -0
  328. data/spec/unit/type/zpool.rb +110 -0
  329. data/spec/unit/util/checksums.rb +99 -0
  330. data/spec/unit/util/constant_inflector.rb +70 -0
  331. data/spec/unit/util/file_locking.rb +115 -0
  332. data/spec/unit/util/ldap/connection.rb +169 -0
  333. data/spec/unit/util/ldap/generator.rb +54 -0
  334. data/spec/unit/util/ldap/manager.rb +654 -0
  335. data/spec/unit/util/loadedfile.rb +65 -0
  336. data/spec/unit/util/log.rb +107 -0
  337. data/spec/unit/util/metric.rb +95 -0
  338. data/spec/unit/util/nagios_maker.rb +128 -0
  339. data/spec/unit/util/posix.rb +256 -0
  340. data/spec/unit/util/resource_template.rb +58 -0
  341. data/spec/unit/util/selinux.rb +219 -0
  342. data/spec/unit/util/settings.rb +847 -0
  343. data/spec/unit/util/storage.rb +248 -0
  344. data/spec/unit/util/tagging.rb +92 -0
  345. data/spec/unit/util/uri_helper.rb +41 -0
  346. data/spec/unit/util/user_attr.rb +47 -0
  347. data/spec/unit/util/warnings.rb +35 -0
  348. data/test/certmgr/support.rb +0 -6
  349. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +1 -0
  350. data/test/data/snippets/multilinecomments.pp +6 -0
  351. data/test/data/snippets/multipleclass.pp +9 -0
  352. data/test/language/functions.rb +11 -1
  353. data/test/language/snippets.rb +16 -0
  354. data/test/lib/puppettest/runnable_test.rb +1 -1
  355. data/test/network/handler/fileserver.rb +5 -0
  356. data/test/other/report.rb +0 -4
  357. data/test/ral/type/resources.rb +2 -19
  358. data/test/util/settings.rb +4 -4
  359. data/test/util/storage.rb +0 -24
  360. data/test/util/utiltest.rb +0 -33
  361. metadata +319 -26
  362. data/conf/debian/README.source +0 -2
  363. data/conf/debian/TODO.Debian +0 -1
  364. data/conf/debian/changelog +0 -257
  365. data/conf/debian/compat +0 -1
  366. data/conf/debian/control +0 -45
  367. data/conf/debian/copyright +0 -17
  368. data/conf/debian/docs +0 -1
  369. data/conf/debian/fileserver.conf +0 -12
  370. data/conf/debian/puppet.NEWS +0 -63
  371. data/conf/debian/puppet.conf +0 -8
  372. data/conf/debian/puppet.dirs +0 -7
  373. data/conf/debian/puppet.files +0 -6
  374. data/conf/debian/puppet.init +0 -64
  375. data/conf/debian/puppet.logrotate +0 -11
  376. data/conf/debian/puppet.postinst +0 -9
  377. data/conf/debian/puppet.postrm +0 -21
  378. data/conf/debian/puppet.preinst +0 -25
  379. data/conf/debian/puppetmaster.files +0 -4
  380. data/conf/debian/puppetmaster.init +0 -58
  381. data/conf/debian/rules +0 -115
  382. data/conf/debian/watch +0 -2
  383. data/lib/puppet/type/nagios_hostgroupescalation.rb +0 -3
@@ -0,0 +1,238 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Luke Kanies on 2007-11-26.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+ require 'puppet/network/http_pool'
8
+
9
+ describe Puppet::Network::HttpPool, " when adding certificate information to http instances" do
10
+ before do
11
+ @http = mock 'http'
12
+ [:cert_store=, :verify_mode=, :ca_file=, :cert=, :key=].each { |m| @http.stubs(m) }
13
+ @store = stub 'store'
14
+ [:add_file,:purpose=].each { |m| @store.stubs(m) }
15
+ end
16
+
17
+ it "should have keep-alive disabled" do
18
+ Puppet::Network::HttpPool::HTTP_KEEP_ALIVE.should be_false
19
+ end
20
+
21
+ it "should do nothing if no certificate is available" do
22
+ Puppet::Network::HttpPool.expects(:read_cert).returns(false)
23
+ @http.expects(:cert=).never
24
+ Puppet::Network::HttpPool.cert_setup(@http)
25
+ end
26
+
27
+ it "should add a certificate store" do
28
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
29
+ Puppet::Network::HttpPool.stubs(:key).returns(:mykey)
30
+ OpenSSL::X509::Store.expects(:new).returns(@store)
31
+ @http.expects(:cert_store=).with(@store)
32
+
33
+ Puppet::Network::HttpPool.cert_setup(@http)
34
+ end
35
+
36
+ it "should add the local CA cert to the certificate store" do
37
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
38
+ OpenSSL::X509::Store.expects(:new).returns(@store)
39
+ Puppet.settings.stubs(:value).with(:localcacert).returns("/some/file")
40
+ Puppet.settings.stubs(:value).with(:localcacert).returns("/some/file")
41
+ @store.expects(:add_file).with("/some/file")
42
+
43
+ Puppet::Network::HttpPool.stubs(:key).returns(:whatever)
44
+
45
+ Puppet::Network::HttpPool.cert_setup(@http)
46
+ end
47
+
48
+ it "should set the purpose of the cert store to OpenSSL::X509::PURPOSE_SSL_CLIENT" do
49
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
50
+ Puppet::Network::HttpPool.stubs(:key).returns(:mykey)
51
+ OpenSSL::X509::Store.expects(:new).returns(@store)
52
+
53
+ @store.expects(:purpose=).with(OpenSSL::X509::PURPOSE_SSL_CLIENT)
54
+
55
+ Puppet::Network::HttpPool.cert_setup(@http)
56
+ end
57
+
58
+ it "should add the client certificate" do
59
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
60
+ Puppet::Network::HttpPool.stubs(:cert).returns(:mycert)
61
+ Puppet::Network::HttpPool.stubs(:key).returns(:mykey)
62
+ OpenSSL::X509::Store.expects(:new).returns(@store)
63
+
64
+ @http.expects(:cert=).with(:mycert)
65
+
66
+ Puppet::Network::HttpPool.cert_setup(@http)
67
+ end
68
+
69
+ it "should add the client key" do
70
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
71
+ Puppet::Network::HttpPool.stubs(:key).returns(:mykey)
72
+ OpenSSL::X509::Store.expects(:new).returns(@store)
73
+
74
+ @http.expects(:key=).with(:mykey)
75
+
76
+ Puppet::Network::HttpPool.cert_setup(@http)
77
+ end
78
+
79
+ it "should set the verify mode to OpenSSL::SSL::VERIFY_PEER" do
80
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
81
+ Puppet::Network::HttpPool.stubs(:key).returns(:mykey)
82
+ OpenSSL::X509::Store.expects(:new).returns(@store)
83
+
84
+ @http.expects(:verify_mode=).with(OpenSSL::SSL::VERIFY_PEER)
85
+
86
+ Puppet::Network::HttpPool.cert_setup(@http)
87
+ end
88
+
89
+ it "should set the ca file" do
90
+ Puppet::Network::HttpPool.stubs(:read_cert).returns(true)
91
+ Puppet.settings.stubs(:value).with(:localcacert).returns("/some/file")
92
+ OpenSSL::X509::Store.expects(:new).returns(@store)
93
+
94
+ @http.expects(:ca_file=).with("/some/file")
95
+
96
+ Puppet::Network::HttpPool.stubs(:key).returns(:whatever)
97
+
98
+ Puppet::Network::HttpPool.cert_setup(@http)
99
+ end
100
+
101
+ it "should set up certificate information when creating http instances" do
102
+ Puppet::Network::HttpPool.expects(:cert_setup).with { |i| i.is_a?(Net::HTTP) }
103
+ Puppet::Network::HttpPool.http_instance("one", "two")
104
+ end
105
+
106
+ after do
107
+ Puppet::Network::HttpPool.clear_http_instances
108
+ end
109
+
110
+ describe "when managing http instances" do
111
+ def stub_settings(settings)
112
+ settings.each do |param, value|
113
+ Puppet.settings.stubs(:value).with(param).returns(value)
114
+ end
115
+ end
116
+
117
+ before do
118
+ # All of hte cert stuff is tested elsewhere
119
+ Puppet::Network::HttpPool.stubs(:cert_setup)
120
+ end
121
+
122
+ it "should return an http instance created with the passed host and port" do
123
+ http = stub 'http', :use_ssl= => nil, :read_timeout= => nil, :open_timeout= => nil, :enable_post_connection_check= => nil, :started? => false
124
+ Net::HTTP.expects(:new).with("me", 54321, nil, nil).returns(http)
125
+ Puppet::Network::HttpPool.http_instance("me", 54321).should equal(http)
126
+ end
127
+
128
+ it "should enable ssl on the http instance" do
129
+ Puppet::Network::HttpPool.http_instance("me", 54321).instance_variable_get("@use_ssl").should be_true
130
+ end
131
+
132
+ it "should set the read timeout" do
133
+ Puppet::Network::HttpPool.http_instance("me", 54321).read_timeout.should == 120
134
+ end
135
+
136
+ it "should set the open timeout" do
137
+ Puppet::Network::HttpPool.http_instance("me", 54321).open_timeout.should == 120
138
+ end
139
+
140
+ it "should default to http_enable_post_connection_check being enabled" do
141
+ Puppet.settings[:http_enable_post_connection_check].should be_true
142
+ end
143
+
144
+ it "should set enable_post_connection_check true " do
145
+ Puppet::Network::HttpPool.http_instance("me", 54321).instance_variable_get("@enable_post_connection_check").should be(Puppet.settings[:http_enable_post_connection_check])
146
+ end
147
+
148
+ it "should create the http instance with the proxy host and port set if the http_proxy is not set to 'none'" do
149
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
150
+ Puppet::Network::HttpPool.http_instance("me", 54321).open_timeout.should == 120
151
+ end
152
+
153
+ describe "when http keep-alive is enabled" do
154
+ before do
155
+ Puppet::Network::HttpPool.stubs(:keep_alive?).returns true
156
+ end
157
+
158
+ it "should cache http instances" do
159
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
160
+ old = Puppet::Network::HttpPool.http_instance("me", 54321)
161
+ Puppet::Network::HttpPool.http_instance("me", 54321).should equal(old)
162
+ end
163
+
164
+ it "should have a mechanism for getting a new http instance instead of the cached instance" do
165
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
166
+ old = Puppet::Network::HttpPool.http_instance("me", 54321)
167
+ Puppet::Network::HttpPool.http_instance("me", 54321, true).should_not equal(old)
168
+ end
169
+
170
+ it "should close existing, open connections when requesting a new connection" do
171
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
172
+ old = Puppet::Network::HttpPool.http_instance("me", 54321)
173
+ old.expects(:started?).returns(true)
174
+ old.expects(:finish)
175
+ Puppet::Network::HttpPool.http_instance("me", 54321, true)
176
+ end
177
+
178
+ it "should have a mechanism for clearing the http cache" do
179
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
180
+ old = Puppet::Network::HttpPool.http_instance("me", 54321)
181
+ Puppet::Network::HttpPool.http_instance("me", 54321).should equal(old)
182
+ old = Puppet::Network::HttpPool.http_instance("me", 54321)
183
+ Puppet::Network::HttpPool.clear_http_instances
184
+ Puppet::Network::HttpPool.http_instance("me", 54321).should_not equal(old)
185
+ end
186
+
187
+ it "should close open http connections when clearing the cache" do
188
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
189
+ one = Puppet::Network::HttpPool.http_instance("me", 54321)
190
+ one.expects(:started?).returns(true)
191
+ one.expects(:finish).returns(true)
192
+ Puppet::Network::HttpPool.clear_http_instances
193
+ end
194
+
195
+ it "should not close unopened http connections when clearing the cache" do
196
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
197
+ one = Puppet::Network::HttpPool.http_instance("me", 54321)
198
+ one.expects(:started?).returns(false)
199
+ one.expects(:finish).never
200
+ Puppet::Network::HttpPool.clear_http_instances
201
+ end
202
+ end
203
+
204
+ describe "when http keep-alive is disabled" do
205
+ before do
206
+ Puppet::Network::HttpPool.stubs(:keep_alive?).returns false
207
+ end
208
+
209
+ it "should not cache http instances" do
210
+ stub_settings :http_proxy_host => "myhost", :http_proxy_port => 432, :configtimeout => 120, :http_enable_post_connection_check => true
211
+ old = Puppet::Network::HttpPool.http_instance("me", 54321)
212
+ Puppet::Network::HttpPool.http_instance("me", 54321).should_not equal(old)
213
+ end
214
+ end
215
+
216
+ # We mostly have to do this for testing, since in real life people
217
+ # won't change certs within a single process.
218
+ it "should remove its loaded certificate when clearing the cache" do
219
+ Puppet::Network::HttpPool.instance_variable_set("@cert", :yay)
220
+ Puppet::Network::HttpPool.clear_http_instances
221
+ # Can't use the accessor, because it will read the cert in
222
+ Puppet::Network::HttpPool.instance_variable_get("@cert").should be_nil
223
+ end
224
+
225
+ # We mostly have to do this for testing, since in real life people
226
+ # won't change certs within a single process.
227
+ it "should remove its loaded key when clearing the cache" do
228
+ Puppet::Network::HttpPool.instance_variable_set("@key", :yay)
229
+ Puppet::Network::HttpPool.clear_http_instances
230
+ # Can't use the accessor, because it will read the cert in
231
+ Puppet::Network::HttpPool.instance_variable_get("@key").should be_nil
232
+ end
233
+
234
+ after do
235
+ Puppet::Network::HttpPool.clear_http_instances
236
+ end
237
+ end
238
+ end
@@ -0,0 +1,316 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Rick Bradley on 2007-10-03.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require File.dirname(__FILE__) + '/../../spec_helper'
7
+ require 'puppet/network/server'
8
+
9
+ describe Puppet::Network::Server, "when initializing" do
10
+ before do
11
+ @mock_http_server_class = mock('http server class')
12
+ Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
13
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
14
+ end
15
+
16
+ it "should allow specifying a listening address" do
17
+ Puppet.stubs(:[]).with(:masterport).returns('')
18
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1")
19
+ @server.address.should == "127.0.0.1"
20
+ end
21
+
22
+ it "should allow specifying a listening port" do
23
+ Puppet.stubs(:[]).with(:bindaddress).returns('')
24
+ @server = Puppet::Network::Server.new(:port => 31337)
25
+ @server.port.should == 31337
26
+ end
27
+
28
+ it "should use the Puppet configurator to find a default listening address" do
29
+ Puppet.stubs(:[]).with(:masterport).returns('')
30
+ Puppet.expects(:[]).with(:bindaddress).returns("10.0.0.1")
31
+ @server = Puppet::Network::Server.new
32
+ @server.address.should == "10.0.0.1"
33
+ end
34
+
35
+ it "should use the Puppet configurator to find a default listening port" do
36
+ Puppet.stubs(:[]).with(:bindaddress).returns('')
37
+ Puppet.expects(:[]).with(:masterport).returns(6667)
38
+ @server = Puppet::Network::Server.new
39
+ @server.port.should == 6667
40
+ end
41
+
42
+ it "should fail to initialize if no listening address can be found" do
43
+ Puppet.stubs(:[]).with(:masterport).returns(6667)
44
+ Puppet.stubs(:[]).with(:bindaddress).returns(nil)
45
+ Proc.new { Puppet::Network::Server.new }.should raise_error(ArgumentError)
46
+ end
47
+
48
+ it "should fail to initialize if no listening port can be found" do
49
+ Puppet.stubs(:[]).with(:bindaddress).returns("127.0.0.1")
50
+ Puppet.stubs(:[]).with(:masterport).returns(nil)
51
+ Proc.new { Puppet::Network::Server.new }.should raise_error(ArgumentError)
52
+ end
53
+
54
+ it "should use the Puppet configurator to determine which HTTP server will be used to provide access to clients" do
55
+ Puppet.expects(:[]).with(:servertype).returns(:suparserver)
56
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
57
+ @server.server_type.should == :suparserver
58
+ end
59
+
60
+ it "should fail to initialize if there is no HTTP server known to the Puppet configurator" do
61
+ Puppet.expects(:[]).with(:servertype).returns(nil)
62
+ Proc.new { Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337) }.should raise_error
63
+ end
64
+
65
+ it "should ask the Puppet::Network::HTTP class to fetch the proper HTTP server class" do
66
+ Puppet::Network::HTTP.expects(:server_class_by_type).with(:suparserver).returns(@mock_http_server_class)
67
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
68
+ end
69
+
70
+ it "should fail if the HTTP server class is unknown" do
71
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(nil)
72
+ Proc.new { Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337) }.should raise_error(ArgumentError)
73
+ end
74
+
75
+ it "should allow registering indirections" do
76
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337, :handlers => [ :foo, :bar, :baz])
77
+ Proc.new { @server.unregister(:foo, :bar, :baz) }.should_not raise_error
78
+ end
79
+
80
+ it "should not be listening after initialization" do
81
+ Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337).should_not be_listening
82
+ end
83
+ end
84
+
85
+ describe Puppet::Network::Server, "in general" do
86
+ before do
87
+ @mock_http_server_class = mock('http server class')
88
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
89
+ Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
90
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
91
+ end
92
+
93
+ it "should allow registering an indirection for client access by specifying its indirection name" do
94
+ Proc.new { @server.register(:foo) }.should_not raise_error
95
+ end
96
+
97
+ it "should require at least one indirection name when registering indirections for client access" do
98
+ Proc.new { @server.register }.should raise_error(ArgumentError)
99
+ end
100
+
101
+ it "should allow for numerous indirections to be registered at once for client access" do
102
+ Proc.new { @server.register(:foo, :bar, :baz) }.should_not raise_error
103
+ end
104
+
105
+ it "should allow the use of indirection names to specify which indirections are to be no longer accessible to clients" do
106
+ @server.register(:foo)
107
+ Proc.new { @server.unregister(:foo) }.should_not raise_error
108
+ end
109
+
110
+ it "should leave other indirections accessible to clients when turning off indirections" do
111
+ @server.register(:foo, :bar)
112
+ @server.unregister(:foo)
113
+ Proc.new { @server.unregister(:bar)}.should_not raise_error
114
+ end
115
+
116
+ it "should allow specifying numerous indirections which are to be no longer accessible to clients" do
117
+ @server.register(:foo, :bar)
118
+ Proc.new { @server.unregister(:foo, :bar) }.should_not raise_error
119
+ end
120
+
121
+ it "should not turn off any indirections if given unknown indirection names to turn off" do
122
+ @server.register(:foo, :bar)
123
+ Proc.new { @server.unregister(:foo, :bar, :baz) }.should raise_error(ArgumentError)
124
+ Proc.new { @server.unregister(:foo, :bar) }.should_not raise_error
125
+ end
126
+
127
+ it "should not allow turning off unknown indirection names" do
128
+ @server.register(:foo, :bar)
129
+ Proc.new { @server.unregister(:baz) }.should raise_error(ArgumentError)
130
+ end
131
+
132
+ it "should disable client access immediately when turning off indirections" do
133
+ @server.register(:foo, :bar)
134
+ @server.unregister(:foo)
135
+ Proc.new { @server.unregister(:foo) }.should raise_error(ArgumentError)
136
+ end
137
+
138
+ it "should allow turning off all indirections at once" do
139
+ @server.register(:foo, :bar)
140
+ @server.unregister
141
+ [ :foo, :bar, :baz].each do |indirection|
142
+ Proc.new { @server.unregister(indirection) }.should raise_error(ArgumentError)
143
+ end
144
+ end
145
+
146
+ it "should provide a means of determining whether it is listening" do
147
+ @server.should respond_to(:listening?)
148
+ end
149
+
150
+ it "should provide a means of determining which HTTP server will be used to provide access to clients" do
151
+ @server.server_type.should == :suparserver
152
+ end
153
+
154
+ it "should allow for multiple configurations, each handling different indirections" do
155
+ @server2 = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
156
+ @server.register(:foo, :bar)
157
+ @server2.register(:foo, :xyzzy)
158
+ @server.unregister(:foo, :bar)
159
+ @server2.unregister(:foo, :xyzzy)
160
+ Proc.new { @server.unregister(:xyzzy) }.should raise_error(ArgumentError)
161
+ Proc.new { @server2.unregister(:bar) }.should raise_error(ArgumentError)
162
+ end
163
+
164
+ it "should provide a means of determining which protocols are in use" do
165
+ @server.should respond_to(:protocols)
166
+ end
167
+
168
+ it "should only support the REST protocol at this time" do
169
+ @server.protocols.should == [ :rest ]
170
+ end
171
+
172
+ it "should provide a means of determining the listening address" do
173
+ @server.address.should == "127.0.0.1"
174
+ end
175
+
176
+ it "should provide a means of determining the listening port" do
177
+ @server.port.should == 31337
178
+ end
179
+ end
180
+
181
+ describe Puppet::Network::Server, "when listening is off" do
182
+ before do
183
+ @mock_http_server_class = mock('http server class')
184
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
185
+ Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
186
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
187
+ @mock_http_server = mock('http server')
188
+ @mock_http_server.stubs(:listen)
189
+ @server.stubs(:http_server).returns(@mock_http_server)
190
+ end
191
+
192
+ it "should indicate that it is not listening" do
193
+ @server.should_not be_listening
194
+ end
195
+
196
+ it "should not allow listening to be turned off" do
197
+ Proc.new { @server.unlisten }.should raise_error(RuntimeError)
198
+ end
199
+
200
+ it "should allow listening to be turned on" do
201
+ Proc.new { @server.listen }.should_not raise_error
202
+ end
203
+
204
+ end
205
+
206
+ describe Puppet::Network::Server, "when listening is on" do
207
+ before do
208
+ @mock_http_server_class = mock('http server class')
209
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
210
+ Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
211
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
212
+ @mock_http_server = mock('http server')
213
+ @mock_http_server.stubs(:listen)
214
+ @mock_http_server.stubs(:unlisten)
215
+ @server.stubs(:http_server).returns(@mock_http_server)
216
+ @server.listen
217
+ end
218
+
219
+ it "should indicate that listening is turned off" do
220
+ @server.should be_listening
221
+ end
222
+
223
+ it "should not allow listening to be turned on" do
224
+ Proc.new { @server.listen }.should raise_error(RuntimeError)
225
+ end
226
+
227
+ it "should allow listening to be turned off" do
228
+ Proc.new { @server.unlisten }.should_not raise_error
229
+ end
230
+ end
231
+
232
+ describe Puppet::Network::Server, "when listening is being turned on" do
233
+ before do
234
+ @mock_http_server_class = mock('http server class')
235
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
236
+ Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
237
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337, :handlers => [:node])
238
+ @mock_http_server = mock('http server')
239
+ @mock_http_server.stubs(:listen)
240
+ end
241
+
242
+ it "should fetch an instance of an HTTP server" do
243
+ @server.stubs(:http_server_class).returns(@mock_http_server_class)
244
+ @mock_http_server_class.expects(:new).returns(@mock_http_server)
245
+ @server.listen
246
+ end
247
+
248
+ it "should cause the HTTP server to listen" do
249
+ @server.stubs(:http_server).returns(@mock_http_server)
250
+ @mock_http_server.expects(:listen)
251
+ @server.listen
252
+ end
253
+
254
+ it "should pass the listening address to the HTTP server" do
255
+ @server.stubs(:http_server).returns(@mock_http_server)
256
+ @mock_http_server.expects(:listen).with do |args|
257
+ args[:address] == '127.0.0.1'
258
+ end
259
+ @server.listen
260
+ end
261
+
262
+ it "should pass the listening port to the HTTP server" do
263
+ @server.stubs(:http_server).returns(@mock_http_server)
264
+ @mock_http_server.expects(:listen).with do |args|
265
+ args[:port] == 31337
266
+ end
267
+ @server.listen
268
+ end
269
+
270
+ it "should pass a list of handlers to the HTTP server" do
271
+ @server.stubs(:http_server).returns(@mock_http_server)
272
+ @mock_http_server.expects(:listen).with do |args|
273
+ args[:handlers] == [ :node ]
274
+ end
275
+ @server.listen
276
+ end
277
+
278
+ it "should pass a list of protocols to the HTTP server" do
279
+ @server.stubs(:http_server).returns(@mock_http_server)
280
+ @mock_http_server.expects(:listen).with do |args|
281
+ args[:protocols] == [ :rest ]
282
+ end
283
+ @server.listen
284
+ end
285
+ end
286
+
287
+ describe Puppet::Network::Server, "when listening is being turned off" do
288
+ before do
289
+ @mock_http_server_class = mock('http server class')
290
+ Puppet::Network::HTTP.stubs(:server_class_by_type).returns(@mock_http_server_class)
291
+ Puppet.stubs(:[]).with(:servertype).returns(:suparserver)
292
+ @server = Puppet::Network::Server.new(:address => "127.0.0.1", :port => 31337)
293
+ @mock_http_server = mock('http server')
294
+ @mock_http_server.stubs(:listen)
295
+ @server.stubs(:http_server).returns(@mock_http_server)
296
+ @server.listen
297
+ end
298
+
299
+ it "should cause the HTTP server to stop listening when listening is turned off" do
300
+ @mock_http_server.expects(:unlisten)
301
+ @server.unlisten
302
+ end
303
+
304
+ it "should not allow for indirections to be turned off" do
305
+ @server.register(:foo)
306
+ Proc.new { @server.unregister(:foo) }.should raise_error(RuntimeError)
307
+ end
308
+ end
309
+
310
+
311
+ describe Class.new, "put these somewhere" do
312
+ it "should have the ability to use a class-level from_ hook (from_yaml, from_text, etc.) that can be called, based on content-type header, to allow for different deserializations of an object"
313
+ it "should allow from_* on the inbound :data packet (look at its content_type) when doing a PUT/.new.save"
314
+ it "should prepend a rest version number on the path (w00t)"
315
+ it "should ... on server side, .save should from_yaml, then foo.save(args) instead of just Foo.new.save(args)"
316
+ end