puppet 2.7.26 → 3.0.0.rc4

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 (1472) hide show
  1. data/CHANGELOG +533 -204
  2. data/Gemfile +8 -24
  3. data/Gemfile.lock +44 -0
  4. data/LICENSE +1 -1
  5. data/README.md +2 -2
  6. data/README_DEVELOPER.md +18 -210
  7. data/Rakefile +30 -47
  8. data/bin/puppet +5 -3
  9. data/conf/auth.conf +3 -3
  10. data/{ext → conf}/osx/PackageInfo.plist +0 -0
  11. data/{ext → conf}/osx/createpackage.sh +0 -0
  12. data/conf/osx/preflight +24 -0
  13. data/conf/redhat/client.init +8 -8
  14. data/{ext/redhat/puppet.spec.erb → conf/redhat/puppet.spec} +29 -46
  15. data/conf/redhat/queue.init +105 -0
  16. data/conf/redhat/rundir-perms.patch +13 -13
  17. data/conf/redhat/server.init +4 -4
  18. data/conf/solaris/pkginfo +1 -1
  19. data/conf/suse/puppet.spec +8 -3
  20. data/conf/windows/eventlog/puppetres.dll +0 -0
  21. data/ext/emacs/puppet-mode.el +204 -150
  22. data/ext/nagios/naggen +1 -1
  23. data/ext/puppet-test +1 -1
  24. data/ext/puppetlisten/puppetlisten.rb +1 -2
  25. data/ext/puppetlisten/puppetrun.rb +1 -2
  26. data/ext/rack/files/config.ru +21 -3
  27. data/ext/regexp_nodes/environment/development +2 -0
  28. data/ext/regexp_nodes/parameters/{environment → service}/prod +0 -0
  29. data/ext/regexp_nodes/parameters/{environment → service}/qa +0 -0
  30. data/ext/regexp_nodes/parameters/service/sandbox +1 -0
  31. data/ext/regexp_nodes/regexp_nodes.rb +115 -59
  32. data/ext/upload_facts.rb +0 -1
  33. data/install.rb +10 -10
  34. data/lib/puppet.rb +49 -24
  35. data/lib/puppet/agent.rb +40 -16
  36. data/lib/puppet/agent/disabler.rb +53 -0
  37. data/lib/puppet/agent/locker.rb +18 -24
  38. data/lib/puppet/application.rb +93 -72
  39. data/lib/puppet/application/agent.rb +29 -47
  40. data/lib/puppet/application/apply.rb +40 -39
  41. data/lib/puppet/application/cert.rb +9 -11
  42. data/lib/puppet/application/certificate.rb +7 -2
  43. data/lib/puppet/application/certificate_request.rb +3 -0
  44. data/lib/puppet/application/certificate_revocation_list.rb +3 -0
  45. data/lib/puppet/application/describe.rb +1 -3
  46. data/lib/puppet/application/device.rb +15 -16
  47. data/lib/puppet/application/doc.rb +12 -11
  48. data/lib/puppet/application/face_base.rb +9 -13
  49. data/lib/puppet/application/filebucket.rb +2 -8
  50. data/lib/puppet/application/inspect.rb +3 -6
  51. data/lib/puppet/application/instrumentation_data.rb +3 -0
  52. data/lib/puppet/application/instrumentation_listener.rb +3 -0
  53. data/lib/puppet/application/instrumentation_probe.rb +3 -0
  54. data/lib/puppet/application/kick.rb +2 -8
  55. data/lib/puppet/application/master.rb +9 -15
  56. data/lib/puppet/application/module.rb +0 -7
  57. data/lib/puppet/application/queue.rb +7 -6
  58. data/lib/puppet/application/resource.rb +1 -5
  59. data/lib/puppet/application/resource_type.rb +3 -0
  60. data/lib/puppet/application/secret_agent.rb +3 -0
  61. data/lib/puppet/configurer.rb +87 -88
  62. data/lib/puppet/configurer/downloader.rb +8 -23
  63. data/lib/puppet/configurer/fact_handler.rb +5 -17
  64. data/lib/puppet/configurer/plugin_handler.rb +4 -23
  65. data/lib/puppet/daemon.rb +24 -6
  66. data/lib/puppet/data_binding.rb +11 -0
  67. data/lib/puppet/defaults.rb +1058 -518
  68. data/lib/puppet/error.rb +31 -25
  69. data/lib/puppet/external/dot.rb +1 -1
  70. data/lib/puppet/external/nagios/base.rb +8 -4
  71. data/lib/puppet/face/ca.rb +1 -1
  72. data/lib/puppet/face/catalog.rb +1 -2
  73. data/lib/puppet/face/certificate.rb +12 -0
  74. data/lib/puppet/face/config.rb +3 -0
  75. data/lib/puppet/face/help.rb +92 -28
  76. data/lib/puppet/face/help/action.erb +36 -3
  77. data/lib/puppet/face/help/face.erb +35 -3
  78. data/lib/puppet/face/help/global.erb +8 -12
  79. data/lib/puppet/face/help/man.erb +20 -2
  80. data/lib/puppet/face/instrumentation_data.rb +1 -0
  81. data/lib/puppet/face/instrumentation_listener.rb +1 -0
  82. data/lib/puppet/face/instrumentation_probe.rb +1 -0
  83. data/lib/puppet/face/module.rb +2 -0
  84. data/lib/puppet/face/module/build.rb +32 -6
  85. data/lib/puppet/face/module/changes.rb +1 -0
  86. data/lib/puppet/face/module/generate.rb +1 -0
  87. data/lib/puppet/face/module/install.rb +10 -41
  88. data/lib/puppet/face/module/list.rb +2 -19
  89. data/lib/puppet/face/module/search.rb +12 -6
  90. data/lib/puppet/face/module/uninstall.rb +3 -18
  91. data/lib/puppet/face/module/upgrade.rb +2 -9
  92. data/lib/puppet/face/node/clean.rb +25 -27
  93. data/lib/puppet/face/report.rb +2 -4
  94. data/lib/puppet/face/resource.rb +1 -1
  95. data/lib/puppet/feature/base.rb +9 -3
  96. data/lib/puppet/feature/rails.rb +18 -0
  97. data/lib/puppet/feature/rdoc1.rb +16 -0
  98. data/lib/puppet/file_bucket/dipper.rb +3 -2
  99. data/lib/puppet/file_serving/base.rb +4 -8
  100. data/lib/puppet/file_serving/configuration.rb +1 -12
  101. data/lib/puppet/file_serving/configuration/parser.rb +1 -1
  102. data/lib/puppet/file_serving/metadata.rb +0 -14
  103. data/lib/puppet/file_serving/mount/plugins.rb +10 -1
  104. data/lib/puppet/file_serving/terminus_selector.rb +15 -13
  105. data/lib/puppet/forge.rb +29 -13
  106. data/lib/puppet/forge/cache.rb +1 -1
  107. data/lib/puppet/forge/errors.rb +69 -0
  108. data/lib/puppet/forge/repository.rb +84 -21
  109. data/lib/puppet/indirector/catalog/active_record.rb +2 -12
  110. data/lib/puppet/indirector/catalog/compiler.rb +8 -18
  111. data/lib/puppet/indirector/catalog/json.rb +6 -0
  112. data/lib/puppet/indirector/catalog/static_compiler.rb +3 -2
  113. data/lib/puppet/indirector/certificate/rest.rb +1 -0
  114. data/lib/puppet/indirector/certificate_status/file.rb +0 -5
  115. data/lib/puppet/indirector/data_binding/hiera.rb +6 -0
  116. data/lib/puppet/indirector/data_binding/none.rb +5 -0
  117. data/lib/puppet/indirector/exec.rb +8 -18
  118. data/lib/puppet/indirector/face.rb +5 -4
  119. data/lib/puppet/indirector/facts/facter.rb +6 -33
  120. data/lib/puppet/indirector/facts/network_device.rb +0 -1
  121. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -4
  122. data/lib/puppet/indirector/file_bucket_file/selector.rb +0 -4
  123. data/lib/puppet/indirector/file_content/rest.rb +2 -0
  124. data/lib/puppet/indirector/hiera.rb +69 -0
  125. data/lib/puppet/indirector/indirection.rb +20 -26
  126. data/lib/puppet/indirector/json.rb +76 -0
  127. data/lib/puppet/indirector/ldap.rb +3 -2
  128. data/lib/puppet/indirector/node/active_record.rb +1 -0
  129. data/lib/puppet/indirector/node/exec.rb +9 -0
  130. data/lib/puppet/indirector/node/ldap.rb +6 -3
  131. data/lib/puppet/indirector/node/plain.rb +1 -0
  132. data/lib/puppet/indirector/none.rb +9 -0
  133. data/lib/puppet/indirector/queue.rb +1 -2
  134. data/lib/puppet/indirector/report/processor.rb +2 -3
  135. data/lib/puppet/indirector/report/rest.rb +1 -7
  136. data/lib/puppet/indirector/request.rb +80 -18
  137. data/lib/puppet/indirector/resource/active_record.rb +0 -3
  138. data/lib/puppet/indirector/resource/ral.rb +0 -4
  139. data/lib/puppet/indirector/resource/rest.rb +0 -9
  140. data/lib/puppet/indirector/resource/store_configs.rb +0 -3
  141. data/lib/puppet/indirector/resource_type/parser.rb +30 -1
  142. data/lib/puppet/indirector/rest.rb +103 -126
  143. data/lib/puppet/indirector/run/local.rb +0 -4
  144. data/lib/puppet/indirector/run/rest.rb +0 -6
  145. data/lib/puppet/indirector/terminus.rb +0 -20
  146. data/lib/puppet/indirector/yaml.rb +11 -5
  147. data/lib/puppet/interface.rb +6 -14
  148. data/lib/puppet/interface/action.rb +21 -3
  149. data/lib/puppet/interface/action_builder.rb +5 -0
  150. data/lib/puppet/interface/action_manager.rb +1 -1
  151. data/lib/puppet/interface/documentation.rb +12 -0
  152. data/lib/puppet/interface/face_collection.rb +1 -1
  153. data/lib/puppet/interface/option.rb +19 -3
  154. data/lib/puppet/interface/option_manager.rb +27 -9
  155. data/lib/puppet/metatype/manager.rb +1 -0
  156. data/lib/puppet/module.rb +40 -83
  157. data/lib/puppet/module_tool.rb +42 -5
  158. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  159. data/lib/puppet/module_tool/applications/installer.rb +11 -11
  160. data/lib/puppet/module_tool/applications/searcher.rb +15 -2
  161. data/lib/puppet/module_tool/applications/unpacker.rb +4 -8
  162. data/lib/puppet/module_tool/applications/upgrader.rb +6 -5
  163. data/lib/puppet/module_tool/errors/base.rb +1 -1
  164. data/lib/puppet/module_tool/errors/installer.rb +24 -4
  165. data/lib/puppet/module_tool/install_directory.rb +41 -0
  166. data/lib/puppet/module_tool/metadata.rb +4 -4
  167. data/lib/puppet/module_tool/shared_behaviors.rb +6 -6
  168. data/lib/puppet/network/auth_config_parser.rb +81 -0
  169. data/lib/puppet/network/authconfig.rb +49 -147
  170. data/lib/puppet/network/authorization.rb +20 -62
  171. data/lib/puppet/network/authstore.rb +43 -27
  172. data/lib/puppet/network/formats.rb +10 -20
  173. data/lib/puppet/network/http/api/v1.rb +1 -1
  174. data/lib/puppet/network/http/connection.rb +184 -0
  175. data/lib/puppet/network/http/handler.rb +4 -14
  176. data/lib/puppet/network/http/mongrel.rb +5 -25
  177. data/lib/puppet/network/http/rack.rb +2 -34
  178. data/lib/puppet/network/http/rack/httphandler.rb +0 -3
  179. data/lib/puppet/network/http/rack/rest.rb +2 -7
  180. data/lib/puppet/network/http/webrick.rb +9 -32
  181. data/lib/puppet/network/http_pool.rb +10 -48
  182. data/lib/puppet/network/resolver.rb +85 -0
  183. data/lib/puppet/network/rights.rb +33 -89
  184. data/lib/puppet/network/server.rb +14 -43
  185. data/lib/puppet/node.rb +13 -11
  186. data/lib/puppet/node/environment.rb +29 -12
  187. data/lib/puppet/node/facts.rb +13 -38
  188. data/lib/puppet/parameter.rb +0 -21
  189. data/lib/puppet/parameter/package_options.rb +26 -0
  190. data/lib/puppet/parser/ast.rb +2 -13
  191. data/lib/puppet/parser/ast/function.rb +0 -2
  192. data/lib/puppet/parser/ast/leaf.rb +12 -22
  193. data/lib/puppet/parser/ast/resource.rb +3 -10
  194. data/lib/puppet/parser/ast/resource_defaults.rb +1 -1
  195. data/lib/puppet/parser/ast/resource_override.rb +1 -4
  196. data/lib/puppet/parser/ast/resourceparam.rb +4 -7
  197. data/lib/puppet/parser/ast/selector.rb +7 -1
  198. data/lib/puppet/parser/ast/vardef.rb +0 -2
  199. data/lib/puppet/parser/collector.rb +2 -1
  200. data/lib/puppet/parser/compiler.rb +43 -46
  201. data/lib/puppet/parser/files.rb +15 -20
  202. data/lib/puppet/parser/functions.rb +8 -39
  203. data/lib/puppet/parser/functions/extlookup.rb +8 -8
  204. data/lib/puppet/parser/functions/file.rb +18 -18
  205. data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
  206. data/lib/puppet/parser/functions/generate.rb +3 -3
  207. data/lib/puppet/parser/functions/include.rb +6 -1
  208. data/lib/puppet/parser/functions/require.rb +16 -21
  209. data/lib/puppet/parser/functions/shellquote.rb +29 -21
  210. data/lib/puppet/parser/functions/versioncmp.rb +2 -5
  211. data/lib/puppet/parser/grammar.ra +44 -14
  212. data/lib/puppet/parser/lexer.rb +101 -169
  213. data/lib/puppet/parser/parser.rb +1103 -1014
  214. data/lib/puppet/parser/parser_support.rb +10 -61
  215. data/lib/puppet/parser/relationship.rb +1 -3
  216. data/lib/puppet/parser/resource.rb +21 -56
  217. data/lib/puppet/parser/scope.rb +138 -165
  218. data/lib/puppet/parser/templatewrapper.rb +25 -20
  219. data/lib/puppet/parser/type_loader.rb +33 -67
  220. data/lib/puppet/parser/yaml_trimmer.rb +1 -1
  221. data/lib/puppet/property.rb +5 -4
  222. data/lib/puppet/provider.rb +133 -28
  223. data/lib/puppet/provider/augeas/augeas.rb +66 -6
  224. data/lib/puppet/provider/command.rb +25 -0
  225. data/lib/puppet/provider/cron/crontab.rb +1 -1
  226. data/lib/puppet/provider/exec.rb +14 -9
  227. data/lib/puppet/provider/exec/posix.rb +1 -1
  228. data/lib/puppet/provider/exec/windows.rb +2 -3
  229. data/lib/puppet/provider/file/windows.rb +29 -10
  230. data/lib/puppet/provider/group/groupadd.rb +3 -2
  231. data/lib/puppet/provider/group/ldap.rb +1 -1
  232. data/lib/puppet/provider/group/windows_adsi.rb +1 -1
  233. data/lib/puppet/provider/host/parsed.rb +1 -1
  234. data/lib/puppet/provider/ldap.rb +1 -5
  235. data/lib/puppet/provider/mount/parsed.rb +3 -3
  236. data/lib/puppet/provider/nameservice.rb +22 -22
  237. data/lib/puppet/provider/nameservice/directoryservice.rb +58 -121
  238. data/lib/puppet/provider/package/apt.rb +8 -11
  239. data/lib/puppet/provider/package/blastwave.rb +3 -3
  240. data/lib/puppet/provider/package/dpkg.rb +1 -1
  241. data/lib/puppet/provider/package/freebsd.rb +2 -2
  242. data/lib/puppet/provider/package/gem.rb +1 -1
  243. data/lib/puppet/provider/package/macports.rb +11 -9
  244. data/lib/puppet/provider/package/msi.rb +37 -32
  245. data/lib/puppet/provider/package/openbsd.rb +1 -1
  246. data/lib/puppet/provider/package/pacman.rb +69 -6
  247. data/lib/puppet/provider/package/pkg.rb +126 -75
  248. data/lib/puppet/provider/package/pkgin.rb +60 -0
  249. data/lib/puppet/provider/package/pkgutil.rb +32 -20
  250. data/lib/puppet/provider/package/portage.rb +2 -2
  251. data/lib/puppet/provider/package/sun.rb +83 -116
  252. data/lib/puppet/provider/package/sunfreeware.rb +1 -1
  253. data/lib/puppet/provider/package/up2date.rb +2 -3
  254. data/lib/puppet/provider/package/windows.rb +130 -0
  255. data/lib/puppet/provider/package/windows/exe_package.rb +70 -0
  256. data/lib/puppet/provider/package/windows/msi_package.rb +62 -0
  257. data/lib/puppet/provider/package/windows/package.rb +79 -0
  258. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +2 -2
  259. data/lib/puppet/provider/service/base.rb +1 -0
  260. data/lib/puppet/provider/service/bsd.rb +7 -5
  261. data/lib/puppet/provider/service/daemontools.rb +1 -1
  262. data/lib/puppet/provider/service/debian.rb +1 -1
  263. data/lib/puppet/provider/service/freebsd.rb +9 -9
  264. data/lib/puppet/provider/service/launchd.rb +7 -11
  265. data/lib/puppet/provider/service/redhat.rb +2 -2
  266. data/lib/puppet/provider/service/runit.rb +9 -2
  267. data/lib/puppet/provider/service/smf.rb +14 -2
  268. data/lib/puppet/provider/service/systemd.rb +3 -3
  269. data/lib/puppet/provider/service/upstart.rb +6 -6
  270. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -0
  271. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  272. data/lib/puppet/provider/user/useradd.rb +3 -8
  273. data/lib/puppet/provider/user/windows_adsi.rb +1 -12
  274. data/lib/puppet/provider/zfs/{solaris.rb → zfs.rb} +16 -5
  275. data/lib/puppet/provider/zone/solaris.rb +10 -13
  276. data/lib/puppet/provider/zpool/{solaris.rb → zpool.rb} +11 -4
  277. data/lib/puppet/rails.rb +6 -4
  278. data/lib/puppet/rails/database/schema.rb +9 -4
  279. data/lib/puppet/rails/inventory_node.rb +13 -26
  280. data/lib/puppet/reference/configuration.rb +1 -2
  281. data/lib/puppet/reference/metaparameter.rb +1 -2
  282. data/lib/puppet/reports/http.rb +9 -10
  283. data/lib/puppet/reports/rrdgraph.rb +2 -2
  284. data/lib/puppet/reports/store.rb +1 -2
  285. data/lib/puppet/reports/tagmail.rb +6 -6
  286. data/lib/puppet/resource.rb +69 -64
  287. data/lib/puppet/resource/catalog.rb +11 -60
  288. data/lib/puppet/resource/status.rb +6 -32
  289. data/lib/puppet/resource/type.rb +94 -34
  290. data/lib/puppet/resource/type_collection.rb +17 -8
  291. data/lib/puppet/run.rb +4 -26
  292. data/lib/puppet/settings.rb +1315 -0
  293. data/lib/puppet/settings/base_setting.rb +163 -0
  294. data/lib/puppet/{util/settings → settings}/boolean_setting.rb +7 -3
  295. data/lib/puppet/settings/directory_setting.rb +7 -0
  296. data/lib/puppet/settings/errors.rb +11 -0
  297. data/lib/puppet/{util/settings → settings}/file_setting.rb +4 -20
  298. data/lib/puppet/settings/path_setting.rb +10 -0
  299. data/lib/puppet/settings/string_setting.rb +12 -0
  300. data/lib/puppet/simple_graph.rb +2 -5
  301. data/lib/puppet/ssl/base.rb +2 -2
  302. data/lib/puppet/ssl/certificate_authority.rb +4 -5
  303. data/lib/puppet/ssl/certificate_authority/interface.rb +5 -7
  304. data/lib/puppet/ssl/certificate_factory.rb +1 -2
  305. data/lib/puppet/ssl/certificate_request.rb +2 -2
  306. data/lib/puppet/ssl/certificate_revocation_list.rb +53 -30
  307. data/lib/puppet/ssl/configuration.rb +32 -0
  308. data/lib/puppet/ssl/host.rb +9 -37
  309. data/lib/puppet/status.rb +2 -6
  310. data/lib/puppet/test/test_helper.rb +58 -25
  311. data/lib/puppet/transaction.rb +6 -9
  312. data/lib/puppet/transaction/event.rb +13 -24
  313. data/lib/puppet/transaction/event_manager.rb +1 -1
  314. data/lib/puppet/transaction/report.rb +2 -41
  315. data/lib/puppet/transaction/resource_harness.rb +2 -3
  316. data/lib/puppet/type.rb +18 -191
  317. data/lib/puppet/type/augeas.rb +1 -1
  318. data/lib/puppet/type/cron.rb +1 -1
  319. data/lib/puppet/type/exec.rb +6 -4
  320. data/lib/puppet/type/file.rb +33 -44
  321. data/lib/puppet/type/file/content.rb +13 -9
  322. data/lib/puppet/type/file/ensure.rb +1 -1
  323. data/lib/puppet/type/file/mode.rb +1 -1
  324. data/lib/puppet/type/file/selcontext.rb +2 -6
  325. data/lib/puppet/type/file/source.rb +8 -4
  326. data/lib/puppet/type/filebucket.rb +3 -2
  327. data/lib/puppet/type/mount.rb +1 -11
  328. data/lib/puppet/type/package.rb +40 -23
  329. data/lib/puppet/type/schedule.rb +127 -21
  330. data/lib/puppet/type/scheduled_task.rb +1 -1
  331. data/lib/puppet/type/service.rb +2 -3
  332. data/lib/puppet/type/tidy.rb +8 -17
  333. data/lib/puppet/type/yumrepo.rb +35 -7
  334. data/lib/puppet/type/zfs.rb +4 -0
  335. data/lib/puppet/type/zone.rb +48 -38
  336. data/lib/puppet/util.rb +178 -249
  337. data/lib/puppet/util/adsi.rb +23 -25
  338. data/lib/puppet/util/autoload.rb +184 -114
  339. data/lib/puppet/util/backups.rb +3 -2
  340. data/lib/puppet/util/colors.rb +0 -1
  341. data/lib/puppet/util/command_line.rb +42 -104
  342. data/lib/puppet/util/command_line/puppet_option_parser.rb +89 -0
  343. data/lib/puppet/util/command_line/trollop.rb +824 -0
  344. data/lib/puppet/util/config_timeout.rb +24 -0
  345. data/lib/puppet/util/constant_inflector.rb +15 -7
  346. data/lib/puppet/util/diff.rb +2 -2
  347. data/lib/puppet/util/docs.rb +1 -2
  348. data/lib/puppet/util/errors.rb +3 -4
  349. data/lib/puppet/util/execution.rb +239 -14
  350. data/lib/puppet/util/execution_stub.rb +2 -2
  351. data/lib/puppet/util/feature.rb +2 -4
  352. data/lib/puppet/util/fileparsing.rb +1 -1
  353. data/lib/puppet/util/filetype.rb +12 -10
  354. data/lib/puppet/util/json_lockfile.rb +41 -0
  355. data/lib/puppet/util/ldap/connection.rb +4 -7
  356. data/lib/puppet/util/lockfile.rb +62 -0
  357. data/lib/puppet/util/log.rb +16 -20
  358. data/lib/puppet/util/log/destinations.rb +12 -27
  359. data/lib/puppet/util/logging.rb +95 -3
  360. data/lib/puppet/util/metric.rb +0 -6
  361. data/lib/puppet/util/monkey_patches.rb +101 -82
  362. data/lib/puppet/util/monkey_patches/lines.rb +13 -0
  363. data/lib/puppet/util/network_device/cisco/device.rb +2 -2
  364. data/lib/puppet/util/network_device/config.rb +1 -0
  365. data/lib/puppet/util/network_device/transport.rb +2 -0
  366. data/lib/puppet/util/pidlock.rb +13 -77
  367. data/lib/puppet/util/platform.rb +0 -7
  368. data/lib/puppet/util/posix.rb +10 -0
  369. data/lib/puppet/util/rdoc.rb +12 -8
  370. data/lib/puppet/util/reference.rb +3 -3
  371. data/lib/puppet/util/rubygems.rb +55 -0
  372. data/lib/puppet/util/run_mode.rb +7 -16
  373. data/lib/puppet/util/selinux.rb +36 -31
  374. data/lib/puppet/util/storage.rb +14 -19
  375. data/lib/puppet/util/suidmanager.rb +27 -2
  376. data/lib/puppet/util/windows.rb +9 -6
  377. data/lib/puppet/util/windows/error.rb +1 -1
  378. data/lib/puppet/util/windows/process.rb +3 -3
  379. data/lib/puppet/util/windows/registry.rb +36 -0
  380. data/lib/puppet/util/windows/security.rb +46 -9
  381. data/lib/puppet/util/windows/user.rb +2 -65
  382. data/lib/puppet/util/zaml.rb +47 -91
  383. data/lib/puppet/version.rb +1 -1
  384. data/man/man5/puppet.conf.5 +97 -69
  385. data/man/man8/puppet-agent.8 +5 -6
  386. data/man/man8/puppet-apply.8 +7 -3
  387. data/man/man8/puppet-ca.8 +5 -17
  388. data/man/man8/puppet-catalog.8 +1 -1
  389. data/man/man8/puppet-cert.8 +1 -1
  390. data/man/man8/puppet-certificate.8 +3 -9
  391. data/man/man8/puppet-certificate_request.8 +1 -1
  392. data/man/man8/puppet-certificate_revocation_list.8 +1 -1
  393. data/man/man8/puppet-config.8 +1 -1
  394. data/man/man8/puppet-describe.8 +1 -1
  395. data/man/man8/puppet-device.8 +1 -1
  396. data/man/man8/puppet-doc.8 +7 -1
  397. data/man/man8/puppet-facts.8 +1 -1
  398. data/man/man8/puppet-file.8 +1 -1
  399. data/man/man8/puppet-filebucket.8 +1 -1
  400. data/man/man8/puppet-help.8 +2 -5
  401. data/man/man8/puppet-inspect.8 +1 -1
  402. data/man/man8/puppet-instrumentation_data.8 +1 -1
  403. data/man/man8/puppet-instrumentation_listener.8 +1 -1
  404. data/man/man8/puppet-instrumentation_probe.8 +1 -1
  405. data/man/man8/puppet-key.8 +1 -1
  406. data/man/man8/puppet-kick.8 +1 -1
  407. data/man/man8/puppet-man.8 +1 -1
  408. data/man/man8/puppet-master.8 +1 -1
  409. data/man/man8/puppet-module.8 +19 -50
  410. data/man/man8/puppet-node.8 +2 -5
  411. data/man/man8/puppet-parser.8 +7 -1
  412. data/man/man8/puppet-plugin.8 +1 -1
  413. data/man/man8/puppet-queue.8 +1 -1
  414. data/man/man8/puppet-report.8 +2 -3
  415. data/man/man8/puppet-resource.8 +1 -1
  416. data/man/man8/puppet-resource_type.8 +1 -1
  417. data/man/man8/puppet-secret_agent.8 +1 -1
  418. data/man/man8/puppet-status.8 +1 -1
  419. data/man/man8/puppet.8 +1 -1
  420. data/spec/fixtures/unit/indirector/hiera/global.yaml +10 -0
  421. data/{test/data/providers/cron/crontab_sample_records.yaml → spec/fixtures/unit/provider/cron/crontab/single_line.yaml} +0 -0
  422. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +1 -1
  423. data/spec/fixtures/unit/provider/package/pkg/{dummy_solaris11 → dummy_solaris11.ifo.installed} +0 -0
  424. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +1 -0
  425. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +1 -0
  426. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +1 -0
  427. data/spec/fixtures/unit/provider/package/pkg/publisher +2 -2
  428. data/spec/fixtures/unit/provider/package/pkg/simple +2 -4
  429. data/spec/fixtures/unit/provider/package/pkg/solaris11 +2 -12
  430. data/spec/fixtures/unit/provider/package/sun/dummy.server +12 -0
  431. data/spec/fixtures/unit/provider/package/sun/simple +24 -0
  432. data/spec/fixtures/unit/provider/service/smf/svcs.out +3 -0
  433. data/{test/data/types/sshkey/1 → spec/fixtures/unit/provider/sshkey/parsed/sample} +0 -0
  434. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +2 -0
  435. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +2 -0
  436. data/spec/integration/application/apply_spec.rb +1 -1
  437. data/spec/integration/application/doc_spec.rb +3 -2
  438. data/spec/integration/configurer_spec.rb +1 -1
  439. data/spec/integration/defaults_spec.rb +21 -51
  440. data/spec/{unit/face → integration/faces}/ca_spec.rb +89 -130
  441. data/spec/integration/faces/documentation_spec.rb +36 -29
  442. data/spec/integration/file_serving/content_spec.rb +1 -2
  443. data/spec/integration/file_serving/fileset_spec.rb +1 -1
  444. data/spec/integration/file_serving/metadata_spec.rb +1 -2
  445. data/spec/integration/file_serving/terminus_helper_spec.rb +1 -1
  446. data/spec/integration/indirector/catalog/compiler_spec.rb +1 -2
  447. data/spec/integration/indirector/catalog/queue_spec.rb +3 -3
  448. data/spec/integration/indirector/direct_file_server_spec.rb +14 -10
  449. data/spec/integration/indirector/facts/facter_spec.rb +22 -0
  450. data/spec/integration/indirector/file_content/file_server_spec.rb +1 -1
  451. data/spec/integration/indirector/file_metadata/file_server_spec.rb +1 -1
  452. data/spec/integration/indirector/node/ldap_spec.rb +1 -1
  453. data/spec/integration/network/authconfig_spec.rb +238 -0
  454. data/spec/integration/network/formats_spec.rb +2 -4
  455. data/spec/integration/network/server/mongrel_spec.rb +2 -10
  456. data/spec/integration/network/server/webrick_spec.rb +1 -1
  457. data/spec/integration/node/environment_spec.rb +1 -1
  458. data/spec/integration/node/facts_spec.rb +2 -2
  459. data/spec/integration/node_spec.rb +2 -15
  460. data/spec/integration/parser/collector_spec.rb +2 -2
  461. data/spec/integration/parser/compiler_spec.rb +38 -10
  462. data/spec/integration/parser/functions/require_spec.rb +1 -1
  463. data/spec/integration/parser/functions_spec.rb +1 -1
  464. data/spec/integration/parser/parser_spec.rb +1 -1
  465. data/spec/integration/parser/ruby_manifest_spec.rb +1 -1
  466. data/spec/integration/parser/scope_spec.rb +608 -0
  467. data/spec/integration/provider/mailalias/aliases_spec.rb +1 -1
  468. data/spec/integration/provider/mount_spec.rb +1 -0
  469. data/spec/integration/provider/package_spec.rb +3 -3
  470. data/spec/integration/provider/service/init_spec.rb +2 -2
  471. data/spec/integration/provider/ssh_authorized_key_spec.rb +1 -1
  472. data/spec/integration/reference/providers_spec.rb +1 -1
  473. data/spec/integration/reports_spec.rb +1 -1
  474. data/spec/integration/resource/catalog_spec.rb +1 -2
  475. data/spec/integration/resource/type_collection_spec.rb +1 -1
  476. data/spec/integration/ssl/certificate_authority_spec.rb +1 -1
  477. data/spec/integration/ssl/certificate_request_spec.rb +1 -1
  478. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  479. data/spec/integration/ssl/host_spec.rb +1 -1
  480. data/spec/integration/transaction/report_spec.rb +1 -1
  481. data/spec/integration/transaction_spec.rb +2 -2
  482. data/spec/integration/type/exec_spec.rb +1 -1
  483. data/spec/integration/type/file_spec.rb +140 -158
  484. data/spec/integration/type/package_spec.rb +6 -2
  485. data/spec/integration/type/tidy_spec.rb +1 -1
  486. data/spec/integration/type_spec.rb +1 -1
  487. data/spec/integration/util/autoload_spec.rb +8 -14
  488. data/spec/integration/util/feature_spec.rb +1 -1
  489. data/spec/integration/util/rdoc/parser_spec.rb +11 -9
  490. data/spec/integration/util/settings_spec.rb +19 -6
  491. data/spec/integration/util/windows/security_spec.rb +23 -3
  492. data/spec/integration/util_spec.rb +3 -3
  493. data/spec/lib/puppet/indirector/indirector_testing/json.rb +6 -0
  494. data/spec/lib/puppet/indirector_testing.rb +27 -0
  495. data/spec/lib/puppet_spec/compiler.rb +2 -2
  496. data/spec/lib/puppet_spec/database.rb +1 -1
  497. data/spec/lib/puppet_spec/files.rb +4 -4
  498. data/spec/lib/puppet_spec/matchers.rb +26 -24
  499. data/spec/lib/puppet_spec/modules.rb +1 -1
  500. data/spec/lib/puppet_spec/settings.rb +16 -0
  501. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  502. data/spec/shared_behaviours/file_serving.rb +10 -15
  503. data/spec/shared_behaviours/file_serving_model.rb +2 -6
  504. data/spec/shared_contexts/platform.rb +0 -8
  505. data/spec/spec_helper.rb +14 -15
  506. data/spec/unit/agent/disabler_spec.rb +64 -0
  507. data/spec/unit/agent/locker_spec.rb +31 -36
  508. data/spec/unit/agent_spec.rb +79 -26
  509. data/spec/unit/application/agent_spec.rb +66 -39
  510. data/spec/unit/application/apply_spec.rb +46 -36
  511. data/spec/unit/application/cert_spec.rb +1 -5
  512. data/spec/unit/application/certificate_spec.rb +1 -1
  513. data/spec/unit/application/config_spec.rb +1 -1
  514. data/spec/unit/application/describe_spec.rb +1 -5
  515. data/spec/unit/application/device_spec.rb +22 -12
  516. data/spec/unit/application/doc_spec.rb +37 -69
  517. data/spec/unit/application/face_base_spec.rb +10 -6
  518. data/spec/unit/application/facts_spec.rb +3 -3
  519. data/spec/unit/application/filebucket_spec.rb +7 -18
  520. data/spec/unit/application/indirection_base_spec.rb +11 -5
  521. data/spec/unit/application/inspect_spec.rb +3 -2
  522. data/spec/unit/application/kick_spec.rb +6 -22
  523. data/spec/unit/application/master_spec.rb +15 -39
  524. data/spec/unit/application/queue_spec.rb +2 -6
  525. data/spec/unit/application/resource_spec.rb +15 -12
  526. data/spec/unit/application/secret_agent_spec.rb +1 -1
  527. data/spec/unit/application_spec.rb +110 -123
  528. data/spec/unit/configurer/downloader_spec.rb +5 -5
  529. data/spec/unit/configurer/fact_handler_spec.rb +1 -40
  530. data/spec/unit/configurer/plugin_handler_spec.rb +11 -96
  531. data/spec/unit/configurer_spec.rb +61 -59
  532. data/spec/unit/daemon_spec.rb +26 -19
  533. data/spec/unit/data_binding_spec.rb +11 -0
  534. data/spec/unit/dsl/resource_api_spec.rb +2 -2
  535. data/spec/unit/dsl/resource_type_api_spec.rb +1 -1
  536. data/spec/unit/face/catalog_spec.rb +1 -1
  537. data/spec/unit/face/certificate_request_spec.rb +1 -1
  538. data/spec/unit/face/certificate_revocation_list_spec.rb +1 -1
  539. data/spec/unit/face/certificate_spec.rb +18 -1
  540. data/spec/unit/face/config_spec.rb +8 -1
  541. data/spec/unit/face/facts_spec.rb +1 -1
  542. data/spec/unit/face/file_spec.rb +1 -1
  543. data/spec/unit/face/help_spec.rb +39 -22
  544. data/spec/unit/face/instrumentation_data_spec.rb +1 -1
  545. data/spec/unit/face/instrumentation_listener_spec.rb +1 -1
  546. data/spec/unit/face/instrumentation_probe_spec.rb +1 -1
  547. data/spec/unit/face/key_spec.rb +1 -1
  548. data/spec/unit/face/module/build_spec.rb +68 -0
  549. data/spec/unit/face/module/install_spec.rb +46 -31
  550. data/spec/unit/face/module/list_spec.rb +18 -21
  551. data/spec/unit/face/module/search_spec.rb +87 -49
  552. data/spec/unit/face/module/uninstall_spec.rb +4 -4
  553. data/spec/unit/face/node_spec.rb +3 -3
  554. data/spec/unit/face/plugin_spec.rb +1 -1
  555. data/spec/unit/face/report_spec.rb +1 -1
  556. data/spec/unit/face/resource_spec.rb +1 -1
  557. data/spec/unit/face/resource_type_spec.rb +1 -1
  558. data/spec/unit/face/secret_agent_spec.rb +1 -1
  559. data/spec/unit/file_bucket/dipper_spec.rb +1 -1
  560. data/spec/unit/file_bucket/file_spec.rb +1 -1
  561. data/spec/unit/file_serving/base_spec.rb +1 -1
  562. data/spec/unit/file_serving/configuration/parser_spec.rb +1 -1
  563. data/spec/unit/file_serving/configuration_spec.rb +7 -21
  564. data/spec/unit/file_serving/content_spec.rb +1 -1
  565. data/spec/unit/file_serving/fileset_spec.rb +13 -13
  566. data/spec/unit/file_serving/metadata_spec.rb +29 -47
  567. data/spec/unit/file_serving/mount/file_spec.rb +1 -1
  568. data/spec/unit/file_serving/mount/modules_spec.rb +1 -1
  569. data/spec/unit/file_serving/mount/plugins_spec.rb +17 -4
  570. data/spec/unit/file_serving/mount_spec.rb +1 -1
  571. data/spec/unit/file_serving/terminus_helper_spec.rb +1 -1
  572. data/spec/unit/file_serving/terminus_selector_spec.rb +5 -5
  573. data/spec/unit/forge/errors_spec.rb +42 -0
  574. data/spec/unit/forge/repository_spec.rb +108 -31
  575. data/spec/unit/forge_spec.rb +17 -23
  576. data/spec/unit/indirector/active_record_spec.rb +1 -1
  577. data/spec/unit/indirector/catalog/active_record_spec.rb +11 -49
  578. data/spec/unit/indirector/catalog/compiler_spec.rb +18 -45
  579. data/spec/unit/indirector/catalog/json_spec.rb +12 -0
  580. data/spec/unit/indirector/catalog/queue_spec.rb +1 -1
  581. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  582. data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -1
  583. data/spec/unit/indirector/catalog/yaml_spec.rb +1 -1
  584. data/spec/unit/indirector/certificate/ca_spec.rb +5 -6
  585. data/spec/unit/indirector/certificate/file_spec.rb +5 -6
  586. data/spec/unit/indirector/certificate/rest_spec.rb +6 -2
  587. data/spec/unit/indirector/certificate_request/ca_spec.rb +3 -3
  588. data/spec/unit/indirector/certificate_request/file_spec.rb +3 -3
  589. data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -1
  590. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +3 -4
  591. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +4 -3
  592. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +1 -1
  593. data/spec/unit/indirector/certificate_status/file_spec.rb +41 -31
  594. data/spec/unit/indirector/certificate_status/rest_spec.rb +1 -1
  595. data/spec/unit/indirector/code_spec.rb +1 -1
  596. data/spec/unit/indirector/data_binding/hiera_spec.rb +21 -0
  597. data/spec/unit/indirector/data_binding/none_spec.rb +28 -0
  598. data/spec/unit/indirector/direct_file_server_spec.rb +2 -2
  599. data/spec/unit/indirector/envelope_spec.rb +1 -1
  600. data/spec/unit/indirector/exec_spec.rb +1 -1
  601. data/spec/unit/indirector/face_spec.rb +1 -1
  602. data/spec/unit/indirector/facts/active_record_spec.rb +1 -1
  603. data/spec/unit/indirector/facts/couch_spec.rb +3 -3
  604. data/spec/unit/indirector/facts/facter_spec.rb +13 -20
  605. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +2 -2
  606. data/spec/unit/indirector/facts/inventory_service_spec.rb +2 -3
  607. data/spec/unit/indirector/facts/network_device_spec.rb +2 -9
  608. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  609. data/spec/unit/indirector/facts/store_configs_spec.rb +1 -1
  610. data/spec/unit/indirector/facts/yaml_spec.rb +2 -2
  611. data/spec/unit/indirector/file_bucket_file/file_spec.rb +2 -2
  612. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -1
  613. data/spec/unit/indirector/file_content/file_server_spec.rb +1 -1
  614. data/spec/unit/indirector/file_content/file_spec.rb +1 -1
  615. data/spec/unit/indirector/file_content/rest_spec.rb +7 -3
  616. data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -1
  617. data/spec/unit/indirector/file_metadata/file_spec.rb +3 -3
  618. data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -1
  619. data/spec/unit/indirector/file_server_spec.rb +1 -1
  620. data/spec/unit/indirector/hiera_spec.rb +149 -0
  621. data/spec/unit/indirector/indirection_spec.rb +10 -29
  622. data/spec/unit/indirector/instrumentation_data/local_spec.rb +1 -1
  623. data/spec/unit/indirector/instrumentation_data/rest_spec.rb +1 -1
  624. data/spec/unit/indirector/instrumentation_listener/local_spec.rb +1 -1
  625. data/spec/unit/indirector/instrumentation_listener/rest_spec.rb +1 -1
  626. data/spec/unit/indirector/instrumentation_probe/local_spec.rb +1 -1
  627. data/spec/unit/indirector/instrumentation_probe/rest_spec.rb +1 -1
  628. data/spec/unit/indirector/json_spec.rb +193 -0
  629. data/spec/unit/indirector/key/ca_spec.rb +5 -6
  630. data/spec/unit/indirector/key/file_spec.rb +10 -12
  631. data/spec/unit/indirector/ldap_spec.rb +3 -3
  632. data/spec/unit/indirector/memory_spec.rb +1 -1
  633. data/spec/unit/indirector/node/active_record_spec.rb +11 -7
  634. data/spec/unit/indirector/node/exec_spec.rb +12 -5
  635. data/spec/unit/indirector/node/ldap_spec.rb +173 -194
  636. data/spec/unit/indirector/node/memory_spec.rb +1 -1
  637. data/spec/unit/indirector/node/plain_spec.rb +16 -8
  638. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  639. data/spec/unit/indirector/node/store_configs_spec.rb +1 -1
  640. data/spec/unit/indirector/node/yaml_spec.rb +1 -1
  641. data/spec/unit/indirector/none_spec.rb +33 -0
  642. data/spec/unit/indirector/plain_spec.rb +1 -1
  643. data/spec/unit/indirector/queue_spec.rb +1 -1
  644. data/spec/unit/indirector/report/processor_spec.rb +4 -4
  645. data/spec/unit/indirector/report/rest_spec.rb +3 -46
  646. data/spec/unit/indirector/report/yaml_spec.rb +3 -12
  647. data/spec/unit/indirector/request_spec.rb +238 -61
  648. data/spec/unit/indirector/resource/active_record_spec.rb +2 -2
  649. data/spec/unit/indirector/resource/ral_spec.rb +2 -2
  650. data/spec/unit/indirector/resource/rest_spec.rb +1 -1
  651. data/spec/unit/indirector/resource/store_configs_spec.rb +1 -1
  652. data/spec/unit/indirector/resource_type/parser_spec.rb +153 -53
  653. data/spec/unit/indirector/resource_type/rest_spec.rb +1 -1
  654. data/spec/unit/indirector/rest_spec.rb +350 -361
  655. data/spec/unit/indirector/run/local_spec.rb +2 -2
  656. data/spec/unit/indirector/run/rest_spec.rb +1 -1
  657. data/spec/unit/indirector/ssl_file_spec.rb +12 -10
  658. data/spec/unit/indirector/status/rest_spec.rb +1 -1
  659. data/spec/unit/indirector/store_configs_spec.rb +1 -1
  660. data/spec/unit/indirector/terminus_spec.rb +1 -46
  661. data/spec/unit/indirector/yaml_spec.rb +36 -36
  662. data/spec/unit/indirector_spec.rb +1 -1
  663. data/spec/unit/interface/action_builder_spec.rb +1 -1
  664. data/spec/unit/interface/action_manager_spec.rb +1 -1
  665. data/spec/unit/interface/action_spec.rb +1 -1
  666. data/spec/unit/interface/documentation_spec.rb +3 -2
  667. data/spec/unit/interface/face_collection_spec.rb +19 -9
  668. data/spec/unit/interface/option_builder_spec.rb +9 -1
  669. data/spec/unit/interface/option_spec.rb +8 -0
  670. data/spec/unit/interface_spec.rb +49 -11
  671. data/spec/unit/module_spec.rb +95 -303
  672. data/spec/unit/module_tool/application_spec.rb +6 -6
  673. data/spec/unit/module_tool/applications/installer_spec.rb +131 -69
  674. data/spec/unit/module_tool/applications/searcher_spec.rb +37 -0
  675. data/spec/unit/module_tool/applications/uninstaller_spec.rb +27 -19
  676. data/spec/unit/module_tool/applications/unpacker_spec.rb +4 -10
  677. data/spec/unit/module_tool/applications/upgrader_spec.rb +1 -4
  678. data/spec/unit/module_tool/install_directory_spec.rb +70 -0
  679. data/spec/unit/module_tool_spec.rb +132 -1
  680. data/spec/unit/network/auth_config_parser_spec.rb +101 -0
  681. data/spec/unit/network/authconfig_spec.rb +54 -272
  682. data/spec/unit/network/authorization_spec.rb +20 -0
  683. data/spec/unit/network/authstore_spec.rb +17 -15
  684. data/spec/unit/network/format_handler_spec.rb +3 -3
  685. data/spec/unit/network/format_spec.rb +1 -1
  686. data/spec/unit/network/formats_spec.rb +28 -37
  687. data/spec/unit/network/http/api/v1_spec.rb +3 -3
  688. data/spec/unit/network/http/compression_spec.rb +3 -3
  689. data/spec/unit/network/http/connection_spec.rb +244 -0
  690. data/spec/unit/network/http/handler_spec.rb +4 -20
  691. data/spec/unit/network/http/mongrel/rest_spec.rb +12 -31
  692. data/spec/unit/network/http/mongrel_spec.rb +7 -37
  693. data/spec/unit/network/http/rack/rest_spec.rb +10 -44
  694. data/spec/unit/network/http/rack_spec.rb +2 -59
  695. data/spec/unit/network/http/webrick/rest_spec.rb +14 -4
  696. data/spec/unit/network/http/webrick_spec.rb +129 -193
  697. data/spec/unit/network/http_pool_spec.rb +6 -115
  698. data/spec/unit/network/http_spec.rb +1 -1
  699. data/spec/unit/network/resolver_spec.rb +207 -0
  700. data/spec/unit/network/rights_spec.rb +15 -115
  701. data/spec/unit/network/server_spec.rb +58 -166
  702. data/spec/unit/node/environment_spec.rb +7 -7
  703. data/spec/unit/node/facts_spec.rb +15 -30
  704. data/spec/unit/node_spec.rb +14 -26
  705. data/spec/unit/other/selinux_spec.rb +1 -1
  706. data/spec/unit/parameter/package_options_spec.rb +44 -0
  707. data/spec/unit/parameter/path_spec.rb +1 -1
  708. data/spec/unit/parameter/value_collection_spec.rb +1 -1
  709. data/spec/unit/parameter/value_spec.rb +1 -1
  710. data/spec/unit/parameter_spec.rb +1 -1
  711. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +4 -2
  712. data/spec/unit/parser/ast/astarray_spec.rb +4 -2
  713. data/spec/unit/parser/ast/asthash_spec.rb +4 -2
  714. data/spec/unit/parser/ast/boolean_operator_spec.rb +4 -2
  715. data/spec/unit/parser/ast/casestatement_spec.rb +9 -5
  716. data/spec/unit/parser/ast/collection_spec.rb +2 -2
  717. data/spec/unit/parser/ast/collexpr_spec.rb +4 -2
  718. data/spec/unit/parser/ast/comparison_operator_spec.rb +5 -2
  719. data/spec/unit/parser/ast/definition_spec.rb +1 -1
  720. data/spec/unit/parser/ast/function_spec.rb +3 -3
  721. data/spec/unit/parser/ast/hostclass_spec.rb +1 -1
  722. data/spec/unit/parser/ast/ifstatement_spec.rb +4 -2
  723. data/spec/unit/parser/ast/in_operator_spec.rb +4 -2
  724. data/spec/unit/parser/ast/leaf_spec.rb +66 -39
  725. data/spec/unit/parser/ast/match_operator_spec.rb +4 -2
  726. data/spec/unit/parser/ast/minus_spec.rb +4 -2
  727. data/spec/unit/parser/ast/node_spec.rb +1 -1
  728. data/spec/unit/parser/ast/nop_spec.rb +1 -1
  729. data/spec/unit/parser/ast/not_spec.rb +4 -2
  730. data/spec/unit/parser/ast/relationship_spec.rb +2 -2
  731. data/spec/unit/parser/ast/resource_defaults_spec.rb +2 -2
  732. data/spec/unit/parser/ast/resource_override_spec.rb +2 -2
  733. data/spec/unit/parser/ast/resource_reference_spec.rb +5 -3
  734. data/spec/unit/parser/ast/resource_spec.rb +5 -32
  735. data/spec/unit/parser/ast/selector_spec.rb +56 -106
  736. data/spec/unit/parser/ast/vardef_spec.rb +4 -2
  737. data/spec/unit/parser/ast_spec.rb +22 -51
  738. data/spec/unit/parser/collector_spec.rb +2 -2
  739. data/spec/unit/parser/compiler_spec.rb +89 -42
  740. data/spec/unit/parser/files_spec.rb +81 -10
  741. data/spec/unit/parser/functions/create_resources_spec.rb +5 -4
  742. data/spec/unit/parser/functions/defined_spec.rb +2 -2
  743. data/spec/unit/parser/functions/extlookup_spec.rb +9 -8
  744. data/spec/unit/parser/functions/fail_spec.rb +28 -0
  745. data/spec/unit/parser/functions/file_spec.rb +55 -0
  746. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -12
  747. data/spec/unit/parser/functions/generate_spec.rb +54 -3
  748. data/spec/unit/parser/functions/include_spec.rb +19 -2
  749. data/spec/unit/parser/functions/inline_template_spec.rb +9 -20
  750. data/spec/unit/parser/functions/realize_spec.rb +4 -4
  751. data/spec/unit/parser/functions/regsubst_spec.rb +4 -2
  752. data/spec/unit/parser/functions/require_spec.rb +5 -14
  753. data/spec/unit/parser/functions/search_spec.rb +23 -0
  754. data/spec/unit/parser/functions/shellquote_spec.rb +31 -38
  755. data/spec/unit/parser/functions/split_spec.rb +4 -2
  756. data/spec/unit/parser/functions/sprintf_spec.rb +4 -2
  757. data/spec/unit/parser/functions/tag_spec.rb +4 -3
  758. data/spec/unit/parser/functions/template_spec.rb +45 -27
  759. data/spec/unit/parser/functions/versioncmp_spec.rb +4 -2
  760. data/spec/unit/parser/functions_spec.rb +14 -22
  761. data/spec/unit/parser/lexer_spec.rb +10 -134
  762. data/spec/unit/parser/parser_spec.rb +126 -35
  763. data/spec/unit/parser/relationship_spec.rb +1 -25
  764. data/spec/unit/parser/resource_spec.rb +15 -79
  765. data/spec/unit/parser/scope_spec.rb +175 -602
  766. data/spec/unit/parser/templatewrapper_spec.rb +8 -25
  767. data/spec/unit/parser/type_loader_spec.rb +37 -21
  768. data/spec/unit/property/ensure_spec.rb +1 -1
  769. data/spec/unit/property/keyvalue_spec.rb +1 -1
  770. data/spec/unit/property/list_spec.rb +1 -1
  771. data/spec/unit/property/ordered_list_spec.rb +1 -1
  772. data/spec/unit/property_spec.rb +1 -1
  773. data/spec/unit/{puppet/provider → provider}/README.markdown +0 -0
  774. data/spec/unit/provider/augeas/augeas_spec.rb +88 -1
  775. data/spec/unit/provider/cisco_spec.rb +1 -1
  776. data/spec/unit/provider/command_spec.rb +62 -0
  777. data/spec/unit/provider/confine/exists_spec.rb +8 -1
  778. data/spec/unit/provider/confine/false_spec.rb +1 -1
  779. data/spec/unit/provider/confine/feature_spec.rb +1 -1
  780. data/spec/unit/provider/confine/true_spec.rb +1 -1
  781. data/spec/unit/provider/confine/variable_spec.rb +1 -1
  782. data/spec/unit/provider/confine_collection_spec.rb +1 -1
  783. data/spec/unit/provider/confine_spec.rb +1 -1
  784. data/spec/unit/provider/confiner_spec.rb +1 -1
  785. data/spec/unit/provider/cron/crontab_spec.rb +116 -0
  786. data/spec/unit/provider/exec/posix_spec.rb +99 -12
  787. data/spec/unit/provider/exec/shell_spec.rb +1 -1
  788. data/spec/unit/provider/exec/windows_spec.rb +1 -1
  789. data/spec/unit/provider/exec_spec.rb +1 -1
  790. data/spec/unit/provider/file/posix_spec.rb +1 -1
  791. data/spec/unit/provider/file/windows_spec.rb +30 -30
  792. data/spec/unit/provider/group/groupadd_spec.rb +31 -37
  793. data/spec/unit/provider/group/ldap_spec.rb +1 -1
  794. data/spec/unit/provider/group/pw_spec.rb +1 -1
  795. data/spec/unit/provider/group/windows_adsi_spec.rb +2 -2
  796. data/spec/unit/provider/host/parsed_spec.rb +1 -1
  797. data/spec/unit/provider/interface/cisco_spec.rb +1 -1
  798. data/spec/unit/provider/ldap_spec.rb +1 -1
  799. data/spec/unit/provider/macauthorization_spec.rb +1 -1
  800. data/spec/unit/provider/mcx/mcxcontent_spec.rb +1 -1
  801. data/spec/unit/provider/mount/parsed_spec.rb +18 -12
  802. data/spec/unit/provider/mount_spec.rb +1 -1
  803. data/spec/unit/provider/naginator_spec.rb +1 -1
  804. data/spec/unit/provider/nameservice/directoryservice_spec.rb +9 -29
  805. data/spec/unit/provider/network_device_spec.rb +1 -1
  806. data/spec/unit/provider/package/aix_spec.rb +1 -1
  807. data/spec/unit/provider/package/appdmg_spec.rb +1 -1
  808. data/spec/unit/provider/package/apt_spec.rb +1 -1
  809. data/spec/unit/provider/package/aptitude_spec.rb +38 -0
  810. data/spec/unit/provider/package/aptrpm_spec.rb +39 -0
  811. data/spec/unit/provider/package/dpkg_spec.rb +4 -4
  812. data/spec/unit/provider/package/freebsd_spec.rb +3 -3
  813. data/spec/unit/provider/package/gem_spec.rb +1 -1
  814. data/spec/unit/provider/package/hpux_spec.rb +1 -1
  815. data/spec/unit/provider/package/macports_spec.rb +27 -10
  816. data/spec/unit/provider/package/msi_spec.rb +29 -14
  817. data/spec/unit/provider/package/nim_spec.rb +1 -1
  818. data/spec/unit/provider/package/openbsd_spec.rb +3 -3
  819. data/spec/unit/provider/package/pacman_spec.rb +109 -81
  820. data/spec/unit/provider/package/pip_spec.rb +1 -1
  821. data/spec/unit/provider/package/pkg_spec.rb +205 -97
  822. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  823. data/spec/unit/provider/package/pkgin_spec.rb +176 -0
  824. data/spec/unit/provider/package/pkgutil_spec.rb +64 -10
  825. data/spec/unit/provider/package/rpm_spec.rb +58 -0
  826. data/spec/unit/provider/package/sun_spec.rb +122 -0
  827. data/spec/unit/provider/package/up2date_spec.rb +24 -0
  828. data/spec/unit/provider/package/windows/exe_package_spec.rb +99 -0
  829. data/spec/unit/provider/package/windows/msi_package_spec.rb +115 -0
  830. data/spec/unit/provider/package/windows/package_spec.rb +126 -0
  831. data/spec/unit/provider/package/windows_spec.rb +255 -0
  832. data/spec/unit/provider/package/yum_spec.rb +1 -1
  833. data/spec/unit/provider/package/zypper_spec.rb +1 -1
  834. data/spec/unit/provider/parsedfile_spec.rb +1 -1
  835. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +12 -15
  836. data/spec/unit/provider/selboolean_spec.rb +1 -1
  837. data/spec/unit/provider/selmodule-example.pp +0 -0
  838. data/spec/unit/provider/selmodule_spec.rb +1 -1
  839. data/spec/unit/provider/service/base_spec.rb +77 -0
  840. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  841. data/spec/unit/provider/service/debian_spec.rb +1 -1
  842. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  843. data/spec/unit/provider/service/gentoo_spec.rb +1 -1
  844. data/spec/unit/provider/service/init_spec.rb +1 -1
  845. data/spec/unit/provider/service/launchd_spec.rb +0 -17
  846. data/spec/unit/provider/service/redhat_spec.rb +12 -3
  847. data/spec/unit/provider/service/runit_spec.rb +2 -1
  848. data/spec/unit/provider/service/smf_spec.rb +16 -1
  849. data/spec/unit/provider/service/src_spec.rb +6 -6
  850. data/spec/unit/provider/service/systemd_spec.rb +18 -1
  851. data/spec/unit/provider/service/upstart_spec.rb +12 -7
  852. data/spec/unit/provider/service/windows_spec.rb +1 -1
  853. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +1 -1
  854. data/spec/unit/provider/sshkey/parsed_spec.rb +42 -12
  855. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  856. data/spec/unit/provider/user/ldap_spec.rb +9 -23
  857. data/spec/unit/provider/user/pw_spec.rb +1 -1
  858. data/spec/unit/provider/user/user_role_add_spec.rb +5 -2
  859. data/spec/unit/provider/user/useradd_spec.rb +118 -146
  860. data/spec/unit/provider/user/windows_adsi_spec.rb +2 -24
  861. data/spec/unit/provider/vlan/cisco_spec.rb +1 -1
  862. data/spec/unit/provider/zfs/zfs_spec.rb +106 -0
  863. data/spec/unit/provider/zone/solaris_spec.rb +56 -34
  864. data/spec/unit/provider/zpool/zpool_spec.rb +213 -0
  865. data/spec/unit/provider_spec.rb +621 -16
  866. data/spec/unit/puppet_spec.rb +21 -9
  867. data/spec/unit/rails/host_spec.rb +1 -1
  868. data/spec/unit/rails/param_value_spec.rb +1 -1
  869. data/spec/unit/rails/resource_spec.rb +1 -1
  870. data/spec/unit/rails_spec.rb +70 -70
  871. data/spec/unit/relationship_spec.rb +1 -1
  872. data/spec/unit/reports/http_spec.rb +48 -15
  873. data/spec/unit/reports/rrdgraph_spec.rb +1 -1
  874. data/spec/unit/reports/store_spec.rb +1 -1
  875. data/spec/unit/reports/tagmail_spec.rb +1 -1
  876. data/spec/unit/reports_spec.rb +1 -1
  877. data/spec/unit/resource/catalog_spec.rb +8 -175
  878. data/spec/unit/resource/status_spec.rb +2 -2
  879. data/spec/unit/resource/type_collection_helper_spec.rb +1 -1
  880. data/spec/unit/resource/type_collection_spec.rb +72 -45
  881. data/spec/unit/resource/type_spec.rb +31 -33
  882. data/spec/unit/resource_spec.rb +163 -98
  883. data/spec/unit/run_spec.rb +7 -23
  884. data/spec/unit/settings/directory_setting_spec.rb +32 -0
  885. data/spec/unit/{util/settings → settings}/file_setting_spec.rb +14 -23
  886. data/spec/unit/settings/path_setting_spec.rb +30 -0
  887. data/spec/unit/settings/string_setting_spec.rb +75 -0
  888. data/spec/unit/settings_spec.rb +1583 -0
  889. data/spec/unit/simple_graph_spec.rb +19 -5
  890. data/spec/unit/ssl/base_spec.rb +2 -2
  891. data/spec/unit/ssl/certificate_authority/interface_spec.rb +7 -7
  892. data/spec/unit/ssl/certificate_authority_spec.rb +27 -53
  893. data/spec/unit/ssl/certificate_factory_spec.rb +1 -1
  894. data/spec/unit/ssl/certificate_request_spec.rb +2 -4
  895. data/spec/unit/ssl/certificate_revocation_list_spec.rb +3 -3
  896. data/spec/unit/ssl/certificate_spec.rb +1 -1
  897. data/spec/unit/ssl/configuration_spec.rb +60 -0
  898. data/spec/unit/ssl/host_spec.rb +37 -89
  899. data/spec/unit/ssl/inventory_spec.rb +13 -20
  900. data/spec/unit/ssl/key_spec.rb +11 -9
  901. data/spec/unit/status_spec.rb +1 -7
  902. data/spec/unit/transaction/event_manager_spec.rb +1 -1
  903. data/spec/unit/transaction/event_spec.rb +6 -6
  904. data/spec/unit/transaction/report_spec.rb +1 -1
  905. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  906. data/spec/unit/transaction_spec.rb +8 -8
  907. data/spec/unit/{puppet/type → type}/README.markdown +0 -0
  908. data/spec/unit/type/augeas_spec.rb +2 -2
  909. data/spec/unit/type/component_spec.rb +1 -1
  910. data/spec/unit/type/computer_spec.rb +1 -1
  911. data/spec/unit/type/cron_spec.rb +1 -1
  912. data/spec/unit/type/exec_spec.rb +40 -12
  913. data/spec/unit/type/file/checksum_spec.rb +1 -1
  914. data/spec/unit/type/file/content_spec.rb +9 -6
  915. data/spec/unit/type/file/ctime_spec.rb +1 -1
  916. data/spec/unit/type/file/ensure_spec.rb +1 -1
  917. data/spec/unit/type/file/group_spec.rb +1 -1
  918. data/spec/unit/type/file/mode_spec.rb +1 -1
  919. data/spec/unit/type/file/mtime_spec.rb +1 -1
  920. data/spec/unit/type/file/owner_spec.rb +1 -1
  921. data/spec/unit/type/file/selinux_spec.rb +1 -1
  922. data/spec/unit/type/file/source_spec.rb +14 -13
  923. data/spec/unit/type/file/type_spec.rb +1 -1
  924. data/spec/unit/type/file_spec.rb +39 -87
  925. data/spec/unit/type/filebucket_spec.rb +1 -1
  926. data/spec/unit/type/group_spec.rb +5 -5
  927. data/spec/unit/type/host_spec.rb +1 -1
  928. data/spec/unit/type/interface_spec.rb +1 -1
  929. data/spec/unit/type/macauthorization_spec.rb +1 -1
  930. data/spec/unit/type/mailalias_spec.rb +21 -0
  931. data/spec/unit/type/maillist_spec.rb +1 -1
  932. data/spec/unit/type/mcx_spec.rb +1 -1
  933. data/spec/unit/type/mount_spec.rb +2 -2
  934. data/spec/unit/type/nagios_spec.rb +1 -1
  935. data/spec/unit/type/noop_metaparam_spec.rb +3 -3
  936. data/spec/unit/type/package_spec.rb +1 -1
  937. data/spec/unit/type/resources_spec.rb +2 -2
  938. data/spec/unit/type/schedule_spec.rb +297 -39
  939. data/spec/unit/type/scheduled_task_spec.rb +3 -3
  940. data/spec/unit/type/selboolean_spec.rb +1 -1
  941. data/spec/unit/type/selmodule_spec.rb +1 -1
  942. data/spec/unit/type/service_spec.rb +1 -1
  943. data/spec/unit/type/ssh_authorized_key_spec.rb +3 -3
  944. data/spec/unit/type/sshkey_spec.rb +1 -1
  945. data/spec/unit/type/stage_spec.rb +1 -1
  946. data/spec/unit/type/tidy_spec.rb +1 -1
  947. data/spec/unit/type/user_spec.rb +1 -1
  948. data/spec/unit/type/vlan_spec.rb +1 -1
  949. data/spec/unit/type/whit_spec.rb +1 -1
  950. data/spec/unit/type/yumrepo_spec.rb +243 -0
  951. data/spec/unit/type/zfs_spec.rb +8 -6
  952. data/spec/unit/type/zone_spec.rb +41 -36
  953. data/spec/unit/type/zpool_spec.rb +1 -1
  954. data/spec/unit/type_spec.rb +180 -31
  955. data/spec/unit/util/adsi_spec.rb +8 -23
  956. data/spec/unit/util/autoload_spec.rb +181 -45
  957. data/spec/unit/util/backups_spec.rb +1 -1
  958. data/spec/unit/util/cache_accumulator_spec.rb +1 -1
  959. data/spec/unit/util/cacher_spec.rb +1 -1
  960. data/spec/unit/util/checksums_spec.rb +1 -1
  961. data/spec/unit/util/command_line_spec.rb +114 -108
  962. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +129 -0
  963. data/spec/unit/util/config_timeout_spec.rb +57 -0
  964. data/spec/unit/util/constant_inflector_spec.rb +13 -23
  965. data/spec/unit/util/diff_spec.rb +5 -4
  966. data/spec/unit/util/errors_spec.rb +1 -1
  967. data/spec/unit/util/execution_spec.rb +532 -28
  968. data/spec/unit/util/execution_stub_spec.rb +4 -4
  969. data/spec/unit/util/feature_spec.rb +12 -13
  970. data/spec/unit/util/filetype_spec.rb +9 -9
  971. data/spec/unit/util/inline_docs_spec.rb +1 -1
  972. data/spec/unit/util/instrumentation/data_spec.rb +1 -1
  973. data/spec/unit/util/instrumentation/indirection_probe_spec.rb +1 -1
  974. data/spec/unit/util/instrumentation/instrumentable_spec.rb +1 -1
  975. data/spec/unit/util/instrumentation/listener_spec.rb +1 -1
  976. data/spec/unit/util/instrumentation_spec.rb +1 -1
  977. data/spec/unit/util/json_lockfile_spec.rb +29 -0
  978. data/spec/unit/util/ldap/connection_spec.rb +11 -15
  979. data/spec/unit/util/ldap/generator_spec.rb +1 -1
  980. data/spec/unit/util/ldap/manager_spec.rb +14 -23
  981. data/spec/unit/util/loadedfile_spec.rb +1 -1
  982. data/spec/unit/util/lockfile_spec.rb +76 -0
  983. data/spec/unit/util/log/destinations_spec.rb +11 -28
  984. data/spec/unit/util/log_spec.rb +6 -6
  985. data/spec/unit/util/logging_spec.rb +43 -11
  986. data/spec/unit/util/metric_spec.rb +4 -3
  987. data/spec/unit/util/monkey_patches/lines_spec.rb +83 -0
  988. data/spec/unit/util/monkey_patches_spec.rb +91 -28
  989. data/spec/unit/util/nagios_maker_spec.rb +1 -1
  990. data/spec/unit/util/network_device/cisco/device_spec.rb +3 -3
  991. data/spec/unit/util/network_device/cisco/facts_spec.rb +1 -1
  992. data/spec/unit/util/network_device/cisco/interface_spec.rb +1 -1
  993. data/spec/unit/util/network_device/config_spec.rb +1 -1
  994. data/spec/unit/util/network_device/ipcalc_spec.rb +1 -1
  995. data/spec/unit/util/network_device/transport/base_spec.rb +1 -1
  996. data/spec/unit/util/network_device/transport/ssh_spec.rb +2 -2
  997. data/spec/unit/util/network_device/transport/telnet_spec.rb +1 -1
  998. data/spec/unit/util/network_device_spec.rb +1 -1
  999. data/spec/unit/util/package_spec.rb +1 -1
  1000. data/spec/unit/util/pidlock_spec.rb +179 -0
  1001. data/spec/unit/util/posix_spec.rb +2 -2
  1002. data/spec/unit/util/pson_spec.rb +23 -9
  1003. data/spec/unit/util/queue/stomp_spec.rb +10 -13
  1004. data/spec/unit/util/queue_spec.rb +2 -2
  1005. data/spec/unit/util/rdoc/parser_spec.rb +11 -9
  1006. data/spec/unit/util/rdoc_spec.rb +9 -3
  1007. data/spec/unit/util/reference_serializer_spec.rb +1 -1
  1008. data/spec/unit/util/reference_spec.rb +1 -1
  1009. data/spec/unit/util/resource_template_spec.rb +1 -1
  1010. data/spec/unit/util/retryaction_spec.rb +1 -1
  1011. data/spec/unit/util/rubygems_spec.rb +66 -0
  1012. data/spec/unit/util/run_mode_spec.rb +4 -9
  1013. data/spec/unit/util/selinux_spec.rb +33 -25
  1014. data/spec/unit/util/storage_spec.rb +2 -18
  1015. data/spec/unit/util/suidmanager_spec.rb +11 -4
  1016. data/spec/unit/util/symbolic_file_mode_spec.rb +1 -1
  1017. data/spec/unit/util/tagging_spec.rb +1 -1
  1018. data/spec/unit/util/terminal_spec.rb +1 -1
  1019. data/spec/unit/util/user_attr_spec.rb +1 -1
  1020. data/spec/unit/util/warnings_spec.rb +1 -1
  1021. data/spec/unit/util/windows/registry_spec.rb +86 -0
  1022. data/spec/unit/util/zaml_spec.rb +30 -146
  1023. data/spec/unit/util_spec.rb +148 -440
  1024. data/spec/watchr.rb +6 -2
  1025. data/tasks/rake/apple.rake +176 -0
  1026. data/tasks/rake/gem.rake +6 -5
  1027. data/tasks/rake/manpages.rake +8 -1
  1028. data/tasks/rake/metrics.rake +11 -3
  1029. data/tasks/rake/parser.rake +5 -0
  1030. data/{ext/osx → tasks/rake/templates}/prototype.plist.erb +0 -0
  1031. metadata +293 -580
  1032. data/bin/filebucket +0 -7
  1033. data/bin/pi +0 -5
  1034. data/bin/puppetca +0 -4
  1035. data/bin/puppetd +0 -4
  1036. data/bin/puppetdoc +0 -4
  1037. data/bin/puppetmasterd +0 -4
  1038. data/bin/puppetqd +0 -4
  1039. data/bin/puppetrun +0 -5
  1040. data/bin/ralsh +0 -4
  1041. data/ext/build_defaults.yaml +0 -19
  1042. data/ext/debian/README.Debian +0 -8
  1043. data/ext/debian/README.source +0 -2
  1044. data/ext/debian/TODO.Debian +0 -1
  1045. data/ext/debian/changelog.erb +0 -1104
  1046. data/ext/debian/compat +0 -1
  1047. data/ext/debian/control +0 -142
  1048. data/ext/debian/copyright +0 -361
  1049. data/ext/debian/docs +0 -1
  1050. data/ext/debian/fileserver.conf +0 -17
  1051. data/ext/debian/puppet-common.dirs +0 -8
  1052. data/ext/debian/puppet-common.install +0 -3
  1053. data/ext/debian/puppet-common.lintian-overrides +0 -7
  1054. data/ext/debian/puppet-common.manpages +0 -2
  1055. data/ext/debian/puppet-common.postinst +0 -35
  1056. data/ext/debian/puppet-common.postrm +0 -32
  1057. data/ext/debian/puppet-el.dirs +0 -1
  1058. data/ext/debian/puppet-el.emacsen-install +0 -25
  1059. data/ext/debian/puppet-el.emacsen-remove +0 -11
  1060. data/ext/debian/puppet-el.emacsen-startup +0 -9
  1061. data/ext/debian/puppet-el.install +0 -1
  1062. data/ext/debian/puppet-testsuite.install +0 -3
  1063. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  1064. data/ext/debian/puppet.NEWS +0 -86
  1065. data/ext/debian/puppet.conf +0 -14
  1066. data/ext/debian/puppet.default +0 -7
  1067. data/ext/debian/puppet.dirs +0 -1
  1068. data/ext/debian/puppet.init +0 -118
  1069. data/ext/debian/puppet.install +0 -4
  1070. data/ext/debian/puppet.lintian-overrides +0 -3
  1071. data/ext/debian/puppet.logrotate +0 -11
  1072. data/ext/debian/puppet.manpages +0 -36
  1073. data/ext/debian/puppet.postinst +0 -20
  1074. data/ext/debian/puppet.postrm +0 -20
  1075. data/ext/debian/puppet.preinst +0 -20
  1076. data/ext/debian/puppetmaster-common.install +0 -5
  1077. data/ext/debian/puppetmaster-common.manpages +0 -5
  1078. data/ext/debian/puppetmaster-common.puppetqd.default +0 -27
  1079. data/ext/debian/puppetmaster-common.puppetqd.init +0 -84
  1080. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  1081. data/ext/debian/puppetmaster-passenger.postinst +0 -66
  1082. data/ext/debian/puppetmaster-passenger.postrm +0 -33
  1083. data/ext/debian/puppetmaster.NEWS +0 -13
  1084. data/ext/debian/puppetmaster.README.debian +0 -16
  1085. data/ext/debian/puppetmaster.default +0 -38
  1086. data/ext/debian/puppetmaster.dirs +0 -1
  1087. data/ext/debian/puppetmaster.init +0 -158
  1088. data/ext/debian/puppetmaster.install +0 -1
  1089. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  1090. data/ext/debian/puppetmaster.manpages +0 -1
  1091. data/ext/debian/puppetmaster.postinst +0 -20
  1092. data/ext/debian/puppetmaster.postrm +0 -5
  1093. data/ext/debian/puppetmaster.preinst +0 -22
  1094. data/ext/debian/rules +0 -127
  1095. data/ext/debian/source/format +0 -1
  1096. data/ext/debian/source/options +0 -1
  1097. data/ext/debian/vim-puppet.README.Debian +0 -13
  1098. data/ext/debian/vim-puppet.dirs +0 -3
  1099. data/ext/debian/vim-puppet.yaml +0 -5
  1100. data/ext/debian/watch +0 -2
  1101. data/ext/osx/file_mapping.yaml +0 -38
  1102. data/ext/osx/preflight.erb +0 -37
  1103. data/ext/packaging/Gemfile +0 -8
  1104. data/ext/packaging/Gemfile.lock +0 -28
  1105. data/ext/packaging/LICENSE +0 -17
  1106. data/ext/packaging/README-Solaris.md +0 -117
  1107. data/ext/packaging/README.md +0 -1074
  1108. data/ext/packaging/lib/packaging.rb +0 -21
  1109. data/ext/packaging/lib/packaging/config.rb +0 -277
  1110. data/ext/packaging/lib/packaging/config/params.rb +0 -175
  1111. data/ext/packaging/lib/packaging/tar.rb +0 -186
  1112. data/ext/packaging/lib/packaging/util.rb +0 -44
  1113. data/ext/packaging/lib/packaging/util/date.rb +0 -15
  1114. data/ext/packaging/lib/packaging/util/file.rb +0 -60
  1115. data/ext/packaging/lib/packaging/util/jira.rb +0 -83
  1116. data/ext/packaging/lib/packaging/util/net.rb +0 -16
  1117. data/ext/packaging/lib/packaging/util/rake_utils.rb +0 -57
  1118. data/ext/packaging/lib/packaging/util/serialization.rb +0 -19
  1119. data/ext/packaging/lib/packaging/util/tool.rb +0 -30
  1120. data/ext/packaging/lib/packaging/util/version.rb +0 -300
  1121. data/ext/packaging/packaging.rake +0 -50
  1122. data/ext/packaging/spec/fixtures/config/ext/build_defaults.yaml +0 -2
  1123. data/ext/packaging/spec/fixtures/config/ext/project_data.yaml +0 -2
  1124. data/ext/packaging/spec/fixtures/config/params.yaml +0 -2
  1125. data/ext/packaging/spec/fixtures/util/pre_tasks.yaml +0 -4
  1126. data/ext/packaging/spec/lib/packaging/config_spec.rb +0 -330
  1127. data/ext/packaging/spec/lib/packaging/tar_spec.rb +0 -122
  1128. data/ext/packaging/spec/lib/packaging/util/file_spec.rb +0 -48
  1129. data/ext/packaging/spec/lib/packaging/util/jira_spec.rb +0 -50
  1130. data/ext/packaging/spec/lib/packaging/util/net_spec.rb +0 -23
  1131. data/ext/packaging/spec/lib/packaging/util/rake_utils_spec.rb +0 -70
  1132. data/ext/packaging/spec/lib/packaging/util/version_spec.rb +0 -67
  1133. data/ext/packaging/spec/lib/packaging_spec.rb +0 -19
  1134. data/ext/packaging/spec/spec_helper.rb +0 -22
  1135. data/ext/packaging/spec/tasks/00_utils_spec.rb +0 -248
  1136. data/ext/packaging/static_artifacts/PackageInfo.plist +0 -3
  1137. data/ext/packaging/tasks/00_utils.rake +0 -402
  1138. data/ext/packaging/tasks/30_metrics.rake +0 -33
  1139. data/ext/packaging/tasks/apple.rake +0 -267
  1140. data/ext/packaging/tasks/build.rake +0 -12
  1141. data/ext/packaging/tasks/clean.rake +0 -5
  1142. data/ext/packaging/tasks/deb.rake +0 -127
  1143. data/ext/packaging/tasks/deb_repos.rake +0 -128
  1144. data/ext/packaging/tasks/doc.rake +0 -20
  1145. data/ext/packaging/tasks/fetch.rake +0 -58
  1146. data/ext/packaging/tasks/gem.rake +0 -158
  1147. data/ext/packaging/tasks/ips.rake +0 -122
  1148. data/ext/packaging/tasks/jenkins.rake +0 -360
  1149. data/ext/packaging/tasks/jenkins_dynamic.rake +0 -123
  1150. data/ext/packaging/tasks/load_extras.rake +0 -21
  1151. data/ext/packaging/tasks/mock.rake +0 -290
  1152. data/ext/packaging/tasks/pe_deb.rake +0 -12
  1153. data/ext/packaging/tasks/pe_remote.rake +0 -41
  1154. data/ext/packaging/tasks/pe_rpm.rake +0 -13
  1155. data/ext/packaging/tasks/pe_ship.rake +0 -179
  1156. data/ext/packaging/tasks/pe_sign.rake +0 -47
  1157. data/ext/packaging/tasks/pe_tar.rake +0 -5
  1158. data/ext/packaging/tasks/release.rake +0 -91
  1159. data/ext/packaging/tasks/remote_build.rake +0 -158
  1160. data/ext/packaging/tasks/retrieve.rake +0 -45
  1161. data/ext/packaging/tasks/rpm.rake +0 -71
  1162. data/ext/packaging/tasks/rpm_repos.rake +0 -139
  1163. data/ext/packaging/tasks/ship.rake +0 -192
  1164. data/ext/packaging/tasks/sign.rake +0 -164
  1165. data/ext/packaging/tasks/tag.rake +0 -8
  1166. data/ext/packaging/tasks/tar.rake +0 -34
  1167. data/ext/packaging/tasks/tickets.rake +0 -449
  1168. data/ext/packaging/tasks/update.rake +0 -16
  1169. data/ext/packaging/tasks/vendor_gems.rake +0 -110
  1170. data/ext/packaging/tasks/version.rake +0 -33
  1171. data/ext/packaging/tasks/z_data_dump.rake +0 -65
  1172. data/ext/packaging/templates/README +0 -1
  1173. data/ext/packaging/templates/downstream.xml.erb +0 -45
  1174. data/ext/packaging/templates/packaging.xml.erb +0 -330
  1175. data/ext/packaging/templates/repo.xml.erb +0 -106
  1176. data/ext/project_data.yaml +0 -24
  1177. data/lib/puppet/file_system.rb +0 -3
  1178. data/lib/puppet/file_system/path_pattern.rb +0 -97
  1179. data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
  1180. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
  1181. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
  1182. data/lib/puppet/indirector/errors.rb +0 -5
  1183. data/lib/puppet/indirector/inventory/yaml.rb +0 -81
  1184. data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
  1185. data/lib/puppet/indirector/resource/validator.rb +0 -8
  1186. data/lib/puppet/network/handler.rb +0 -50
  1187. data/lib/puppet/network/handler/ca.rb +0 -61
  1188. data/lib/puppet/network/handler/filebucket.rb +0 -53
  1189. data/lib/puppet/network/handler/fileserver.rb +0 -732
  1190. data/lib/puppet/network/handler/master.rb +0 -87
  1191. data/lib/puppet/network/handler/report.rb +0 -82
  1192. data/lib/puppet/network/handler/runner.rb +0 -33
  1193. data/lib/puppet/network/handler/status.rb +0 -18
  1194. data/lib/puppet/network/http/rack/xmlrpc.rb +0 -65
  1195. data/lib/puppet/network/http_server.rb +0 -3
  1196. data/lib/puppet/network/http_server/mongrel.rb +0 -129
  1197. data/lib/puppet/network/rest_authconfig.rb +0 -102
  1198. data/lib/puppet/network/rest_authorization.rb +0 -23
  1199. data/lib/puppet/network/xmlrpc/processor.rb +0 -86
  1200. data/lib/puppet/network/xmlrpc/server.rb +0 -19
  1201. data/lib/puppet/network/xmlrpc/webrick_servlet.rb +0 -114
  1202. data/lib/puppet/node/inventory.rb +0 -7
  1203. data/lib/puppet/reference/network.rb +0 -39
  1204. data/lib/puppet/transportable.rb +0 -248
  1205. data/lib/puppet/util/autoload/file_cache.rb +0 -92
  1206. data/lib/puppet/util/file_locking.rb +0 -47
  1207. data/lib/puppet/util/settings.rb +0 -926
  1208. data/lib/puppet/util/settings/setting.rb +0 -94
  1209. data/lib/puppet/util/windows/sid.rb +0 -96
  1210. data/lib/puppet/vendor.rb +0 -55
  1211. data/lib/puppet/vendor/load_safe_yaml.rb +0 -1
  1212. data/lib/puppet/vendor/require_vendored.rb +0 -4
  1213. data/lib/puppet/vendor/safe_yaml/CHANGES.md +0 -104
  1214. data/lib/puppet/vendor/safe_yaml/Gemfile +0 -11
  1215. data/lib/puppet/vendor/safe_yaml/LICENSE.txt +0 -22
  1216. data/lib/puppet/vendor/safe_yaml/README.md +0 -179
  1217. data/lib/puppet/vendor/safe_yaml/Rakefile +0 -6
  1218. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb +0 -253
  1219. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/deep.rb +0 -34
  1220. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/date.rb +0 -27
  1221. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/hexadecimal.rb +0 -12
  1222. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/parse/sexagesimal.rb +0 -26
  1223. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_handler.rb +0 -92
  1224. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/psych_resolver.rb +0 -52
  1225. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/resolver.rb +0 -94
  1226. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/safe_to_ruby_visitor.rb +0 -17
  1227. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_hack.rb +0 -36
  1228. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb +0 -43
  1229. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_resolver.rb +0 -38
  1230. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform.rb +0 -41
  1231. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_boolean.rb +0 -21
  1232. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_date.rb +0 -11
  1233. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_float.rb +0 -33
  1234. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_integer.rb +0 -25
  1235. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_nil.rb +0 -18
  1236. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/to_symbol.rb +0 -13
  1237. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/transform/transformation_map.rb +0 -47
  1238. data/lib/puppet/vendor/safe_yaml/lib/safe_yaml/version.rb +0 -3
  1239. data/lib/puppet/vendor/safe_yaml/run_specs_all_ruby_versions.sh +0 -21
  1240. data/lib/puppet/vendor/safe_yaml/safe_yaml.gemspec +0 -18
  1241. data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.2.yaml +0 -2
  1242. data/lib/puppet/vendor/safe_yaml/spec/exploit.1.9.3.yaml +0 -2
  1243. data/lib/puppet/vendor/safe_yaml/spec/psych_resolver_spec.rb +0 -10
  1244. data/lib/puppet/vendor/safe_yaml/spec/resolver_specs.rb +0 -250
  1245. data/lib/puppet/vendor/safe_yaml/spec/safe_yaml_spec.rb +0 -702
  1246. data/lib/puppet/vendor/safe_yaml/spec/spec_helper.rb +0 -18
  1247. data/lib/puppet/vendor/safe_yaml/spec/support/exploitable_back_door.rb +0 -29
  1248. data/lib/puppet/vendor/safe_yaml/spec/syck_resolver_spec.rb +0 -10
  1249. data/lib/puppet/vendor/safe_yaml/spec/transform/base64_spec.rb +0 -11
  1250. data/lib/puppet/vendor/safe_yaml/spec/transform/to_date_spec.rb +0 -34
  1251. data/lib/puppet/vendor/safe_yaml/spec/transform/to_float_spec.rb +0 -42
  1252. data/lib/puppet/vendor/safe_yaml/spec/transform/to_integer_spec.rb +0 -59
  1253. data/lib/puppet/vendor/safe_yaml/spec/transform/to_symbol_spec.rb +0 -49
  1254. data/man/man8/filebucket.8 +0 -81
  1255. data/man/man8/pi.8 +0 -51
  1256. data/man/man8/puppetca.8 +0 -97
  1257. data/man/man8/puppetd.8 +0 -154
  1258. data/man/man8/puppetdoc.8 +0 -113
  1259. data/man/man8/puppetmasterd.8 +0 -78
  1260. data/man/man8/puppetqd.8 +0 -55
  1261. data/man/man8/puppetrun.8 +0 -127
  1262. data/man/man8/ralsh.8 +0 -84
  1263. data/spec/integration/network/handler_spec.rb +0 -24
  1264. data/spec/integration/network/rest_authconfig_spec.rb +0 -164
  1265. data/spec/integration/util/file_locking_spec.rb +0 -56
  1266. data/spec/unit/agent_backward_compatibility_spec.rb +0 -152
  1267. data/spec/unit/file_system/path_pattern_spec.rb +0 -139
  1268. data/spec/unit/indirector/catalog/static_compiler_spec.rb +0 -194
  1269. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -33
  1270. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -33
  1271. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -33
  1272. data/spec/unit/indirector/inventory/yaml_spec.rb +0 -220
  1273. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -33
  1274. data/spec/unit/network/handler/ca_spec.rb +0 -87
  1275. data/spec/unit/network/handler/fileserver_spec.rb +0 -201
  1276. data/spec/unit/network/http/mongrel/xmlrpc_spec.rb +0 -0
  1277. data/spec/unit/network/http/rack/xmlrpc_spec.rb +0 -155
  1278. data/spec/unit/network/http/webrick/xmlrpc_spec.rb +0 -0
  1279. data/spec/unit/network/rest_authconfig_spec.rb +0 -142
  1280. data/spec/unit/other/transbucket_spec.rb +0 -184
  1281. data/spec/unit/other/transobject_spec.rb +0 -111
  1282. data/spec/unit/provider/zfs/solaris_spec.rb +0 -99
  1283. data/spec/unit/provider/zpool/solaris_spec.rb +0 -208
  1284. data/spec/unit/transportable_spec.rb +0 -0
  1285. data/spec/unit/util/autoload/file_cache_spec.rb +0 -158
  1286. data/spec/unit/util/file_locking_spec.rb +0 -159
  1287. data/spec/unit/util/settings_spec.rb +0 -1088
  1288. data/spec/unit/util/windows/sid_spec.rb +0 -100
  1289. data/test/README +0 -24
  1290. data/test/Rakefile +0 -96
  1291. data/test/data/failers/badclassnoparam +0 -10
  1292. data/test/data/failers/badclassparam +0 -10
  1293. data/test/data/failers/badcompnoparam +0 -9
  1294. data/test/data/failers/badcompparam +0 -9
  1295. data/test/data/failers/badtypeparam +0 -3
  1296. data/test/data/failers/noobjectrvalue +0 -1
  1297. data/test/data/providers/cron/crontab.allthree +0 -17
  1298. data/test/data/providers/cron/crontab.envNcomment +0 -12
  1299. data/test/data/providers/cron/crontab.envNname +0 -11
  1300. data/test/data/providers/cron/crontab.multirecords +0 -12
  1301. data/test/data/providers/cron/crontab_collections.yaml +0 -44
  1302. data/test/data/providers/cron/crontab_multiple_with_env.yaml +0 -54
  1303. data/test/data/providers/cron/examples/freebsd +0 -2
  1304. data/test/data/providers/cron/examples/one +0 -14
  1305. data/test/data/providers/cron/examples/openbsd +0 -20
  1306. data/test/data/providers/host/parsed/valid_hosts +0 -19
  1307. data/test/data/providers/mailalias/aliases/test1 +0 -28
  1308. data/test/data/providers/mount/parsed/aix.mount +0 -7
  1309. data/test/data/providers/mount/parsed/darwin.mount +0 -6
  1310. data/test/data/providers/mount/parsed/hpux.mount +0 -17
  1311. data/test/data/providers/mount/parsed/linux.mount +0 -5
  1312. data/test/data/providers/mount/parsed/solaris.mount +0 -6
  1313. data/test/data/providers/package/testpackages.yaml +0 -65
  1314. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys +0 -7
  1315. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys1 +0 -3
  1316. data/test/data/providers/ssh_authorized_key/parsed/authorized_keys2 +0 -1
  1317. data/test/data/reports/1.yaml +0 -108
  1318. data/test/data/reports/2.yaml +0 -108
  1319. data/test/data/reports/tagmail_failers.conf +0 -3
  1320. data/test/data/reports/tagmail_passers.conf +0 -30
  1321. data/test/data/snippets/aliastest.pp +0 -16
  1322. data/test/data/snippets/append.pp +0 -11
  1323. data/test/data/snippets/argumentdefaults +0 -14
  1324. data/test/data/snippets/arithmetic_expression.pp +0 -8
  1325. data/test/data/snippets/arraytrailingcomma.pp +0 -3
  1326. data/test/data/snippets/casestatement.pp +0 -65
  1327. data/test/data/snippets/classheirarchy.pp +0 -15
  1328. data/test/data/snippets/classincludes.pp +0 -17
  1329. data/test/data/snippets/classpathtest +0 -11
  1330. data/test/data/snippets/collection.pp +0 -10
  1331. data/test/data/snippets/collection_override.pp +0 -8
  1332. data/test/data/snippets/collection_within_virtual_definitions.pp +0 -20
  1333. data/test/data/snippets/componentmetaparams.pp +0 -11
  1334. data/test/data/snippets/componentrequire.pp +0 -8
  1335. data/test/data/snippets/deepclassheirarchy.pp +0 -23
  1336. data/test/data/snippets/defineoverrides.pp +0 -17
  1337. data/test/data/snippets/emptyclass.pp +0 -9
  1338. data/test/data/snippets/emptyexec.pp +0 -3
  1339. data/test/data/snippets/emptyifelse.pp +0 -9
  1340. data/test/data/snippets/falsevalues.pp +0 -3
  1341. data/test/data/snippets/filecreate +0 -11
  1342. data/test/data/snippets/fqdefinition.pp +0 -5
  1343. data/test/data/snippets/fqparents.pp +0 -11
  1344. data/test/data/snippets/funccomma.pp +0 -5
  1345. data/test/data/snippets/hash.pp +0 -33
  1346. data/test/data/snippets/ifexpression.pp +0 -12
  1347. data/test/data/snippets/implicititeration +0 -15
  1348. data/test/data/snippets/multilinecomments.pp +0 -10
  1349. data/test/data/snippets/multipleclass.pp +0 -9
  1350. data/test/data/snippets/multipleinstances +0 -7
  1351. data/test/data/snippets/multisubs.pp +0 -13
  1352. data/test/data/snippets/namevartest +0 -9
  1353. data/test/data/snippets/scopetest +0 -13
  1354. data/test/data/snippets/selectorvalues.pp +0 -49
  1355. data/test/data/snippets/simpledefaults +0 -5
  1356. data/test/data/snippets/simpleselector +0 -38
  1357. data/test/data/snippets/singleary.pp +0 -19
  1358. data/test/data/snippets/singlequote.pp +0 -11
  1359. data/test/data/snippets/singleselector.pp +0 -22
  1360. data/test/data/snippets/subclass_name_duplication.pp +0 -11
  1361. data/test/data/snippets/tag.pp +0 -9
  1362. data/test/data/snippets/tagged.pp +0 -35
  1363. data/test/data/snippets/virtualresources.pp +0 -14
  1364. data/test/data/types/hosts/1 +0 -3
  1365. data/test/data/types/hosts/2 +0 -13
  1366. data/test/data/types/hosts/solaris +0 -5
  1367. data/test/data/types/mailalias/file1 +0 -183
  1368. data/test/data/types/mount/freebsd.fstab +0 -7
  1369. data/test/data/types/mount/linux.fstab +0 -12
  1370. data/test/data/types/mount/solaris.fstab +0 -12
  1371. data/test/data/types/port/1 +0 -533
  1372. data/test/data/types/port/darwin +0 -11866
  1373. data/test/data/types/ssh_authorized_key/1 +0 -2
  1374. data/test/data/types/yumrepos/fedora-devel.repo +0 -26
  1375. data/test/data/types/yumrepos/fedora.repo +0 -9
  1376. data/test/language/ast.rb +0 -90
  1377. data/test/language/ast/variable.rb +0 -25
  1378. data/test/language/functions.rb +0 -540
  1379. data/test/language/parser.rb +0 -739
  1380. data/test/language/scope.rb +0 -261
  1381. data/test/language/snippets.rb +0 -512
  1382. data/test/language/transportable.rb +0 -87
  1383. data/test/lib/puppettest.rb +0 -307
  1384. data/test/lib/puppettest/certificates.rb +0 -74
  1385. data/test/lib/puppettest/exetest.rb +0 -125
  1386. data/test/lib/puppettest/fakes.rb +0 -199
  1387. data/test/lib/puppettest/fileparsing.rb +0 -28
  1388. data/test/lib/puppettest/filetesting.rb +0 -221
  1389. data/test/lib/puppettest/parsertesting.rb +0 -424
  1390. data/test/lib/puppettest/railstesting.rb +0 -18
  1391. data/test/lib/puppettest/reporttesting.rb +0 -16
  1392. data/test/lib/puppettest/resourcetesting.rb +0 -54
  1393. data/test/lib/puppettest/runnable_test.rb +0 -43
  1394. data/test/lib/puppettest/servertest.rb +0 -77
  1395. data/test/lib/puppettest/support.rb +0 -8
  1396. data/test/lib/puppettest/support/assertions.rb +0 -69
  1397. data/test/lib/puppettest/support/helpers.rb +0 -18
  1398. data/test/lib/puppettest/support/resources.rb +0 -31
  1399. data/test/lib/puppettest/support/utils.rb +0 -141
  1400. data/test/lib/puppettest/testcase.rb +0 -24
  1401. data/test/lib/rake/puppet_test_loader.rb +0 -14
  1402. data/test/lib/rake/puppet_testtask.rb +0 -19
  1403. data/test/lib/stubba.rb +0 -2
  1404. data/test/network/authconfig.rb +0 -69
  1405. data/test/network/authorization.rb +0 -138
  1406. data/test/network/authstore.rb +0 -538
  1407. data/test/network/client_request.rb +0 -38
  1408. data/test/network/handler/fileserver.rb +0 -1266
  1409. data/test/network/handler/master.rb +0 -93
  1410. data/test/network/handler/report.rb +0 -47
  1411. data/test/network/handler/runner.rb +0 -20
  1412. data/test/network/rights.rb +0 -40
  1413. data/test/network/xmlrpc/processor.rb +0 -79
  1414. data/test/network/xmlrpc/server.rb +0 -26
  1415. data/test/network/xmlrpc/webrick_servlet.rb +0 -35
  1416. data/test/other/provider.rb +0 -90
  1417. data/test/other/puppet.rb +0 -85
  1418. data/test/other/relationships.rb +0 -91
  1419. data/test/other/report.rb +0 -135
  1420. data/test/other/transactions.rb +0 -395
  1421. data/test/puppet/defaults.rb +0 -65
  1422. data/test/rails/rails.rb +0 -24
  1423. data/test/rails/railsparameter.rb +0 -80
  1424. data/test/ral/manager/attributes.rb +0 -296
  1425. data/test/ral/manager/instances.rb +0 -88
  1426. data/test/ral/manager/manager.rb +0 -50
  1427. data/test/ral/manager/provider.rb +0 -84
  1428. data/test/ral/manager/type.rb +0 -361
  1429. data/test/ral/providers/cron/crontab.rb +0 -652
  1430. data/test/ral/providers/group.rb +0 -242
  1431. data/test/ral/providers/host/parsed.rb +0 -32
  1432. data/test/ral/providers/mailalias/aliases.rb +0 -55
  1433. data/test/ral/providers/nameservice.rb +0 -32
  1434. data/test/ral/providers/package.rb +0 -245
  1435. data/test/ral/providers/package/aptitude.rb +0 -83
  1436. data/test/ral/providers/package/aptrpm.rb +0 -100
  1437. data/test/ral/providers/parsedfile.rb +0 -695
  1438. data/test/ral/providers/port/parsed.rb +0 -232
  1439. data/test/ral/providers/provider.rb +0 -529
  1440. data/test/ral/providers/service/base.rb +0 -76
  1441. data/test/ral/providers/sshkey/parsed.rb +0 -112
  1442. data/test/ral/providers/user.rb +0 -586
  1443. data/test/ral/providers/user/useradd.rb +0 -233
  1444. data/test/ral/type/cron.rb +0 -505
  1445. data/test/ral/type/exec.rb +0 -717
  1446. data/test/ral/type/file.rb +0 -912
  1447. data/test/ral/type/file/target.rb +0 -346
  1448. data/test/ral/type/fileignoresource.rb +0 -265
  1449. data/test/ral/type/filesources.rb +0 -446
  1450. data/test/ral/type/host.rb +0 -180
  1451. data/test/ral/type/mailalias.rb +0 -45
  1452. data/test/ral/type/port.rb +0 -147
  1453. data/test/ral/type/resources.rb +0 -104
  1454. data/test/ral/type/service.rb +0 -38
  1455. data/test/ral/type/sshkey.rb +0 -148
  1456. data/test/ral/type/user.rb +0 -167
  1457. data/test/ral/type/yumrepo.rb +0 -116
  1458. data/test/ral/type/zone.rb +0 -447
  1459. data/test/test +0 -241
  1460. data/test/util/classgen.rb +0 -241
  1461. data/test/util/execution.rb +0 -33
  1462. data/test/util/fileparsing.rb +0 -721
  1463. data/test/util/inifile.rb +0 -138
  1464. data/test/util/instance_loader.rb +0 -52
  1465. data/test/util/log.rb +0 -219
  1466. data/test/util/metrics.rb +0 -72
  1467. data/test/util/package.rb +0 -25
  1468. data/test/util/pidlock.rb +0 -125
  1469. data/test/util/settings.rb +0 -773
  1470. data/test/util/storage.rb +0 -81
  1471. data/test/util/subclass_loader.rb +0 -89
  1472. data/test/util/utiltest.rb +0 -223
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
3
  require 'puppet/rails'
4
4
  require 'puppet/node/facts'
@@ -32,7 +32,7 @@ describe "Puppet::Resource::ActiveRecord", :if => can_use_scratch_database? do
32
32
 
33
33
  def search(type, host = 'default.local', filter = nil)
34
34
  args = { :host => host, :filter => filter }
35
- subject.search(Puppet::Resource.indirection.request(:search, type, args))
35
+ subject.search(Puppet::Resource.indirection.request(:search, type, nil, args))
36
36
  end
37
37
 
38
38
  it "should return an empty array if no resources match" do
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
3
 
4
4
  describe "Puppet::Resource::Ral" do
@@ -18,7 +18,7 @@ describe "Puppet::Resource::Ral" do
18
18
  Puppet::Resource::Ral.new.find(@request).should == my_resource
19
19
  end
20
20
 
21
- it "if there is no instance, it should create one", :'fails_on_ruby_1.9.2' => true do
21
+ it "if there is no instance, it should create one" do
22
22
  wrong_instance = stub "wrong user", :name => "bob"
23
23
  root = mock "Root User"
24
24
  root_resource = mock "Root Resource"
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
3
 
4
4
  require 'puppet/indirector/resource/rest'
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
3
  require 'puppet/resource'
4
4
  require 'puppet/indirector/memory'
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
3
 
4
4
  require 'puppet/indirector/resource_type/parser'
@@ -9,7 +9,7 @@ describe Puppet::Indirector::ResourceType::Parser do
9
9
 
10
10
  before do
11
11
  @terminus = Puppet::Indirector::ResourceType::Parser.new
12
- @request = Puppet::Indirector::Request.new(:resource_type, :find, "foo")
12
+ @request = Puppet::Indirector::Request.new(:resource_type, :find, "foo", nil)
13
13
  @krt = @request.environment.known_resource_types
14
14
  end
15
15
 
@@ -31,7 +31,7 @@ describe Puppet::Indirector::ResourceType::Parser do
31
31
  Puppet[:modulepath] = dir
32
32
 
33
33
  # Make a new request, since we've reset the env
34
- @request = Puppet::Indirector::Request.new(:resource_type, :find, "foo::bar")
34
+ @request = Puppet::Indirector::Request.new(:resource_type, :find, "foo::bar", nil)
35
35
 
36
36
  manifest_path = File.join(dir, "foo", "manifests")
37
37
  FileUtils.mkdir_p(manifest_path)
@@ -56,57 +56,157 @@ describe Puppet::Indirector::ResourceType::Parser do
56
56
  end
57
57
 
58
58
  describe "when searching" do
59
- before do
60
- @request.key = "*"
59
+ describe "when the search key is a wildcard" do
60
+ before do
61
+ @request.key = "*"
62
+ end
63
+
64
+ it "should use the request's environment's list of known resource types" do
65
+ @request.environment.known_resource_types.expects(:hostclasses).returns({})
66
+
67
+ @terminus.search(@request)
68
+ end
69
+
70
+ it "should return all results if '*' is provided as the search string" do
71
+ type = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
72
+ node = @krt.add(Puppet::Resource::Type.new(:node, "bar"))
73
+ define = @krt.add(Puppet::Resource::Type.new(:definition, "baz"))
74
+
75
+ result = @terminus.search(@request)
76
+ result.should be_include(type)
77
+ result.should be_include(node)
78
+ result.should be_include(define)
79
+ end
80
+
81
+ it "should return all known types" do
82
+ type = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
83
+ node = @krt.add(Puppet::Resource::Type.new(:node, "bar"))
84
+ define = @krt.add(Puppet::Resource::Type.new(:definition, "baz"))
85
+
86
+ result = @terminus.search(@request)
87
+ result.should be_include(type)
88
+ result.should be_include(node)
89
+ result.should be_include(define)
90
+ end
91
+
92
+ it "should not return the 'main' class" do
93
+ main = @krt.add(Puppet::Resource::Type.new(:hostclass, ""))
94
+
95
+ # So there is a return value
96
+ foo = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
97
+
98
+ @terminus.search(@request).should_not be_include(main)
99
+ end
100
+
101
+ it "should return nil if no types can be found" do
102
+ @terminus.search(@request).should be_nil
103
+ end
104
+
105
+ it "should load all resource types from all search paths" do
106
+ dir = tmpdir("searching_in_all")
107
+ first = File.join(dir, "first")
108
+ second = File.join(dir, "second")
109
+ FileUtils.mkdir_p(first)
110
+ FileUtils.mkdir_p(second)
111
+ Puppet[:modulepath] = "#{first}#{File::PATH_SEPARATOR}#{second}"
112
+
113
+ # Make a new request, since we've reset the env
114
+ @request = Puppet::Indirector::Request.new(:resource_type, :search, "*", nil)
115
+
116
+ onepath = File.join(first, "one", "manifests")
117
+ FileUtils.mkdir_p(onepath)
118
+ twopath = File.join(first, "two", "manifests")
119
+ FileUtils.mkdir_p(twopath)
120
+
121
+ File.open(File.join(onepath, "oneklass.pp"), "w") { |f| f.puts "class one::oneklass {}" }
122
+ File.open(File.join(twopath, "twoklass.pp"), "w") { |f| f.puts "class two::twoklass {}" }
123
+
124
+ result = @terminus.search(@request)
125
+ result.find { |t| t.name == "one::oneklass" }.should be_instance_of(Puppet::Resource::Type)
126
+ result.find { |t| t.name == "two::twoklass" }.should be_instance_of(Puppet::Resource::Type)
127
+ end
128
+
129
+ context "when specifying a 'kind' parameter" do
130
+ before :each do
131
+ @klass = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
132
+ @node = @krt.add(Puppet::Resource::Type.new(:node, "bar"))
133
+ @define = @krt.add(Puppet::Resource::Type.new(:definition, "baz"))
134
+ end
135
+
136
+ it "should raise an error if you pass an invalid kind filter" do
137
+ @request.options[:kind] = "i bet you don't have a kind called this"
138
+ expect {
139
+ @terminus.search(@request)
140
+ }.to raise_error(ArgumentError, /Unrecognized kind filter/)
141
+
142
+ end
143
+
144
+ it "should support filtering for only hostclass results" do
145
+ @request.options[:kind] = "class"
146
+
147
+ result = @terminus.search(@request)
148
+ result.should be_include(@klass)
149
+ result.should_not be_include(@node)
150
+ result.should_not be_include(@define)
151
+ end
152
+
153
+ it "should support filtering for only node results" do
154
+ @request.options[:kind] = "node"
155
+
156
+ result = @terminus.search(@request)
157
+ result.should_not be_include(@klass)
158
+ result.should be_include(@node)
159
+ result.should_not be_include(@define)
160
+ end
161
+
162
+ it "should support filtering for only definition results" do
163
+ @request.options[:kind] = "defined_type"
164
+
165
+ result = @terminus.search(@request)
166
+ result.should_not be_include(@klass)
167
+ result.should_not be_include(@node)
168
+ result.should be_include(@define)
169
+ end
170
+ end
61
171
  end
62
172
 
63
- it "should use the request's environment's list of known resource types" do
64
- @request.environment.known_resource_types.expects(:hostclasses).returns({})
65
-
66
- @terminus.search(@request)
67
- end
68
-
69
- it "should return all results if '*' is provided as the search string" do
70
- @request.key = "*"
71
- type = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
72
- node = @krt.add(Puppet::Resource::Type.new(:node, "bar"))
73
- define = @krt.add(Puppet::Resource::Type.new(:definition, "baz"))
74
-
75
- result = @terminus.search(@request)
76
- result.should be_include(type)
77
- result.should be_include(node)
78
- result.should be_include(define)
79
- end
80
-
81
- it "should treat any search string not '*' as a regex" do
82
- @request.key = "a"
83
- foo = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
84
- bar = @krt.add(Puppet::Resource::Type.new(:hostclass, "bar"))
85
- baz = @krt.add(Puppet::Resource::Type.new(:hostclass, "baz"))
86
-
87
- result = @terminus.search(@request)
88
- result.should be_include(bar)
89
- result.should be_include(baz)
90
- result.should_not be_include(foo)
91
- end
92
-
93
- it "should fail if a provided search string is not '*' and is not a valid regex" do
94
- @request.key = "*foo*"
95
-
96
- # Add one instance so we don't just get an empty array"
97
- @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
98
- lambda { @terminus.search(@request) }.should raise_error(ArgumentError)
99
- end
100
-
101
- it "should return all known types" do
102
- type = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
103
- node = @krt.add(Puppet::Resource::Type.new(:node, "bar"))
104
- define = @krt.add(Puppet::Resource::Type.new(:definition, "baz"))
105
-
106
- result = @terminus.search(@request)
107
- result.should be_include(type)
108
- result.should be_include(node)
109
- result.should be_include(define)
173
+ context "when the search string is not a wildcard" do
174
+
175
+ it "should treat any search string as a regex" do
176
+ @request.key = "a"
177
+ foo = @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
178
+ bar = @krt.add(Puppet::Resource::Type.new(:hostclass, "bar"))
179
+ baz = @krt.add(Puppet::Resource::Type.new(:hostclass, "baz"))
180
+
181
+ result = @terminus.search(@request)
182
+ result.should be_include(bar)
183
+ result.should be_include(baz)
184
+ result.should_not be_include(foo)
185
+ end
186
+
187
+ it "should support kind filtering with a regex" do
188
+ @request.key = "foo"
189
+ @request.options[:kind] = "class"
190
+
191
+ foobar = @krt.add(Puppet::Resource::Type.new(:hostclass, "foobar"))
192
+ foobaz = @krt.add(Puppet::Resource::Type.new(:hostclass, "foobaz"))
193
+ foobam = @krt.add(Puppet::Resource::Type.new(:definition, "foobam"))
194
+ fooball = @krt.add(Puppet::Resource::Type.new(:node, "fooball"))
195
+
196
+ result = @terminus.search(@request)
197
+ result.should be_include(foobar)
198
+ result.should be_include(foobaz)
199
+ result.should_not be_include(foobam)
200
+ result.should_not be_include(fooball)
201
+ end
202
+
203
+ it "should fail if a provided search string is not a valid regex" do
204
+ @request.key = "*foo*"
205
+
206
+ # Add one instance so we don't just get an empty array"
207
+ @krt.add(Puppet::Resource::Type.new(:hostclass, "foo"))
208
+ lambda { @terminus.search(@request) }.should raise_error(ArgumentError)
209
+ end
110
210
  end
111
211
 
112
212
  it "should not return the 'main' class" do
@@ -131,7 +231,7 @@ describe Puppet::Indirector::ResourceType::Parser do
131
231
  Puppet[:modulepath] = "#{first}#{File::PATH_SEPARATOR}#{second}"
132
232
 
133
233
  # Make a new request, since we've reset the env
134
- @request = Puppet::Indirector::Request.new(:resource_type, :search, "*")
234
+ @request = Puppet::Indirector::Request.new(:resource_type, :search, "*", nil)
135
235
 
136
236
  onepath = File.join(first, "one", "manifests")
137
237
  FileUtils.mkdir_p(onepath)
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
3
 
4
4
  require 'puppet/indirector/resource_type/rest'
@@ -1,140 +1,57 @@
1
- #!/usr/bin/env rspec
1
+ #! /usr/bin/env ruby -S rspec
2
2
  require 'spec_helper'
3
- require 'puppet/indirector'
4
- require 'puppet/indirector/errors'
5
3
  require 'puppet/indirector/rest'
6
4
 
7
- # Just one from each category since the code makes no real distinctions
8
- HTTP_ERROR_CODES = [300, 400, 500]
9
- shared_examples_for "a REST terminus method" do |terminus_method|
10
- HTTP_ERROR_CODES.each do |code|
11
- describe "when the response code is #{code}" do
12
- let(:response) { mock_response(code, 'error messaged!!!') }
13
-
14
- it "raises an http error with the body of the response" do
15
- expect {
16
- terminus.send(terminus_method, request)
17
- }.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{response.body}")
18
- end
19
-
20
- it "does not attempt to deserialize the response" do
21
- model.expects(:convert_from).never
22
-
23
- expect {
24
- terminus.send(terminus_method, request)
25
- }.to raise_error(Net::HTTPError)
26
- end
27
-
28
- # I'm not sure what this means or if it's used
29
- it "if the body is empty raises an http error with the response header" do
30
- response.stubs(:body).returns ""
31
- response.stubs(:message).returns "fhqwhgads"
32
-
33
- expect {
34
- terminus.send(terminus_method, request)
35
- }.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{response.message}")
36
- end
37
-
38
- describe "and the body is compressed" do
39
- it "raises an http error with the decompressed body of the response" do
40
- uncompressed_body = "why"
41
- compressed_body = Zlib::Deflate.deflate(uncompressed_body)
42
-
43
- response = mock_response(code, compressed_body, 'text/plain', 'deflate')
44
- connection.expects(http_method).returns(response)
45
-
46
- expect {
47
- terminus.send(terminus_method, request)
48
- }.to raise_error(Net::HTTPError, "Error #{code} on SERVER: #{uncompressed_body}")
49
- end
50
- end
51
- end
5
+ shared_examples_for "a REST http call" do
6
+ it "should accept a path" do
7
+ lambda { @search.send(@method, *@arguments) }.should_not raise_error(ArgumentError)
52
8
  end
53
- end
54
9
 
55
- shared_examples_for "a deserializing terminus method" do |terminus_method|
56
- describe "when the response has no content-type" do
57
- let(:response) { mock_response(200, "body", nil, nil) }
58
- it "raises an error" do
59
- expect {
60
- terminus.send(terminus_method, request)
61
- }.to raise_error(RuntimeError, "No content type in http response; cannot parse")
62
- end
10
+ it "should require a path" do
11
+ lambda { @searcher.send(@method) }.should raise_error(ArgumentError)
63
12
  end
64
13
 
65
- it "doesn't catch errors in deserialization" do
66
- model.expects(:convert_from).raises(Puppet::Error, "Whoa there")
14
+ it "should return the results of deserializing the response to the request" do
15
+ conn = mock 'connection'
16
+ conn.stubs(:put).returns @response
17
+ conn.stubs(:delete).returns @response
18
+ conn.stubs(:get).returns @response
19
+ Puppet::Network::HttpPool.stubs(:http_instance).returns conn
20
+
21
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
67
22
 
68
- expect { terminus.send(terminus_method, request) }.to raise_error(Puppet::Error, "Whoa there")
23
+ @searcher.send(@method, *@arguments).should == 'myobject'
69
24
  end
70
25
  end
71
26
 
72
27
  describe Puppet::Indirector::REST do
73
28
  before :all do
74
- class Puppet::TestModel
75
- extend Puppet::Indirector
76
- indirects :test_model
77
- attr_accessor :name, :data
78
- def initialize(name = "name", data = '')
79
- @name = name
80
- @data = data
81
- end
82
-
83
- def self.convert_from(format, string)
84
- new('', string)
85
- end
86
-
87
- def self.convert_from_multiple(format, string)
88
- string.split(',').collect { |s| convert_from(format, s) }
89
- end
90
-
91
- def ==(other)
92
- other.is_a? Puppet::TestModel and other.name == name and other.data == data
29
+ Puppet::Indirector::Terminus.stubs(:register_terminus_class)
30
+ @model = stub('model', :supported_formats => %w{}, :convert_from => nil)
31
+ @instance = stub('model instance', :name= => nil)
32
+ @indirection = stub('indirection', :name => :mystuff, :register_terminus_type => nil, :model => @model)
33
+ Puppet::Indirector::Indirection.expects(:instance).returns(@indirection)
34
+
35
+ module This
36
+ module Is
37
+ module A
38
+ module Test
39
+ end
40
+ end
93
41
  end
94
42
  end
95
-
96
- # The subclass must not be all caps even though the superclass is
97
- class Puppet::TestModel::Rest < Puppet::Indirector::REST
43
+ @rest_class = class This::Is::A::Test::Class < Puppet::Indirector::REST
44
+ self
98
45
  end
99
-
100
- Puppet::TestModel.indirection.terminus_class = :rest
101
- end
102
-
103
- after :all do
104
- # Remove the class, unlinking it from the rest of the system.
105
- Puppet.send(:remove_const, :TestModel)
106
- end
107
-
108
- let(:terminus_class) { Puppet::TestModel::Rest }
109
- let(:terminus) { Puppet::TestModel.indirection.terminus(:rest) }
110
- let(:indirection) { Puppet::TestModel.indirection }
111
- let(:model) { Puppet::TestModel }
112
-
113
- def mock_response(code, body, content_type='text/plain', encoding=nil)
114
- obj = stub('http 200 ok', :code => code.to_s, :body => body)
115
- obj.stubs(:[]).with('content-type').returns(content_type)
116
- obj.stubs(:[]).with('content-encoding').returns(encoding)
117
- obj
118
- end
119
-
120
- def find_request(key, options={})
121
- Puppet::Indirector::Request.new(:test_model, :find, key, options)
122
- end
123
-
124
- def head_request(key, options={})
125
- Puppet::Indirector::Request.new(:test_model, :head, key, options)
126
- end
127
-
128
- def search_request(key, options={})
129
- Puppet::Indirector::Request.new(:test_model, :search, key, options)
130
46
  end
131
47
 
132
- def delete_request(key, options={})
133
- Puppet::Indirector::Request.new(:test_model, :destroy, key, options)
134
- end
48
+ before :each do
49
+ @response = stub('mock response', :body => 'result', :code => "200")
50
+ @response.stubs(:[]).with('content-type').returns "text/plain"
51
+ @response.stubs(:[]).with('content-encoding').returns nil
135
52
 
136
- def save_request(key, instance)
137
- Puppet::Indirector::Request.new(:test_model, :save, key, instance)
53
+ @searcher = @rest_class.new
54
+ @searcher.stubs(:model).returns @model
138
55
  end
139
56
 
140
57
  it "should include the v1 REST API module" do
@@ -142,138 +59,176 @@ describe Puppet::Indirector::REST do
142
59
  end
143
60
 
144
61
  it "should have a method for specifying what setting a subclass should use to retrieve its server" do
145
- terminus_class.should respond_to(:use_server_setting)
62
+ @rest_class.should respond_to(:use_server_setting)
146
63
  end
147
64
 
148
65
  it "should use any specified setting to pick the server" do
149
- terminus_class.expects(:server_setting).returns :inventory_server
66
+ @rest_class.expects(:server_setting).returns :inventory_server
150
67
  Puppet[:inventory_server] = "myserver"
151
- terminus_class.server.should == "myserver"
68
+ @rest_class.server.should == "myserver"
152
69
  end
153
70
 
154
71
  it "should default to :server for the server setting" do
155
- terminus_class.expects(:server_setting).returns nil
72
+ @rest_class.expects(:server_setting).returns nil
156
73
  Puppet[:server] = "myserver"
157
- terminus_class.server.should == "myserver"
74
+ @rest_class.server.should == "myserver"
158
75
  end
159
76
 
160
77
  it "should have a method for specifying what setting a subclass should use to retrieve its port" do
161
- terminus_class.should respond_to(:use_port_setting)
78
+ @rest_class.should respond_to(:use_port_setting)
162
79
  end
163
80
 
164
81
  it "should use any specified setting to pick the port" do
165
- terminus_class.expects(:port_setting).returns :ca_port
82
+ @rest_class.expects(:port_setting).returns :ca_port
166
83
  Puppet[:ca_port] = "321"
167
- terminus_class.port.should == 321
84
+ @rest_class.port.should == 321
168
85
  end
169
86
 
170
87
  it "should default to :port for the port setting" do
171
- terminus_class.expects(:port_setting).returns nil
88
+ @rest_class.expects(:port_setting).returns nil
172
89
  Puppet[:masterport] = "543"
173
- terminus_class.port.should == 543
90
+ @rest_class.port.should == 543
91
+ end
92
+
93
+
94
+ it 'should default to :puppet for the srv_service' do
95
+ Puppet::Indirector::REST.srv_service.should == :puppet
174
96
  end
175
97
 
176
- describe "when making http requests" do
177
- include PuppetSpec::Files
178
-
179
- def a_connection_that_verifies(args)
180
- connection = Net::HTTP.new('my_server', 8140)
181
- connection.stubs(:get).with do
182
- connection.verify_callback.call(args[:has_passed_pre_checks], args[:in_context])
183
- true
184
- end.raises(OpenSSL::SSL::SSLError.new(args[:fails_with]))
185
- connection
186
- end
187
-
188
- def a_store_context(args)
189
- Puppet[:confdir] = tmpdir('conf')
190
- cert = Puppet::SSL::CertificateAuthority.new.generate(args[:for_server], :dns_alt_names => args[:for_aliases]).content
191
- ssl_context = mock('OpenSSL::X509::StoreContext')
192
- ssl_context.stubs(:current_cert).returns(cert)
193
- ssl_context.stubs(:error_string).returns(args[:with_error_string])
194
- ssl_context
195
- end
196
-
197
- it "should provide a useful error message when one is available and certificate validation fails", :unless => Puppet.features.microsoft_windows? do
198
- terminus.stubs(:network).
199
- returns(a_connection_that_verifies(:has_passed_pre_checks => false,
200
- :in_context => a_store_context(:for_server => 'not_my_server',
201
- :with_error_string => 'shady looking signature'),
202
- :fails_with => 'certificate verify failed'))
203
- expect do
204
- terminus.http_request(:get, stub('request'))
205
- end.to raise_error(Puppet::Error, "certificate verify failed: [shady looking signature for /CN=not_my_server]")
206
- end
207
-
208
- it "should provide a helpful error message when hostname was not match with server certificate", :unless => Puppet.features.microsoft_windows? do
209
- terminus.stubs(:network).
210
- returns(a_connection_that_verifies(:has_passed_pre_checks => true,
211
- :in_context => a_store_context(:for_server => 'not_my_server',
212
- :for_aliases => 'foo,bar,baz'),
213
- :fails_with => 'hostname was not match with server certificate'))
214
-
215
- expect { terminus.http_request(:get, stub('request')) }.
216
- to raise_error(Puppet::Error) do |error|
217
- error.message =~ /Server hostname 'my_server' did not match server certificate; expected one of (.+)/
218
- $1.split(', ').should =~ %w[DNS:foo DNS:bar DNS:baz DNS:not_my_server not_my_server]
98
+ describe "when deserializing responses" do
99
+ it "should return nil if the response code is 404" do
100
+ response = mock 'response'
101
+ response.expects(:code).returns "404"
102
+
103
+ @searcher.deserialize(response).should be_nil
104
+ end
105
+
106
+ [300,400,403,405,500,501,502,503,504].each { |rc|
107
+ describe "when the response code is #{rc}" do
108
+ before :each do
109
+ @model.expects(:convert_from).never
110
+
111
+ @response = mock 'response'
112
+ @response.stubs(:code).returns rc.to_s
113
+ @response.stubs(:[]).with('content-encoding').returns nil
114
+ @response.stubs(:message).returns "There was a problem (header)"
115
+ end
116
+
117
+ it "should fail" do
118
+ @response.stubs(:body).returns nil
119
+ lambda { @searcher.deserialize(@response) }.should raise_error(Net::HTTPError)
219
120
  end
121
+
122
+ it "should take the error message from the body, if present" do
123
+ @response.stubs(:body).returns "There was a problem (body)"
124
+ lambda { @searcher.deserialize(@response) }.should raise_error(Net::HTTPError,"Error #{rc} on SERVER: There was a problem (body)")
125
+ end
126
+
127
+ it "should take the error message from the response header if the body is empty" do
128
+ @response.stubs(:body).returns ""
129
+ lambda { @searcher.deserialize(@response) }.should raise_error(Net::HTTPError,"Error #{rc} on SERVER: There was a problem (header)")
130
+ end
131
+
132
+ it "should take the error message from the response header if the body is absent" do
133
+ @response.stubs(:body).returns nil
134
+ lambda { @searcher.deserialize(@response) }.should raise_error(Net::HTTPError,"Error #{rc} on SERVER: There was a problem (header)")
135
+ end
136
+
137
+ describe "and with http compression" do
138
+ it "should uncompress the body" do
139
+ @response.stubs(:body).returns("compressed body")
140
+ @searcher.expects(:uncompress_body).with(@response).returns("uncompressed")
141
+ lambda { @searcher.deserialize(@response) }.should raise_error { |e| e.message =~ /uncompressed/ }
142
+ end
143
+ end
144
+ end
145
+ }
146
+
147
+ it "should return the results of converting from the format specified by the content-type header if the response code is in the 200s" do
148
+ @model.expects(:convert_from).with("myformat", "mydata").returns "myobject"
149
+
150
+ response = mock 'response'
151
+ response.stubs(:[]).with("content-type").returns "myformat"
152
+ response.stubs(:[]).with("content-encoding").returns nil
153
+ response.stubs(:body).returns "mydata"
154
+ response.stubs(:code).returns "200"
155
+
156
+ @searcher.deserialize(response).should == "myobject"
220
157
  end
221
158
 
222
- it "should pass along the error message otherwise" do
223
- connection = Net::HTTP.new('my_server', 8140)
224
- terminus.stubs(:network).returns(connection)
159
+ it "should convert and return multiple instances if the return code is in the 200s and 'multiple' is specified" do
160
+ @model.expects(:convert_from_multiple).with("myformat", "mydata").returns "myobjects"
225
161
 
226
- connection.stubs(:get).raises(OpenSSL::SSL::SSLError.new('some other message'))
162
+ response = mock 'response'
163
+ response.stubs(:[]).with("content-type").returns "myformat"
164
+ response.stubs(:[]).with("content-encoding").returns nil
165
+ response.stubs(:body).returns "mydata"
166
+ response.stubs(:code).returns "200"
227
167
 
228
- expect do
229
- terminus.http_request(:get, stub('request'))
230
- end.to raise_error(/some other message/)
168
+ @searcher.deserialize(response, true).should == "myobjects"
231
169
  end
232
- end
233
170
 
234
- describe "when creating an HTTP client" do
235
- before do
236
- Puppet.settings.stubs(:value).returns("rest_testing")
171
+ it "should strip the content-type header to keep only the mime-type" do
172
+ @model.expects(:convert_from).with("text/plain", "mydata").returns "myobject"
173
+
174
+ response = mock 'response'
175
+ response.stubs(:[]).with("content-type").returns "text/plain; charset=utf-8"
176
+ response.stubs(:[]).with("content-encoding").returns nil
177
+ response.stubs(:body).returns "mydata"
178
+ response.stubs(:code).returns "200"
179
+
180
+ @searcher.deserialize(response)
237
181
  end
238
182
 
183
+ it "should uncompress the body" do
184
+ @model.expects(:convert_from).with("myformat", "uncompressed mydata").returns "myobject"
185
+
186
+ response = mock 'response'
187
+ response.stubs(:[]).with("content-type").returns "myformat"
188
+ response.stubs(:body).returns "compressed mydata"
189
+ response.stubs(:code).returns "200"
190
+
191
+ @searcher.expects(:uncompress_body).with(response).returns("uncompressed mydata")
192
+
193
+ @searcher.deserialize(response).should == "myobject"
194
+ end
195
+ end
196
+
197
+ describe "when creating an HTTP client" do
239
198
  it "should use the class's server and port if the indirection request provides neither" do
240
199
  @request = stub 'request', :key => "foo", :server => nil, :port => nil
241
- terminus.class.expects(:port).returns 321
242
- terminus.class.expects(:server).returns "myserver"
243
- Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
244
- terminus.network(@request).should == "myconn"
200
+ @searcher.class.expects(:port).returns 321
201
+ @searcher.class.expects(:server).returns "myserver"
202
+ Puppet::Network::HTTP::Connection.expects(:new).with("myserver", 321).returns "myconn"
203
+ @searcher.network(@request).should == "myconn"
245
204
  end
246
205
 
247
206
  it "should use the server from the indirection request if one is present" do
248
207
  @request = stub 'request', :key => "foo", :server => "myserver", :port => nil
249
- terminus.class.stubs(:port).returns 321
250
- Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
251
- terminus.network(@request).should == "myconn"
208
+ @searcher.class.stubs(:port).returns 321
209
+ Puppet::Network::HTTP::Connection.expects(:new).with("myserver", 321).returns "myconn"
210
+ @searcher.network(@request).should == "myconn"
252
211
  end
253
212
 
254
213
  it "should use the port from the indirection request if one is present" do
255
214
  @request = stub 'request', :key => "foo", :server => nil, :port => 321
256
- terminus.class.stubs(:server).returns "myserver"
257
- Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
258
- terminus.network(@request).should == "myconn"
215
+ @searcher.class.stubs(:server).returns "myserver"
216
+ Puppet::Network::HTTP::Connection.expects(:new).with("myserver", 321).returns "myconn"
217
+ @searcher.network(@request).should == "myconn"
259
218
  end
260
219
  end
261
220
 
262
- describe "#find" do
263
- let(:http_method) { :get }
264
- let(:response) { mock_response(200, 'body') }
265
- let(:connection) { stub('mock http connection', :get => response, :verify_callback= => nil) }
266
- let(:request) { find_request('foo') }
267
-
221
+ describe "when doing a find" do
268
222
  before :each do
269
- terminus.stubs(:network).returns(connection)
270
- end
223
+ @connection = stub('mock http connection', :get => @response, :verify_callback= => nil)
224
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
271
225
 
272
- it_behaves_like 'a REST terminus method', :find
273
- it_behaves_like 'a deserializing terminus method', :find
226
+ # Use a key with spaces, so we can test escaping
227
+ @request = Puppet::Indirector::Request.new(:foo, :find, "foo bar", nil, :environment => "myenv")
228
+ end
274
229
 
275
- describe "with a long set of parameters" do
276
- it "calls post on the connection with the query params in the body" do
230
+ describe "with a large body" do
231
+ it "should use the POST http method" do
277
232
  params = {}
278
233
  'aa'.upto('zz') do |s|
279
234
  params[s] = 'foo'
@@ -284,270 +239,304 @@ describe Puppet::Indirector::REST do
284
239
  # to avoid a failure.
285
240
  params.delete('ip')
286
241
 
287
- request = find_request('whoa', params)
242
+ @request = Puppet::Indirector::Request.new(:foo, :find, "foo bar", nil, params.merge(:environment => "myenv"))
288
243
 
289
- connection.expects(:post).with do |uri, body|
290
- body.split("&").sort == params.map {|key,value| "#{key}=#{value}"}.sort
291
- end.returns(mock_response(200, 'body'))
244
+ @connection.expects(:post).with do |uri, body|
245
+ uri == "/myenv/foo/foo%20bar" and body.split("&").sort == params.map {|key,value| "#{key}=#{value}"}.sort
246
+ end.returns(@response)
292
247
 
293
- terminus.find(request)
248
+ @searcher.find(@request)
294
249
  end
295
250
  end
296
251
 
297
- describe "with no parameters" do
298
- it "calls get on the connection" do
299
- request = find_request('foo bar')
300
-
301
- connection.expects(:get).with('/production/test_model/foo%20bar?', anything).returns(mock_response('200', 'response body'))
302
-
303
- terminus.find(request).should == model.new('foo bar', 'response body')
252
+ describe "with a small body" do
253
+ it "should use the GET http method" do
254
+ @searcher.expects(:network).returns @connection
255
+ @connection.expects(:get).returns @response
256
+ @searcher.find(@request)
304
257
  end
305
258
  end
306
259
 
307
- it "returns nil on 404" do
308
- response = mock_response('404', nil)
260
+ it "should deserialize and return the http response, setting name" do
261
+ @connection.expects(:get).returns @response
309
262
 
310
- connection.expects(:get).returns(response)
263
+ instance = stub 'object'
264
+ instance.expects(:name=)
265
+ @searcher.expects(:deserialize).with(@response).returns instance
311
266
 
312
- terminus.find(request).should == nil
267
+ @searcher.find(@request).should == instance
313
268
  end
314
269
 
315
- it "asks the model to deserialize the response body and sets the name on the resulting object to the find key" do
316
- connection.expects(:get).returns response
270
+ it "should deserialize and return the http response, and not require name=" do
271
+ @connection.expects(:get).returns @response
317
272
 
318
- model.expects(:convert_from).with(response['content-type'], response.body).returns(
319
- model.new('overwritten', 'decoded body')
320
- )
273
+ instance = stub 'object'
274
+ @searcher.expects(:deserialize).with(@response).returns instance
321
275
 
322
- terminus.find(request).should == model.new('foo', 'decoded body')
276
+ @searcher.find(@request).should == instance
323
277
  end
324
278
 
325
- it "doesn't require the model to support name=" do
326
- connection.expects(:get).returns response
327
- instance = model.new('name', 'decoded body')
328
-
329
- model.expects(:convert_from).with(response['content-type'], response.body).returns(instance)
330
- instance.expects(:respond_to?).with(:name=).returns(false)
331
- instance.expects(:name=).never
332
-
333
- terminus.find(request).should == model.new('name', 'decoded body')
279
+ it "should use the URI generated by the Handler module" do
280
+ @connection.expects(:get).with { |path, args| path == "/myenv/foo/foo%20bar?" }.returns(@response)
281
+ @searcher.find(@request)
334
282
  end
335
283
 
336
- it "provides an Accept header containing the list of supported formats joined with commas" do
337
- connection.expects(:get).with(anything, has_entry("Accept" => "supported, formats")).returns(response)
284
+ it "should provide an Accept header containing the list of supported formats joined with commas" do
285
+ @connection.expects(:get).with { |path, args| args["Accept"] == "supported, formats" }.returns(@response)
338
286
 
339
- terminus.model.expects(:supported_formats).returns %w{supported formats}
340
- terminus.find(request)
287
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
288
+ @searcher.find(@request)
341
289
  end
342
290
 
343
- it "adds an Accept-Encoding header" do
344
- terminus.expects(:add_accept_encoding).returns({"accept-encoding" => "gzip"})
345
-
346
- connection.expects(:get).with(anything, has_entry("accept-encoding" => "gzip")).returns(response)
291
+ it "should add Accept-Encoding header" do
292
+ @searcher.expects(:add_accept_encoding).returns({"accept-encoding" => "gzip"})
347
293
 
348
- terminus.find(request)
294
+ @connection.expects(:get).with { |path, args| args["accept-encoding"] == "gzip" }.returns(@response)
295
+ @searcher.find(@request)
349
296
  end
350
297
 
351
- it "uses only the mime-type from the content-type header when asking the model to deserialize" do
352
- response = mock_response('200', 'mydata', "text/plain; charset=utf-8")
353
- connection.expects(:get).returns(response)
354
-
355
- model.expects(:convert_from).with("text/plain", "mydata").returns "myobject"
356
-
357
- terminus.find(request).should == "myobject"
298
+ it "should deserialize and return the network response" do
299
+ @searcher.expects(:deserialize).with(@response).returns @instance
300
+ @searcher.find(@request).should equal(@instance)
358
301
  end
359
302
 
360
- it "decompresses the body before passing it to the model for deserialization" do
361
- uncompressed_body = "Why hello there"
362
- compressed_body = Zlib::Deflate.deflate(uncompressed_body)
363
-
364
- response = mock_response('200', compressed_body, 'text/plain', 'deflate')
365
- connection.expects(:get).returns(response)
366
-
367
- model.expects(:convert_from).with("text/plain", uncompressed_body).returns "myobject"
303
+ it "should set the name of the resulting instance to the asked-for name" do
304
+ @searcher.expects(:deserialize).with(@response).returns @instance
305
+ @instance.expects(:name=).with "foo bar"
306
+ @searcher.find(@request)
307
+ end
368
308
 
369
- terminus.find(request).should == "myobject"
309
+ it "should generate an error when result data deserializes fails" do
310
+ @searcher.expects(:deserialize).raises(ArgumentError)
311
+ lambda { @searcher.find(@request) }.should raise_error(ArgumentError)
370
312
  end
371
313
  end
372
314
 
373
- describe "#head" do
374
- let(:http_method) { :head }
375
- let(:response) { mock_response(200, nil) }
376
- let(:connection) { stub('mock http connection', :head => response, :verify_callback= => nil) }
377
- let(:request) { head_request('foo') }
378
-
315
+ describe "when doing a head" do
379
316
  before :each do
380
- terminus.stubs(:network).returns(connection)
317
+ @connection = stub('mock http connection', :head => @response, :verify_callback= => nil)
318
+ @searcher.stubs(:network).returns(@connection)
319
+
320
+ # Use a key with spaces, so we can test escaping
321
+ @request = Puppet::Indirector::Request.new(:foo, :head, "foo bar", nil)
381
322
  end
382
323
 
383
- it_behaves_like 'a REST terminus method', :head
324
+ it "should call the HEAD http method on a network connection" do
325
+ @searcher.expects(:network).returns @connection
326
+ @connection.expects(:head).returns @response
327
+ @searcher.head(@request)
328
+ end
384
329
 
385
- it "returns true if there was a successful http response" do
386
- connection.expects(:head).returns mock_response('200', nil)
330
+ it "should return true if there was a successful http response" do
331
+ @connection.expects(:head).returns @response
332
+ @response.stubs(:code).returns "200"
387
333
 
388
- terminus.head(request).should == true
334
+ @searcher.head(@request).should == true
389
335
  end
390
336
 
391
- it "returns false on a 404 response" do
392
- connection.expects(:head).returns mock_response('404', nil)
337
+ it "should return false if there was a successful http response" do
338
+ @connection.expects(:head).returns @response
339
+ @response.stubs(:code).returns "404"
393
340
 
394
- terminus.head(request).should == false
341
+ @searcher.head(@request).should == false
395
342
  end
396
- end
397
-
398
- describe "#search" do
399
- let(:http_method) { :get }
400
- let(:response) { mock_response(200, 'data1,data2,data3') }
401
- let(:connection) { stub('mock http connection', :get => response, :verify_callback= => nil) }
402
- let(:request) { search_request('foo') }
403
343
 
404
- before :each do
405
- terminus.stubs(:network).returns(connection)
344
+ it "should use the URI generated by the Handler module" do
345
+ @searcher.expects(:indirection2uri).with(@request).returns "/my/uri"
346
+ @connection.expects(:head).with { |path, args| path == "/my/uri" }.returns(@response)
347
+ @searcher.head(@request)
406
348
  end
349
+ end
407
350
 
408
- it_behaves_like 'a REST terminus method', :search
409
- it_behaves_like 'a deserializing terminus method', :search
351
+ describe "when doing a search" do
352
+ before :each do
353
+ @connection = stub('mock http connection', :get => @response, :verify_callback= => nil)
354
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
410
355
 
411
- it "should call the GET http method on a network connection" do
412
- connection.expects(:get).with('/production/test_models/foo', has_key('Accept')).returns mock_response(200, 'data3, data4')
356
+ @model.stubs(:convert_from_multiple)
413
357
 
414
- terminus.search(request)
358
+ @request = Puppet::Indirector::Request.new(:foo, :search, "foo bar", nil)
415
359
  end
416
360
 
417
- it "returns an empty list on 404" do
418
- response = mock_response('404', nil)
361
+ it "should call the GET http method on a network connection" do
362
+ @searcher.expects(:network).returns @connection
363
+ @connection.expects(:get).returns @response
364
+ @searcher.search(@request)
365
+ end
419
366
 
420
- connection.expects(:get).returns(response)
367
+ it "should deserialize as multiple instances and return the http response" do
368
+ @connection.expects(:get).returns @response
369
+ @searcher.expects(:deserialize).with(@response, true).returns "myobject"
421
370
 
422
- terminus.search(request).should == []
371
+ @searcher.search(@request).should == 'myobject'
423
372
  end
424
373
 
425
- it "asks the model to deserialize the response body into multiple instances" do
426
- terminus.search(request).should == [model.new('', 'data1'), model.new('', 'data2'), model.new('', 'data3')]
374
+ it "should use the URI generated by the Handler module" do
375
+ @searcher.expects(:indirection2uri).with(@request).returns "/mys/uri"
376
+ @connection.expects(:get).with { |path, args| path == "/mys/uri" }.returns(@response)
377
+ @searcher.search(@request)
427
378
  end
428
379
 
429
380
  it "should provide an Accept header containing the list of supported formats joined with commas" do
430
- connection.expects(:get).with(anything, has_entry("Accept" => "supported, formats")).returns(mock_response(200, ''))
381
+ @connection.expects(:get).with { |path, args| args["Accept"] == "supported, formats" }.returns(@response)
431
382
 
432
- terminus.model.expects(:supported_formats).returns %w{supported formats}
433
- terminus.search(request)
383
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
384
+ @searcher.search(@request)
434
385
  end
435
386
 
436
387
  it "should return an empty array if serialization returns nil" do
437
- model.stubs(:convert_from_multiple).returns nil
388
+ @model.stubs(:convert_from_multiple).returns nil
438
389
 
439
- terminus.search(request).should == []
390
+ @searcher.search(@request).should == []
440
391
  end
441
- end
442
392
 
443
- describe "#destroy" do
444
- let(:http_method) { :delete }
445
- let(:response) { mock_response(200, 'body') }
446
- let(:connection) { stub('mock http connection', :delete => response, :verify_callback= => nil) }
447
- let(:request) { delete_request('foo') }
393
+ it "should generate an error when result data deserializes fails" do
394
+ @searcher.expects(:deserialize).raises(ArgumentError)
395
+ lambda { @searcher.search(@request) }.should raise_error(ArgumentError)
396
+ end
397
+ end
448
398
 
399
+ describe "when doing a destroy" do
449
400
  before :each do
450
- terminus.stubs(:network).returns(connection)
451
- end
401
+ @connection = stub('mock http connection', :delete => @response, :verify_callback= => nil)
402
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
452
403
 
453
- it_behaves_like 'a REST terminus method', :destroy
454
- it_behaves_like 'a deserializing terminus method', :destroy
404
+ @request = Puppet::Indirector::Request.new(:foo, :destroy, "foo bar", nil)
405
+ end
455
406
 
456
407
  it "should call the DELETE http method on a network connection" do
457
- connection.expects(:delete).with('/production/test_model/foo', has_key('Accept')).returns(response)
458
-
459
- terminus.destroy(request)
408
+ @searcher.expects(:network).returns @connection
409
+ @connection.expects(:delete).returns @response
410
+ @searcher.destroy(@request)
460
411
  end
461
412
 
462
413
  it "should fail if any options are provided, since DELETE apparently does not support query options" do
463
- request = delete_request('foo', :one => "two", :three => "four")
414
+ @request.stubs(:options).returns(:one => "two", :three => "four")
464
415
 
465
- expect { terminus.destroy(request) }.to raise_error(ArgumentError)
416
+ lambda { @searcher.destroy(@request) }.should raise_error(ArgumentError)
466
417
  end
467
418
 
468
419
  it "should deserialize and return the http response" do
469
- connection.expects(:delete).returns response
420
+ @connection.expects(:delete).returns @response
421
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
470
422
 
471
- terminus.destroy(request).should == model.new('', 'body')
423
+ @searcher.destroy(@request).should == 'myobject'
472
424
  end
473
425
 
474
- it "returns nil on 404" do
475
- response = mock_response('404', nil)
476
-
477
- connection.expects(:delete).returns(response)
426
+ it "should use the URI generated by the Handler module" do
427
+ @searcher.expects(:indirection2uri).with(@request).returns "/my/uri"
428
+ @connection.expects(:delete).with { |path, args| path == "/my/uri" }.returns(@response)
429
+ @searcher.destroy(@request)
430
+ end
478
431
 
479
- terminus.destroy(request).should == nil
432
+ it "should not include the query string" do
433
+ @connection.stubs(:delete).returns @response
434
+ @searcher.destroy(@request)
480
435
  end
481
436
 
482
437
  it "should provide an Accept header containing the list of supported formats joined with commas" do
483
- connection.expects(:delete).with(anything, has_entry("Accept" => "supported, formats")).returns(response)
438
+ @connection.expects(:delete).with { |path, args| args["Accept"] == "supported, formats" }.returns(@response)
484
439
 
485
- terminus.model.expects(:supported_formats).returns %w{supported formats}
486
- terminus.destroy(request)
440
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
441
+ @searcher.destroy(@request)
487
442
  end
488
- end
489
443
 
490
- describe "#save" do
491
- let(:http_method) { :put }
492
- let(:response) { mock_response(200, 'body') }
493
- let(:connection) { stub('mock http connection', :put => response, :verify_callback= => nil) }
494
- let(:instance) { model.new('the thing', 'some contents') }
495
- let(:request) { save_request(instance.name, instance) }
444
+ it "should deserialize and return the network response" do
445
+ @searcher.expects(:deserialize).with(@response).returns @instance
446
+ @searcher.destroy(@request).should equal(@instance)
447
+ end
496
448
 
497
- before :each do
498
- terminus.stubs(:network).returns(connection)
449
+ it "should generate an error when result data deserializes fails" do
450
+ @searcher.expects(:deserialize).raises(ArgumentError)
451
+ lambda { @searcher.destroy(@request) }.should raise_error(ArgumentError)
499
452
  end
453
+ end
500
454
 
501
- it_behaves_like 'a REST terminus method', :save
455
+ describe "when doing a save" do
456
+ before :each do
457
+ @connection = stub('mock http connection', :put => @response, :verify_callback= => nil)
458
+ @searcher.stubs(:network).returns(@connection) # neuter the network connection
502
459
 
503
- it "should call the PUT http method on a network connection" do
504
- connection.expects(:put).with('/production/test_model/the%20thing', anything, has_key("Content-Type")).returns response
460
+ @instance = stub 'instance', :render => "mydata", :mime => "mime"
461
+ @request = Puppet::Indirector::Request.new(:foo, :save, "foo bar", nil)
462
+ @request.instance = @instance
463
+ end
505
464
 
506
- terminus.save(request)
465
+ it "should call the PUT http method on a network connection" do
466
+ @searcher.expects(:network).returns @connection
467
+ @connection.expects(:put).returns @response
468
+ @searcher.save(@request)
507
469
  end
508
470
 
509
- it "should fail if any options are provided, since PUT apparently does not support query options" do
510
- request = save_request(instance, :one => "two", :three => "four")
471
+ it "should fail if any options are provided, since DELETE apparently does not support query options" do
472
+ @request.stubs(:options).returns(:one => "two", :three => "four")
473
+
474
+ lambda { @searcher.save(@request) }.should raise_error(ArgumentError)
475
+ end
511
476
 
512
- expect { terminus.save(request) }.to raise_error(ArgumentError)
477
+ it "should use the URI generated by the Handler module" do
478
+ @searcher.expects(:indirection2uri).with(@request).returns "/my/uri"
479
+ @connection.expects(:put).with { |path, args| path == "/my/uri" }.returns(@response)
480
+ @searcher.save(@request)
513
481
  end
514
482
 
515
483
  it "should serialize the instance using the default format and pass the result as the body of the request" do
516
- instance.expects(:render).returns "serial_instance"
517
- connection.expects(:put).with(anything, "serial_instance", anything).returns response
484
+ @instance.expects(:render).returns "serial_instance"
485
+ @connection.expects(:put).with { |path, data, args| data == "serial_instance" }.returns @response
518
486
 
519
- terminus.save(request)
487
+ @searcher.save(@request)
520
488
  end
521
489
 
522
- it "returns nil on 404" do
523
- response = mock_response('404', nil)
524
-
525
- connection.expects(:put).returns(response)
490
+ it "should deserialize and return the http response" do
491
+ @connection.expects(:put).returns @response
492
+ @searcher.expects(:deserialize).with(@response).returns "myobject"
526
493
 
527
- terminus.save(request).should == nil
494
+ @searcher.save(@request).should == 'myobject'
528
495
  end
529
496
 
530
- it "returns nil" do
531
- connection.expects(:put).returns response
497
+ it "should provide an Accept header containing the list of supported formats joined with commas" do
498
+ @connection.expects(:put).with { |path, data, args| args["Accept"] == "supported, formats" }.returns(@response)
532
499
 
533
- terminus.save(request).should be_nil
500
+ @searcher.model.expects(:supported_formats).returns %w{supported formats}
501
+ @searcher.save(@request)
534
502
  end
535
503
 
536
- it "should provide an Accept header containing the list of supported formats joined with commas" do
537
- connection.expects(:put).with(anything, anything, has_entry("Accept" => "supported, formats")).returns(response)
504
+ it "should provide a Content-Type header containing the mime-type of the sent object" do
505
+ @connection.expects(:put).with { |path, data, args| args['Content-Type'] == "mime" }.returns(@response)
538
506
 
539
- instance.expects(:render).returns('')
540
- model.expects(:supported_formats).returns %w{supported formats}
541
- instance.expects(:mime).returns "supported"
507
+ @instance.expects(:mime).returns "mime"
508
+ @searcher.save(@request)
509
+ end
542
510
 
543
- terminus.save(request)
511
+ it "should deserialize and return the network response" do
512
+ @searcher.expects(:deserialize).with(@response).returns @instance
513
+ @searcher.save(@request).should equal(@instance)
544
514
  end
545
515
 
546
- it "should provide a Content-Type header containing the mime-type of the sent object" do
547
- instance.expects(:mime).returns "mime"
548
- connection.expects(:put).with(anything, anything, has_entry('Content-Type' => "mime")).returns(response)
516
+ it "should generate an error when result data deserializes fails" do
517
+ @searcher.expects(:deserialize).raises(ArgumentError)
518
+ lambda { @searcher.save(@request) }.should raise_error(ArgumentError)
519
+ end
520
+ end
549
521
 
550
- terminus.save(request)
522
+ context 'dealing with SRV settings' do
523
+ [
524
+ :destroy,
525
+ :find,
526
+ :head,
527
+ :save,
528
+ :search
529
+ ].each do |method|
530
+ it "##{method} passes the SRV service, and fall-back server & port to the request's do_request method" do
531
+ request = Puppet::Indirector::Request.new(:indirection, method, 'key', nil)
532
+ stub_response = stub 'response'
533
+ stub_response.stubs(:code).returns('200')
534
+ @searcher.stubs(:deserialize)
535
+
536
+ request.expects(:do_request).with(@searcher.class.srv_service, @searcher.class.server, @searcher.class.port).returns(stub_response)
537
+
538
+ @searcher.send(method, request)
539
+ end
551
540
  end
552
541
  end
553
542
  end