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
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Puppet::FileSystem::Tempfile do
4
+ it "makes the name of the file available" do
5
+ Puppet::FileSystem::Tempfile.open('foo') do |file|
6
+ expect(file.path).to match(/foo/)
7
+ end
8
+ end
9
+
10
+ it "provides a writeable file" do
11
+ Puppet::FileSystem::Tempfile.open('foo') do |file|
12
+ file.write("stuff")
13
+ file.flush
14
+
15
+ expect(Puppet::FileSystem::File.new(file.path).read).to eq("stuff")
16
+ end
17
+ end
18
+
19
+ it "returns the value of the block" do
20
+ the_value = Puppet::FileSystem::Tempfile.open('foo') do |file|
21
+ "my value"
22
+ end
23
+
24
+ expect(the_value).to eq("my value")
25
+ end
26
+
27
+ it "unlinks the temporary file" do
28
+ filename = Puppet::FileSystem::Tempfile.open('foo') do |file|
29
+ file.path
30
+ end
31
+
32
+ expect(Puppet::FileSystem::File.new(filename).exist?).to be_false
33
+ end
34
+
35
+ it "unlinks the temporary file even if the block raises an error" do
36
+ filename = nil
37
+
38
+ begin
39
+ Puppet::FileSystem::Tempfile.open('foo') do |file|
40
+ filename = file.path
41
+ raise "error!"
42
+ end
43
+ rescue
44
+ end
45
+
46
+ expect(Puppet::FileSystem::File.new(filename).exist?).to be_false
47
+ end
48
+ end
@@ -165,12 +165,6 @@ describe Puppet::Graph::RelationshipGraph do
165
165
  expect(order_resources_traversed_in(relationships)).to(
166
166
  include_in_order("Notify[a]", "Notify[b]", "Notify[c]", "Notify[d]"))
167
167
  end
168
-
169
- def order_resources_traversed_in(relationships)
170
- order_seen = []
171
- relationships.traverse { |resource| order_seen << resource.ref }
172
- order_seen
173
- end
174
168
  end
175
169
 
176
170
  describe "when interrupting traversal" do
@@ -52,7 +52,7 @@ describe 'HieraPuppet' do
52
52
  pending("This example does not apply to Puppet #{Puppet.version} because it does not have this setting")
53
53
  end
54
54
 
55
- File.stubs(:exist?).with(Puppet[:hiera_config]).returns(true)
55
+ Puppet::FileSystem::File.stubs(:exist?).with(Puppet[:hiera_config]).returns(true)
56
56
  HieraPuppet.send(:hiera_config_file).should == Puppet[:hiera_config]
57
57
  end
58
58
 
@@ -64,7 +64,7 @@ describe 'HieraPuppet' do
64
64
  end
65
65
  Puppet.settings[:confdir] = "/dev/null/puppet"
66
66
  hiera_config = File.join(Puppet[:confdir], 'hiera.yaml')
67
- File.stubs(:exist?).with(hiera_config).returns(true)
67
+ Puppet::FileSystem::File.stubs(:exist?).with(hiera_config).returns(true)
68
68
 
69
69
  HieraPuppet.send(:hiera_config_file).should == hiera_config
70
70
  end
@@ -24,12 +24,12 @@ describe Puppet::Resource::Catalog::Compiler do
24
24
  end
25
25
 
26
26
  it "should cache the server metadata and reuse it" do
27
+ Puppet[:node_terminus] = :memory
28
+ Puppet::Node.indirection.save(Puppet::Node.new("node1"))
29
+ Puppet::Node.indirection.save(Puppet::Node.new("node2"))
30
+
27
31
  compiler = Puppet::Resource::Catalog::Compiler.new
28
- node1 = stub 'node1', :merge => nil
29
- node2 = stub 'node2', :merge => nil
30
32
  compiler.stubs(:compile)
31
- Puppet::Node.indirection.stubs(:find).with('node1', has_entry(:environment => anything)).returns(node1)
32
- Puppet::Node.indirection.stubs(:find).with('node2', has_entry(:environment => anything)).returns(node2)
33
33
 
34
34
  compiler.find(Puppet::Indirector::Request.new(:catalog, :find, 'node1', nil, :node => 'node1'))
35
35
  compiler.find(Puppet::Indirector::Request.new(:catalog, :find, 'node2', nil, :node => 'node2'))
@@ -175,19 +175,16 @@ describe Puppet::Resource::Catalog::Compiler do
175
175
  end
176
176
 
177
177
  describe "when finding nodes" do
178
- before do
178
+ it "should look node information up via the Node class with the provided key" do
179
179
  Facter.stubs(:value).returns("whatever")
180
- @compiler = Puppet::Resource::Catalog::Compiler.new
181
- @name = "me"
182
- @node = mock 'node'
183
- @request = Puppet::Indirector::Request.new(:catalog, :find, @name, nil)
184
- @compiler.stubs(:compile)
185
- end
180
+ node = Puppet::Node.new('node')
181
+ compiler = Puppet::Resource::Catalog::Compiler.new
182
+ request = Puppet::Indirector::Request.new(:catalog, :find, "me", nil)
183
+ compiler.stubs(:compile)
186
184
 
187
- it "should look node information up via the Node class with the provided key" do
188
- @node.stubs :merge
189
- Puppet::Node.indirection.expects(:find).with(@name, anything).returns(@node)
190
- @compiler.find(@request)
185
+ Puppet::Node.indirection.expects(:find).with("me", anything).returns(node)
186
+
187
+ compiler.find(request)
191
188
  end
192
189
  end
193
190
 
@@ -197,11 +194,10 @@ describe Puppet::Resource::Catalog::Compiler do
197
194
  Facter.expects(:value).with('fqdn').returns("my.server.com")
198
195
  Facter.expects(:value).with('ipaddress').returns("my.ip.address")
199
196
  @compiler = Puppet::Resource::Catalog::Compiler.new
200
- @name = "me"
201
- @node = mock 'node'
202
- @request = Puppet::Indirector::Request.new(:catalog, :find, @name, nil)
197
+ @node = Puppet::Node.new("me")
198
+ @request = Puppet::Indirector::Request.new(:catalog, :find, "me", nil)
203
199
  @compiler.stubs(:compile)
204
- Puppet::Node.indirection.stubs(:find).with(@name, anything).returns(@node)
200
+ Puppet::Node.indirection.stubs(:find).with("me", anything).returns(@node)
205
201
  end
206
202
 
207
203
  it "should add the server's Puppet version to the node's parameters as 'serverversion'" do
@@ -87,16 +87,14 @@ describe "Puppet::Indirector::CertificateStatus::File" do
87
87
  retrieved_host.certificate_request.content.to_s.chomp.should == @host.certificate_request.content.to_s.chomp
88
88
  end
89
89
 
90
- it "should return the Puppet::SSL::Host when a public key exist for the host" do
91
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
92
- generate_signed_cert(@host)
93
- request = Puppet::Indirector::Request.new(:certificate_status, :find, "foo", @host)
90
+ it "should return the Puppet::SSL::Host when a public key exists for the host" do
91
+ generate_signed_cert(@host)
92
+ request = Puppet::Indirector::Request.new(:certificate_status, :find, "foo", @host)
94
93
 
95
- retrieved_host = @terminus.find(request)
94
+ retrieved_host = @terminus.find(request)
96
95
 
97
- retrieved_host.name.should == @host.name
98
- retrieved_host.certificate.content.to_s.chomp.should == @host.certificate.content.to_s.chomp
99
- end
96
+ retrieved_host.name.should == @host.name
97
+ retrieved_host.certificate.content.to_s.chomp.should == @host.certificate.content.to_s.chomp
100
98
  end
101
99
 
102
100
  it "should return nil when neither a CSR nor public key exist for the host" do
@@ -122,12 +120,10 @@ describe "Puppet::Indirector::CertificateStatus::File" do
122
120
  end
123
121
 
124
122
  it "should sign the on-disk CSR when it is present" do
125
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
126
- signed_host = generate_signed_cert(@host)
123
+ signed_host = generate_signed_cert(@host)
127
124
 
128
- signed_host.state.should == "signed"
129
- Puppet::SSL::Certificate.indirection.find("foobar").should be_instance_of(Puppet::SSL::Certificate)
130
- end
125
+ signed_host.state.should == "signed"
126
+ Puppet::SSL::Certificate.indirection.find("foobar").should be_instance_of(Puppet::SSL::Certificate)
131
127
  end
132
128
  end
133
129
 
@@ -142,11 +138,9 @@ describe "Puppet::Indirector::CertificateStatus::File" do
142
138
  end
143
139
 
144
140
  it "should revoke the certificate when it is present" do
145
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
146
- generate_revoked_cert(@host)
141
+ generate_revoked_cert(@host)
147
142
 
148
- @host.state.should == 'revoked'
149
- end
143
+ @host.state.should == 'revoked'
150
144
  end
151
145
  end
152
146
  end
@@ -163,39 +157,35 @@ describe "Puppet::Indirector::CertificateStatus::File" do
163
157
  end
164
158
 
165
159
  it "should clean certs, cert requests, keys" do
166
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
167
- signed_host = Puppet::SSL::Host.new("clean_signed_cert")
168
- generate_signed_cert(signed_host)
169
- signed_request = Puppet::Indirector::Request.new(:certificate_status, :delete, "clean_signed_cert", signed_host)
170
- @terminus.destroy(signed_request).should == "Deleted for clean_signed_cert: Puppet::SSL::Certificate, Puppet::SSL::Key"
171
-
172
- requested_host = Puppet::SSL::Host.new("clean_csr")
173
- generate_csr(requested_host)
174
- csr_request = Puppet::Indirector::Request.new(:certificate_status, :delete, "clean_csr", requested_host)
175
- @terminus.destroy(csr_request).should == "Deleted for clean_csr: Puppet::SSL::CertificateRequest, Puppet::SSL::Key"
176
- end
160
+ signed_host = Puppet::SSL::Host.new("clean_signed_cert")
161
+ generate_signed_cert(signed_host)
162
+ signed_request = Puppet::Indirector::Request.new(:certificate_status, :delete, "clean_signed_cert", signed_host)
163
+ @terminus.destroy(signed_request).should == "Deleted for clean_signed_cert: Puppet::SSL::Certificate, Puppet::SSL::Key"
164
+
165
+ requested_host = Puppet::SSL::Host.new("clean_csr")
166
+ generate_csr(requested_host)
167
+ csr_request = Puppet::Indirector::Request.new(:certificate_status, :delete, "clean_csr", requested_host)
168
+ @terminus.destroy(csr_request).should == "Deleted for clean_csr: Puppet::SSL::CertificateRequest, Puppet::SSL::Key"
177
169
  end
178
170
  end
179
171
 
180
172
  describe "when searching" do
181
173
  it "should return a list of all hosts with certificate requests, signed certs, or revoked certs" do
182
- pending("porting to Windows", :if => Puppet.features.microsoft_windows?) do
183
- Puppet.settings.use(:main)
174
+ Puppet.settings.use(:main)
184
175
 
185
- signed_host = Puppet::SSL::Host.new("signed_host")
186
- generate_signed_cert(signed_host)
176
+ signed_host = Puppet::SSL::Host.new("signed_host")
177
+ generate_signed_cert(signed_host)
187
178
 
188
- requested_host = Puppet::SSL::Host.new("requested_host")
189
- generate_csr(requested_host)
179
+ requested_host = Puppet::SSL::Host.new("requested_host")
180
+ generate_csr(requested_host)
190
181
 
191
- revoked_host = Puppet::SSL::Host.new("revoked_host")
192
- generate_revoked_cert(revoked_host)
182
+ revoked_host = Puppet::SSL::Host.new("revoked_host")
183
+ generate_revoked_cert(revoked_host)
193
184
 
194
- retrieved_hosts = @terminus.search(Puppet::Indirector::Request.new(:certificate_status, :search, "all", signed_host))
185
+ retrieved_hosts = @terminus.search(Puppet::Indirector::Request.new(:certificate_status, :search, "all", signed_host))
195
186
 
196
- results = retrieved_hosts.map {|h| [h.name, h.state]}.sort{ |h,i| h[0] <=> i[0] }
197
- results.should == [["ca","signed"],["requested_host","requested"],["revoked_host","revoked"],["signed_host","signed"]]
198
- end
187
+ results = retrieved_hosts.map {|h| [h.name, h.state]}.sort{ |h,i| h[0] <=> i[0] }
188
+ results.should == [["ca","signed"],["requested_host","requested"],["revoked_host","revoked"],["signed_host","signed"]]
199
189
  end
200
190
  end
201
191
  end
@@ -2,8 +2,32 @@ require 'spec_helper'
2
2
  require 'puppet/indirector/data_binding/hiera'
3
3
 
4
4
  describe Puppet::DataBinding::Hiera do
5
- it "should be a subclass of the Hiera terminus" do
6
- Puppet::DataBinding::Hiera.superclass.should equal(Puppet::Indirector::Hiera)
5
+ include PuppetSpec::Files
6
+
7
+ def write_hiera_config(config_file, datadir)
8
+ File.open(config_file, 'w') do |f|
9
+ f.write("---
10
+ :yaml:
11
+ :datadir: #{datadir}
12
+ :hierarchy: ['global', 'invalid']
13
+ :logger: 'noop'
14
+ :backends: ['yaml']
15
+ ")
16
+ end
17
+ end
18
+
19
+ def request(key)
20
+ Puppet::Indirector::Request.new(:hiera, :find, key, nil)
21
+ end
22
+
23
+ before do
24
+ hiera_config_file = tmpfile("hiera.yaml")
25
+ Puppet.settings[:hiera_config] = hiera_config_file
26
+ write_hiera_config(hiera_config_file, my_fixture_dir)
27
+ end
28
+
29
+ after do
30
+ Puppet::DataBinding::Hiera.instance_variable_set(:@hiera, nil)
7
31
  end
8
32
 
9
33
  it "should have documentation" do
@@ -18,4 +42,73 @@ describe Puppet::DataBinding::Hiera do
18
42
  it "should have its name set to :hiera" do
19
43
  Puppet::DataBinding::Hiera.name.should == :hiera
20
44
  end
45
+ it "should be the default data_binding terminus" do
46
+ Puppet.settings[:data_binding_terminus].should == :hiera
47
+ end
48
+
49
+ it "should raise an error if we don't have the hiera feature" do
50
+ Puppet.features.expects(:hiera?).returns(false)
51
+ lambda { Puppet::DataBinding::Hiera.new }.should raise_error RuntimeError,
52
+ "Hiera terminus not supported without hiera library"
53
+ end
54
+
55
+ describe "the behavior of the hiera_config method", :if => Puppet.features.hiera? do
56
+ it "should override the logger and set it to puppet" do
57
+ Puppet::DataBinding::Hiera.hiera_config[:logger].should == "puppet"
58
+ end
59
+
60
+ context "when the Hiera configuration file does not exist" do
61
+ let(:path) { File.expand_path('/doesnotexist') }
62
+
63
+ before do
64
+ Puppet.settings[:hiera_config] = path
65
+ end
66
+
67
+ it "should log a warning" do
68
+ Puppet.expects(:warning).with(
69
+ "Config file #{path} not found, using Hiera defaults")
70
+ Puppet::DataBinding::Hiera.hiera_config
71
+ end
72
+
73
+ it "should only configure the logger and set it to puppet" do
74
+ Puppet.expects(:warning).with(
75
+ "Config file #{path} not found, using Hiera defaults")
76
+ Puppet::DataBinding::Hiera.hiera_config.should == { :logger => 'puppet' }
77
+ end
78
+ end
79
+ end
80
+
81
+ describe "the behavior of the find method", :if => Puppet.features.hiera? do
82
+
83
+ let(:data_binder) { Puppet::DataBinding::Hiera.new }
84
+
85
+ it "should support looking up an integer" do
86
+ data_binder.find(request("integer")).should == 3000
87
+ end
88
+
89
+ it "should support looking up a string" do
90
+ data_binder.find(request("string")).should == 'apache'
91
+ end
92
+
93
+ it "should support looking up an array" do
94
+ data_binder.find(request("array")).should == [
95
+ '0.ntp.puppetlabs.com',
96
+ '1.ntp.puppetlabs.com',
97
+ ]
98
+ end
99
+
100
+ it "should support looking up a hash" do
101
+ data_binder.find(request("hash")).should == {
102
+ 'user' => 'Hightower',
103
+ 'group' => 'admin',
104
+ 'mode' => '0644'
105
+ }
106
+ end
107
+
108
+ it "raises a data binding error if hiera cannot parse the yaml data" do
109
+ expect do
110
+ data_binder.find(request('invalid'))
111
+ end.to raise_error(Puppet::DataBinding::LookupError)
112
+ end
113
+ end
21
114
  end
@@ -26,12 +26,12 @@ describe Puppet::Indirector::DirectFileServer do
26
26
  describe Puppet::Indirector::DirectFileServer, "when finding a single file" do
27
27
 
28
28
  it "should return nil if the file does not exist" do
29
- FileTest.expects(:exists?).with(@path).returns false
29
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns false
30
30
  @server.find(@request).should be_nil
31
31
  end
32
32
 
33
33
  it "should return a Content instance created with the full path to the file if the file exists" do
34
- FileTest.expects(:exists?).with(@path).returns true
34
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns true
35
35
  @model.expects(:new).returns(:mycontent)
36
36
  @server.find(@request).should == :mycontent
37
37
  end
@@ -42,7 +42,7 @@ describe Puppet::Indirector::DirectFileServer do
42
42
  before do
43
43
  @data = mock 'content'
44
44
  @data.stubs(:collect)
45
- FileTest.expects(:exists?).with(@path).returns true
45
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns true
46
46
  end
47
47
 
48
48
  it "should pass the full path to the instance" do
@@ -61,18 +61,18 @@ describe Puppet::Indirector::DirectFileServer do
61
61
 
62
62
  describe Puppet::Indirector::DirectFileServer, "when searching for multiple files" do
63
63
  it "should return nil if the file does not exist" do
64
- FileTest.expects(:exists?).with(@path).returns false
64
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns false
65
65
  @server.find(@request).should be_nil
66
66
  end
67
67
 
68
68
  it "should use :path2instances from the terminus_helper to return instances if the file exists" do
69
- FileTest.expects(:exists?).with(@path).returns true
69
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns true
70
70
  @server.expects(:path2instances)
71
71
  @server.search(@request)
72
72
  end
73
73
 
74
74
  it "should pass the original request to :path2instances" do
75
- FileTest.expects(:exists?).with(@path).returns true
75
+ Puppet::FileSystem::File.expects(:exist?).with(@path).returns true
76
76
  @server.expects(:path2instances).with(@request, @path)
77
77
  @server.search(@request)
78
78
  end
@@ -48,6 +48,9 @@ describe Puppet::Node::Facts::Facter do
48
48
  Facter.stubs(:to_hash).returns({})
49
49
  @name = "me"
50
50
  @request = stub 'request', :key => @name
51
+ @environment = stub 'environment'
52
+ @request.stubs(:environment).returns(@environment)
53
+ @request.environment.stubs(:modules).returns([])
51
54
  end
52
55
 
53
56
  describe Puppet::Node::Facts::Facter, " when finding facts" do
@@ -58,6 +61,15 @@ describe Puppet::Node::Facts::Facter do
58
61
  @facter.find(@request)
59
62
  end
60
63
 
64
+ it "should include external facts when feature is present" do
65
+ clear = sequence 'clear'
66
+ Puppet.features.stubs(:external_facts?).returns(:true)
67
+ Puppet::Node::Facts::Facter.expects(:setup_external_facts).in_sequence(clear)
68
+ Puppet::Node::Facts::Facter.expects(:reload_facter).in_sequence(clear)
69
+ Puppet::Node::Facts::Facter.expects(:load_fact_plugins).in_sequence(clear)
70
+ @facter.find(@request)
71
+ end
72
+
61
73
  it "should return a Facts instance" do
62
74
  @facter.find(@request).should be_instance_of(Puppet::Node::Facts)
63
75
  end
@@ -131,6 +143,20 @@ describe Puppet::Node::Facts::Facter do
131
143
  Puppet::Node::Facts::Facter.load_facts_in_dir("mydir")
132
144
  end
133
145
 
146
+ it "should include pluginfactdest when loading external facts",
147
+ :if => Puppet.features.external_facts?, :unless => Puppet.features.microsoft_windows? do
148
+ Puppet[:pluginfactdest] = "/plugin/dest"
149
+ @facter.find(@request)
150
+ Facter::Util::Config.external_facts_dirs.include?("/plugin/dest")
151
+ end
152
+
153
+ it "should include pluginfactdest when loading external facts",
154
+ :if => Puppet.features.external_facts?, :if => Puppet.features.microsoft_windows? do
155
+ Puppet[:pluginfactdest] = "/plugin/dest"
156
+ @facter.find(@request)
157
+ Facter::Util::Config.external_facts_dirs.include?("C:/plugin/dest")
158
+ end
159
+
134
160
  describe "when loading fact plugins from disk" do
135
161
  let(:one) { File.expand_path("one") }
136
162
  let(:two) { File.expand_path("two") }
@@ -160,5 +186,12 @@ describe Puppet::Node::Facts::Facter do
160
186
 
161
187
  Puppet::Node::Facts::Facter.load_fact_plugins
162
188
  end
189
+
190
+ it "should include module plugin facts when present", :if => Puppet.features.external_facts? do
191
+ mod = Puppet::Module.new("mymodule", "#{one}/mymodule", @request.environment)
192
+ @request.environment.stubs(:modules).returns([mod])
193
+ @facter.find(@request)
194
+ Facter::Util::Config.external_facts_dirs.include?("#{one}/mymodule/facts.d")
195
+ end
163
196
  end
164
197
  end