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
@@ -2,18 +2,11 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  require 'puppet/indirector/file_bucket_file/file'
5
+ require 'puppet/util/platform'
5
6
 
6
7
  describe Puppet::FileBucketFile::File do
7
8
  include PuppetSpec::Files
8
9
 
9
- it "should be a subclass of the Code terminus class" do
10
- Puppet::FileBucketFile::File.superclass.should equal(Puppet::Indirector::Code)
11
- end
12
-
13
- it "should have documentation" do
14
- Puppet::FileBucketFile::File.doc.should be_instance_of(String)
15
- end
16
-
17
10
  describe "non-stubbing tests" do
18
11
  include PuppetSpec::Files
19
12
 
@@ -23,7 +16,7 @@ describe Puppet::FileBucketFile::File do
23
16
 
24
17
  def save_bucket_file(contents, path = "/who_cares")
25
18
  bucket_file = Puppet::FileBucket::File.new(contents)
26
- Puppet::FileBucket::File.indirection.save(bucket_file, "md5/#{Digest::MD5.hexdigest(contents)}#{path}")
19
+ Puppet::FileBucket::File.indirection.save(bucket_file, "#{bucket_file.name}#{path}")
27
20
  bucket_file.checksum_data
28
21
  end
29
22
 
@@ -34,17 +27,58 @@ describe Puppet::FileBucketFile::File do
34
27
  result.contents.should be_empty
35
28
  end
36
29
 
30
+ it "deals with multiple processes saving at the same time", :unless => Puppet::Util::Platform.windows? do
31
+ bucket_file = Puppet::FileBucket::File.new("contents")
32
+
33
+ children = []
34
+ 5.times do |count|
35
+ children << Kernel.fork do
36
+ save_bucket_file("contents", "/testing")
37
+ exit(0)
38
+ end
39
+ end
40
+ children.each { |child| Process.wait(child) }
41
+
42
+ paths = File.read("#{Puppet[:bucketdir]}/9/8/b/f/7/d/8/c/98bf7d8c15784f0a3d63204441e1e2aa/paths").lines.to_a
43
+ paths.length.should == 1
44
+ Puppet::FileBucket::File.indirection.head("#{bucket_file.checksum_type}/#{bucket_file.checksum_data}/testing").should be_true
45
+ end
46
+
47
+ it "fails if the contents collide with existing contents" do
48
+ # This is the shortest known MD5 collision. See http://eprint.iacr.org/2010/643.pdf
49
+ first_contents = [0x6165300e,0x87a79a55,0xf7c60bd0,0x34febd0b,
50
+ 0x6503cf04,0x854f709e,0xfb0fc034,0x874c9c65,
51
+ 0x2f94cc40,0x15a12deb,0x5c15f4a3,0x490786bb,
52
+ 0x6d658673,0xa4341f7d,0x8fd75920,0xefd18d5a].pack("I" * 16)
53
+
54
+ collision_contents = [0x6165300e,0x87a79a55,0xf7c60bd0,0x34febd0b,
55
+ 0x6503cf04,0x854f749e,0xfb0fc034,0x874c9c65,
56
+ 0x2f94cc40,0x15a12deb,0xdc15f4a3,0x490786bb,
57
+ 0x6d658673,0xa4341f7d,0x8fd75920,0xefd18d5a].pack("I" * 16)
58
+
59
+ save_bucket_file(first_contents, "/foo/bar")
60
+
61
+ expect do
62
+ save_bucket_file(collision_contents, "/foo/bar")
63
+ end.to raise_error(Puppet::FileBucket::BucketError, /Got passed new contents/)
64
+ end
65
+
37
66
  describe "when supplying a path" do
38
67
  it "should store the path if not already stored" do
39
68
  checksum = save_bucket_file("stuff\r\n", "/foo/bar")
69
+
40
70
  dir_path = "#{Puppet[:bucketdir]}/f/c/7/7/7/c/0/b/fc777c0bc467e1ab98b4c6915af802ec"
41
- IO.binread("#{dir_path}/contents").should == "stuff\r\n"
42
- File.read("#{dir_path}/paths").should == "foo/bar\n"
71
+ contents_file = Puppet::FileSystem::File.new("#{dir_path}/contents")
72
+ paths_file = Puppet::FileSystem::File.new("#{dir_path}/paths")
73
+ contents_file.binread.should == "stuff\r\n"
74
+ paths_file.read.should == "foo/bar\n"
43
75
  end
44
76
 
45
77
  it "should leave the paths file alone if the path is already stored" do
46
78
  checksum = save_bucket_file("stuff", "/foo/bar")
79
+
47
80
  checksum = save_bucket_file("stuff", "/foo/bar")
81
+
48
82
  dir_path = "#{Puppet[:bucketdir]}/c/1/3/d/8/8/c/b/c13d88cb4cb02003daedb8a84e5d272a"
49
83
  File.read("#{dir_path}/contents").should == "stuff"
50
84
  File.read("#{dir_path}/paths").should == "foo/bar\n"
@@ -52,7 +86,9 @@ describe Puppet::FileBucketFile::File do
52
86
 
53
87
  it "should store an additional path if the new path differs from those already stored" do
54
88
  checksum = save_bucket_file("stuff", "/foo/bar")
89
+
55
90
  checksum = save_bucket_file("stuff", "/foo/baz")
91
+
56
92
  dir_path = "#{Puppet[:bucketdir]}/c/1/3/d/8/8/c/b/c13d88cb4cb02003daedb8a84e5d272a"
57
93
  File.read("#{dir_path}/contents").should == "stuff"
58
94
  File.read("#{dir_path}/paths").should == "foo/bar\nfoo/baz\n"
@@ -62,6 +98,7 @@ describe Puppet::FileBucketFile::File do
62
98
  describe "when not supplying a path" do
63
99
  it "should save the file and create an empty paths file" do
64
100
  checksum = save_bucket_file("stuff", "")
101
+
65
102
  dir_path = "#{Puppet[:bucketdir]}/c/1/3/d/8/8/c/b/c13d88cb4cb02003daedb8a84e5d272a"
66
103
  File.read("#{dir_path}/contents").should == "stuff"
67
104
  File.read("#{dir_path}/paths").should == ""
@@ -78,16 +115,18 @@ describe Puppet::FileBucketFile::File do
78
115
 
79
116
  it "should return false/nil if the file is bucketed but with a different path" do
80
117
  checksum = save_bucket_file("I'm the contents of a file", '/foo/bar')
118
+
81
119
  Puppet::FileBucket::File.indirection.head("md5/#{checksum}/foo/baz").should == false
82
120
  Puppet::FileBucket::File.indirection.find("md5/#{checksum}/foo/baz").should == nil
83
121
  end
84
122
 
85
123
  it "should return true/file if the file is already bucketed with the given path" do
86
124
  contents = "I'm the contents of a file"
125
+
87
126
  checksum = save_bucket_file(contents, '/foo/bar')
127
+
88
128
  Puppet::FileBucket::File.indirection.head("md5/#{checksum}/foo/bar").should == true
89
129
  find_result = Puppet::FileBucket::File.indirection.find("md5/#{checksum}/foo/bar")
90
- find_result.should be_a(Puppet::FileBucket::File)
91
130
  find_result.checksum.should == "{md5}#{checksum}"
92
131
  find_result.to_s.should == contents
93
132
  end
@@ -105,10 +144,11 @@ describe Puppet::FileBucketFile::File do
105
144
 
106
145
  it "should return true/file if the file is already bucketed" do
107
146
  contents = "I'm the contents of a file"
147
+
108
148
  checksum = save_bucket_file(contents, '/foo/bar')
149
+
109
150
  Puppet::FileBucket::File.indirection.head("md5/#{checksum}#{trailing_string}").should == true
110
151
  find_result = Puppet::FileBucket::File.indirection.find("md5/#{checksum}#{trailing_string}")
111
- find_result.should be_a(Puppet::FileBucket::File)
112
152
  find_result.checksum.should == "{md5}#{checksum}"
113
153
  find_result.to_s.should == contents
114
154
  end
@@ -126,6 +166,7 @@ describe Puppet::FileBucketFile::File do
126
166
  it "should generate a proper diff if there is a diff" do
127
167
  checksum1 = save_bucket_file("foo\nbar\nbaz")
128
168
  checksum2 = save_bucket_file("foo\nbiz\nbaz")
169
+
129
170
  diff = Puppet::FileBucket::File.indirection.find("md5/#{checksum1}", :diff_with => checksum2)
130
171
  diff.should == <<HERE
131
172
  2c2
@@ -136,27 +177,23 @@ HERE
136
177
  end
137
178
 
138
179
  it "should raise an exception if the hash to diff against isn't found" do
139
- checksum = save_bucket_file("whatever")
140
180
  bogus_checksum = "d1bf072d0e2c6e20e3fbd23f022089a1"
141
- lambda { Puppet::FileBucket::File.indirection.find("md5/#{checksum}", :diff_with => bogus_checksum) }.should raise_error "could not find diff_with #{bogus_checksum}"
181
+ checksum = save_bucket_file("whatever")
182
+
183
+ expect do
184
+ Puppet::FileBucket::File.indirection.find("md5/#{checksum}", :diff_with => bogus_checksum)
185
+ end.to raise_error "could not find diff_with #{bogus_checksum}"
142
186
  end
143
187
 
144
188
  it "should return nil if the hash to diff from isn't found" do
145
- checksum = save_bucket_file("whatever")
146
189
  bogus_checksum = "d1bf072d0e2c6e20e3fbd23f022089a1"
190
+ checksum = save_bucket_file("whatever")
191
+
147
192
  Puppet::FileBucket::File.indirection.find("md5/#{bogus_checksum}", :diff_with => checksum).should == nil
148
193
  end
149
194
  end
150
195
  end
151
196
 
152
- describe "when initializing" do
153
- it "should use the filebucket settings section" do
154
- Puppet.settings.expects(:use).with(:filebucket)
155
- Puppet::FileBucketFile::File.new
156
- end
157
- end
158
-
159
-
160
197
  [true, false].each do |override_bucket_path|
161
198
  describe "when bucket path #{if override_bucket_path then 'is' else 'is not' end} overridden" do
162
199
  [true, false].each do |supply_path|
@@ -245,32 +282,4 @@ HERE
245
282
  end
246
283
  end
247
284
  end
248
-
249
- describe "when verifying identical files" do
250
- let(:contents) { "file\r\n contents" }
251
- let(:digest) { "8b3702ad1aed1ace7e32bde76ffffb2d" }
252
- let(:checksum) { "{md5}#{@digest}" }
253
- let(:bucketdir) { tmpdir('file_bucket_file') }
254
- let(:destdir) { "#{bucketdir}/8/b/3/7/0/2/a/d/8b3702ad1aed1ace7e32bde76ffffb2d" }
255
- let(:bucket) { Puppet::FileBucket::File.new(contents) }
256
-
257
- before :each do
258
- Puppet[:bucketdir] = bucketdir
259
- FileUtils.mkdir_p(destdir)
260
- end
261
-
262
- it "should raise an error if the files don't match" do
263
- File.open(File.join(destdir, 'contents'), 'wb') { |f| f.print "corrupt contents" }
264
-
265
- lambda{
266
- Puppet::FileBucketFile::File.new.send(:verify_identical_file!, bucket)
267
- }.should raise_error(Puppet::FileBucket::BucketError)
268
- end
269
-
270
- it "should do nothing if the files match" do
271
- File.open(File.join(destdir, 'contents'), 'wb') { |f| f.print contents }
272
-
273
- Puppet::FileBucketFile::File.new.send(:verify_identical_file!, bucket)
274
- end
275
- end
276
285
  end
@@ -19,7 +19,7 @@ describe Puppet::Indirector::FileMetadata::File do
19
19
  @uri = Puppet::Util.path_to_uri(@path).to_s
20
20
  @data = mock 'metadata'
21
21
  @data.stubs(:collect)
22
- FileTest.expects(:exists?).with(@path).returns true
22
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns true
23
23
 
24
24
  @request = Puppet::Indirector::Request.new(:file_metadata, :find, @uri, nil)
25
25
  end
@@ -42,7 +42,7 @@ describe Puppet::Indirector::FileMetadata::File do
42
42
  end
43
43
 
44
44
  it "should collect the attributes of the instances returned" do
45
- FileTest.expects(:exists?).with(@path).returns true
45
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns true
46
46
  @metadata.expects(:path2instances).returns( [mock("one", :collect => nil), mock("two", :collect => nil)] )
47
47
  @metadata.search(@request)
48
48
  end
@@ -154,7 +154,7 @@ describe Puppet::Indirector::FileServer do
154
154
 
155
155
  @mount.expects(:search).with { |key, request| key == "rel/path" }.returns %w{/one /two}
156
156
 
157
- FileTest.stubs(:exist?).returns true
157
+ Puppet::FileSystem::File.stubs(:exist?).returns true
158
158
 
159
159
  one = mock 'fileset_one'
160
160
  Puppet::FileServing::Fileset.expects(:new).with("/one", @request).returns(one)
@@ -171,7 +171,7 @@ describe Puppet::Indirector::FileServer do
171
171
 
172
172
  @mount.expects(:search).with { |key, request| key == "rel/path" }.returns []
173
173
 
174
- FileTest.stubs(:exist?).returns true
174
+ Puppet::FileSystem::File.stubs(:exist?).returns true
175
175
 
176
176
  Puppet::FileServing::Fileset.expects(:merge).returns("one" => "/one", "two" => "/two")
177
177
 
@@ -193,7 +193,7 @@ describe Puppet::Indirector::FileServer do
193
193
 
194
194
  @mount.expects(:search).with { |key, request| key == "rel/path" }.returns []
195
195
 
196
- FileTest.stubs(:exist?).returns true
196
+ Puppet::FileSystem::File.stubs(:exist?).returns true
197
197
 
198
198
  Puppet::FileServing::Fileset.expects(:merge).returns("one" => "/one")
199
199
 
@@ -211,7 +211,7 @@ describe Puppet::Indirector::FileServer do
211
211
 
212
212
  @mount.expects(:search).with { |key, options| key == "rel/path" }.returns []
213
213
 
214
- FileTest.stubs(:exist?).returns true
214
+ Puppet::FileSystem::File.stubs(:exist?).returns true
215
215
 
216
216
  Puppet::FileServing::Fileset.expects(:merge).returns("one" => "/one")
217
217
 
@@ -131,20 +131,20 @@ describe Puppet::Indirector::JSON do
131
131
  with_content('hello') do
132
132
  subject.destroy(request)
133
133
  end
134
- File.should_not be_exist file
134
+ Puppet::FileSystem::File.exist?(file).should be_false
135
135
  end
136
136
 
137
137
  it "silently succeeds when files don't exist" do
138
- File.unlink(file) rescue nil
138
+ Puppet::FileSystem::File.unlink(file) rescue nil
139
139
  subject.destroy(request).should be_true
140
140
  end
141
141
 
142
142
  it "raises an informative error for other failures" do
143
- File.stubs(:unlink).with(file).raises(Errno::EPERM, 'fake permission problem')
143
+ Puppet::FileSystem::File.stubs(:unlink).with(file).raises(Errno::EPERM, 'fake permission problem')
144
144
  with_content('hello') do
145
145
  expect { subject.destroy(request) }.to raise_error Puppet::Error
146
146
  end
147
- File.unstub(:unlink) # thanks, mocha
147
+ Puppet::FileSystem::File.unstub(:unlink) # thanks, mocha
148
148
  end
149
149
  end
150
150
  end
@@ -64,33 +64,32 @@ describe Puppet::SSL::Key::File do
64
64
  end
65
65
 
66
66
  it "should save the public key when saving the private key" do
67
- Puppet.settings.stubs(:writesub)
67
+ fh = StringIO.new
68
68
 
69
- fh = mock 'filehandle'
70
-
71
- Puppet.settings.expects(:writesub).with(:publickeydir, @public_key_path).yields fh
69
+ Puppet.settings.setting(:publickeydir).expects(:open_file).with(@public_key_path, 'w').yields fh
70
+ Puppet.settings.setting(:privatekeydir).stubs(:open_file)
72
71
  @public_key.expects(:to_pem).returns "my pem"
73
72
 
74
- fh.expects(:print).with "my pem"
75
-
76
73
  @searcher.save(@request)
74
+
75
+ expect(fh.string).to eq("my pem")
77
76
  end
78
77
 
79
78
  it "should destroy the public key when destroying the private key" do
80
- File.stubs(:unlink).with(@private_key_path)
81
- FileTest.stubs(:exist?).with(@private_key_path).returns true
82
- FileTest.expects(:exist?).with(@public_key_path).returns true
83
- File.expects(:unlink).with(@public_key_path)
79
+ Puppet::FileSystem::File.stubs(:unlink).with(@private_key_path)
80
+ Puppet::FileSystem::File.stubs(:exist?).with(@private_key_path).returns true
81
+ Puppet::FileSystem::File.expects(:exist?).with(@public_key_path).returns true
82
+ Puppet::FileSystem::File.expects(:unlink).with(@public_key_path)
84
83
 
85
84
  @searcher.destroy(@request)
86
85
  end
87
86
 
88
87
  it "should not fail if the public key does not exist when deleting the private key" do
89
- File.stubs(:unlink).with(@private_key_path)
88
+ Puppet::FileSystem::File.stubs(:unlink).with(@private_key_path)
90
89
 
91
- FileTest.stubs(:exist?).with(@private_key_path).returns true
92
- FileTest.expects(:exist?).with(@public_key_path).returns false
93
- File.expects(:unlink).with(@public_key_path).never
90
+ Puppet::FileSystem::File.stubs(:exist?).with(@private_key_path).returns true
91
+ Puppet::FileSystem::File.expects(:exist?).with(@public_key_path).returns false
92
+ Puppet::FileSystem::File.expects(:unlink).with(@public_key_path).never
94
93
 
95
94
  @searcher.destroy(@request)
96
95
  end
@@ -2,6 +2,13 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe "Puppet::Resource::Ral" do
5
+
6
+ it "is deprecated on the network, but still allows requests" do
7
+ Puppet.expects(:deprecation_warning)
8
+
9
+ expect(Puppet::Resource::Ral.new.allow_remote_requests?).to eq(true)
10
+ end
11
+
5
12
  describe "find" do
6
13
  before do
7
14
  @request = stub 'request', :key => "user/root"
@@ -9,4 +9,15 @@ end
9
9
 
10
10
  describe Puppet::Resource::StoreConfigs do
11
11
  it_should_behave_like "a StoreConfigs terminus"
12
+
13
+ before :each do
14
+ Puppet[:storeconfigs] = true
15
+ Puppet[:storeconfigs_backend] = "store_configs_testing"
16
+ end
17
+
18
+ it "is deprecated on the network, but still allows requests" do
19
+ Puppet.expects(:deprecation_warning)
20
+
21
+ expect(Puppet::Resource::StoreConfigs.new.allow_remote_requests?).to eq(true)
22
+ end
12
23
  end
@@ -109,6 +109,10 @@ describe Puppet::Indirector::REST do
109
109
  string.split(',').collect { |s| convert_from(format, s) }
110
110
  end
111
111
 
112
+ def to_data_hash
113
+ { 'name' => @name, 'data' => @data }
114
+ end
115
+
112
116
  def ==(other)
113
117
  other.is_a? Puppet::TestModel and other.name == name and other.data == data
114
118
  end
@@ -205,21 +209,21 @@ describe Puppet::Indirector::REST do
205
209
  @request = stub 'request', :key => "foo", :server => nil, :port => nil
206
210
  terminus.class.expects(:port).returns 321
207
211
  terminus.class.expects(:server).returns "myserver"
208
- Puppet::Network::HTTP::Connection.expects(:new).with("myserver", 321).returns "myconn"
212
+ Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
209
213
  terminus.network(@request).should == "myconn"
210
214
  end
211
215
 
212
216
  it "should use the server from the indirection request if one is present" do
213
217
  @request = stub 'request', :key => "foo", :server => "myserver", :port => nil
214
218
  terminus.class.stubs(:port).returns 321
215
- Puppet::Network::HTTP::Connection.expects(:new).with("myserver", 321).returns "myconn"
219
+ Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
216
220
  terminus.network(@request).should == "myconn"
217
221
  end
218
222
 
219
223
  it "should use the port from the indirection request if one is present" do
220
224
  @request = stub 'request', :key => "foo", :server => nil, :port => 321
221
225
  terminus.class.stubs(:server).returns "myserver"
222
- Puppet::Network::HTTP::Connection.expects(:new).with("myserver", 321).returns "myconn"
226
+ Puppet::Network::HttpPool.expects(:http_instance).with("myserver", 321).returns "myconn"
223
227
  terminus.network(@request).should == "myconn"
224
228
  end
225
229
  end
@@ -121,9 +121,9 @@ describe Puppet::Indirector::SslFile do
121
121
  describe "when finding certificates on disk" do
122
122
  describe "and no certificate is present" do
123
123
  it "should return nil" do
124
- FileTest.expects(:exist?).with(@path).returns(true)
124
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns(true)
125
125
  Dir.expects(:entries).with(@path).returns([])
126
- FileTest.expects(:exist?).with(@certpath).returns(false)
126
+ Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns(false)
127
127
 
128
128
  @searcher.find(@request).should be_nil
129
129
  end
@@ -139,7 +139,7 @@ describe Puppet::Indirector::SslFile do
139
139
 
140
140
  context "is readable" do
141
141
  it "should return an instance of the model, which it should use to read the certificate" do
142
- FileTest.expects(:exist?).with(@certpath).returns true
142
+ Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns true
143
143
 
144
144
  model.expects(:new).with("myname").returns cert
145
145
  cert.expects(:read).with(@certpath)
@@ -150,7 +150,7 @@ describe Puppet::Indirector::SslFile do
150
150
 
151
151
  context "is unreadable" do
152
152
  it "should raise an exception" do
153
- FileTest.expects(:exist?).with(@certpath).returns(true)
153
+ Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns(true)
154
154
 
155
155
  model.expects(:new).with("myname").returns cert
156
156
  cert.expects(:read).with(@certpath).raises(Errno::EACCES)
@@ -171,9 +171,9 @@ describe Puppet::Indirector::SslFile do
171
171
  # the support for upper-case certs can be removed around mid-2009.
172
172
  it "should rename the existing file to the lower-case path" do
173
173
  @path = @searcher.path("myhost")
174
- FileTest.expects(:exist?).with(@path).returns(false)
174
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns(false)
175
175
  dir, file = File.split(@path)
176
- FileTest.expects(:exist?).with(dir).returns true
176
+ Puppet::FileSystem::File.expects(:exist?).with(dir).returns true
177
177
  Dir.expects(:entries).with(dir).returns [".", "..", "something.pem", file.upcase]
178
178
 
179
179
  File.expects(:rename).with(File.join(dir, file.upcase), @path)
@@ -221,7 +221,7 @@ describe Puppet::Indirector::SslFile do
221
221
  @searcher.class.store_in @setting
222
222
  fh = mock 'filehandle'
223
223
  fh.stubs :print
224
- Puppet.settings.expects(:writesub).with(@setting, @certpath).yields fh
224
+ Puppet.settings.setting(@setting).expects(:open_file).with(@certpath, 'w').yields fh
225
225
 
226
226
  @searcher.save(@request)
227
227
  end
@@ -233,7 +233,7 @@ describe Puppet::Indirector::SslFile do
233
233
 
234
234
  fh = mock 'filehandle'
235
235
  fh.stubs :print
236
- Puppet.settings.expects(:write).with(@setting).yields fh
236
+ Puppet.settings.setting(@setting).expects(:open).with('w').yields fh
237
237
  @searcher.save(@request)
238
238
  end
239
239
  end
@@ -246,7 +246,7 @@ describe Puppet::Indirector::SslFile do
246
246
 
247
247
  fh = mock 'filehandle'
248
248
  fh.stubs :print
249
- Puppet.settings.expects(:write).with(:cakey).yields fh
249
+ Puppet.settings.setting(:cakey).expects(:open).with('w').yields fh
250
250
  @searcher.stubs(:ca?).returns true
251
251
  @searcher.save(@request)
252
252
  end
@@ -256,7 +256,7 @@ describe Puppet::Indirector::SslFile do
256
256
  describe "when destroying certificates" do
257
257
  describe "that do not exist" do
258
258
  before do
259
- FileTest.expects(:exist?).with(@certpath).returns false
259
+ Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns false
260
260
  end
261
261
 
262
262
  it "should return false" do
@@ -265,18 +265,15 @@ describe Puppet::Indirector::SslFile do
265
265
  end
266
266
 
267
267
  describe "that exist" do
268
- before do
269
- FileTest.expects(:exist?).with(@certpath).returns true
270
- end
271
-
272
268
  it "should unlink the certificate file" do
273
- File.expects(:unlink).with(@certpath)
269
+ Puppet::FileSystem::File.expects(:exist?).with(@certpath).returns true
270
+ Puppet::FileSystem::File.expects(:unlink).with(@certpath)
274
271
  @searcher.destroy(@request)
275
272
  end
276
273
 
277
274
  it "should log that is removing the file" do
278
- File.stubs(:exist?).returns true
279
- File.stubs(:unlink)
275
+ Puppet::FileSystem::File.stubs(:exist?).returns true
276
+ Puppet::FileSystem::File.stubs(:unlink)
280
277
  Puppet.expects(:notice)
281
278
  @searcher.destroy(@request)
282
279
  end