puppet 3.3.2 → 3.4.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (589) hide show
  1. data/CONTRIBUTING.md +22 -0
  2. data/Gemfile +11 -2
  3. data/README.md +13 -17
  4. data/README_DEVELOPER.md +1 -1
  5. data/Rakefile +1 -1
  6. data/examples/hiera/README.md +4 -4
  7. data/ext/debian/puppetmaster.init +1 -0
  8. data/ext/debian/rules +2 -5
  9. data/ext/nagios/check_puppet.rb +7 -7
  10. data/ext/osx/file_mapping.yaml +1 -1
  11. data/ext/osx/preflight.erb +34 -19
  12. data/ext/rack/{files/config.ru → config.ru} +0 -0
  13. data/ext/rack/{files/apache2.conf → example-passenger-vhost.conf} +6 -0
  14. data/ext/redhat/puppet.spec.erb +20 -2
  15. data/ext/systemd/{puppetagent.service → puppet.service} +0 -0
  16. data/lib/hiera_puppet.rb +2 -2
  17. data/lib/puppet/agent.rb +1 -6
  18. data/lib/puppet/application.rb +15 -2
  19. data/lib/puppet/application/agent.rb +2 -7
  20. data/lib/puppet/application/apply.rb +8 -13
  21. data/lib/puppet/application/cert.rb +47 -7
  22. data/lib/puppet/application/device.rb +1 -6
  23. data/lib/puppet/application/face_base.rb +1 -1
  24. data/lib/puppet/application/filebucket.rb +1 -1
  25. data/lib/puppet/application/inspect.rb +3 -12
  26. data/lib/puppet/application/master.rb +1 -6
  27. data/lib/puppet/application/queue.rb +1 -6
  28. data/lib/puppet/application/resource.rb +2 -6
  29. data/lib/puppet/coercion.rb +11 -0
  30. data/lib/puppet/configurer.rb +5 -3
  31. data/lib/puppet/configurer/downloader.rb +3 -1
  32. data/lib/puppet/configurer/plugin_handler.rb +10 -0
  33. data/lib/puppet/confine.rb +80 -0
  34. data/lib/puppet/{provider/confine → confine}/exists.rb +3 -3
  35. data/lib/puppet/{provider/confine → confine}/false.rb +2 -2
  36. data/lib/puppet/{provider/confine → confine}/feature.rb +2 -2
  37. data/lib/puppet/{provider/confine → confine}/true.rb +2 -2
  38. data/lib/puppet/{provider/confine → confine}/variable.rb +2 -2
  39. data/lib/puppet/{provider/confine_collection.rb → confine_collection.rb} +4 -4
  40. data/lib/puppet/{provider/confiner.rb → confiner.rb} +4 -4
  41. data/lib/puppet/daemon.rb +2 -6
  42. data/lib/puppet/data_binding.rb +2 -30
  43. data/lib/puppet/defaults.rb +283 -174
  44. data/lib/puppet/error.rb +1 -0
  45. data/lib/puppet/external/nagios.rb +0 -2
  46. data/lib/puppet/external/nagios/base.rb +4 -3
  47. data/lib/puppet/external/nagios/grammar.ry +173 -112
  48. data/lib/puppet/external/nagios/parser.rb +233 -184
  49. data/lib/puppet/face/file/store.rb +1 -1
  50. data/lib/puppet/face/module/generate.rb +5 -7
  51. data/lib/puppet/face/parser.rb +12 -2
  52. data/lib/puppet/face/plugin.rb +6 -0
  53. data/lib/puppet/feature/base.rb +16 -0
  54. data/lib/puppet/feature/external_facts.rb +5 -0
  55. data/lib/puppet/feature/libuser.rb +1 -1
  56. data/lib/puppet/feature/msgpack.rb +1 -0
  57. data/lib/puppet/feature/rails.rb +2 -2
  58. data/lib/puppet/file_bucket/dipper.rb +8 -6
  59. data/lib/puppet/file_bucket/file.rb +17 -1
  60. data/lib/puppet/file_serving/base.rb +21 -10
  61. data/lib/puppet/file_serving/configuration.rb +5 -7
  62. data/lib/puppet/file_serving/configuration/parser.rb +1 -1
  63. data/lib/puppet/file_serving/content.rb +1 -1
  64. data/lib/puppet/file_serving/fileset.rb +3 -3
  65. data/lib/puppet/file_serving/metadata.rb +22 -18
  66. data/lib/puppet/file_serving/mount/file.rb +1 -1
  67. data/lib/puppet/file_serving/mount/pluginfacts.rb +35 -0
  68. data/lib/puppet/file_system.rb +3 -0
  69. data/lib/puppet/file_system/file.rb +261 -0
  70. data/lib/puppet/file_system/file18.rb +5 -0
  71. data/lib/puppet/file_system/file19.rb +5 -0
  72. data/lib/puppet/file_system/file19windows.rb +113 -0
  73. data/lib/puppet/file_system/memory_file.rb +31 -0
  74. data/lib/puppet/file_system/tempfile.rb +20 -0
  75. data/lib/puppet/indirector/active_record.rb +1 -0
  76. data/lib/puppet/indirector/catalog/compiler.rb +28 -0
  77. data/lib/puppet/indirector/certificate_request/memory.rb +6 -0
  78. data/lib/puppet/indirector/data_binding/hiera.rb +46 -2
  79. data/lib/puppet/indirector/direct_file_server.rb +2 -2
  80. data/lib/puppet/indirector/facts/facter.rb +25 -0
  81. data/lib/puppet/indirector/file_bucket_file/file.rb +60 -74
  82. data/lib/puppet/indirector/indirection.rb +5 -1
  83. data/lib/puppet/indirector/json.rb +1 -1
  84. data/lib/puppet/indirector/key/ca.rb +4 -0
  85. data/lib/puppet/indirector/key/file.rb +7 -3
  86. data/lib/puppet/indirector/key/memory.rb +6 -0
  87. data/lib/puppet/indirector/node/write_only_yaml.rb +2 -2
  88. data/lib/puppet/indirector/request.rb +17 -11
  89. data/lib/puppet/indirector/resource/ral.rb +5 -0
  90. data/lib/puppet/indirector/resource/rest.rb +1 -0
  91. data/lib/puppet/indirector/resource/store_configs.rb +4 -0
  92. data/lib/puppet/indirector/rest.rb +2 -1
  93. data/lib/puppet/indirector/ssl_file.rb +7 -7
  94. data/lib/puppet/indirector/terminus.rb +4 -0
  95. data/lib/puppet/indirector/yaml.rb +3 -3
  96. data/lib/puppet/interface/documentation.rb +4 -11
  97. data/lib/puppet/module.rb +19 -6
  98. data/lib/puppet/module_tool/applications/builder.rb +1 -1
  99. data/lib/puppet/module_tool/applications/installer.rb +1 -1
  100. data/lib/puppet/module_tool/checksums.rb +1 -1
  101. data/lib/puppet/module_tool/dependency.rb +7 -3
  102. data/lib/puppet/module_tool/metadata.rb +6 -2
  103. data/lib/puppet/module_tool/tar.rb +2 -1
  104. data/lib/puppet/module_tool/tar/gnu.rb +6 -2
  105. data/lib/puppet/module_tool/tar/mini.rb +2 -0
  106. data/lib/puppet/module_tool/tar/solaris.rb +2 -5
  107. data/lib/puppet/network/authconfig.rb +0 -2
  108. data/lib/puppet/network/authentication.rb +1 -1
  109. data/lib/puppet/network/authstore.rb +6 -7
  110. data/lib/puppet/network/format.rb +2 -3
  111. data/lib/puppet/network/format_handler.rb +16 -11
  112. data/lib/puppet/network/format_support.rb +14 -0
  113. data/lib/puppet/network/formats.rb +26 -0
  114. data/lib/puppet/network/http/connection.rb +8 -41
  115. data/lib/puppet/network/http/handler.rb +28 -32
  116. data/lib/puppet/network/http/webrick.rb +15 -22
  117. data/lib/puppet/network/http_pool.rb +43 -9
  118. data/lib/puppet/network/rights.rb +0 -0
  119. data/lib/puppet/node.rb +24 -8
  120. data/lib/puppet/node/environment.rb +18 -20
  121. data/lib/puppet/node/facts.rb +23 -6
  122. data/lib/puppet/parameter.rb +15 -2
  123. data/lib/puppet/parameter/boolean.rb +5 -0
  124. data/lib/puppet/parameter/value_collection.rb +6 -4
  125. data/lib/puppet/parser/ast/resourceparam.rb +2 -1
  126. data/lib/puppet/parser/compiler.rb +25 -9
  127. data/lib/puppet/parser/files.rb +1 -1
  128. data/lib/puppet/parser/functions.rb +12 -21
  129. data/lib/puppet/parser/functions/collect.rb +6 -35
  130. data/lib/puppet/parser/functions/contain.rb +26 -0
  131. data/lib/puppet/parser/functions/create_resources.rb +5 -0
  132. data/lib/puppet/parser/functions/extlookup.rb +2 -2
  133. data/lib/puppet/parser/functions/file.rb +1 -1
  134. data/lib/puppet/parser/functions/{reject.rb → filter.rb} +13 -12
  135. data/lib/puppet/parser/functions/fqdn_rand.rb +13 -5
  136. data/lib/puppet/parser/functions/include.rb +18 -1
  137. data/lib/puppet/parser/functions/map.rb +44 -0
  138. data/lib/puppet/parser/functions/select.rb +6 -38
  139. data/lib/puppet/parser/lexer.rb +1 -1
  140. data/lib/puppet/parser/parser_support.rb +1 -1
  141. data/lib/puppet/parser/resource.rb +6 -45
  142. data/lib/puppet/parser/scope.rb +33 -2
  143. data/lib/puppet/parser/type_loader.rb +4 -60
  144. data/lib/puppet/pops/binder/bindings_loader.rb +1 -1
  145. data/lib/puppet/pops/binder/config/binder_config.rb +3 -3
  146. data/lib/puppet/pops/binder/hiera2/bindings_provider.rb +1 -1
  147. data/lib/puppet/pops/binder/scheme_handler/confdir_hiera_scheme.rb +1 -1
  148. data/lib/puppet/pops/binder/scheme_handler/module_hiera_scheme.rb +2 -2
  149. data/lib/puppet/pops/issues.rb +4 -0
  150. data/lib/puppet/pops/model/ast_transformer.rb +4 -1
  151. data/lib/puppet/pops/model/model_label_provider.rb +1 -1
  152. data/lib/puppet/pops/parser/egrammar.ra +5 -24
  153. data/lib/puppet/pops/parser/eparser.rb +859 -902
  154. data/lib/puppet/pops/parser/lexer.rb +48 -30
  155. data/lib/puppet/pops/parser/parser_support.rb +1 -1
  156. data/lib/puppet/pops/patterns.rb +4 -4
  157. data/lib/puppet/pops/utils.rb +1 -1
  158. data/lib/puppet/pops/validation/checker3_1.rb +25 -20
  159. data/lib/puppet/provider.rb +23 -6
  160. data/lib/puppet/provider/aixobject.rb +0 -0
  161. data/lib/puppet/provider/augeas/augeas.rb +21 -5
  162. data/lib/puppet/provider/confine.rb +5 -79
  163. data/lib/puppet/provider/cron/crontab.rb +0 -0
  164. data/lib/puppet/provider/exec.rb +9 -7
  165. data/lib/puppet/provider/exec/posix.rb +10 -1
  166. data/lib/puppet/provider/exec/windows.rb +1 -1
  167. data/lib/puppet/provider/file/posix.rb +1 -0
  168. data/lib/puppet/provider/file/windows.rb +16 -5
  169. data/lib/puppet/provider/group/aix.rb +0 -0
  170. data/lib/puppet/provider/group/windows_adsi.rb +33 -1
  171. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  172. data/lib/puppet/provider/mailalias/aliases.rb +0 -0
  173. data/lib/puppet/provider/maillist/mailman.rb +0 -0
  174. data/lib/puppet/provider/mount/parsed.rb +0 -0
  175. data/lib/puppet/provider/nameservice/directoryservice.rb +3 -3
  176. data/lib/puppet/provider/package/appdmg.rb +1 -1
  177. data/lib/puppet/provider/package/apple.rb +1 -1
  178. data/lib/puppet/provider/package/apt.rb +1 -1
  179. data/lib/puppet/provider/package/aptitude.rb +0 -0
  180. data/lib/puppet/provider/package/blastwave.rb +1 -1
  181. data/lib/puppet/provider/package/dpkg.rb +1 -1
  182. data/lib/puppet/provider/package/fink.rb +1 -1
  183. data/lib/puppet/provider/package/freebsd.rb +0 -0
  184. data/lib/puppet/provider/package/gem.rb +0 -0
  185. data/lib/puppet/provider/package/macports.rb +0 -0
  186. data/lib/puppet/provider/package/msi.rb +4 -10
  187. data/lib/puppet/provider/package/nim.rb +8 -8
  188. data/lib/puppet/provider/package/openbsd.rb +1 -1
  189. data/lib/puppet/provider/package/opkg.rb +0 -0
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  192. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  193. data/lib/puppet/provider/package/ports.rb +0 -0
  194. data/lib/puppet/provider/package/rpm.rb +39 -3
  195. data/lib/puppet/provider/package/sun.rb +3 -3
  196. data/lib/puppet/provider/package/sunfreeware.rb +0 -0
  197. data/lib/puppet/provider/package/windows.rb +12 -19
  198. data/lib/puppet/provider/package/windows/package.rb +1 -1
  199. data/lib/puppet/provider/package/yum.rb +2 -2
  200. data/lib/puppet/provider/parsedfile.rb +0 -0
  201. data/lib/puppet/provider/port/parsed.rb +0 -0
  202. data/lib/puppet/provider/service/base.rb +0 -0
  203. data/lib/puppet/provider/service/bsd.rb +3 -3
  204. data/lib/puppet/provider/service/daemontools.rb +8 -8
  205. data/lib/puppet/provider/service/debian.rb +0 -0
  206. data/lib/puppet/provider/service/freebsd.rb +3 -3
  207. data/lib/puppet/provider/service/init.rb +5 -4
  208. data/lib/puppet/provider/service/launchd.rb +35 -24
  209. data/lib/puppet/provider/service/openbsd.rb +23 -0
  210. data/lib/puppet/provider/service/redhat.rb +0 -0
  211. data/lib/puppet/provider/service/runit.rb +3 -3
  212. data/lib/puppet/provider/service/smf.rb +0 -0
  213. data/lib/puppet/provider/service/src.rb +0 -0
  214. data/lib/puppet/provider/service/systemd.rb +0 -0
  215. data/lib/puppet/provider/service/upstart.rb +3 -3
  216. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +2 -2
  217. data/lib/puppet/provider/sshkey/parsed.rb +0 -0
  218. data/lib/puppet/provider/user/aix.rb +0 -0
  219. data/lib/puppet/provider/user/directoryservice.rb +1 -1
  220. data/lib/puppet/provider/user/useradd.rb +1 -1
  221. data/lib/puppet/provider/zone/solaris.rb +1 -1
  222. data/lib/puppet/rails/benchmark.rb +1 -1
  223. data/lib/puppet/reference/configuration.rb +1 -2
  224. data/lib/puppet/reference/indirection.rb +12 -14
  225. data/lib/puppet/relationship.rb +7 -4
  226. data/lib/puppet/reports.rb +2 -2
  227. data/lib/puppet/reports/rrdgraph.rb +1 -1
  228. data/lib/puppet/reports/store.rb +3 -3
  229. data/lib/puppet/reports/tagmail.rb +2 -2
  230. data/lib/puppet/resource.rb +66 -8
  231. data/lib/puppet/resource/catalog.rb +18 -25
  232. data/lib/puppet/resource/status.rb +10 -4
  233. data/lib/puppet/run.rb +6 -2
  234. data/lib/puppet/settings.rb +39 -119
  235. data/lib/puppet/settings/base_setting.rb +8 -9
  236. data/lib/puppet/settings/directory_setting.rb +8 -0
  237. data/lib/puppet/settings/file_setting.rb +35 -1
  238. data/lib/puppet/settings/priority_setting.rb +42 -0
  239. data/lib/puppet/ssl.rb +4 -0
  240. data/lib/puppet/ssl/certificate.rb +18 -0
  241. data/lib/puppet/ssl/certificate_authority.rb +101 -72
  242. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +44 -0
  243. data/lib/puppet/ssl/certificate_authority/interface.rb +21 -17
  244. data/lib/puppet/ssl/certificate_factory.rb +38 -12
  245. data/lib/puppet/ssl/certificate_request.rb +201 -47
  246. data/lib/puppet/ssl/certificate_request_attributes.rb +34 -0
  247. data/lib/puppet/ssl/certificate_revocation_list.rb +2 -2
  248. data/lib/puppet/ssl/host.rb +21 -10
  249. data/lib/puppet/ssl/inventory.rb +6 -10
  250. data/lib/puppet/ssl/key.rb +1 -1
  251. data/lib/puppet/ssl/oids.rb +78 -0
  252. data/lib/puppet/ssl/validator.rb +41 -97
  253. data/lib/puppet/ssl/validator/default_validator.rb +153 -0
  254. data/lib/puppet/ssl/validator/no_validator.rb +17 -0
  255. data/lib/puppet/status.rb +4 -0
  256. data/lib/puppet/test/test_helper.rb +5 -0
  257. data/lib/puppet/transaction.rb +13 -0
  258. data/lib/puppet/transaction/event.rb +8 -3
  259. data/lib/puppet/transaction/report.rb +6 -2
  260. data/lib/puppet/transaction/resource_harness.rb +173 -115
  261. data/lib/puppet/type.rb +30 -13
  262. data/lib/puppet/type/augeas.rb +12 -46
  263. data/lib/puppet/type/component.rb +1 -7
  264. data/lib/puppet/type/cron.rb +0 -0
  265. data/lib/puppet/type/exec.rb +13 -1
  266. data/lib/puppet/type/file.rb +19 -10
  267. data/lib/puppet/type/file/checksum.rb +0 -0
  268. data/lib/puppet/type/file/content.rb +3 -0
  269. data/lib/puppet/type/file/ensure.rb +33 -15
  270. data/lib/puppet/type/file/group.rb +0 -0
  271. data/lib/puppet/type/file/mode.rb +6 -2
  272. data/lib/puppet/type/file/owner.rb +0 -0
  273. data/lib/puppet/type/file/source.rb +65 -14
  274. data/lib/puppet/type/file/target.rb +6 -6
  275. data/lib/puppet/type/file/type.rb +0 -0
  276. data/lib/puppet/type/filebucket.rb +0 -0
  277. data/lib/puppet/type/group.rb +18 -0
  278. data/lib/puppet/type/host.rb +0 -0
  279. data/lib/puppet/type/k5login.rb +4 -4
  280. data/lib/puppet/type/mailalias.rb +0 -0
  281. data/lib/puppet/type/maillist.rb +0 -0
  282. data/lib/puppet/type/mount.rb +15 -1
  283. data/lib/puppet/type/package.rb +7 -1
  284. data/lib/puppet/type/port.rb +0 -0
  285. data/lib/puppet/type/schedule.rb +9 -4
  286. data/lib/puppet/type/service.rb +1 -1
  287. data/lib/puppet/type/sshkey.rb +0 -0
  288. data/lib/puppet/type/tidy.rb +1 -1
  289. data/lib/puppet/type/user.rb +3 -0
  290. data/lib/puppet/type/yumrepo.rb +8 -6
  291. data/lib/puppet/type/zpool.rb +0 -0
  292. data/lib/puppet/util.rb +4 -31
  293. data/lib/puppet/util/adsi.rb +73 -17
  294. data/lib/puppet/util/autoload.rb +3 -3
  295. data/lib/puppet/util/backups.rb +4 -4
  296. data/lib/puppet/util/cacher.rb +7 -13
  297. data/lib/puppet/util/checksums.rb +2 -2
  298. data/lib/puppet/util/classgen.rb +3 -1
  299. data/lib/puppet/util/colors.rb +1 -0
  300. data/lib/puppet/util/command_line.rb +5 -0
  301. data/lib/puppet/util/docs.rb +33 -27
  302. data/lib/puppet/util/execution.rb +42 -18
  303. data/lib/puppet/util/filetype.rb +3 -3
  304. data/lib/puppet/util/instance_loader.rb +2 -2
  305. data/lib/puppet/util/instrumentation.rb +23 -42
  306. data/lib/puppet/util/instrumentation/data.rb +11 -4
  307. data/lib/puppet/util/instrumentation/indirection_probe.rb +11 -4
  308. data/lib/puppet/util/instrumentation/instrumentable.rb +7 -14
  309. data/lib/puppet/util/instrumentation/listener.rb +15 -8
  310. data/lib/puppet/util/instrumentation/listeners/log.rb +4 -10
  311. data/lib/puppet/util/instrumentation/listeners/performance.rb +8 -14
  312. data/lib/puppet/util/limits.rb +12 -0
  313. data/lib/puppet/util/lockfile.rb +2 -2
  314. data/lib/puppet/util/log.rb +14 -6
  315. data/lib/puppet/util/log/destinations.rb +23 -1
  316. data/lib/puppet/util/metric.rb +9 -3
  317. data/lib/puppet/util/monkey_patches.rb +7 -2
  318. data/lib/puppet/util/network_device/config.rb +1 -1
  319. data/lib/puppet/util/plugins.rb +1 -1
  320. data/lib/puppet/util/posix.rb +0 -0
  321. data/lib/puppet/util/profiler.rb +7 -2
  322. data/lib/puppet/util/provider_features.rb +2 -2
  323. data/lib/puppet/util/rdoc.rb +28 -30
  324. data/lib/puppet/util/rdoc/code_objects.rb +75 -25
  325. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +1 -1
  326. data/lib/puppet/util/rdoc/parser.rb +12 -487
  327. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +477 -0
  328. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc1.rb +19 -0
  329. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +14 -0
  330. data/lib/puppet/util/reference.rb +1 -1
  331. data/lib/puppet/util/resource_template.rb +1 -1
  332. data/lib/puppet/util/selinux.rb +1 -1
  333. data/lib/puppet/util/storage.rb +2 -2
  334. data/lib/puppet/util/suidmanager.rb +1 -1
  335. data/lib/puppet/util/tag_set.rb +29 -0
  336. data/lib/puppet/util/tagging.rb +8 -24
  337. data/lib/puppet/util/watched_file.rb +1 -1
  338. data/lib/puppet/util/watcher.rb +1 -1
  339. data/lib/puppet/util/windows.rb +3 -0
  340. data/lib/puppet/util/windows/access_control_entry.rb +84 -0
  341. data/lib/puppet/util/windows/access_control_list.rb +106 -0
  342. data/lib/puppet/util/windows/file.rb +213 -0
  343. data/lib/puppet/util/windows/process.rb +199 -0
  344. data/lib/puppet/util/windows/root_certs.rb +52 -37
  345. data/lib/puppet/util/windows/security.rb +270 -245
  346. data/lib/puppet/util/windows/security_descriptor.rb +62 -0
  347. data/lib/puppet/util/windows/sid.rb +26 -4
  348. data/lib/puppet/version.rb +2 -2
  349. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +1 -1
  350. data/spec/fixtures/unit/indirector/{hiera → data_binding/hiera}/global.yaml +0 -0
  351. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +1 -0
  352. data/spec/fixtures/unit/module/trailing-comma.json +24 -0
  353. data/spec/fixtures/unit/util/monkey_patches/x509.pem +32 -0
  354. data/spec/integration/application/apply_spec.rb +1 -1
  355. data/spec/integration/application/doc_spec.rb +1 -1
  356. data/spec/integration/configurer_spec.rb +4 -2
  357. data/spec/integration/data_binding.rb +100 -0
  358. data/spec/integration/indirector/catalog/compiler_spec.rb +16 -13
  359. data/spec/integration/indirector/direct_file_server_spec.rb +3 -5
  360. data/spec/integration/indirector/file_content/file_server_spec.rb +2 -2
  361. data/spec/integration/node/facts_spec.rb +1 -1
  362. data/spec/integration/node_spec.rb +1 -1
  363. data/spec/integration/parser/compiler_spec.rb +90 -0
  364. data/spec/integration/parser/parser_spec.rb +2 -2
  365. data/spec/integration/provider/cron/crontab_spec.rb +3 -5
  366. data/spec/integration/resource/catalog_spec.rb +1 -1
  367. data/spec/integration/ssl/autosign_spec.rb +90 -0
  368. data/spec/integration/ssl/certificate_authority_spec.rb +62 -69
  369. data/spec/integration/ssl/certificate_revocation_list_spec.rb +1 -1
  370. data/spec/integration/ssl/host_spec.rb +1 -1
  371. data/spec/integration/transaction_spec.rb +13 -13
  372. data/spec/integration/type/exec_spec.rb +2 -2
  373. data/spec/integration/type/file_spec.rb +287 -45
  374. data/spec/integration/type/tidy_spec.rb +3 -3
  375. data/spec/integration/util/rdoc/parser_spec.rb +236 -35
  376. data/spec/integration/util/settings_spec.rb +1 -1
  377. data/spec/integration/util/windows/process_spec.rb +22 -0
  378. data/spec/integration/util/windows/security_spec.rb +316 -106
  379. data/spec/lib/matchers/containment_matchers.rb +52 -0
  380. data/spec/lib/puppet_spec/compiler.rb +6 -0
  381. data/spec/lib/puppet_spec/files.rb +20 -21
  382. data/spec/shared_behaviours/documentation_on_faces.rb +3 -3
  383. data/spec/shared_behaviours/file_server_terminus.rb +2 -2
  384. data/spec/shared_contexts/platform.rb +1 -0
  385. data/spec/spec_helper.rb +13 -1
  386. data/spec/unit/agent_spec.rb +0 -12
  387. data/spec/unit/application/agent_spec.rb +4 -4
  388. data/spec/unit/application/apply_spec.rb +18 -2
  389. data/spec/unit/application/cert_spec.rb +8 -6
  390. data/spec/unit/application/device_spec.rb +1 -1
  391. data/spec/unit/application/filebucket_spec.rb +1 -1
  392. data/spec/unit/application/inspect_spec.rb +1 -1
  393. data/spec/unit/application_spec.rb +24 -0
  394. data/spec/unit/configurer/downloader_spec.rb +8 -7
  395. data/spec/unit/configurer/fact_handler_spec.rb +23 -0
  396. data/spec/unit/configurer/plugin_handler_spec.rb +7 -2
  397. data/spec/unit/configurer_spec.rb +15 -5
  398. data/spec/unit/{provider/confine → confine}/exists_spec.rb +12 -12
  399. data/spec/unit/{provider/confine → confine}/false_spec.rb +9 -9
  400. data/spec/unit/{provider/confine → confine}/feature_spec.rb +10 -10
  401. data/spec/unit/{provider/confine → confine}/true_spec.rb +7 -7
  402. data/spec/unit/{provider/confine → confine}/variable_spec.rb +16 -16
  403. data/spec/unit/{provider/confine_collection_spec.rb → confine_collection_spec.rb} +30 -30
  404. data/spec/unit/{provider/confine_spec.rb → confine_spec.rb} +11 -11
  405. data/spec/unit/{provider/confiner_spec.rb → confiner_spec.rb} +4 -4
  406. data/spec/unit/face/parser_spec.rb +54 -0
  407. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  408. data/spec/unit/file_serving/base_spec.rb +32 -9
  409. data/spec/unit/file_serving/configuration_spec.rb +7 -7
  410. data/spec/unit/file_serving/content_spec.rb +12 -7
  411. data/spec/unit/file_serving/fileset_spec.rb +57 -27
  412. data/spec/unit/file_serving/metadata_spec.rb +74 -12
  413. data/spec/unit/file_serving/mount/file_spec.rb +10 -10
  414. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +73 -0
  415. data/spec/unit/file_system/file_spec.rb +486 -0
  416. data/spec/unit/file_system/tempfile_spec.rb +48 -0
  417. data/spec/unit/graph/relationship_graph_spec.rb +0 -6
  418. data/spec/unit/hiera_puppet_spec.rb +2 -2
  419. data/spec/unit/indirector/catalog/compiler_spec.rb +15 -19
  420. data/spec/unit/indirector/certificate_status/file_spec.rb +30 -40
  421. data/spec/unit/indirector/data_binding/hiera_spec.rb +95 -2
  422. data/spec/unit/indirector/direct_file_server_spec.rb +6 -6
  423. data/spec/unit/indirector/facts/facter_spec.rb +33 -0
  424. data/spec/unit/indirector/file_bucket_file/file_spec.rb +61 -52
  425. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  426. data/spec/unit/indirector/file_server_spec.rb +4 -4
  427. data/spec/unit/indirector/json_spec.rb +4 -4
  428. data/spec/unit/indirector/key/file_spec.rb +13 -14
  429. data/spec/unit/indirector/resource/ral_spec.rb +7 -0
  430. data/spec/unit/indirector/resource/store_configs_spec.rb +11 -0
  431. data/spec/unit/indirector/rest_spec.rb +7 -3
  432. data/spec/unit/indirector/ssl_file_spec.rb +14 -17
  433. data/spec/unit/indirector/yaml_spec.rb +4 -4
  434. data/spec/unit/module_spec.rb +43 -15
  435. data/spec/unit/module_tool/tar/gnu_spec.rb +2 -2
  436. data/spec/unit/module_tool/tar/solaris_spec.rb +2 -2
  437. data/spec/unit/module_tool/tar_spec.rb +45 -0
  438. data/spec/unit/network/authconfig_spec.rb +2 -1
  439. data/spec/unit/network/authentication_spec.rb +2 -2
  440. data/spec/unit/network/format_handler_spec.rb +2 -2
  441. data/spec/unit/network/formats_spec.rb +24 -0
  442. data/spec/unit/network/http/connection_spec.rb +76 -199
  443. data/spec/unit/network/http/handler_spec.rb +33 -34
  444. data/spec/unit/network/http_pool_spec.rb +8 -5
  445. data/spec/unit/node/environment_spec.rb +76 -90
  446. data/spec/unit/node/facts_spec.rb +20 -3
  447. data/spec/unit/node_spec.rb +43 -0
  448. data/spec/unit/parameter/boolean_spec.rb +22 -12
  449. data/spec/unit/parser/ast/resourceparam_spec.rb +51 -0
  450. data/spec/unit/parser/compiler_spec.rb +103 -35
  451. data/spec/unit/parser/eparser_adapter_spec.rb +12 -12
  452. data/spec/unit/parser/files_spec.rb +11 -11
  453. data/spec/unit/parser/functions/contain_spec.rb +185 -0
  454. data/spec/unit/parser/functions/create_resources_spec.rb +13 -5
  455. data/spec/unit/parser/functions/generate_spec.rb +1 -1
  456. data/spec/unit/parser/functions_spec.rb +2 -2
  457. data/spec/unit/parser/lexer_spec.rb +1 -1
  458. data/spec/unit/parser/methods/each_spec.rb +1 -1
  459. data/spec/unit/parser/methods/{select_spec.rb → filter_spec.rb} +11 -11
  460. data/spec/unit/parser/methods/map_spec.rb +95 -0
  461. data/spec/unit/parser/methods/reduce_spec.rb +12 -11
  462. data/spec/unit/parser/methods/shared.rb +5 -5
  463. data/spec/unit/parser/methods/slice_spec.rb +13 -13
  464. data/spec/unit/parser/parser_spec.rb +1 -1
  465. data/spec/unit/parser/resource/param_spec.rb +44 -0
  466. data/spec/unit/parser/resource_spec.rb +16 -15
  467. data/spec/unit/pops/model/ast_transformer_spec.rb +18 -4
  468. data/spec/unit/pops/parser/lexer_spec.rb +22 -5
  469. data/spec/unit/pops/parser/parse_calls_spec.rb +5 -5
  470. data/spec/unit/pops/transformer/transform_calls_spec.rb +6 -6
  471. data/spec/unit/pops/transformer/transform_containers_spec.rb +2 -2
  472. data/spec/unit/pops/validator/validator_spec.rb +31 -0
  473. data/spec/unit/provider/augeas/augeas_spec.rb +57 -2
  474. data/spec/unit/provider/exec/posix_spec.rb +8 -3
  475. data/spec/unit/provider/file/posix_spec.rb +2 -2
  476. data/spec/unit/provider/group/windows_adsi_spec.rb +70 -3
  477. data/spec/unit/provider/nameservice/directoryservice_spec.rb +3 -3
  478. data/spec/unit/provider/package/apt_spec.rb +1 -1
  479. data/spec/unit/provider/package/msi_spec.rb +15 -42
  480. data/spec/unit/provider/package/openbsd_spec.rb +3 -3
  481. data/spec/unit/provider/package/rpm_spec.rb +56 -13
  482. data/spec/unit/provider/package/windows_spec.rb +15 -19
  483. data/spec/unit/provider/service/base_spec.rb +1 -1
  484. data/spec/unit/provider/service/daemontools_spec.rb +18 -8
  485. data/spec/unit/provider/service/freebsd_spec.rb +3 -3
  486. data/spec/unit/provider/service/gentoo_spec.rb +5 -2
  487. data/spec/unit/provider/service/init_spec.rb +17 -17
  488. data/spec/unit/provider/service/launchd_spec.rb +76 -23
  489. data/spec/unit/provider/service/openbsd_spec.rb +125 -0
  490. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  491. data/spec/unit/provider/service/runit_spec.rb +12 -5
  492. data/spec/unit/provider/service/upstart_spec.rb +4 -4
  493. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +5 -5
  494. data/spec/unit/provider/user/directoryservice_spec.rb +4 -4
  495. data/spec/unit/provider/zone/solaris_spec.rb +1 -1
  496. data/spec/unit/provider_spec.rb +2 -2
  497. data/spec/unit/reports/http_spec.rb +19 -34
  498. data/spec/unit/reports/store_spec.rb +2 -2
  499. data/spec/unit/resource/catalog_spec.rb +81 -11
  500. data/spec/unit/resource/status_spec.rb +11 -1
  501. data/spec/unit/resource/type_spec.rb +30 -1
  502. data/spec/unit/resource_spec.rb +40 -4
  503. data/spec/unit/settings/file_setting_spec.rb +2 -2
  504. data/spec/unit/settings/path_setting_spec.rb +2 -2
  505. data/spec/unit/settings/priority_setting_spec.rb +66 -0
  506. data/spec/unit/settings_spec.rb +16 -31
  507. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +30 -0
  508. data/spec/unit/ssl/certificate_authority_spec.rb +129 -134
  509. data/spec/unit/ssl/certificate_factory_spec.rb +18 -0
  510. data/spec/unit/ssl/certificate_request_attributes_spec.rb +61 -0
  511. data/spec/unit/ssl/certificate_request_spec.rb +103 -0
  512. data/spec/unit/ssl/certificate_spec.rb +31 -18
  513. data/spec/unit/ssl/host_spec.rb +34 -8
  514. data/spec/unit/ssl/inventory_spec.rb +27 -62
  515. data/spec/unit/ssl/key_spec.rb +4 -4
  516. data/spec/unit/ssl/oids_spec.rb +48 -0
  517. data/spec/unit/ssl/validator_spec.rb +49 -6
  518. data/spec/unit/status_spec.rb +9 -0
  519. data/spec/unit/transaction/event_spec.rb +1 -9
  520. data/spec/unit/transaction/report_spec.rb +20 -1
  521. data/spec/unit/transaction/resource_harness_spec.rb +60 -210
  522. data/spec/unit/transaction_spec.rb +54 -8
  523. data/spec/unit/type/component_spec.rb +2 -2
  524. data/spec/unit/type/exec_spec.rb +14 -7
  525. data/spec/unit/type/file/content_spec.rb +13 -2
  526. data/spec/unit/type/file/ctime_spec.rb +1 -1
  527. data/spec/unit/type/file/mode_spec.rb +48 -2
  528. data/spec/unit/type/file/mtime_spec.rb +1 -1
  529. data/spec/unit/type/file/source_spec.rb +177 -7
  530. data/spec/unit/type/file_spec.rb +63 -71
  531. data/spec/unit/type/group_spec.rb +20 -0
  532. data/spec/unit/type/k5login_spec.rb +3 -3
  533. data/spec/unit/type/mount_spec.rb +53 -0
  534. data/spec/unit/type/nagios_spec.rb +216 -0
  535. data/spec/unit/type/package_spec.rb +7 -1
  536. data/spec/unit/type/schedule_spec.rb +6 -0
  537. data/spec/unit/type/service_spec.rb +3 -3
  538. data/spec/unit/type/tidy_spec.rb +14 -14
  539. data/spec/unit/type/user_spec.rb +9 -0
  540. data/spec/unit/type_spec.rb +86 -4
  541. data/spec/unit/util/adsi_spec.rb +120 -12
  542. data/spec/unit/util/autoload_spec.rb +14 -14
  543. data/spec/unit/util/backups_spec.rb +29 -21
  544. data/spec/unit/util/checksums_spec.rb +2 -1
  545. data/spec/unit/util/command_line_spec.rb +41 -0
  546. data/spec/unit/util/docs_spec.rb +91 -0
  547. data/spec/unit/util/execution_spec.rb +26 -2
  548. data/spec/unit/util/filetype_spec.rb +7 -7
  549. data/spec/unit/util/lockfile_spec.rb +2 -2
  550. data/spec/unit/util/log/destinations_spec.rb +32 -0
  551. data/spec/unit/util/monkey_patches_spec.rb +41 -0
  552. data/spec/unit/util/pidlock_spec.rb +6 -6
  553. data/spec/unit/util/rdoc/parser_spec.rb +15 -13
  554. data/spec/unit/util/rdoc_spec.rb +18 -24
  555. data/spec/unit/util/resource_template_spec.rb +3 -3
  556. data/spec/unit/util/selinux_spec.rb +4 -2
  557. data/spec/unit/util/storage_spec.rb +4 -4
  558. data/spec/unit/util/suidmanager_spec.rb +7 -0
  559. data/spec/unit/util/tag_set_spec.rb +46 -0
  560. data/spec/unit/util/tagging_spec.rb +82 -45
  561. data/spec/unit/util/watcher_spec.rb +4 -1
  562. data/spec/unit/util/windows/access_control_entry_spec.rb +67 -0
  563. data/spec/unit/util/windows/access_control_list_spec.rb +133 -0
  564. data/spec/unit/util/windows/root_certs_spec.rb +10 -8
  565. data/spec/unit/util/windows/security_descriptor_spec.rb +117 -0
  566. data/spec/unit/util/windows/sid_spec.rb +69 -0
  567. data/spec/unit/util_spec.rb +7 -7
  568. data/tasks/ci.rake +17 -36
  569. metadata +2811 -2746
  570. checksums.yaml +0 -7
  571. data/examples/mac_automount.pp +0 -16
  572. data/examples/mcx_dock_absent.pp +0 -4
  573. data/examples/mcx_dock_default.pp +0 -118
  574. data/examples/mcx_dock_full.pp +0 -125
  575. data/examples/mcx_dock_invalid.pp +0 -9
  576. data/examples/mcx_nogroup.pp +0 -118
  577. data/examples/mcx_notexists_absent.pp +0 -4
  578. data/ext/rack/README +0 -58
  579. data/ext/rack/manifest.pp +0 -59
  580. data/lib/puppet/external/lock.rb +0 -63
  581. data/lib/puppet/indirector/hiera.rb +0 -39
  582. data/lib/puppet/parser/functions/foreach.rb +0 -95
  583. data/spec/integration/network/server/webrick_spec.rb +0 -76
  584. data/spec/integration/parser/functions_spec.rb +0 -16
  585. data/spec/unit/indirector/hiera_spec.rb +0 -154
  586. data/spec/unit/parser/methods/collect_spec.rb +0 -153
  587. data/spec/unit/parser/methods/foreach_spec.rb +0 -91
  588. data/spec/unit/parser/methods/reject_spec.rb +0 -73
  589. data/spec/unit/resource/resource_type.json +0 -34
@@ -38,6 +38,9 @@ describe Puppet::Network::HTTP::Handler do
38
38
  end
39
39
 
40
40
  class Puppet::TestModel::Memory < Puppet::Indirector::Memory
41
+ def supports_remote_requests?
42
+ true
43
+ end
41
44
  end
42
45
 
43
46
  Puppet::TestModel.indirection.terminus_class = :memory
@@ -150,9 +153,7 @@ describe Puppet::Network::HTTP::Handler do
150
153
 
151
154
  describe "when processing a request" do
152
155
  let(:response) do
153
- obj = stub "http 200 ok"
154
- obj.stubs(:[]=).with(Puppet::Network::HTTP::HEADER_PUPPET_VERSION, Puppet.version)
155
- obj
156
+ { :status => 200 }
156
157
  end
157
158
 
158
159
  before do
@@ -163,7 +164,6 @@ describe Puppet::Network::HTTP::Handler do
163
164
  it "should check the client certificate for upcoming expiration" do
164
165
  request = a_request
165
166
  cert = mock 'cert'
166
- handler.stubs(:uri2indirection).returns(["facts", :mymethod, "key", {:node => "name"}])
167
167
  handler.expects(:client_cert).returns(cert).with(request)
168
168
  handler.expects(:warn_if_near_expiration).with(cert)
169
169
 
@@ -201,33 +201,31 @@ describe Puppet::Network::HTTP::Handler do
201
201
  handler.process(request, response)
202
202
  end
203
203
 
204
- it "should call the 'do' method and delegate authorization to the authorization layer" do
204
+ it "should return 403 if the request is not authorized" do
205
205
  request = a_request
206
206
  handler.expects(:uri2indirection).returns(["facts", :mymethod, "key", {:node => "name"}])
207
207
 
208
- handler.expects(:do_mymethod).with("facts", "key", {:node => "name"}, request, response)
208
+ handler.expects(:do_mymethod).never
209
+
210
+ handler.expects(:check_authorization).with("facts", :mymethod, "key", {:node => "name"}).raises(Puppet::Network::AuthorizationError.new("forbidden"))
209
211
 
210
- handler.expects(:check_authorization).with("facts", :mymethod, "key", {:node => "name"})
212
+ handler.expects(:set_response).with(anything, anything, 403)
211
213
 
212
214
  handler.process(request, response)
213
215
  end
214
216
 
215
- it "should return 403 if the request is not authorized" do
217
+ it "should return an error code if the indirection does not support remote requests" do
216
218
  request = a_request
217
- handler.expects(:uri2indirection).returns(["facts", :mymethod, "key", {:node => "name"}])
218
219
 
219
- handler.expects(:do_mymethod).never
220
-
221
- handler.expects(:check_authorization).with("facts", :mymethod, "key", {:node => "name"}).raises(Puppet::Network::AuthorizationError.new("forbidden"))
222
-
223
- handler.expects(:set_response).with(anything, anything, 403)
220
+ indirection.expects(:allow_remote_requests?).returns(false)
224
221
 
225
222
  handler.process(request, response)
223
+
224
+ expect(response[:status]).to eq 404
226
225
  end
227
226
 
228
227
  it "should serialize a controller exception when an exception is thrown while finding the model instance" do
229
- request = a_request
230
- handler.expects(:uri2indirection).returns(["facts", :find, "key", {:node => "name"}])
228
+ request = a_request_that_finds(Puppet::TestModel.new("key"))
231
229
 
232
230
  handler.expects(:do_find).raises(ArgumentError, "The exception")
233
231
  handler.expects(:set_response).with(anything, "The exception", 400)
@@ -302,7 +300,7 @@ describe Puppet::Network::HTTP::Handler do
302
300
  handler.expects(:set_response).with(response, data.render(:pson))
303
301
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:pson))
304
302
 
305
- handler.do_find(indirection.name, "my data", {}, request, response)
303
+ handler.do_find(indirection, "my data", {}, request, response)
306
304
  end
307
305
 
308
306
  it "responds with a 406 error when no accept header is provided" do
@@ -311,7 +309,7 @@ describe Puppet::Network::HTTP::Handler do
311
309
  request = a_request_that_finds(data, :accept_header => nil)
312
310
 
313
311
  expect do
314
- handler.do_find(indirection.name, "my data", {}, request, response)
312
+ handler.do_find(indirection, "my data", {}, request, response)
315
313
  end.to raise_error(Puppet::Network::HTTP::Handler::HTTPNotAcceptableError)
316
314
  end
317
315
 
@@ -321,7 +319,7 @@ describe Puppet::Network::HTTP::Handler do
321
319
  request = a_request_that_finds(data, :accept_header => "unknown, also/unknown")
322
320
 
323
321
  expect do
324
- handler.do_find(indirection.name, "my data", {}, request, response)
322
+ handler.do_find(indirection, "my data", {}, request, response)
325
323
  end.to raise_error(Puppet::Network::HTTP::Handler::HTTPNotAcceptableError)
326
324
  end
327
325
 
@@ -334,7 +332,7 @@ describe Puppet::Network::HTTP::Handler do
334
332
  handler.expects(:set_response).with(response, data_string)
335
333
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:pson))
336
334
 
337
- handler.do_find(indirection.name, "my data", {}, request, response)
335
+ handler.do_find(indirection, "my data", {}, request, response)
338
336
  end
339
337
 
340
338
  it "should return a 404 when no model instance can be found" do
@@ -342,7 +340,7 @@ describe Puppet::Network::HTTP::Handler do
342
340
  request = a_request_that_finds(data, :accept_header => "unknown, pson, yaml")
343
341
 
344
342
  expect do
345
- handler.do_find(indirection.name, "my data", {}, request, response)
343
+ handler.do_find(indirection, "my data", {}, request, response)
346
344
  end.to raise_error(Puppet::Network::HTTP::Handler::HTTPNotFoundError)
347
345
  end
348
346
  end
@@ -377,7 +375,7 @@ describe Puppet::Network::HTTP::Handler do
377
375
  handler.expects(:set_response).with(response, Puppet::TestModel.render_multiple(:pson, [data]))
378
376
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:pson))
379
377
 
380
- handler.do_search(indirection.name, "my", {}, request, response)
378
+ handler.do_search(indirection, "my", {}, request, response)
381
379
  end
382
380
 
383
381
  it "should return [] when searching returns an empty array" do
@@ -386,7 +384,7 @@ describe Puppet::Network::HTTP::Handler do
386
384
  handler.expects(:set_response).with(response, Puppet::TestModel.render_multiple(:pson, []))
387
385
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:pson))
388
386
 
389
- handler.do_search(indirection.name, "nothing", {}, request, response)
387
+ handler.do_search(indirection, "nothing", {}, request, response)
390
388
  end
391
389
 
392
390
  it "should return a 404 when searching returns nil" do
@@ -394,7 +392,7 @@ describe Puppet::Network::HTTP::Handler do
394
392
  indirection.expects(:search).returns(nil)
395
393
 
396
394
  expect do
397
- handler.do_search(indirection.name, "nothing", {}, request, response)
395
+ handler.do_search(indirection, "nothing", {}, request, response)
398
396
  end.to raise_error(Puppet::Network::HTTP::Handler::HTTPNotFoundError)
399
397
  end
400
398
  end
@@ -405,7 +403,7 @@ describe Puppet::Network::HTTP::Handler do
405
403
  indirection.save(data, "my data")
406
404
  request = a_request_that_destroys(data)
407
405
 
408
- handler.do_destroy(indirection.name, "my data", {}, request, response)
406
+ handler.do_destroy(indirection, "my data", {}, request, response)
409
407
 
410
408
  Puppet::TestModel.indirection.find("my data").should be_nil
411
409
  end
@@ -418,7 +416,7 @@ describe Puppet::Network::HTTP::Handler do
418
416
  handler.expects(:set_response).with(response, data.render(:yaml))
419
417
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:yaml))
420
418
 
421
- handler.do_destroy(indirection.name, "my data", {}, request, response)
419
+ handler.do_destroy(indirection, "my data", {}, request, response)
422
420
  end
423
421
 
424
422
  it "uses the first supported format for the response" do
@@ -429,7 +427,7 @@ describe Puppet::Network::HTTP::Handler do
429
427
  handler.expects(:set_response).with(response, data.render(:pson))
430
428
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:pson))
431
429
 
432
- handler.do_destroy(indirection.name, "my data", {}, request, response)
430
+ handler.do_destroy(indirection, "my data", {}, request, response)
433
431
  end
434
432
 
435
433
  it "raises an error and does not destory when no accepted formats are known" do
@@ -438,7 +436,7 @@ describe Puppet::Network::HTTP::Handler do
438
436
  request = a_request_that_submits(data, :accept_header => "unknown, also/unknown")
439
437
 
440
438
  expect do
441
- handler.do_destroy(indirection.name, "my data", {}, request, response)
439
+ handler.do_destroy(indirection, "my data", {}, request, response)
442
440
  end.to raise_error(Puppet::Network::HTTP::Handler::HTTPNotAcceptableError)
443
441
 
444
442
  Puppet::TestModel.indirection.find("my data").should_not be_nil
@@ -460,7 +458,7 @@ describe Puppet::Network::HTTP::Handler do
460
458
  request[:content_type_header] = "application/x-raw"
461
459
  request[:body] = ''
462
460
 
463
- handler.do_save(indirection.name, "test", {}, request, response)
461
+ handler.do_save(indirection, "test", {}, request, response)
464
462
 
465
463
  Puppet::TestModel.indirection.find("test").data.should == ''
466
464
  end
@@ -469,7 +467,7 @@ describe Puppet::Network::HTTP::Handler do
469
467
  data = Puppet::TestModel.new("my data", "some data")
470
468
  request = a_request_that_submits(data)
471
469
 
472
- handler.do_save(indirection.name, "my data", {}, request, response)
470
+ handler.do_save(indirection, "my data", {}, request, response)
473
471
 
474
472
  Puppet::TestModel.indirection.find("my data").should == data
475
473
  end
@@ -481,7 +479,7 @@ describe Puppet::Network::HTTP::Handler do
481
479
  handler.expects(:set_response).with(response, data.render(:yaml))
482
480
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:yaml))
483
481
 
484
- handler.do_save(indirection.name, "my data", {}, request, response)
482
+ handler.do_save(indirection, "my data", {}, request, response)
485
483
  end
486
484
 
487
485
  it "uses the first supported format for the response" do
@@ -491,7 +489,7 @@ describe Puppet::Network::HTTP::Handler do
491
489
  handler.expects(:set_response).with(response, data.render(:pson))
492
490
  handler.expects(:set_content_type).with(response, Puppet::Network::FormatHandler.format(:pson))
493
491
 
494
- handler.do_save(indirection.name, "my data", {}, request, response)
492
+ handler.do_save(indirection, "my data", {}, request, response)
495
493
  end
496
494
 
497
495
  it "raises an error and does not save when no accepted formats are known" do
@@ -499,7 +497,7 @@ describe Puppet::Network::HTTP::Handler do
499
497
  request = a_request_that_submits(data, :accept_header => "unknown, also/unknown")
500
498
 
501
499
  expect do
502
- handler.do_save(indirection.name, "my data", {}, request, response)
500
+ handler.do_save(indirection, "my data", {}, request, response)
503
501
  end.to raise_error(Puppet::Network::HTTP::Handler::HTTPNotAcceptableError)
504
502
 
505
503
  Puppet::TestModel.indirection.find("my data").should be_nil
@@ -543,7 +541,8 @@ describe Puppet::Network::HTTP::Handler do
543
541
  end
544
542
 
545
543
  def set_response(response, body, status = 200)
546
- "my_result"
544
+ response[:body] = body
545
+ response[:status] = status
547
546
  end
548
547
 
549
548
  def http_method(request)
@@ -3,6 +3,10 @@ require 'spec_helper'
3
3
  require 'puppet/network/http_pool'
4
4
 
5
5
  describe Puppet::Network::HttpPool do
6
+ before :each do
7
+ Puppet::SSL::Key.indirection.terminus_class = :memory
8
+ Puppet::SSL::CertificateRequest.indirection.terminus_class = :memory
9
+ end
6
10
 
7
11
  describe "when managing http instances" do
8
12
 
@@ -26,15 +30,14 @@ describe Puppet::Network::HttpPool do
26
30
  describe 'peer verification' do
27
31
  def setup_standard_ssl_configuration
28
32
  ca_cert_file = File.expand_path('/path/to/ssl/certs/ca_cert.pem')
29
- FileTest.stubs(:exist?).with(ca_cert_file).returns(true)
30
33
 
31
- ssl_configuration = stub('ssl_configuration', :ca_auth_file => ca_cert_file)
32
- Puppet::Network::HTTP::Connection.any_instance.stubs(:ssl_configuration).returns(ssl_configuration)
34
+ Puppet[:ssl_client_ca_auth] = ca_cert_file
35
+ Puppet::FileSystem::File.stubs(:exist?).with(ca_cert_file).returns(true)
33
36
  end
34
37
 
35
38
  def setup_standard_hostcert
36
39
  host_cert_file = File.expand_path('/path/to/ssl/certs/host_cert.pem')
37
- FileTest.stubs(:exist?).with(host_cert_file).returns(true)
40
+ Puppet::FileSystem::File.stubs(:exist?).with(host_cert_file).returns(true)
38
41
 
39
42
  Puppet[:hostcert] = host_cert_file
40
43
  end
@@ -44,7 +47,7 @@ describe Puppet::Network::HttpPool do
44
47
  key = stub('key', :content => 'real_key')
45
48
  host = stub('host', :certificate => cert, :key => key, :ssl_store => stub('store'))
46
49
 
47
- Puppet::Network::HTTP::Connection.any_instance.stubs(:ssl_host).returns(host)
50
+ Puppet::SSL::Host.stubs(:localhost).returns(host)
48
51
  end
49
52
 
50
53
  before do
@@ -20,111 +20,97 @@ describe Puppet::Node::Environment do
20
20
  it "should use the filetimeout for the ttl for the modulepath" do
21
21
  Puppet::Node::Environment.attr_ttl(:modulepath).should == Integer(Puppet[:filetimeout])
22
22
  end
23
-
23
+
24
24
  it "should use the filetimeout for the ttl for the module list" do
25
25
  Puppet::Node::Environment.attr_ttl(:modules).should == Integer(Puppet[:filetimeout])
26
26
  end
27
-
27
+
28
28
  it "should use the default environment if no name is provided while initializing an environment" do
29
29
  Puppet[:environment] = "one"
30
30
  Puppet::Node::Environment.new.name.should == :one
31
31
  end
32
-
32
+
33
33
  it "should treat environment instances as singletons" do
34
34
  Puppet::Node::Environment.new("one").should equal(Puppet::Node::Environment.new("one"))
35
35
  end
36
-
36
+
37
37
  it "should treat an environment specified as names or strings as equivalent" do
38
38
  Puppet::Node::Environment.new(:one).should equal(Puppet::Node::Environment.new("one"))
39
39
  end
40
-
40
+
41
41
  it "should return its name when converted to a string" do
42
42
  Puppet::Node::Environment.new(:one).to_s.should == "one"
43
43
  end
44
-
44
+
45
45
  it "should just return any provided environment if an environment is provided as the name" do
46
46
  one = Puppet::Node::Environment.new(:one)
47
47
  Puppet::Node::Environment.new(one).should equal(one)
48
48
  end
49
-
49
+
50
50
  describe "when managing known resource types" do
51
51
  before do
52
52
  @collection = Puppet::Resource::TypeCollection.new(env)
53
53
  env.stubs(:perform_initial_import).returns(Puppet::Parser::AST::Hostclass.new(''))
54
- Thread.current[:known_resource_types] = nil
54
+ $known_resource_types = nil
55
55
  end
56
-
56
+
57
57
  it "should create a resource type collection if none exists" do
58
58
  Puppet::Resource::TypeCollection.expects(:new).with(env).returns @collection
59
59
  env.known_resource_types.should equal(@collection)
60
60
  end
61
-
61
+
62
62
  it "should reuse any existing resource type collection" do
63
63
  env.known_resource_types.should equal(env.known_resource_types)
64
64
  end
65
-
65
+
66
66
  it "should perform the initial import when creating a new collection" do
67
67
  env.expects(:perform_initial_import).returns(Puppet::Parser::AST::Hostclass.new(''))
68
68
  env.known_resource_types
69
69
  end
70
-
70
+
71
71
  it "should return the same collection even if stale if it's the same thread" do
72
72
  Puppet::Resource::TypeCollection.stubs(:new).returns @collection
73
73
  env.known_resource_types.stubs(:stale?).returns true
74
-
74
+
75
75
  env.known_resource_types.should equal(@collection)
76
76
  end
77
-
77
+
78
78
  it "should return the current thread associated collection if there is one" do
79
- Thread.current[:known_resource_types] = @collection
80
-
79
+ $known_resource_types = @collection
80
+
81
81
  env.known_resource_types.should equal(@collection)
82
82
  end
83
-
84
- it "should give to all threads using the same environment the same collection if the collection isn't stale" do
85
- @original_thread_type_collection = Puppet::Resource::TypeCollection.new(env)
86
- Puppet::Resource::TypeCollection.expects(:new).with(env).returns @original_thread_type_collection
87
- env.known_resource_types.should equal(@original_thread_type_collection)
88
-
89
- @original_thread_type_collection.expects(:require_reparse?).returns(false)
90
- Puppet::Resource::TypeCollection.stubs(:new).with(env).returns @collection
91
-
92
- t = Thread.new {
93
- env.known_resource_types.should equal(@original_thread_type_collection)
94
- }
95
- t.join
96
- end
97
-
83
+
98
84
  it "should generate a new TypeCollection if the current one requires reparsing" do
99
85
  old_type_collection = env.known_resource_types
100
86
  old_type_collection.stubs(:require_reparse?).returns true
101
- Thread.current[:known_resource_types] = nil
87
+ $known_resource_types = nil
102
88
  new_type_collection = env.known_resource_types
103
-
89
+
104
90
  new_type_collection.should be_a Puppet::Resource::TypeCollection
105
91
  new_type_collection.should_not equal(old_type_collection)
106
92
  end
107
93
  end
108
-
94
+
109
95
  it "should validate the modulepath directories" do
110
96
  real_file = tmpdir('moduledir')
111
97
  path = %W[/one /two #{real_file}].join(File::PATH_SEPARATOR)
112
-
98
+
113
99
  Puppet[:modulepath] = path
114
-
100
+
115
101
  env.modulepath.should == [real_file]
116
102
  end
117
-
103
+
118
104
  it "should prefix the value of the 'PUPPETLIB' environment variable to the module path if present" do
119
105
  Puppet::Util.withenv("PUPPETLIB" => %w{/l1 /l2}.join(File::PATH_SEPARATOR)) do
120
106
  module_path = %w{/one /two}.join(File::PATH_SEPARATOR)
121
107
  env.expects(:validate_dirs).with(%w{/l1 /l2 /one /two}).returns %w{/l1 /l2 /one /two}
122
108
  env.expects(:[]).with(:modulepath).returns module_path
123
-
109
+
124
110
  env.modulepath.should == %w{/l1 /l2 /one /two}
125
111
  end
126
112
  end
127
-
113
+
128
114
  describe "when validating modulepath or manifestdir directories" do
129
115
  before :each do
130
116
  @path_one = tmpdir("path_one")
@@ -132,69 +118,69 @@ describe Puppet::Node::Environment do
132
118
  sep = File::PATH_SEPARATOR
133
119
  Puppet[:modulepath] = "#{@path_one}#{sep}#{@path_two}"
134
120
  end
135
-
121
+
136
122
  it "should not return non-directories" do
137
123
  FileTest.expects(:directory?).with(@path_one).returns true
138
124
  FileTest.expects(:directory?).with(@path_two).returns false
139
-
125
+
140
126
  env.validate_dirs([@path_one, @path_two]).should == [@path_one]
141
127
  end
142
-
128
+
143
129
  it "should use the current working directory to fully-qualify unqualified paths" do
144
130
  FileTest.stubs(:directory?).returns true
145
-
146
131
  two = File.expand_path("two")
132
+
147
133
  env.validate_dirs([@path_one, 'two']).should == [@path_one, two]
148
134
  end
149
135
  end
150
-
136
+
151
137
  describe "when modeling a specific environment" do
152
138
  it "should have a method for returning the environment name" do
153
139
  Puppet::Node::Environment.new("testing").name.should == :testing
154
140
  end
155
-
141
+
156
142
  it "should provide an array-like accessor method for returning any environment-specific setting" do
157
143
  env.should respond_to(:[])
158
144
  end
159
-
145
+
160
146
  it "should ask the Puppet settings instance for the setting qualified with the environment name" do
161
147
  Puppet.settings.set_value(:server, "myval", :testing)
162
148
  env[:server].should == "myval"
163
149
  end
164
-
150
+
165
151
  it "should be able to return an individual module that exists in its module path" do
166
152
  env.stubs(:modules).returns [Puppet::Module.new('one', "/one", mock("env"))]
167
-
153
+
168
154
  mod = env.module('one')
169
155
  mod.should be_a(Puppet::Module)
170
156
  mod.name.should == 'one'
171
157
  end
172
-
158
+
173
159
  it "should not return a module if the module doesn't exist" do
174
160
  env.stubs(:modules).returns [Puppet::Module.new('one', "/one", mock("env"))]
175
-
161
+
176
162
  env.module('two').should be_nil
177
163
  end
178
-
164
+
179
165
  it "should return nil if asked for a module that does not exist in its path" do
180
166
  modpath = tmpdir('modpath')
181
167
  env.modulepath = [modpath]
182
-
168
+
183
169
  env.module("one").should be_nil
184
170
  end
185
-
171
+
186
172
  describe "module data" do
187
173
  before do
188
174
  dir = tmpdir("deep_path")
189
-
175
+
190
176
  @first = File.join(dir, "first")
191
177
  @second = File.join(dir, "second")
192
178
  Puppet[:modulepath] = "#{@first}#{File::PATH_SEPARATOR}#{@second}"
193
-
179
+
194
180
  FileUtils.mkdir_p(@first)
195
181
  FileUtils.mkdir_p(@second)
196
182
  end
197
-
183
+
198
184
  describe "#modules_by_path" do
199
185
  it "should return an empty list if there are no modules" do
200
186
  env.modules_by_path.should == {
@@ -202,19 +188,19 @@ describe Puppet::Node::Environment do
202
188
  @second => []
203
189
  }
204
190
  end
205
-
191
+
206
192
  it "should include modules even if they exist in multiple dirs in the modulepath" do
207
193
  modpath1 = File.join(@first, "foo")
208
194
  FileUtils.mkdir_p(modpath1)
209
195
  modpath2 = File.join(@second, "foo")
210
196
  FileUtils.mkdir_p(modpath2)
211
-
197
+
212
198
  env.modules_by_path.should == {
213
199
  @first => [Puppet::Module.new('foo', modpath1, env)],
214
200
  @second => [Puppet::Module.new('foo', modpath2, env)]
215
201
  }
216
202
  end
217
-
203
+
218
204
  it "should ignore modules with invalid names" do
219
205
  FileUtils.mkdir_p(File.join(@first, 'foo'))
220
206
  FileUtils.mkdir_p(File.join(@first, 'foo2'))
@@ -226,12 +212,12 @@ describe Puppet::Node::Environment do
226
212
  FileUtils.mkdir_p(File.join(@first, '-foo'))
227
213
  FileUtils.mkdir_p(File.join(@first, 'foo-'))
228
214
  FileUtils.mkdir_p(File.join(@first, 'foo--bar'))
229
-
215
+
230
216
  env.modules_by_path[@first].collect{|mod| mod.name}.sort.should == %w{foo foo-bar foo2 foo_bar}
231
217
  end
232
-
218
+
233
219
  end
234
-
220
+
235
221
  describe "#module_requirements" do
236
222
  it "should return a list of what modules depend on other modules" do
237
223
  PuppetSpec::Modules.create(
@@ -266,7 +252,7 @@ describe Puppet::Node::Environment do
266
252
  :dependencies => [{ 'name' => 'puppetlabs/bar', "version_requirement" => "~3.0.0" }]
267
253
  }
268
254
  )
269
-
255
+
270
256
  env.module_requirements.should == {
271
257
  'puppetlabs/alpha' => [],
272
258
  'puppetlabs/foo' => [
@@ -297,7 +283,7 @@ describe Puppet::Node::Environment do
297
283
  }
298
284
  end
299
285
  end
300
-
286
+
301
287
  describe ".module_by_forge_name" do
302
288
  it "should find modules by forge_name" do
303
289
  mod = PuppetSpec::Modules.create(
@@ -308,7 +294,7 @@ describe Puppet::Node::Environment do
308
294
  )
309
295
  env.module_by_forge_name('puppetlabs/baz').should == mod
310
296
  end
311
-
297
+
312
298
  it "should not find modules with same name by the wrong author" do
313
299
  mod = PuppetSpec::Modules.create(
314
300
  'baz',
@@ -318,17 +304,17 @@ describe Puppet::Node::Environment do
318
304
  )
319
305
  env.module_by_forge_name('puppetlabs/baz').should == nil
320
306
  end
321
-
307
+
322
308
  it "should return nil when the module can't be found" do
323
309
  env.module_by_forge_name('ima/nothere').should be_nil
324
310
  end
325
311
  end
326
-
312
+
327
313
  describe ".modules" do
328
314
  it "should return an empty list if there are no modules" do
329
315
  env.modules.should == []
330
316
  end
331
-
317
+
332
318
  it "should return a module named for every directory in each module path" do
333
319
  %w{foo bar}.each do |mod_name|
334
320
  FileUtils.mkdir_p(File.join(@first, mod_name))
@@ -338,14 +324,14 @@ describe Puppet::Node::Environment do
338
324
  end
339
325
  env.modules.collect{|mod| mod.name}.sort.should == %w{foo bar bee baz}.sort
340
326
  end
341
-
327
+
342
328
  it "should remove duplicates" do
343
329
  FileUtils.mkdir_p(File.join(@first, 'foo'))
344
330
  FileUtils.mkdir_p(File.join(@second, 'foo'))
345
-
331
+
346
332
  env.modules.collect{|mod| mod.name}.sort.should == %w{foo}
347
333
  end
348
-
334
+
349
335
  it "should ignore modules with invalid names" do
350
336
  FileUtils.mkdir_p(File.join(@first, 'foo'))
351
337
  FileUtils.mkdir_p(File.join(@first, 'foo2'))
@@ -353,63 +339,63 @@ describe Puppet::Node::Environment do
353
339
  FileUtils.mkdir_p(File.join(@first, 'foo_bar'))
354
340
  FileUtils.mkdir_p(File.join(@first, 'foo=bar'))
355
341
  FileUtils.mkdir_p(File.join(@first, 'foo bar'))
356
-
342
+
357
343
  env.modules.collect{|mod| mod.name}.sort.should == %w{foo foo-bar foo2 foo_bar}
358
344
  end
359
-
345
+
360
346
  it "should create modules with the correct environment" do
361
347
  FileUtils.mkdir_p(File.join(@first, 'foo'))
362
348
  env.modules.each {|mod| mod.environment.should == env }
363
349
  end
364
-
350
+
365
351
  end
366
352
  end
367
-
353
+
368
354
  it "should cache the module list" do
369
355
  env.modulepath = %w{/a}
370
356
  Dir.expects(:entries).once.with("/a").returns %w{foo}
371
-
357
+
372
358
  env.modules
373
359
  env.modules
374
360
  end
375
361
  end
376
-
362
+
377
363
  describe Puppet::Node::Environment::Helper do
378
364
  before do
379
365
  @helper = Object.new
380
366
  @helper.extend(Puppet::Node::Environment::Helper)
381
367
  end
382
-
368
+
383
369
  it "should be able to set and retrieve the environment as a symbol" do
384
370
  @helper.environment = :foo
385
371
  @helper.environment.name.should == :foo
386
372
  end
387
-
373
+
388
374
  it "should accept an environment directly" do
389
375
  @helper.environment = Puppet::Node::Environment.new(:foo)
390
376
  @helper.environment.name.should == :foo
391
377
  end
392
-
378
+
393
379
  it "should accept an environment as a string" do
394
380
  @helper.environment = 'foo'
395
381
  @helper.environment.name.should == :foo
396
382
  end
397
383
  end
398
-
384
+
399
385
  describe "when performing initial import" do
400
386
  before do
401
387
  @parser = Puppet::Parser::ParserFactory.parser("test")
402
388
  # @parser = Puppet::Parser::EParserAdapter.new(Puppet::Parser::Parser.new("test")) # TODO: FIX PARSER FACTORY
403
389
  Puppet::Parser::ParserFactory.stubs(:parser).returns @parser
404
390
  end
405
-
391
+
406
392
  it "should set the parser's string to the 'code' setting and parse if code is available" do
407
393
  Puppet.settings[:code] = "my code"
408
394
  @parser.expects(:string=).with "my code"
409
395
  @parser.expects(:parse)
410
396
  env.instance_eval { perform_initial_import }
411
397
  end
412
-
398
+
413
399
  it "should set the parser's file to the 'manifest' setting and parse if no code is available and the manifest is available" do
414
400
  filename = tmpfile('myfile')
415
401
  File.open(filename, 'w'){|f| }
@@ -418,7 +404,7 @@ describe Puppet::Node::Environment do
418
404
  @parser.expects(:parse)
419
405
  env.instance_eval { perform_initial_import }
420
406
  end
421
-
407
+
422
408
  it "should pass the manifest file to the parser even if it does not exist on disk" do
423
409
  filename = tmpfile('myfile')
424
410
  Puppet.settings[:code] = ""
@@ -427,15 +413,15 @@ describe Puppet::Node::Environment do
427
413
  @parser.expects(:parse).once
428
414
  env.instance_eval { perform_initial_import }
429
415
  end
430
-
416
+
431
417
  it "should fail helpfully if there is an error importing" do
432
- File.stubs(:exist?).returns true
418
+ Puppet::FileSystem::File.stubs(:exist?).returns true
433
419
  env.stubs(:known_resource_types).returns Puppet::Resource::TypeCollection.new(env)
434
420
  @parser.expects(:file=).once
435
421
  @parser.expects(:parse).raises ArgumentError
436
422
  lambda { env.instance_eval { perform_initial_import } }.should raise_error(Puppet::Error)
437
423
  end
438
-
424
+
439
425
  it "should not do anything if the ignore_import settings is set" do
440
426
  Puppet.settings[:ignoreimport] = true
441
427
  @parser.expects(:string=).never
@@ -443,11 +429,11 @@ describe Puppet::Node::Environment do
443
429
  @parser.expects(:parse).never
444
430
  env.instance_eval { perform_initial_import }
445
431
  end
446
-
432
+
447
433
  it "should mark the type collection as needing a reparse when there is an error parsing" do
448
434
  @parser.expects(:parse).raises Puppet::ParseError.new("Syntax error at ...")
449
435
  env.stubs(:known_resource_types).returns Puppet::Resource::TypeCollection.new(env)
450
-
436
+
451
437
  lambda { env.instance_eval { perform_initial_import } }.should raise_error(Puppet::Error, /Syntax error at .../)
452
438
  env.known_resource_types.require_reparse?.should be_true
453
439
  end
@@ -465,5 +451,5 @@ describe Puppet::Node::Environment do
465
451
  end
466
452
  it_behaves_like 'the environment'
467
453
  end
468
-
454
+
469
455
  end