puppet 2.6.18 → 2.7.1

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 (1050) hide show
  1. data/CHANGELOG +733 -187
  2. data/LICENSE +13 -13
  3. data/README.md +5 -9
  4. data/Rakefile +1 -1
  5. data/conf/auth.conf +8 -3
  6. data/conf/redhat/puppet.spec +21 -110
  7. data/conf/solaris/pkginfo +3 -4
  8. data/conf/suse/puppet.spec +1 -1
  9. data/ext/cert_inspector +140 -0
  10. data/ext/nagios/naggen +12 -5
  11. data/ext/puppet-test +11 -5
  12. data/ext/vim/README +1 -2
  13. data/ext/yaml_nodes.rb +11 -5
  14. data/install.rb +1 -54
  15. data/lib/puppet.rb +6 -10
  16. data/lib/puppet/application.rb +23 -32
  17. data/lib/puppet/application/agent.rb +228 -7
  18. data/lib/puppet/application/apply.rb +108 -36
  19. data/lib/puppet/application/catalog.rb +4 -0
  20. data/lib/puppet/application/cert.rb +128 -17
  21. data/lib/puppet/application/certificate.rb +18 -0
  22. data/lib/puppet/application/certificate_request.rb +4 -0
  23. data/lib/puppet/application/certificate_revocation_list.rb +4 -0
  24. data/lib/puppet/application/config.rb +4 -0
  25. data/lib/puppet/application/describe.rb +53 -0
  26. data/lib/puppet/application/device.rb +255 -0
  27. data/lib/puppet/application/doc.rb +92 -6
  28. data/lib/puppet/application/face_base.rb +246 -0
  29. data/lib/puppet/application/facts.rb +4 -0
  30. data/lib/puppet/application/file.rb +4 -0
  31. data/lib/puppet/application/filebucket.rb +102 -0
  32. data/lib/puppet/application/help.rb +4 -0
  33. data/lib/puppet/application/indirection_base.rb +4 -0
  34. data/lib/puppet/application/inspect.rb +21 -23
  35. data/lib/puppet/application/key.rb +4 -0
  36. data/lib/puppet/application/kick.rb +131 -4
  37. data/lib/puppet/application/man.rb +4 -0
  38. data/lib/puppet/application/master.rb +108 -40
  39. data/lib/puppet/application/node.rb +4 -0
  40. data/lib/puppet/application/parser.rb +5 -0
  41. data/lib/puppet/application/plugin.rb +3 -0
  42. data/lib/puppet/application/queue.rb +75 -13
  43. data/lib/puppet/application/report.rb +4 -0
  44. data/lib/puppet/application/resource.rb +115 -23
  45. data/lib/puppet/application/resource_type.rb +4 -0
  46. data/lib/puppet/application/secret_agent.rb +6 -0
  47. data/lib/puppet/application/status.rb +4 -0
  48. data/lib/puppet/configurer.rb +57 -61
  49. data/lib/puppet/configurer/fact_handler.rb +1 -6
  50. data/lib/puppet/daemon.rb +2 -2
  51. data/lib/puppet/defaults.rb +30 -88
  52. data/lib/puppet/dsl/resource_type_api.rb +19 -31
  53. data/lib/puppet/external/nagios/parser.rb +1 -1
  54. data/lib/puppet/face.rb +12 -0
  55. data/lib/puppet/face/catalog.rb +130 -0
  56. data/lib/puppet/face/catalog/select.rb +49 -0
  57. data/lib/puppet/face/certificate.rb +115 -0
  58. data/lib/puppet/face/certificate_request.rb +55 -0
  59. data/lib/puppet/face/certificate_revocation_list.rb +60 -0
  60. data/lib/puppet/face/config.rb +45 -0
  61. data/lib/puppet/face/facts.rb +81 -0
  62. data/lib/puppet/face/file.rb +47 -0
  63. data/lib/puppet/face/file/download.rb +54 -0
  64. data/lib/puppet/face/file/store.rb +21 -0
  65. data/lib/puppet/face/help.rb +131 -0
  66. data/lib/puppet/face/help/action.erb +53 -0
  67. data/lib/puppet/face/help/face.erb +79 -0
  68. data/lib/puppet/face/help/global.erb +19 -0
  69. data/lib/puppet/face/help/man.erb +136 -0
  70. data/lib/puppet/face/key.rb +15 -0
  71. data/lib/puppet/face/man.rb +93 -0
  72. data/lib/puppet/face/node.rb +43 -0
  73. data/lib/puppet/face/parser.rb +42 -0
  74. data/lib/puppet/face/plugin.rb +55 -0
  75. data/lib/puppet/face/report.rb +56 -0
  76. data/lib/puppet/face/resource.rb +53 -0
  77. data/lib/puppet/face/resource_type.rb +81 -0
  78. data/lib/puppet/face/secret_agent.rb +54 -0
  79. data/lib/puppet/face/status.rb +52 -0
  80. data/lib/puppet/feature/ssh.rb +4 -0
  81. data/lib/puppet/file_bucket/dipper.rb +3 -3
  82. data/lib/puppet/file_bucket/file.rb +6 -5
  83. data/lib/puppet/file_bucket/file/indirection_hooks.rb +9 -0
  84. data/lib/puppet/file_serving/configuration.rb +1 -2
  85. data/lib/puppet/file_serving/content.rb +2 -1
  86. data/lib/puppet/file_serving/{terminus_selector.rb → indirection_hooks.rb} +3 -2
  87. data/lib/puppet/file_serving/metadata.rb +2 -1
  88. data/lib/puppet/file_serving/mount/modules.rb +5 -4
  89. data/lib/puppet/indirector.rb +16 -43
  90. data/lib/puppet/indirector/catalog/active_record.rb +1 -1
  91. data/lib/puppet/indirector/catalog/compiler.rb +5 -15
  92. data/lib/puppet/indirector/catalog/static_compiler.rb +137 -0
  93. data/lib/puppet/indirector/certificate_request/ca.rb +8 -0
  94. data/lib/puppet/indirector/certificate_status.rb +4 -0
  95. data/lib/puppet/indirector/certificate_status/file.rb +82 -0
  96. data/lib/puppet/indirector/certificate_status/rest.rb +10 -0
  97. data/lib/puppet/indirector/couch.rb +5 -3
  98. data/lib/puppet/indirector/exec.rb +3 -3
  99. data/lib/puppet/indirector/face.rb +127 -0
  100. data/lib/puppet/indirector/facts/network_device.rb +25 -0
  101. data/lib/puppet/indirector/file.rb +79 -0
  102. data/lib/puppet/indirector/file_bucket_file/file.rb +0 -4
  103. data/lib/puppet/indirector/indirection.rb +1 -2
  104. data/lib/puppet/indirector/inventory/yaml.rb +81 -0
  105. data/lib/puppet/indirector/report/processor.rb +0 -2
  106. data/lib/puppet/indirector/request.rb +0 -4
  107. data/lib/puppet/indirector/resource/ral.rb +0 -4
  108. data/lib/puppet/indirector/resource_type/parser.rb +19 -3
  109. data/lib/puppet/indirector/rest.rb +11 -5
  110. data/lib/puppet/indirector/run/local.rb +0 -4
  111. data/lib/puppet/indirector/ssl_file.rb +1 -5
  112. data/lib/puppet/indirector/terminus.rb +3 -26
  113. data/lib/puppet/indirector/yaml.rb +0 -5
  114. data/lib/puppet/interface.rb +156 -0
  115. data/lib/puppet/interface/action.rb +284 -0
  116. data/lib/puppet/interface/action_builder.rb +74 -0
  117. data/lib/puppet/interface/action_manager.rb +70 -0
  118. data/lib/puppet/interface/documentation.rb +230 -0
  119. data/lib/puppet/interface/face_collection.rb +137 -0
  120. data/lib/puppet/interface/option.rb +108 -0
  121. data/lib/puppet/interface/option_builder.rb +54 -0
  122. data/lib/puppet/interface/option_manager.rb +67 -0
  123. data/lib/puppet/metatype/manager.rb +20 -7
  124. data/lib/puppet/module.rb +1 -1
  125. data/lib/puppet/network/client.rb +179 -0
  126. data/lib/puppet/network/client/ca.rb +56 -0
  127. data/lib/puppet/network/client/file.rb +6 -0
  128. data/lib/puppet/network/client/proxy.rb +27 -0
  129. data/lib/puppet/network/client/report.rb +26 -0
  130. data/lib/puppet/network/client/runner.rb +10 -0
  131. data/lib/puppet/network/client/status.rb +4 -0
  132. data/lib/puppet/network/format.rb +1 -1
  133. data/lib/puppet/network/formats.rb +63 -0
  134. data/lib/puppet/network/handler/ca.rb +106 -16
  135. data/lib/puppet/network/handler/filebucket.rb +2 -4
  136. data/lib/puppet/network/handler/fileserver.rb +3 -2
  137. data/lib/puppet/network/handler/master.rb +5 -3
  138. data/lib/puppet/network/handler/report.rb +0 -2
  139. data/lib/puppet/network/handler/runner.rb +0 -2
  140. data/lib/puppet/network/handler/status.rb +0 -2
  141. data/lib/puppet/network/http/api/v1.rb +11 -3
  142. data/lib/puppet/network/http/handler.rb +26 -35
  143. data/lib/puppet/network/http/rack/rest.rb +2 -7
  144. data/lib/puppet/network/http/webrick.rb +1 -2
  145. data/lib/puppet/network/http_pool.rb +8 -17
  146. data/lib/puppet/network/http_server/mongrel.rb +1 -0
  147. data/lib/puppet/network/http_server/webrick.rb +155 -0
  148. data/lib/puppet/network/rest_authconfig.rb +4 -3
  149. data/lib/puppet/network/rest_authorization.rb +2 -2
  150. data/lib/puppet/network/rights.rb +4 -9
  151. data/lib/puppet/network/server.rb +1 -1
  152. data/lib/puppet/network/xmlrpc/client.rb +211 -0
  153. data/lib/puppet/node.rb +2 -1
  154. data/lib/puppet/node/environment.rb +30 -3
  155. data/lib/puppet/node/facts.rb +15 -15
  156. data/lib/puppet/node/inventory.rb +7 -0
  157. data/lib/puppet/parser/ast.rb +6 -2
  158. data/lib/puppet/parser/ast/astarray.rb +12 -23
  159. data/lib/puppet/parser/ast/caseopt.rb +12 -24
  160. data/lib/puppet/parser/ast/definition.rb +17 -0
  161. data/lib/puppet/parser/ast/hostclass.rb +29 -0
  162. data/lib/puppet/parser/ast/leaf.rb +2 -2
  163. data/lib/puppet/parser/ast/node.rb +20 -0
  164. data/lib/puppet/parser/ast/resource.rb +42 -50
  165. data/lib/puppet/parser/ast/resource_instance.rb +9 -0
  166. data/lib/puppet/parser/ast/resource_override.rb +2 -3
  167. data/lib/puppet/parser/ast/resource_reference.rb +1 -1
  168. data/lib/puppet/parser/ast/top_level_construct.rb +4 -0
  169. data/lib/puppet/parser/ast/vardef.rb +1 -1
  170. data/lib/puppet/parser/compiler.rb +16 -17
  171. data/lib/puppet/parser/functions/create_resources.rb +47 -0
  172. data/lib/puppet/parser/functions/extlookup.rb +2 -7
  173. data/lib/puppet/parser/functions/fqdn_rand.rb +2 -2
  174. data/lib/puppet/parser/functions/sha1.rb +1 -1
  175. data/lib/puppet/parser/grammar.ra +67 -144
  176. data/lib/puppet/parser/lexer.rb +1 -1
  177. data/lib/puppet/parser/parser.rb +1190 -1262
  178. data/lib/puppet/parser/parser_support.rb +48 -73
  179. data/lib/puppet/parser/resource.rb +2 -19
  180. data/lib/puppet/parser/scope.rb +33 -103
  181. data/lib/puppet/parser/templatewrapper.rb +21 -22
  182. data/lib/puppet/parser/type_loader.rb +60 -35
  183. data/lib/puppet/provider/aixobject.rb +393 -0
  184. data/lib/puppet/provider/augeas/augeas.rb +37 -15
  185. data/lib/puppet/provider/cisco.rb +9 -0
  186. data/lib/puppet/provider/cron/crontab.rb +1 -7
  187. data/lib/puppet/provider/exec/posix.rb +3 -6
  188. data/lib/puppet/provider/exec/shell.rb +2 -11
  189. data/lib/puppet/provider/file/posix.rb +1 -1
  190. data/lib/puppet/provider/file/win32.rb +1 -1
  191. data/lib/puppet/provider/group/aix.rb +141 -0
  192. data/lib/puppet/provider/group/directoryservice.rb +0 -14
  193. data/lib/puppet/provider/host/parsed.rb +23 -55
  194. data/lib/puppet/provider/interface/base.rb +0 -0
  195. data/lib/puppet/provider/interface/cisco.rb +27 -0
  196. data/lib/puppet/provider/mcx/mcxcontent.rb +57 -96
  197. data/lib/puppet/provider/mount/parsed.rb +1 -1
  198. data/lib/puppet/provider/naginator.rb +1 -9
  199. data/lib/puppet/provider/nameservice/directoryservice.rb +41 -26
  200. data/lib/puppet/provider/network_device.rb +68 -0
  201. data/lib/puppet/provider/package/appdmg.rb +13 -13
  202. data/lib/puppet/provider/package/aptitude.rb +0 -1
  203. data/lib/puppet/provider/package/pip.rb +109 -0
  204. data/lib/puppet/provider/package/pkgdmg.rb +24 -32
  205. data/lib/puppet/provider/package/pkgutil.rb +175 -0
  206. data/lib/puppet/provider/package/yum.rb +8 -1
  207. data/lib/puppet/provider/service/daemontools.rb +1 -1
  208. data/lib/puppet/provider/service/launchd.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +3 -3
  210. data/lib/puppet/provider/service/upstart.rb +73 -0
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +9 -10
  212. data/lib/puppet/provider/user/aix.rb +353 -0
  213. data/lib/puppet/provider/user/directoryservice.rb +0 -14
  214. data/lib/puppet/provider/user/user_role_add.rb +17 -32
  215. data/lib/puppet/provider/vlan/cisco.rb +28 -0
  216. data/lib/puppet/provider/zfs/solaris.rb +1 -1
  217. data/lib/puppet/provider/zone/solaris.rb +3 -0
  218. data/lib/puppet/provider/zpool/solaris.rb +7 -5
  219. data/lib/puppet/rails.rb +1 -1
  220. data/lib/puppet/rails/benchmark.rb +1 -1
  221. data/lib/puppet/rails/fact_name.rb +1 -0
  222. data/lib/puppet/rails/host.rb +0 -7
  223. data/lib/puppet/reference/configuration.rb +26 -101
  224. data/lib/puppet/reports/store.rb +3 -7
  225. data/lib/puppet/resource.rb +1 -1
  226. data/lib/puppet/resource/catalog.rb +86 -36
  227. data/lib/puppet/resource/type.rb +10 -15
  228. data/lib/puppet/resource/type_collection.rb +55 -63
  229. data/lib/puppet/simple_graph.rb +370 -269
  230. data/lib/puppet/ssl/base.rb +0 -8
  231. data/lib/puppet/ssl/certificate.rb +0 -6
  232. data/lib/puppet/ssl/certificate_authority.rb +24 -109
  233. data/lib/puppet/ssl/certificate_authority/interface.rb +19 -66
  234. data/lib/puppet/ssl/certificate_factory.rb +91 -112
  235. data/lib/puppet/ssl/certificate_request.rb +15 -98
  236. data/lib/puppet/ssl/certificate_revocation_list.rb +1 -1
  237. data/lib/puppet/ssl/host.rb +85 -51
  238. data/lib/puppet/ssl/inventory.rb +1 -1
  239. data/lib/puppet/sslcertificates.rb +146 -0
  240. data/lib/puppet/sslcertificates/ca.rb +375 -0
  241. data/lib/puppet/sslcertificates/certificate.rb +255 -0
  242. data/lib/puppet/sslcertificates/inventory.rb +38 -0
  243. data/lib/puppet/sslcertificates/support.rb +146 -0
  244. data/lib/puppet/status.rb +1 -1
  245. data/lib/puppet/transaction.rb +163 -94
  246. data/lib/puppet/transaction/event.rb +1 -1
  247. data/lib/puppet/transaction/event_manager.rb +19 -3
  248. data/lib/puppet/transaction/report.rb +9 -3
  249. data/lib/puppet/type.rb +107 -62
  250. data/lib/puppet/type/augeas.rb +10 -14
  251. data/lib/puppet/type/cron.rb +13 -14
  252. data/lib/puppet/type/exec.rb +0 -9
  253. data/lib/puppet/type/file.rb +20 -29
  254. data/lib/puppet/type/file/ctime.rb +1 -1
  255. data/lib/puppet/type/file/ensure.rb +1 -1
  256. data/lib/puppet/type/file/group.rb +1 -1
  257. data/lib/puppet/type/file/mode.rb +1 -1
  258. data/lib/puppet/type/file/mtime.rb +1 -1
  259. data/lib/puppet/type/file/selcontext.rb +1 -1
  260. data/lib/puppet/type/file/source.rb +3 -3
  261. data/lib/puppet/type/file/type.rb +1 -1
  262. data/lib/puppet/type/group.rb +36 -0
  263. data/lib/puppet/type/host.rb +18 -43
  264. data/lib/puppet/type/interface.rb +109 -0
  265. data/lib/puppet/type/k5login.rb +1 -4
  266. data/lib/puppet/type/macauthorization.rb +3 -3
  267. data/lib/puppet/type/mcx.rb +2 -21
  268. data/lib/puppet/type/router.rb +14 -0
  269. data/lib/puppet/type/schedule.rb +2 -0
  270. data/lib/puppet/type/service.rb +2 -0
  271. data/lib/puppet/type/sshkey.rb +6 -1
  272. data/lib/puppet/type/tidy.rb +12 -12
  273. data/lib/puppet/type/user.rb +36 -9
  274. data/lib/puppet/type/vlan.rb +26 -0
  275. data/lib/puppet/type/whit.rb +13 -1
  276. data/lib/puppet/type/zfs.rb +100 -8
  277. data/lib/puppet/type/zone.rb +45 -1
  278. data/lib/puppet/type/zpool.rb +1 -0
  279. data/lib/puppet/util.rb +63 -91
  280. data/lib/puppet/util/autoload.rb +16 -14
  281. data/lib/puppet/util/classgen.rb +13 -1
  282. data/lib/puppet/util/command_line.rb +109 -22
  283. data/lib/puppet/util/log.rb +1 -0
  284. data/lib/puppet/util/log/destinations.rb +16 -4
  285. data/lib/puppet/util/logging.rb +11 -0
  286. data/lib/puppet/util/monkey_patches.rb +7 -77
  287. data/lib/puppet/util/network_device.rb +17 -0
  288. data/lib/puppet/util/network_device/base.rb +27 -0
  289. data/lib/puppet/util/network_device/cisco.rb +4 -0
  290. data/lib/puppet/util/network_device/cisco/device.rb +256 -0
  291. data/lib/puppet/util/network_device/cisco/facts.rb +72 -0
  292. data/lib/puppet/util/network_device/cisco/interface.rb +82 -0
  293. data/lib/puppet/util/network_device/config.rb +93 -0
  294. data/lib/puppet/util/network_device/ipcalc.rb +68 -0
  295. data/lib/puppet/util/network_device/transport.rb +3 -0
  296. data/lib/puppet/util/network_device/transport/base.rb +26 -0
  297. data/lib/puppet/util/network_device/transport/ssh.rb +121 -0
  298. data/lib/puppet/util/network_device/transport/telnet.rb +42 -0
  299. data/lib/puppet/util/rdoc.rb +4 -10
  300. data/lib/puppet/util/rdoc/parser.rb +34 -23
  301. data/lib/puppet/util/reference.rb +7 -8
  302. data/lib/puppet/util/selinux.rb +2 -2
  303. data/lib/puppet/util/settings.rb +1 -6
  304. data/lib/puppet/util/settings/file_setting.rb +0 -1
  305. data/lib/puppet/util/suidmanager.rb +30 -79
  306. data/lib/puppet/util/zaml.rb +41 -40
  307. data/man/man5/puppet.conf.5 +291 -873
  308. data/man/man8/filebucket.8 +47 -71
  309. data/man/man8/pi.8 +44 -10
  310. data/man/man8/puppet-agent.8 +154 -0
  311. data/man/man8/puppet-apply.8 +75 -0
  312. data/man/man8/puppet-catalog.8 +286 -0
  313. data/man/man8/puppet-cert.8 +97 -0
  314. data/man/man8/puppet-certificate.8 +229 -0
  315. data/man/man8/puppet-certificate_request.8 +168 -0
  316. data/man/man8/puppet-certificate_revocation_list.8 +165 -0
  317. data/man/man8/puppet-config.8 +80 -0
  318. data/man/man8/puppet-describe.8 +51 -0
  319. data/man/man8/puppet-device.8 +86 -0
  320. data/man/man8/puppet-doc.8 +101 -0
  321. data/man/man8/puppet-facts.8 +217 -0
  322. data/man/man8/puppet-file.8 +225 -0
  323. data/man/man8/puppet-filebucket.8 +81 -0
  324. data/man/man8/puppet-help.8 +71 -0
  325. data/man/man8/puppet-inspect.8 +28 -0
  326. data/man/man8/puppet-key.8 +126 -0
  327. data/man/man8/puppet-kick.8 +95 -0
  328. data/man/man8/puppet-man.8 +74 -0
  329. data/man/man8/puppet-master.8 +74 -0
  330. data/man/man8/puppet-node.8 +171 -0
  331. data/man/man8/puppet-parser.8 +71 -0
  332. data/man/man8/puppet-plugin.8 +77 -0
  333. data/man/man8/puppet-queue.8 +55 -0
  334. data/man/man8/puppet-report.8 +187 -0
  335. data/man/man8/puppet-resource.8 +84 -0
  336. data/man/man8/puppet-resource_type.8 +214 -0
  337. data/man/man8/puppet-secret_agent.8 +74 -0
  338. data/man/man8/puppet-status.8 +150 -0
  339. data/man/man8/puppet.8 +2 -2
  340. data/man/man8/puppetca.8 +64 -136
  341. data/man/man8/puppetd.8 +99 -228
  342. data/man/man8/puppetdoc.8 +41 -48
  343. data/man/man8/puppetmasterd.8 +54 -32
  344. data/man/man8/puppetqd.8 +45 -10
  345. data/man/man8/puppetrun.8 +56 -134
  346. data/man/man8/ralsh.8 +48 -49
  347. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +8 -0
  348. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +28 -0
  349. data/spec/fixtures/unit/parser/lexer/aliastest.pp +16 -0
  350. data/spec/fixtures/unit/parser/lexer/append.pp +11 -0
  351. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +14 -0
  352. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +8 -0
  353. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +3 -0
  354. data/spec/fixtures/unit/parser/lexer/casestatement.pp +65 -0
  355. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +15 -0
  356. data/spec/fixtures/unit/parser/lexer/classincludes.pp +17 -0
  357. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +11 -0
  358. data/spec/fixtures/unit/parser/lexer/collection.pp +10 -0
  359. data/spec/fixtures/unit/parser/lexer/collection_override.pp +8 -0
  360. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +20 -0
  361. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +11 -0
  362. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +8 -0
  363. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +23 -0
  364. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +17 -0
  365. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +9 -0
  366. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +3 -0
  367. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +9 -0
  368. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +3 -0
  369. data/spec/fixtures/unit/parser/lexer/filecreate.pp +11 -0
  370. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +5 -0
  371. data/spec/fixtures/unit/parser/lexer/fqparents.pp +11 -0
  372. data/spec/fixtures/unit/parser/lexer/funccomma.pp +5 -0
  373. data/spec/fixtures/unit/parser/lexer/hash.pp +33 -0
  374. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +12 -0
  375. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +15 -0
  376. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +10 -0
  377. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +9 -0
  378. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +7 -0
  379. data/spec/fixtures/unit/parser/lexer/multisubs.pp +13 -0
  380. data/spec/fixtures/unit/parser/lexer/namevartest.pp +9 -0
  381. data/spec/fixtures/unit/parser/lexer/scopetest.pp +13 -0
  382. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +49 -0
  383. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +5 -0
  384. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +38 -0
  385. data/spec/fixtures/unit/parser/lexer/singleary.pp +19 -0
  386. data/spec/fixtures/unit/parser/lexer/singlequote.pp +11 -0
  387. data/spec/fixtures/unit/parser/lexer/singleselector.pp +22 -0
  388. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +11 -0
  389. data/spec/fixtures/unit/parser/lexer/tag.pp +9 -0
  390. data/spec/fixtures/unit/parser/lexer/tagged.pp +35 -0
  391. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +14 -0
  392. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +19 -0
  393. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +144 -0
  394. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +7 -0
  395. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +6 -0
  396. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +8 -0
  397. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +3 -0
  398. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +17 -0
  399. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +11 -0
  400. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +5 -0
  401. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +9 -0
  402. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +8 -0
  403. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +4 -0
  404. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +4 -0
  405. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +11 -0
  406. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +6 -0
  407. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +7 -0
  408. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +3 -0
  409. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +1 -0
  410. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +3 -0
  411. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +30 -0
  412. data/spec/fixtures/unit/util/rdoc/basic.pp +16 -0
  413. data/spec/integration/application/apply_spec.rb +2 -5
  414. data/spec/integration/application/doc_spec.rb +5 -6
  415. data/spec/integration/configurer_spec.rb +10 -6
  416. data/spec/integration/defaults_spec.rb +18 -52
  417. data/spec/integration/faces/documentation_spec.rb +55 -0
  418. data/spec/integration/file_serving/content_spec.rb +10 -3
  419. data/spec/integration/file_serving/fileset_spec.rb +2 -3
  420. data/spec/integration/file_serving/metadata_spec.rb +10 -3
  421. data/spec/integration/file_serving/terminus_helper_spec.rb +2 -3
  422. data/spec/integration/indirector/catalog/compiler_spec.rb +7 -12
  423. data/spec/integration/indirector/catalog/queue_spec.rb +3 -4
  424. data/spec/integration/indirector/direct_file_server_spec.rb +2 -2
  425. data/spec/integration/indirector/file_content/file_server_spec.rb +7 -7
  426. data/spec/integration/indirector/file_metadata/file_server_spec.rb +2 -2
  427. data/spec/integration/indirector/node/ldap_spec.rb +3 -4
  428. data/spec/integration/network/client_spec.rb +18 -0
  429. data/spec/integration/network/formats_spec.rb +3 -4
  430. data/spec/integration/network/handler_spec.rb +3 -4
  431. data/spec/integration/network/server/mongrel_spec.rb +3 -4
  432. data/spec/integration/network/server/webrick_spec.rb +4 -4
  433. data/spec/integration/node/environment_spec.rb +2 -3
  434. data/spec/integration/node/facts_spec.rb +6 -6
  435. data/spec/integration/node_spec.rb +16 -16
  436. data/spec/integration/parser/collector_spec.rb +3 -4
  437. data/spec/integration/parser/compiler_spec.rb +43 -3
  438. data/spec/integration/parser/functions/require_spec.rb +2 -3
  439. data/spec/integration/parser/functions_spec.rb +3 -4
  440. data/spec/integration/parser/parser_spec.rb +7 -6
  441. data/spec/integration/parser/ruby_manifest_spec.rb +2 -3
  442. data/spec/integration/provider/mailalias/aliases_spec.rb +5 -19
  443. data/spec/integration/provider/mount_spec.rb +2 -2
  444. data/spec/integration/provider/package_spec.rb +3 -4
  445. data/spec/integration/provider/service/init_spec.rb +4 -6
  446. data/spec/integration/reference/providers_spec.rb +2 -3
  447. data/spec/integration/reports_spec.rb +2 -2
  448. data/spec/integration/resource/catalog_spec.rb +6 -7
  449. data/spec/integration/resource/type_collection_spec.rb +2 -3
  450. data/spec/integration/ssl/certificate_authority_spec.rb +7 -7
  451. data/spec/integration/ssl/certificate_request_spec.rb +7 -7
  452. data/spec/integration/ssl/certificate_revocation_list_spec.rb +2 -2
  453. data/spec/integration/ssl/host_spec.rb +4 -4
  454. data/spec/integration/transaction/report_spec.rb +3 -3
  455. data/spec/integration/transaction_spec.rb +61 -6
  456. data/spec/integration/type/file_spec.rb +10 -8
  457. data/spec/integration/type/package_spec.rb +2 -3
  458. data/spec/integration/type/tidy_spec.rb +2 -3
  459. data/spec/integration/type_spec.rb +2 -14
  460. data/spec/integration/util/autoload_spec.rb +2 -3
  461. data/spec/integration/util/feature_spec.rb +2 -3
  462. data/spec/integration/util/file_locking_spec.rb +3 -4
  463. data/spec/integration/util/rdoc/parser_spec.rb +3 -4
  464. data/spec/integration/util/settings_spec.rb +2 -3
  465. data/spec/lib/matchers/json.rb +111 -0
  466. data/spec/lib/puppet/face/basetest.rb +46 -0
  467. data/spec/lib/puppet/face/huzzah.rb +7 -0
  468. data/spec/lib/puppet/face/version_matching.rb +12 -0
  469. data/spec/lib/puppet_spec/files.rb +38 -5
  470. data/spec/lib/puppet_spec/fixtures.rb +28 -0
  471. data/spec/lib/puppet_spec/matchers.rb +87 -0
  472. data/spec/lib/puppet_spec/verbose.rb +0 -0
  473. data/spec/monkey_patches/alias_should_to_must.rb +0 -0
  474. data/spec/monkey_patches/publicize_methods.rb +0 -0
  475. data/spec/shared_behaviours/all_parsedfile_providers.rb +21 -0
  476. data/spec/shared_behaviours/an_indirector_face.rb +6 -0
  477. data/spec/shared_behaviours/documentation_on_faces.rb +263 -0
  478. data/spec/shared_behaviours/file_server_terminus.rb +1 -1
  479. data/spec/shared_behaviours/file_serving.rb +61 -70
  480. data/spec/shared_behaviours/memory_terminus.rb +0 -0
  481. data/spec/shared_behaviours/path_parameters.rb +0 -0
  482. data/spec/shared_behaviours/things_that_declare_options.rb +150 -0
  483. data/spec/spec.opts +0 -2
  484. data/spec/spec_helper.rb +33 -75
  485. data/spec/unit/agent/locker_spec.rb +2 -3
  486. data/spec/unit/agent_spec.rb +2 -2
  487. data/spec/unit/application/agent_spec.rb +51 -76
  488. data/spec/unit/application/apply_spec.rb +86 -150
  489. data/spec/unit/application/cert_spec.rb +8 -30
  490. data/spec/unit/application/certificate_spec.rb +20 -0
  491. data/spec/unit/application/config_spec.rb +9 -0
  492. data/spec/unit/application/describe_spec.rb +2 -3
  493. data/spec/unit/application/device_spec.rb +342 -0
  494. data/spec/unit/application/doc_spec.rb +11 -18
  495. data/spec/unit/application/face_base_spec.rb +360 -0
  496. data/spec/unit/application/facts_spec.rb +27 -0
  497. data/spec/unit/application/filebucket_spec.rb +7 -18
  498. data/spec/unit/application/indirection_base_spec.rb +42 -0
  499. data/spec/unit/application/inspect_spec.rb +7 -13
  500. data/spec/unit/application/kick_spec.rb +15 -38
  501. data/spec/unit/application/master_spec.rb +25 -81
  502. data/spec/unit/application/queue_spec.rb +12 -22
  503. data/spec/unit/application/resource_spec.rb +19 -53
  504. data/spec/unit/application/secret_agent_spec.rb +32 -0
  505. data/spec/unit/application_spec.rb +65 -34
  506. data/spec/unit/configurer/downloader_spec.rb +2 -3
  507. data/spec/unit/configurer/fact_handler_spec.rb +39 -46
  508. data/spec/unit/configurer/plugin_handler_spec.rb +2 -3
  509. data/spec/unit/configurer_spec.rb +329 -411
  510. data/spec/unit/daemon_spec.rb +7 -14
  511. data/spec/unit/dsl/resource_api_spec.rb +2 -3
  512. data/spec/unit/dsl/resource_type_api_spec.rb +24 -37
  513. data/spec/unit/face/catalog_spec.rb +7 -0
  514. data/spec/unit/face/certificate_request_spec.rb +7 -0
  515. data/spec/unit/face/certificate_revocation_list_spec.rb +7 -0
  516. data/spec/unit/face/certificate_spec.rb +23 -0
  517. data/spec/unit/face/config_spec.rb +24 -0
  518. data/spec/unit/face/facts_spec.rb +23 -0
  519. data/spec/unit/face/file_spec.rb +12 -0
  520. data/spec/unit/face/help_spec.rb +129 -0
  521. data/spec/unit/face/key_spec.rb +7 -0
  522. data/spec/unit/face/node_spec.rb +7 -0
  523. data/spec/unit/face/plugin_spec.rb +10 -0
  524. data/spec/unit/face/report_spec.rb +7 -0
  525. data/spec/unit/face/resource_spec.rb +7 -0
  526. data/spec/unit/face/resource_type_spec.rb +7 -0
  527. data/spec/unit/face/secret_agent_spec.rb +25 -0
  528. data/spec/unit/face_spec.rb +1 -0
  529. data/spec/unit/file_bucket/dipper_spec.rb +7 -8
  530. data/spec/unit/file_bucket/file_spec.rb +7 -16
  531. data/spec/unit/file_collection/lookup_spec.rb +2 -3
  532. data/spec/unit/file_collection_spec.rb +2 -3
  533. data/spec/unit/file_serving/base_spec.rb +2 -3
  534. data/spec/unit/file_serving/configuration/parser_spec.rb +2 -3
  535. data/spec/unit/file_serving/configuration_spec.rb +31 -40
  536. data/spec/unit/file_serving/content_spec.rb +6 -3
  537. data/spec/unit/file_serving/fileset_spec.rb +2 -3
  538. data/spec/unit/file_serving/{terminus_selector_spec.rb → indirection_hooks_spec.rb} +14 -13
  539. data/spec/unit/file_serving/metadata_spec.rb +6 -3
  540. data/spec/unit/file_serving/mount/file_spec.rb +2 -3
  541. data/spec/unit/file_serving/mount/modules_spec.rb +2 -11
  542. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -3
  543. data/spec/unit/file_serving/mount_spec.rb +2 -3
  544. data/spec/unit/file_serving/terminus_helper_spec.rb +2 -2
  545. data/spec/unit/indirector/active_record_spec.rb +5 -7
  546. data/spec/unit/indirector/catalog/active_record_spec.rb +2 -3
  547. data/spec/unit/indirector/catalog/compiler_spec.rb +30 -50
  548. data/spec/unit/indirector/catalog/queue_spec.rb +2 -3
  549. data/spec/unit/indirector/catalog/rest_spec.rb +2 -3
  550. data/spec/unit/indirector/catalog/yaml_spec.rb +2 -3
  551. data/spec/unit/indirector/certificate/ca_spec.rb +2 -2
  552. data/spec/unit/indirector/certificate/file_spec.rb +2 -2
  553. data/spec/unit/indirector/certificate/rest_spec.rb +2 -3
  554. data/spec/unit/indirector/certificate_request/ca_spec.rb +47 -2
  555. data/spec/unit/indirector/certificate_request/file_spec.rb +2 -2
  556. data/spec/unit/indirector/certificate_request/rest_spec.rb +2 -3
  557. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +2 -2
  558. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +2 -2
  559. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +2 -3
  560. data/spec/unit/indirector/certificate_status/file_spec.rb +187 -0
  561. data/spec/unit/indirector/certificate_status/rest_spec.rb +14 -0
  562. data/spec/unit/indirector/code_spec.rb +6 -8
  563. data/spec/unit/indirector/direct_file_server_spec.rb +6 -7
  564. data/spec/unit/indirector/envelope_spec.rb +2 -3
  565. data/spec/unit/indirector/exec_spec.rb +12 -13
  566. data/spec/unit/indirector/face_spec.rb +68 -0
  567. data/spec/unit/indirector/facts/active_record_spec.rb +2 -3
  568. data/spec/unit/indirector/facts/couch_spec.rb +71 -66
  569. data/spec/unit/indirector/facts/facter_spec.rb +2 -2
  570. data/spec/unit/indirector/facts/inventory_active_record_spec.rb +20 -20
  571. data/spec/unit/indirector/facts/network_device_spec.rb +89 -0
  572. data/spec/unit/indirector/facts/rest_spec.rb +2 -3
  573. data/spec/unit/indirector/facts/yaml_spec.rb +2 -3
  574. data/spec/unit/indirector/file_bucket_file/file_spec.rb +17 -18
  575. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +2 -3
  576. data/spec/unit/indirector/file_content/file_server_spec.rb +2 -2
  577. data/spec/unit/indirector/file_content/file_spec.rb +2 -2
  578. data/spec/unit/indirector/file_content/rest_spec.rb +2 -3
  579. data/spec/unit/indirector/file_metadata/file_server_spec.rb +2 -2
  580. data/spec/unit/indirector/file_metadata/file_spec.rb +2 -2
  581. data/spec/unit/indirector/file_metadata/rest_spec.rb +2 -3
  582. data/spec/unit/indirector/file_server_spec.rb +8 -7
  583. data/spec/unit/indirector/file_spec.rb +179 -0
  584. data/spec/unit/indirector/indirection_spec.rb +3 -24
  585. data/spec/unit/indirector/inventory/yaml_spec.rb +220 -0
  586. data/spec/unit/indirector/key/ca_spec.rb +2 -2
  587. data/spec/unit/indirector/key/file_spec.rb +2 -2
  588. data/spec/unit/indirector/ldap_spec.rb +6 -8
  589. data/spec/unit/indirector/memory_spec.rb +5 -7
  590. data/spec/unit/indirector/node/active_record_spec.rb +2 -3
  591. data/spec/unit/indirector/node/exec_spec.rb +3 -4
  592. data/spec/unit/indirector/node/ldap_spec.rb +3 -4
  593. data/spec/unit/indirector/node/memory_spec.rb +2 -3
  594. data/spec/unit/indirector/node/plain_spec.rb +2 -3
  595. data/spec/unit/indirector/node/rest_spec.rb +2 -3
  596. data/spec/unit/indirector/node/yaml_spec.rb +2 -3
  597. data/spec/unit/indirector/plain_spec.rb +5 -7
  598. data/spec/unit/indirector/queue_spec.rb +11 -14
  599. data/spec/unit/indirector/report/processor_spec.rb +7 -9
  600. data/spec/unit/indirector/report/rest_spec.rb +2 -3
  601. data/spec/unit/indirector/report/yaml_spec.rb +3 -4
  602. data/spec/unit/indirector/request_spec.rb +3 -25
  603. data/spec/unit/indirector/resource/ral_spec.rb +3 -4
  604. data/spec/unit/indirector/resource/rest_spec.rb +2 -3
  605. data/spec/unit/indirector/resource_type/parser_spec.rb +87 -13
  606. data/spec/unit/indirector/resource_type/rest_spec.rb +2 -3
  607. data/spec/unit/indirector/rest_spec.rb +45 -16
  608. data/spec/unit/indirector/run/local_spec.rb +2 -3
  609. data/spec/unit/indirector/run/rest_spec.rb +2 -3
  610. data/spec/unit/indirector/ssl_file_spec.rb +9 -27
  611. data/spec/unit/indirector/status/rest_spec.rb +2 -3
  612. data/spec/unit/indirector/terminus_spec.rb +180 -187
  613. data/spec/unit/indirector/yaml_spec.rb +9 -23
  614. data/spec/unit/indirector_spec.rb +61 -79
  615. data/spec/unit/interface/action_builder_spec.rb +214 -0
  616. data/spec/unit/interface/action_manager_spec.rb +282 -0
  617. data/spec/unit/interface/action_spec.rb +545 -0
  618. data/spec/unit/interface/documentation_spec.rb +34 -0
  619. data/spec/unit/interface/face_collection_spec.rb +180 -0
  620. data/spec/unit/interface/option_builder_spec.rb +77 -0
  621. data/spec/unit/interface/option_spec.rb +100 -0
  622. data/spec/unit/interface_spec.rb +228 -0
  623. data/spec/unit/module_spec.rb +34 -10
  624. data/spec/unit/network/authconfig_spec.rb +3 -4
  625. data/spec/unit/network/authstore_spec.rb +3 -4
  626. data/spec/unit/network/client_spec.rb +45 -0
  627. data/spec/unit/network/format_handler_spec.rb +2 -3
  628. data/spec/unit/network/format_spec.rb +2 -3
  629. data/spec/unit/network/formats_spec.rb +107 -3
  630. data/spec/unit/network/handler/fileserver_spec.rb +3 -4
  631. data/spec/unit/network/http/api/v1_spec.rb +61 -27
  632. data/spec/unit/network/http/compression_spec.rb +2 -3
  633. data/spec/unit/network/http/handler_spec.rb +78 -109
  634. data/spec/unit/network/http/mongrel/rest_spec.rb +3 -4
  635. data/spec/unit/network/http/mongrel_spec.rb +6 -6
  636. data/spec/unit/network/http/rack/rest_spec.rb +2 -20
  637. data/spec/unit/network/http/rack/xmlrpc_spec.rb +2 -3
  638. data/spec/unit/network/http/rack_spec.rb +2 -3
  639. data/spec/unit/network/http/webrick/rest_spec.rb +3 -4
  640. data/spec/unit/network/http/webrick_spec.rb +4 -8
  641. data/spec/unit/network/http_pool_spec.rb +82 -95
  642. data/spec/unit/network/http_spec.rb +2 -2
  643. data/spec/unit/network/rest_authconfig_spec.rb +9 -42
  644. data/spec/unit/network/rights_spec.rb +6 -7
  645. data/spec/unit/network/server_spec.rb +2 -2
  646. data/spec/unit/network/xmlrpc/client_spec.rb +172 -0
  647. data/spec/unit/node/environment_spec.rb +63 -7
  648. data/spec/unit/node/facts_spec.rb +9 -13
  649. data/spec/unit/node_spec.rb +5 -13
  650. data/spec/unit/other/selinux_spec.rb +2 -3
  651. data/spec/unit/other/transbucket_spec.rb +2 -3
  652. data/spec/unit/other/transobject_spec.rb +2 -3
  653. data/spec/unit/parameter/path_spec.rb +2 -2
  654. data/spec/unit/parameter/value_collection_spec.rb +2 -3
  655. data/spec/unit/parameter/value_spec.rb +2 -3
  656. data/spec/unit/parameter_spec.rb +2 -3
  657. data/spec/unit/parser/ast/arithmetic_operator_spec.rb +2 -13
  658. data/spec/unit/parser/ast/astarray_spec.rb +18 -36
  659. data/spec/unit/parser/ast/asthash_spec.rb +4 -4
  660. data/spec/unit/parser/ast/boolean_operator_spec.rb +2 -3
  661. data/spec/unit/parser/ast/casestatement_spec.rb +17 -14
  662. data/spec/unit/parser/ast/collection_spec.rb +2 -3
  663. data/spec/unit/parser/ast/collexpr_spec.rb +2 -3
  664. data/spec/unit/parser/ast/comparison_operator_spec.rb +4 -5
  665. data/spec/unit/parser/ast/definition_spec.rb +21 -0
  666. data/spec/unit/parser/ast/function_spec.rb +3 -4
  667. data/spec/unit/parser/ast/hostclass_spec.rb +72 -0
  668. data/spec/unit/parser/ast/ifstatement_spec.rb +2 -3
  669. data/spec/unit/parser/ast/in_operator_spec.rb +2 -3
  670. data/spec/unit/parser/ast/leaf_spec.rb +23 -19
  671. data/spec/unit/parser/ast/match_operator_spec.rb +2 -3
  672. data/spec/unit/parser/ast/minus_spec.rb +2 -3
  673. data/spec/unit/parser/ast/node_spec.rb +30 -0
  674. data/spec/unit/parser/ast/nop_spec.rb +2 -3
  675. data/spec/unit/parser/ast/not_spec.rb +2 -3
  676. data/spec/unit/parser/ast/relationship_spec.rb +2 -3
  677. data/spec/unit/parser/ast/resource_defaults_spec.rb +2 -3
  678. data/spec/unit/parser/ast/resource_override_spec.rb +2 -3
  679. data/spec/unit/parser/ast/resource_reference_spec.rb +21 -8
  680. data/spec/unit/parser/ast/resource_spec.rb +24 -13
  681. data/spec/unit/parser/ast/selector_spec.rb +3 -4
  682. data/spec/unit/parser/ast/vardef_spec.rb +15 -9
  683. data/spec/unit/parser/ast_spec.rb +2 -3
  684. data/spec/unit/parser/collector_spec.rb +2 -3
  685. data/spec/unit/parser/compiler_spec.rb +62 -35
  686. data/spec/unit/parser/files_spec.rb +2 -3
  687. data/spec/unit/parser/functions/create_resources_spec.rb +137 -0
  688. data/spec/unit/parser/functions/defined_spec.rb +5 -3
  689. data/spec/unit/parser/functions/extlookup_spec.rb +10 -10
  690. data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -13
  691. data/spec/unit/parser/functions/generate_spec.rb +5 -3
  692. data/spec/unit/parser/functions/include_spec.rb +5 -3
  693. data/spec/unit/parser/functions/inline_template_spec.rb +6 -17
  694. data/spec/unit/parser/functions/realize_spec.rb +5 -3
  695. data/spec/unit/parser/functions/regsubst_spec.rb +5 -3
  696. data/spec/unit/parser/functions/require_spec.rb +5 -3
  697. data/spec/unit/parser/functions/shellquote_spec.rb +8 -6
  698. data/spec/unit/parser/functions/split_spec.rb +5 -3
  699. data/spec/unit/parser/functions/sprintf_spec.rb +5 -3
  700. data/spec/unit/parser/functions/tag_spec.rb +5 -3
  701. data/spec/unit/parser/functions/template_spec.rb +6 -21
  702. data/spec/unit/parser/functions/versioncmp_spec.rb +5 -3
  703. data/spec/unit/parser/functions_spec.rb +2 -3
  704. data/spec/unit/parser/lexer_spec.rb +3 -7
  705. data/spec/unit/parser/parser_spec.rb +71 -90
  706. data/spec/unit/parser/relationship_spec.rb +2 -3
  707. data/spec/unit/parser/resource_spec.rb +6 -65
  708. data/spec/unit/parser/scope_spec.rb +28 -179
  709. data/spec/unit/parser/templatewrapper_spec.rb +25 -43
  710. data/spec/unit/parser/type_loader_spec.rb +120 -78
  711. data/spec/unit/property/ensure_spec.rb +2 -3
  712. data/spec/unit/property/keyvalue_spec.rb +4 -8
  713. data/spec/unit/property/list_spec.rb +2 -3
  714. data/spec/unit/property/ordered_list_spec.rb +2 -3
  715. data/spec/unit/property_spec.rb +2 -3
  716. data/spec/unit/provider/augeas/augeas_spec.rb +80 -3
  717. data/spec/unit/provider/cisco_spec.rb +16 -0
  718. data/spec/unit/provider/confine/exists_spec.rb +2 -3
  719. data/spec/unit/provider/confine/false_spec.rb +2 -3
  720. data/spec/unit/provider/confine/feature_spec.rb +2 -3
  721. data/spec/unit/provider/confine/true_spec.rb +2 -3
  722. data/spec/unit/provider/confine/variable_spec.rb +2 -3
  723. data/spec/unit/provider/confine_collection_spec.rb +2 -3
  724. data/spec/unit/provider/confine_spec.rb +2 -3
  725. data/spec/unit/provider/confiner_spec.rb +2 -3
  726. data/spec/unit/provider/exec/posix_spec.rb +2 -2
  727. data/spec/unit/provider/exec/shell_spec.rb +2 -2
  728. data/spec/unit/provider/group/groupadd_spec.rb +2 -3
  729. data/spec/unit/provider/group/ldap_spec.rb +2 -2
  730. data/spec/unit/provider/host/parsed_spec.rb +197 -0
  731. data/spec/unit/provider/interface/cisco_spec.rb +58 -0
  732. data/spec/unit/provider/ldap_spec.rb +2 -2
  733. data/spec/unit/provider/macauthorization_spec.rb +2 -2
  734. data/spec/unit/provider/mcx/mcxcontent_spec.rb +2 -21
  735. data/spec/unit/provider/mount/parsed_spec.rb +61 -86
  736. data/spec/unit/provider/mount_spec.rb +2 -3
  737. data/spec/unit/provider/naginator_spec.rb +2 -3
  738. data/spec/unit/provider/nameservice/directoryservice_spec.rb +2 -63
  739. data/spec/unit/provider/network_device_spec.rb +153 -0
  740. data/spec/unit/provider/package/aix_spec.rb +2 -3
  741. data/spec/unit/provider/package/apt_spec.rb +2 -3
  742. data/spec/unit/provider/package/dpkg_spec.rb +2 -3
  743. data/spec/unit/provider/package/freebsd_spec.rb +2 -3
  744. data/spec/unit/provider/package/gem_spec.rb +2 -3
  745. data/spec/unit/provider/package/hpux_spec.rb +2 -3
  746. data/spec/unit/provider/package/macports_spec.rb +2 -2
  747. data/spec/unit/provider/package/nim_spec.rb +2 -3
  748. data/spec/unit/provider/package/pip_spec.rb +180 -0
  749. data/spec/unit/provider/package/pkg_spec.rb +2 -3
  750. data/spec/unit/provider/package/pkgdmg_spec.rb +49 -56
  751. data/spec/unit/provider/package/pkgutil_spec.rb +182 -0
  752. data/spec/unit/provider/package/yum_spec.rb +66 -0
  753. data/spec/unit/provider/package/zypper_spec.rb +2 -3
  754. data/spec/unit/provider/parsedfile_spec.rb +2 -3
  755. data/spec/unit/provider/selboolean_spec.rb +2 -3
  756. data/spec/unit/provider/selmodule_spec.rb +2 -2
  757. data/spec/unit/provider/service/daemontools_spec.rb +2 -2
  758. data/spec/unit/provider/service/debian_spec.rb +2 -2
  759. data/spec/unit/provider/service/freebsd_spec.rb +2 -3
  760. data/spec/unit/provider/service/init_spec.rb +3 -3
  761. data/spec/unit/provider/service/launchd_spec.rb +2 -2
  762. data/spec/unit/provider/service/redhat_spec.rb +2 -2
  763. data/spec/unit/provider/service/runit_spec.rb +2 -2
  764. data/spec/unit/provider/service/smf_spec.rb +137 -0
  765. data/spec/unit/provider/service/src_spec.rb +7 -7
  766. data/spec/unit/provider/service/upstart.rb +48 -0
  767. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +28 -47
  768. data/spec/unit/provider/sshkey/parsed_spec.rb +2 -3
  769. data/spec/unit/provider/user/hpux_spec.rb +2 -3
  770. data/spec/unit/provider/user/ldap_spec.rb +2 -2
  771. data/spec/unit/provider/user/user_role_add_spec.rb +15 -53
  772. data/spec/unit/provider/user/useradd_spec.rb +2 -3
  773. data/spec/unit/provider/vlan/cisco_spec.rb +56 -0
  774. data/spec/unit/provider/zfs/solaris_spec.rb +4 -4
  775. data/spec/unit/provider/zone/solaris_spec.rb +2 -3
  776. data/spec/unit/provider/zpool/solaris_spec.rb +33 -4
  777. data/spec/unit/provider_spec.rb +2 -3
  778. data/spec/unit/puppet/provider/README.markdown +4 -0
  779. data/spec/unit/puppet/type/README.markdown +4 -0
  780. data/spec/unit/puppet_spec.rb +2 -2
  781. data/spec/unit/rails/host_spec.rb +2 -11
  782. data/spec/unit/rails/param_value_spec.rb +2 -3
  783. data/spec/unit/rails/resource_spec.rb +2 -3
  784. data/spec/unit/rails_spec.rb +2 -3
  785. data/spec/unit/relationship_spec.rb +2 -2
  786. data/spec/unit/reports/http_spec.rb +2 -3
  787. data/spec/unit/reports/rrdgraph_spec.rb +2 -3
  788. data/spec/unit/reports/store_spec.rb +2 -17
  789. data/spec/unit/reports/tagmail_spec.rb +4 -8
  790. data/spec/unit/reports_spec.rb +2 -3
  791. data/spec/unit/resource/catalog_spec.rb +15 -74
  792. data/spec/unit/resource/status_spec.rb +3 -4
  793. data/spec/unit/resource/type_collection_helper_spec.rb +2 -3
  794. data/spec/unit/resource/type_collection_spec.rb +69 -81
  795. data/spec/unit/resource/type_spec.rb +26 -44
  796. data/spec/unit/resource_spec.rb +3 -4
  797. data/spec/unit/run_spec.rb +2 -3
  798. data/spec/unit/simple_graph_spec.rb +434 -80
  799. data/spec/unit/ssl/base_spec.rb +3 -4
  800. data/spec/unit/ssl/certificate_authority/interface_spec.rb +56 -96
  801. data/spec/unit/ssl/certificate_authority_spec.rb +71 -246
  802. data/spec/unit/ssl/certificate_factory_spec.rb +72 -93
  803. data/spec/unit/ssl/certificate_request_spec.rb +11 -76
  804. data/spec/unit/ssl/certificate_revocation_list_spec.rb +4 -5
  805. data/spec/unit/ssl/certificate_spec.rb +2 -34
  806. data/spec/unit/ssl/host_spec.rb +202 -207
  807. data/spec/unit/ssl/inventory_spec.rb +4 -5
  808. data/spec/unit/ssl/key_spec.rb +2 -3
  809. data/spec/unit/sslcertificates/ca_spec.rb +110 -0
  810. data/spec/unit/status_spec.rb +8 -5
  811. data/spec/unit/transaction/event_manager_spec.rb +2 -3
  812. data/spec/unit/transaction/event_spec.rb +7 -8
  813. data/spec/unit/transaction/report_spec.rb +25 -14
  814. data/spec/unit/transaction/resource_harness_spec.rb +2 -4
  815. data/spec/unit/transaction_spec.rb +31 -28
  816. data/spec/unit/transportable_spec.rb +0 -0
  817. data/spec/unit/type/augeas_spec.rb +3 -4
  818. data/spec/unit/type/component_spec.rb +2 -3
  819. data/spec/unit/type/computer_spec.rb +2 -3
  820. data/spec/unit/type/cron_spec.rb +12 -3
  821. data/spec/unit/type/exec_spec.rb +2 -32
  822. data/spec/unit/type/file/checksum_spec.rb +2 -3
  823. data/spec/unit/type/file/content_spec.rb +2 -3
  824. data/spec/unit/type/file/ctime.rb +2 -3
  825. data/spec/unit/type/file/ensure_spec.rb +2 -3
  826. data/spec/unit/type/file/group_spec.rb +2 -3
  827. data/spec/unit/type/file/mtime.rb +2 -3
  828. data/spec/unit/type/file/owner_spec.rb +2 -3
  829. data/spec/unit/type/file/selinux_spec.rb +2 -3
  830. data/spec/unit/type/file/source_spec.rb +9 -10
  831. data/spec/unit/type/file/type.rb +2 -3
  832. data/spec/unit/type/file_spec.rb +15 -30
  833. data/spec/unit/type/filebucket_spec.rb +2 -3
  834. data/spec/unit/type/group_spec.rb +4 -5
  835. data/spec/unit/type/host_spec.rb +129 -0
  836. data/spec/unit/type/interface_spec.rb +98 -0
  837. data/spec/unit/type/macauthorization_spec.rb +2 -3
  838. data/spec/unit/type/maillist_spec.rb +2 -3
  839. data/spec/unit/type/mcx_spec.rb +2 -23
  840. data/spec/unit/type/mount_spec.rb +41 -18
  841. data/spec/unit/type/nagios_spec.rb +2 -3
  842. data/spec/unit/type/noop_metaparam_spec.rb +2 -3
  843. data/spec/unit/type/package_spec.rb +2 -3
  844. data/spec/unit/type/resources_spec.rb +3 -4
  845. data/spec/unit/type/schedule_spec.rb +19 -12
  846. data/spec/unit/type/selboolean_spec.rb +2 -3
  847. data/spec/unit/type/selmodule_spec.rb +2 -3
  848. data/spec/unit/type/service_spec.rb +6 -3
  849. data/spec/unit/type/ssh_authorized_key_spec.rb +2 -3
  850. data/spec/unit/type/sshkey_spec.rb +70 -0
  851. data/spec/unit/type/stage_spec.rb +2 -3
  852. data/spec/unit/type/tidy_spec.rb +4 -4
  853. data/spec/unit/type/user_spec.rb +2 -11
  854. data/spec/unit/type/vlan_spec.rb +45 -0
  855. data/spec/unit/type/whit_spec.rb +4 -5
  856. data/spec/unit/type/zfs_spec.rb +2 -3
  857. data/spec/unit/type/zone_spec.rb +22 -3
  858. data/spec/unit/type/zpool_spec.rb +2 -3
  859. data/spec/unit/type_spec.rb +2 -69
  860. data/spec/unit/util/autoload/file_cache_spec.rb +2 -3
  861. data/spec/unit/util/autoload_spec.rb +6 -7
  862. data/spec/unit/util/backups_spec.rb +2 -3
  863. data/spec/unit/util/cache_accumulator_spec.rb +2 -3
  864. data/spec/unit/util/cacher_spec.rb +3 -4
  865. data/spec/unit/util/checksums_spec.rb +2 -2
  866. data/spec/unit/util/command_line_spec.rb +11 -8
  867. data/spec/unit/util/constant_inflector_spec.rb +2 -2
  868. data/spec/unit/util/errors_spec.rb +2 -3
  869. data/spec/unit/util/execution_spec.rb +2 -3
  870. data/spec/unit/util/execution_stub_spec.rb +2 -3
  871. data/spec/unit/util/feature_spec.rb +2 -3
  872. data/spec/unit/util/file_locking_spec.rb +4 -5
  873. data/spec/unit/util/filetype_spec.rb +2 -3
  874. data/spec/unit/util/inline_docs_spec.rb +2 -3
  875. data/spec/unit/util/ldap/connection_spec.rb +2 -2
  876. data/spec/unit/util/ldap/generator_spec.rb +2 -2
  877. data/spec/unit/util/ldap/manager_spec.rb +2 -2
  878. data/spec/unit/util/loadedfile_spec.rb +2 -3
  879. data/spec/unit/util/log/destinations_spec.rb +2 -3
  880. data/spec/unit/util/log_spec.rb +6 -7
  881. data/spec/unit/util/logging_spec.rb +27 -3
  882. data/spec/unit/util/metric_spec.rb +2 -3
  883. data/spec/unit/util/monkey_patches_spec.rb +48 -10
  884. data/spec/unit/util/nagios_maker_spec.rb +2 -2
  885. data/spec/unit/util/network_device/cisco/device_spec.rb +408 -0
  886. data/spec/unit/util/network_device/cisco/facts_spec.rb +63 -0
  887. data/spec/unit/util/network_device/cisco/interface_spec.rb +89 -0
  888. data/spec/unit/util/network_device/config_spec.rb +102 -0
  889. data/spec/unit/util/network_device/ipcalc_spec.rb +63 -0
  890. data/spec/unit/util/network_device/transport/base_spec.rb +42 -0
  891. data/spec/unit/util/network_device/transport/ssh_spec.rb +219 -0
  892. data/spec/unit/util/network_device/transport/telnet_spec.rb +76 -0
  893. data/spec/unit/util/network_device_spec.rb +50 -0
  894. data/spec/unit/util/package_spec.rb +2 -3
  895. data/spec/unit/util/posix_spec.rb +2 -3
  896. data/spec/unit/util/pson_spec.rb +3 -4
  897. data/spec/unit/util/queue/stomp_spec.rb +4 -5
  898. data/spec/unit/util/queue_spec.rb +2 -3
  899. data/spec/unit/util/rdoc/parser_spec.rb +17 -12
  900. data/spec/unit/util/rdoc_spec.rb +19 -58
  901. data/spec/unit/util/reference_serializer_spec.rb +2 -3
  902. data/spec/unit/util/resource_template_spec.rb +2 -3
  903. data/spec/unit/util/run_mode_spec.rb +2 -3
  904. data/spec/unit/util/selinux_spec.rb +4 -5
  905. data/spec/unit/util/settings/file_setting_spec.rb +2 -7
  906. data/spec/unit/util/settings_spec.rb +2 -24
  907. data/spec/unit/util/storage_spec.rb +2 -3
  908. data/spec/unit/util/tagging_spec.rb +2 -2
  909. data/spec/unit/util/user_attr_spec.rb +2 -3
  910. data/spec/unit/util/warnings_spec.rb +2 -3
  911. data/spec/unit/util/zaml_spec.rb +23 -53
  912. data/spec/watchr.rb +146 -0
  913. data/tasks/rake/gem.rake +5 -4
  914. data/tasks/rake/git_workflow.rake +62 -51
  915. data/tasks/rake/manpages.rake +69 -0
  916. data/test/certmgr/certmgr.rb +308 -0
  917. data/test/certmgr/inventory.rb +69 -0
  918. data/test/certmgr/support.rb +105 -0
  919. data/test/data/providers/host/parsed/valid_hosts +19 -0
  920. data/test/language/ast.rb +1 -1
  921. data/test/language/ast/variable.rb +1 -1
  922. data/test/language/functions.rb +8 -9
  923. data/test/language/parser.rb +44 -52
  924. data/test/language/scope.rb +13 -24
  925. data/test/language/snippets.rb +11 -2
  926. data/test/language/transportable.rb +1 -1
  927. data/test/lib/puppettest.rb +2 -2
  928. data/test/lib/puppettest/exetest.rb +1 -1
  929. data/test/lib/puppettest/parsertesting.rb +5 -8
  930. data/test/lib/puppettest/servertest.rb +1 -0
  931. data/test/lib/puppettest/support/assertions.rb +6 -1
  932. data/test/lib/puppettest/support/utils.rb +0 -19
  933. data/test/network/authconfig.rb +1 -1
  934. data/test/network/authorization.rb +1 -1
  935. data/test/network/authstore.rb +1 -1
  936. data/test/network/client/ca.rb +69 -0
  937. data/test/network/client/dipper.rb +34 -0
  938. data/test/network/client_request.rb +1 -1
  939. data/test/network/handler/ca.rb +273 -0
  940. data/test/network/handler/fileserver.rb +1 -1
  941. data/test/network/handler/master.rb +13 -9
  942. data/test/network/handler/report.rb +1 -1
  943. data/test/network/handler/runner.rb +1 -1
  944. data/test/network/rights.rb +1 -1
  945. data/test/network/server/mongrel_test.rb +99 -0
  946. data/test/network/server/webrick.rb +128 -0
  947. data/test/network/xmlrpc/client.rb +45 -0
  948. data/test/network/xmlrpc/processor.rb +1 -1
  949. data/test/network/xmlrpc/server.rb +1 -1
  950. data/test/network/xmlrpc/webrick_servlet.rb +1 -1
  951. data/test/other/provider.rb +1 -1
  952. data/test/other/puppet.rb +1 -1
  953. data/test/other/relationships.rb +11 -18
  954. data/test/other/report.rb +1 -1
  955. data/test/other/transactions.rb +2 -35
  956. data/test/puppet/defaults.rb +1 -1
  957. data/test/puppet/errortest.rb +1 -1
  958. data/test/puppet/tc_suidmanager.rb +120 -0
  959. data/test/rails/rails.rb +2 -1
  960. data/test/rails/railsparameter.rb +2 -2
  961. data/test/ral/manager/attributes.rb +1 -1
  962. data/test/ral/manager/instances.rb +1 -1
  963. data/test/ral/manager/manager.rb +1 -1
  964. data/test/ral/manager/provider.rb +1 -1
  965. data/test/ral/manager/type.rb +1 -1
  966. data/test/ral/providers/cron/crontab.rb +1 -1
  967. data/test/ral/providers/group.rb +1 -1
  968. data/test/ral/providers/host/parsed.rb +1 -203
  969. data/test/ral/providers/mailalias/aliases.rb +1 -1
  970. data/test/ral/providers/nameservice.rb +1 -1
  971. data/test/ral/providers/package.rb +1 -1
  972. data/test/ral/providers/package/aptitude.rb +1 -1
  973. data/test/ral/providers/package/aptrpm.rb +1 -1
  974. data/test/ral/providers/parsedfile.rb +1 -1
  975. data/test/ral/providers/port/parsed.rb +1 -1
  976. data/test/ral/providers/provider.rb +1 -1
  977. data/test/ral/providers/service/base.rb +1 -1
  978. data/test/ral/providers/sshkey/parsed.rb +1 -1
  979. data/test/ral/providers/user.rb +1 -1
  980. data/test/ral/providers/user/useradd.rb +1 -1
  981. data/test/ral/type/cron.rb +1 -1
  982. data/test/ral/type/exec.rb +1 -42
  983. data/test/ral/type/file.rb +1 -1
  984. data/test/ral/type/file/target.rb +6 -19
  985. data/test/ral/type/fileignoresource.rb +1 -1
  986. data/test/ral/type/filesources.rb +61 -1
  987. data/test/ral/type/host.rb +1 -1
  988. data/test/ral/type/mailalias.rb +1 -1
  989. data/test/ral/type/port.rb +1 -1
  990. data/test/ral/type/resources.rb +1 -1
  991. data/test/ral/type/service.rb +1 -1
  992. data/test/ral/type/sshkey.rb +1 -1
  993. data/test/ral/type/user.rb +1 -1
  994. data/test/ral/type/yumrepo.rb +1 -1
  995. data/test/ral/type/zone.rb +1 -1
  996. data/test/test +2 -2
  997. data/test/util/classgen.rb +1 -1
  998. data/test/util/execution.rb +1 -1
  999. data/test/util/fileparsing.rb +1 -1
  1000. data/test/util/inifile.rb +1 -1
  1001. data/test/util/instance_loader.rb +1 -1
  1002. data/test/util/log.rb +1 -1
  1003. data/test/util/metrics.rb +1 -1
  1004. data/test/util/package.rb +1 -1
  1005. data/test/util/pidlock.rb +1 -1
  1006. data/test/util/settings.rb +1 -1
  1007. data/test/util/storage.rb +1 -1
  1008. data/test/util/subclass_loader.rb +1 -1
  1009. data/test/util/utiltest.rb +1 -1
  1010. metadata +312 -48
  1011. data/CHANGELOG.old +0 -1705
  1012. data/CONTRIBUTING.md +0 -299
  1013. data/COPYING +0 -340
  1014. data/README.queueing +0 -126
  1015. data/ext/upload_facts.rb +0 -120
  1016. data/ext/vim/ftplugin/puppet.vim +0 -94
  1017. data/ext/vim/indent/puppet.vim +0 -76
  1018. data/lib/puppet/indirector/errors.rb +0 -5
  1019. data/lib/puppet/indirector/facts/inventory_service.rb +0 -20
  1020. data/lib/puppet/indirector/file_bucket_file/selector.rb +0 -53
  1021. data/lib/puppet/indirector/file_content/selector.rb +0 -30
  1022. data/lib/puppet/indirector/file_metadata/selector.rb +0 -30
  1023. data/lib/puppet/indirector/resource/validator.rb +0 -8
  1024. data/lib/puppet/util/command_line/filebucket +0 -97
  1025. data/lib/puppet/util/command_line/pi +0 -48
  1026. data/lib/puppet/util/command_line/puppet +0 -73
  1027. data/lib/puppet/util/command_line/puppetca +0 -131
  1028. data/lib/puppet/util/command_line/puppetd +0 -188
  1029. data/lib/puppet/util/command_line/puppetdoc +0 -67
  1030. data/lib/puppet/util/command_line/puppetmasterd +0 -70
  1031. data/lib/puppet/util/command_line/puppetqd +0 -53
  1032. data/lib/puppet/util/command_line/puppetrun +0 -125
  1033. data/lib/puppet/util/command_line/ralsh +0 -89
  1034. data/spec/integration/file_bucket/file_spec.rb +0 -44
  1035. data/spec/integration/indirector/bucket_file/rest_spec.rb +0 -77
  1036. data/spec/integration/indirector/certificate/rest_spec.rb +0 -69
  1037. data/spec/integration/indirector/certificate_request/rest_spec.rb +0 -89
  1038. data/spec/integration/indirector/certificate_revocation_list/rest_spec.rb +0 -85
  1039. data/spec/integration/indirector/report/rest_spec.rb +0 -93
  1040. data/spec/shared_behaviours/file_serving_model.rb +0 -73
  1041. data/spec/unit/indirector/facts/inventory_service_spec.rb +0 -22
  1042. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -29
  1043. data/spec/unit/indirector/file_content/selector_spec.rb +0 -10
  1044. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -11
  1045. data/spec/unit/network/handler/ca_spec.rb +0 -87
  1046. data/spec/unit/network/rest_authorization_spec.rb +0 -43
  1047. data/spec/unit/provider/package/appdmg_spec.rb +0 -42
  1048. data/spec/unit/type/k5login_spec.rb +0 -115
  1049. data/spec/unit/util/suidmanager_spec.rb +0 -220
  1050. data/spec/unit/util_spec.rb +0 -104
@@ -1,6 +1,5 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ #!/usr/bin/env rspec
2
+ require 'spec_helper'
4
3
 
5
4
  require 'puppet/ssl/certificate'
6
5
 
@@ -40,4 +39,4 @@ describe Puppet::SSL::Certificate do
40
39
  @base.fingerprint(:digest).should == "DI:GE:ST"
41
40
  end
42
41
  end
43
- end
42
+ end
@@ -1,6 +1,5 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../../spec_helper'
1
+ #!/usr/bin/env rspec
2
+ require 'spec_helper'
4
3
 
5
4
  require 'puppet/ssl/certificate_authority'
6
5
 
@@ -32,13 +31,13 @@ describe Puppet::SSL::CertificateAuthority::Interface do
32
31
  end
33
32
  describe "when initializing" do
34
33
  it "should set its method using its settor" do
35
- instance = @class.new(:generate, :to => :all)
36
- instance.method.should == :generate
34
+ @class.any_instance.expects(:method=).with(:generate)
35
+ @class.new(:generate, :to => :all)
37
36
  end
38
37
 
39
38
  it "should set its subjects using the settor" do
40
- instance = @class.new(:generate, :to => :all)
41
- instance.subjects.should == :all
39
+ @class.any_instance.expects(:subjects=).with(:all)
40
+ @class.new(:generate, :to => :all)
42
41
  end
43
42
 
44
43
  it "should set the digest if given" do
@@ -54,27 +53,23 @@ describe Puppet::SSL::CertificateAuthority::Interface do
54
53
 
55
54
  describe "when setting the method" do
56
55
  it "should set the method" do
57
- instance = @class.new(:generate, :to => :all)
58
- instance.method = :list
59
-
60
- instance.method.should == :list
56
+ @class.new(:generate, :to => :all).method.should == :generate
61
57
  end
62
58
 
63
59
  it "should fail if the method isn't a member of the INTERFACE_METHODS array" do
64
- lambda { @class.new(:thing, :to => :all) }.should raise_error(ArgumentError, /Invalid method thing to apply/)
60
+ Puppet::SSL::CertificateAuthority::Interface::INTERFACE_METHODS.expects(:include?).with(:thing).returns false
61
+
62
+ lambda { @class.new(:thing, :to => :all) }.should raise_error(ArgumentError)
65
63
  end
66
64
  end
67
65
 
68
66
  describe "when setting the subjects" do
69
67
  it "should set the subjects" do
70
- instance = @class.new(:generate, :to => :all)
71
- instance.subjects = :signed
72
-
73
- instance.subjects.should == :signed
68
+ @class.new(:generate, :to => :all).subjects.should == :all
74
69
  end
75
70
 
76
- it "should fail if the subjects setting isn't :all or an array" do
77
- lambda { @class.new(:generate, :to => "other") }.should raise_error(ArgumentError, /Subjects must be an array or :all; not other/)
71
+ it "should fail if the subjects setting isn't :all or an array", :'fails_on_ruby_1.9.2' => true do
72
+ lambda { @class.new(:generate, "other") }.should raise_error(ArgumentError)
78
73
  end
79
74
  end
80
75
 
@@ -122,8 +117,8 @@ describe Puppet::SSL::CertificateAuthority::Interface do
122
117
  it "should call :generate on the CA for each host specified" do
123
118
  @applier = @class.new(:generate, :to => %w{host1 host2})
124
119
 
125
- @ca.expects(:generate).with("host1", {})
126
- @ca.expects(:generate).with("host2", {})
120
+ @ca.expects(:generate).with("host1")
121
+ @ca.expects(:generate).with("host2")
127
122
 
128
123
  @applier.apply(@ca)
129
124
  end
@@ -154,24 +149,15 @@ describe Puppet::SSL::CertificateAuthority::Interface do
154
149
 
155
150
  describe ":sign" do
156
151
  describe "and an array of names was provided" do
157
- let(:applier) { @class.new(:sign, @options.merge(:to => %w{host1 host2})) }
158
-
159
- it "should sign the specified waiting certificate requests" do
160
- @options = {:allow_dns_alt_names => false}
161
-
162
- @ca.expects(:sign).with("host1", false)
163
- @ca.expects(:sign).with("host2", false)
164
-
165
- applier.apply(@ca)
152
+ before do
153
+ @applier = @class.new(:sign, :to => %w{host1 host2})
166
154
  end
167
155
 
168
- it "should sign the certificate requests with alt names if specified" do
169
- @options = {:allow_dns_alt_names => true}
170
-
171
- @ca.expects(:sign).with("host1", true)
172
- @ca.expects(:sign).with("host2", true)
156
+ it "should sign the specified waiting certificate requests" do
157
+ @ca.expects(:sign).with("host1")
158
+ @ca.expects(:sign).with("host2")
173
159
 
174
- applier.apply(@ca)
160
+ @applier.apply(@ca)
175
161
  end
176
162
  end
177
163
 
@@ -179,8 +165,8 @@ describe Puppet::SSL::CertificateAuthority::Interface do
179
165
  it "should sign all waiting certificate requests" do
180
166
  @ca.stubs(:waiting?).returns(%w{cert1 cert2})
181
167
 
182
- @ca.expects(:sign).with("cert1", nil)
183
- @ca.expects(:sign).with("cert2", nil)
168
+ @ca.expects(:sign).with("cert1")
169
+ @ca.expects(:sign).with("cert2")
184
170
 
185
171
  @applier = @class.new(:sign, :to => :all)
186
172
  @applier.apply(@ca)
@@ -196,89 +182,63 @@ describe Puppet::SSL::CertificateAuthority::Interface do
196
182
  end
197
183
 
198
184
  describe ":list" do
199
- before :each do
200
- certish = stub('certish', :subject_alt_names => [])
201
- Puppet::SSL::Certificate.indirection.stubs(:find).returns certish
202
- Puppet::SSL::CertificateRequest.indirection.stubs(:find).returns certish
203
-
204
- @ca.expects(:waiting?).returns %w{host1 host2 host3}
205
- @ca.expects(:list).returns %w{host4 host5 host6}
206
- @ca.stubs(:fingerprint).returns "fingerprint"
207
- @ca.stubs(:verify)
208
- end
209
-
210
185
  describe "and an empty array was provided" do
211
- it "should print all certificate requests" do
212
- applier = @class.new(:list, :to => [])
186
+ it "should print a string containing all certificate requests" do
187
+ @ca.expects(:waiting?).returns %w{host1 host2}
188
+ @ca.stubs(:verify)
213
189
 
214
- applier.expects(:puts).with(<<-OUTPUT.chomp)
215
- "host1" (fingerprint)
216
- "host2" (fingerprint)
217
- "host3" (fingerprint)
218
- OUTPUT
190
+ @applier = @class.new(:list, :to => [])
219
191
 
220
- applier.apply(@ca)
192
+ @applier.expects(:puts).with "host1\nhost2"
193
+
194
+ @applier.apply(@ca)
221
195
  end
222
196
  end
223
197
 
224
198
  describe "and :all was provided" do
225
199
  it "should print a string containing all certificate requests and certificates" do
226
- @ca.stubs(:verify).with("host4").raises(Puppet::SSL::CertificateAuthority::CertificateVerificationError.new(23), "certificate revoked")
200
+ @ca.expects(:waiting?).returns %w{host1 host2}
201
+ @ca.expects(:list).returns %w{host3 host4}
202
+ @ca.stubs(:verify)
203
+ @ca.stubs(:fingerprint).returns "fingerprint"
204
+ @ca.expects(:verify).with("host3").raises(Puppet::SSL::CertificateAuthority::CertificateVerificationError.new(23), "certificate revoked")
227
205
 
228
- applier = @class.new(:list, :to => :all)
206
+ @applier = @class.new(:list, :to => :all)
229
207
 
230
- applier.expects(:puts).with(<<-OUTPUT.chomp)
231
- "host1" (fingerprint)
232
- "host2" (fingerprint)
233
- "host3" (fingerprint)
234
- + "host5" (fingerprint)
235
- + "host6" (fingerprint)
236
- - "host4" (fingerprint) (certificate revoked)
237
- OUTPUT
208
+ @applier.expects(:puts).with "host1 (fingerprint)"
209
+ @applier.expects(:puts).with "host2 (fingerprint)"
210
+ @applier.expects(:puts).with "- host3 (fingerprint) (certificate revoked)"
211
+ @applier.expects(:puts).with "+ host4 (fingerprint)"
238
212
 
239
- applier.apply(@ca)
213
+ @applier.apply(@ca)
240
214
  end
241
215
  end
242
216
 
243
217
  describe "and :signed was provided" do
244
218
  it "should print a string containing all signed certificate requests and certificates" do
245
- applier = @class.new(:list, :to => :signed)
246
-
247
- applier.expects(:puts).with(<<-OUTPUT.chomp)
248
- + "host4" (fingerprint)
249
- + "host5" (fingerprint)
250
- + "host6" (fingerprint)
251
- OUTPUT
252
-
253
- applier.apply(@ca)
254
- end
255
-
256
- it "should include subject alt names if they are on the certificate request" do
257
- request = stub 'request', :subject_alt_names => ["DNS:foo", "DNS:bar"]
258
- Puppet::SSL::CertificateRequest.indirection.stubs(:find).returns(request)
259
-
260
- applier = @class.new(:list, :to => ['host1'])
219
+ @ca.expects(:list).returns %w{host1 host2}
261
220
 
262
- applier.expects(:puts).with(<<-OUTPUT.chomp)
263
- "host1" (fingerprint) (alt names: "DNS:foo", "DNS:bar")
264
- OUTPUT
221
+ @applier = @class.new(:list, :to => :signed)
265
222
 
266
- applier.apply(@ca)
223
+ @applier.apply(@ca)
267
224
  end
268
225
  end
269
226
 
270
227
  describe "and an array of names was provided" do
271
- it "should print all named hosts" do
272
- applier = @class.new(:list, :to => %w{host1 host2 host4 host5})
228
+ it "should print a string of all named hosts that have a waiting request" do
229
+ @ca.expects(:waiting?).returns %w{host1 host2}
230
+ @ca.expects(:list).returns %w{host3 host4}
231
+ @ca.stubs(:fingerprint).returns "fingerprint"
232
+ @ca.stubs(:verify)
233
+
234
+ @applier = @class.new(:list, :to => %w{host1 host2 host3 host4})
273
235
 
274
- applier.expects(:puts).with(<<-OUTPUT.chomp)
275
- "host1" (fingerprint)
276
- "host2" (fingerprint)
277
- + "host4" (fingerprint)
278
- + "host5" (fingerprint)
279
- OUTPUT
236
+ @applier.expects(:puts).with "host1 (fingerprint)"
237
+ @applier.expects(:puts).with "host2 (fingerprint)"
238
+ @applier.expects(:puts).with "+ host3 (fingerprint)"
239
+ @applier.expects(:puts).with "+ host4 (fingerprint)"
280
240
 
281
- applier.apply(@ca)
241
+ @applier.apply(@ca)
282
242
  end
283
243
  end
284
244
  end
@@ -1,6 +1,5 @@
1
- #!/usr/bin/env ruby
2
-
3
- require File.dirname(__FILE__) + '/../../spec_helper'
1
+ #!/usr/bin/env rspec
2
+ require 'spec_helper'
4
3
 
5
4
  require 'puppet/ssl/certificate_authority'
6
5
 
@@ -138,18 +137,18 @@ describe Puppet::SSL::CertificateAuthority do
138
137
 
139
138
  it "should return any found CRL instance" do
140
139
  crl = mock 'crl'
141
- Puppet::SSL::CertificateRevocationList.expects(:find).returns crl
140
+ Puppet::SSL::CertificateRevocationList.indirection.expects(:find).returns crl
142
141
  @ca.crl.should equal(crl)
143
142
  end
144
143
 
145
144
  it "should create, generate, and save a new CRL instance of no CRL can be found" do
146
- crl = mock 'crl'
147
- Puppet::SSL::CertificateRevocationList.expects(:find).returns nil
145
+ crl = Puppet::SSL::CertificateRevocationList.new("fakename")
146
+ Puppet::SSL::CertificateRevocationList.indirection.expects(:find).returns nil
148
147
 
149
148
  Puppet::SSL::CertificateRevocationList.expects(:new).returns crl
150
149
 
151
150
  crl.expects(:generate).with(@ca.host.certificate.content, @ca.host.key.content)
152
- crl.expects(:save)
151
+ Puppet::SSL::CertificateRevocationList.indirection.expects(:save).with(crl)
153
152
 
154
153
  @ca.crl.should equal(crl)
155
154
  end
@@ -200,9 +199,8 @@ describe Puppet::SSL::CertificateAuthority do
200
199
  request = mock 'request'
201
200
  Puppet::SSL::CertificateRequest.expects(:new).with(@ca.host.name).returns request
202
201
  request.expects(:generate).with(@ca.host.key)
203
- request.stubs(:request_extensions => [])
204
202
 
205
- @ca.expects(:sign).with(@host.name, false, request)
203
+ @ca.expects(:sign).with(@host.name, :ca, request)
206
204
 
207
205
  @ca.stubs :generate_password
208
206
 
@@ -236,24 +234,25 @@ describe Puppet::SSL::CertificateAuthority do
236
234
 
237
235
  @name = "myhost"
238
236
  @real_cert = stub 'realcert', :sign => nil
239
- @cert = stub 'certificate', :content => @real_cert
237
+ @cert = Puppet::SSL::Certificate.new(@name)
238
+ @cert.content = @real_cert
240
239
 
241
240
  Puppet::SSL::Certificate.stubs(:new).returns @cert
242
241
 
243
242
  @cert.stubs(:content=)
244
- @cert.stubs(:save)
243
+ Puppet::SSL::Certificate.indirection.stubs(:save)
245
244
 
246
245
  # Stub out the factory
247
- Puppet::SSL::CertificateFactory.stubs(:build).returns "my real cert"
246
+ @factory = stub 'factory', :result => "my real cert"
247
+ Puppet::SSL::CertificateFactory.stubs(:new).returns @factory
248
248
 
249
- @request_content = stub "request content stub", :subject => OpenSSL::X509::Name.new([['CN', @name]])
250
- @request = stub 'request', :name => @name, :request_extensions => [], :subject_alt_names => [], :content => @request_content
249
+ @request = stub 'request', :content => "myrequest", :name => @name
251
250
 
252
251
  # And the inventory
253
252
  @inventory = stub 'inventory', :add => nil
254
253
  @ca.stubs(:inventory).returns @inventory
255
254
 
256
- Puppet::SSL::CertificateRequest.stubs(:destroy)
255
+ Puppet::SSL::CertificateRequest.indirection.stubs(:destroy)
257
256
  end
258
257
 
259
258
  describe "and calculating the next certificate serial number" do
@@ -296,49 +295,41 @@ describe Puppet::SSL::CertificateAuthority do
296
295
  end
297
296
 
298
297
  it "should not look up a certificate request for the host" do
299
- Puppet::SSL::CertificateRequest.expects(:find).never
298
+ Puppet::SSL::CertificateRequest.indirection.expects(:find).never
300
299
 
301
- @ca.sign(@name, true, @request)
300
+ @ca.sign(@name, :ca, @request)
302
301
  end
303
302
 
304
303
  it "should use a certificate type of :ca" do
305
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
306
- args[0].should == :ca
307
- end.returns "my real cert"
304
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
305
+ args[0] == :ca
306
+ end.returns @factory
308
307
  @ca.sign(@name, :ca, @request)
309
308
  end
310
309
 
311
310
  it "should pass the provided CSR as the CSR" do
312
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
313
- args[1].should == @request
314
- end.returns "my real cert"
311
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
312
+ args[1] == "myrequest"
313
+ end.returns @factory
315
314
  @ca.sign(@name, :ca, @request)
316
315
  end
317
316
 
318
317
  it "should use the provided CSR's content as the issuer" do
319
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
320
- args[2].subject.to_s.should == "/CN=myhost"
321
- end.returns "my real cert"
318
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
319
+ args[2] == "myrequest"
320
+ end.returns @factory
322
321
  @ca.sign(@name, :ca, @request)
323
322
  end
324
323
 
325
324
  it "should pass the next serial as the serial number" do
326
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
327
- args[3].should == @serial
328
- end.returns "my real cert"
325
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
326
+ args[3] == @serial
327
+ end.returns @factory
329
328
  @ca.sign(@name, :ca, @request)
330
329
  end
331
330
 
332
- it "should sign the certificate request even if it contains alt names" do
333
- @request.stubs(:subject_alt_names).returns %w[DNS:foo DNS:bar DNS:baz]
334
-
335
- expect do
336
- @ca.sign(@name, false, @request)
337
- end.should_not raise_error(Puppet::SSL::CertificateAuthority::CertificateSigningError)
338
- end
339
-
340
331
  it "should save the resulting certificate" do
341
- @cert.expects(:save)
332
+ Puppet::SSL::Certificate.indirection.expects(:save).with(@cert)
342
333
 
343
334
  @ca.sign(@name, :ca, @request)
344
335
  end
@@ -349,69 +340,41 @@ describe Puppet::SSL::CertificateAuthority do
349
340
  @serial = 10
350
341
  @ca.stubs(:next_serial).returns @serial
351
342
 
352
- Puppet::SSL::CertificateRequest.stubs(:find).with(@name).returns @request
353
- @cert.stubs :save
343
+ Puppet::SSL::CertificateRequest.indirection.stubs(:find).with(@name).returns @request
344
+ Puppet::SSL::CertificateRequest.indirection.stubs :save
354
345
  end
355
346
 
356
347
  it "should use a certificate type of :server" do
357
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
348
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
358
349
  args[0] == :server
359
- end.returns "my real cert"
350
+ end.returns @factory
360
351
 
361
352
  @ca.sign(@name)
362
353
  end
363
354
 
364
355
  it "should use look up a CSR for the host in the :ca_file terminus" do
365
- Puppet::SSL::CertificateRequest.expects(:find).with(@name).returns @request
356
+ Puppet::SSL::CertificateRequest.indirection.expects(:find).with(@name).returns @request
366
357
 
367
358
  @ca.sign(@name)
368
359
  end
369
360
 
370
361
  it "should fail if no CSR can be found for the host" do
371
- Puppet::SSL::CertificateRequest.expects(:find).with(@name).returns nil
362
+ Puppet::SSL::CertificateRequest.indirection.expects(:find).with(@name).returns nil
372
363
 
373
364
  lambda { @ca.sign(@name) }.should raise_error(ArgumentError)
374
365
  end
375
366
 
376
- it "should fail if an unknown request extension is present" do
377
- @request.stubs :request_extensions => [{ "oid" => "bananas",
378
- "value" => "delicious" }]
379
- expect { @ca.sign(@name) }.
380
- should raise_error(/CSR has request extensions that are not permitted/)
381
- end
382
-
383
- it "should fail if the CSR contains alt names and they are not expected" do
384
- @request.stubs(:subject_alt_names).returns %w[DNS:foo DNS:bar DNS:baz]
385
-
386
- expect do
387
- @ca.sign(@name, false)
388
- end.to raise_error(Puppet::SSL::CertificateAuthority::CertificateSigningError, /CSR '#{@name}' contains subject alternative names \(.*?\), which are disallowed. Use `puppet cert --allow-dns-alt-names sign #{@name}` to sign this request./)
389
- end
390
-
391
- it "should not fail if the CSR does not contain alt names and they are expected" do
392
- @request.stubs(:subject_alt_names).returns []
393
- expect { @ca.sign(@name, true) }.should_not raise_error
394
- end
395
-
396
- it "should reject alt names by default" do
397
- @request.stubs(:subject_alt_names).returns %w[DNS:foo DNS:bar DNS:baz]
398
-
399
- expect do
400
- @ca.sign(@name)
401
- end.to raise_error(Puppet::SSL::CertificateAuthority::CertificateSigningError, /CSR '#{@name}' contains subject alternative names \(.*?\), which are disallowed. Use `puppet cert --allow-dns-alt-names sign #{@name}` to sign this request./)
402
- end
403
-
404
367
  it "should use the CA certificate as the issuer" do
405
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
368
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
406
369
  args[2] == @cacert.content
407
- end.returns "my real cert"
370
+ end.returns @factory
408
371
  @ca.sign(@name)
409
372
  end
410
373
 
411
374
  it "should pass the next serial as the serial number" do
412
- Puppet::SSL::CertificateFactory.expects(:build).with do |*args|
375
+ Puppet::SSL::CertificateFactory.expects(:new).with do |*args|
413
376
  args[3] == @serial
414
- end.returns "my real cert"
377
+ end.returns @factory
415
378
  @ca.sign(@name)
416
379
  end
417
380
 
@@ -427,162 +390,23 @@ describe Puppet::SSL::CertificateAuthority do
427
390
  end
428
391
 
429
392
  it "should save the resulting certificate" do
430
- @cert.expects(:save)
393
+ Puppet::SSL::Certificate.indirection.stubs(:save).with(@cert)
431
394
  @ca.sign(@name)
432
395
  end
433
396
 
434
397
  it "should remove the host's certificate request" do
435
- Puppet::SSL::CertificateRequest.expects(:destroy).with(@name)
398
+ Puppet::SSL::CertificateRequest.indirection.expects(:destroy).with(@name)
436
399
 
437
400
  @ca.sign(@name)
438
401
  end
439
-
440
- it "should check the internal signing policies" do
441
- @ca.expects(:check_internal_signing_policies).returns true
442
- @ca.sign(@name)
443
- end
444
- end
445
-
446
- context "#check_internal_signing_policies" do
447
- before do
448
- @serial = 10
449
- @ca.stubs(:next_serial).returns @serial
450
-
451
- Puppet::SSL::CertificateRequest.stubs(:find).with(@name).returns @request
452
- @cert.stubs :save
453
- end
454
-
455
- it "should reject CSRs whose CN doesn't match the name for which we're signing them" do
456
- # Shorten this so the test doesn't take too long
457
- Puppet[:keylength] = 1024
458
- key = Puppet::SSL::Key.new('the_certname')
459
- key.generate
460
-
461
- csr = Puppet::SSL::CertificateRequest.new('the_certname')
462
- csr.generate(key)
463
-
464
- expect do
465
- @ca.check_internal_signing_policies('not_the_certname', csr, false)
466
- end.to raise_error(
467
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
468
- /common name "the_certname" does not match expected certname "not_the_certname"/
469
- )
470
- end
471
-
472
- describe "when validating the CN" do
473
- before :all do
474
- Puppet[:keylength] = 1024
475
- @signing_key = Puppet::SSL::Key.new('my_signing_key')
476
- @signing_key.generate
477
- end
478
-
479
- [
480
- 'completely_okay',
481
- 'sure, why not? :)',
482
- 'so+many(things)-are=allowed.',
483
- 'this"is#just&madness%you[see]',
484
- 'and even a (an?) \\!',
485
- 'waltz, nymph, for quick jigs vex bud.',
486
- '{552c04ca-bb1b-11e1-874b-60334b04494e}'
487
- ].each do |name|
488
- it "should accept #{name.inspect}" do
489
- csr = Puppet::SSL::CertificateRequest.new(name)
490
- csr.generate(@signing_key)
491
-
492
- @ca.check_internal_signing_policies(name, csr, false)
493
- end
494
- end
495
-
496
- [
497
- 'super/bad',
498
- "not\neven\tkind\rof",
499
- "ding\adong\a",
500
- "hidden\b\b\b\b\b\bmessage",
501
- "☃ :("
502
- ].each do |name|
503
- it "should reject #{name.inspect}" do
504
- # We aren't even allowed to make objects with these names, so let's
505
- # stub that to simulate an invalid one coming from outside Puppet
506
- Puppet::SSL::CertificateRequest.stubs(:validate_certname)
507
- csr = Puppet::SSL::CertificateRequest.new(name)
508
- csr.generate(@signing_key)
509
-
510
- expect do
511
- @ca.check_internal_signing_policies(name, csr, false)
512
- end.to raise_error(
513
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
514
- /subject contains unprintable or non-ASCII characters/
515
- )
516
- end
517
- end
518
- end
519
-
520
- it "should reject a critical extension that isn't on the whitelist" do
521
- @request.stubs(:request_extensions).returns [{ "oid" => "banana",
522
- "value" => "yumm",
523
- "critical" => true }]
524
- expect { @ca.check_internal_signing_policies(@name, @request, false) }.to raise_error(
525
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
526
- /request extensions that are not permitted/
527
- )
528
- end
529
-
530
- it "should reject a non-critical extension that isn't on the whitelist" do
531
- @request.stubs(:request_extensions).returns [{ "oid" => "peach",
532
- "value" => "meh",
533
- "critical" => false }]
534
- expect { @ca.check_internal_signing_policies(@name, @request, false) }.to raise_error(
535
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
536
- /request extensions that are not permitted/
537
- )
538
- end
539
-
540
- it "should reject non-whitelist extensions even if a valid extension is present" do
541
- @request.stubs(:request_extensions).returns [{ "oid" => "peach",
542
- "value" => "meh",
543
- "critical" => false },
544
- { "oid" => "subjectAltName",
545
- "value" => "DNS:foo",
546
- "critical" => true }]
547
- expect { @ca.check_internal_signing_policies(@name, @request, false) }.to raise_error(
548
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
549
- /request extensions that are not permitted/
550
- )
551
- end
552
-
553
- it "should reject a subjectAltName for a non-DNS value" do
554
- @request.stubs(:subject_alt_names).returns ['DNS:foo', 'email:bar@example.com']
555
- expect { @ca.check_internal_signing_policies(@name, @request, true) }.to raise_error(
556
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
557
- /subjectAltName outside the DNS label space/
558
- )
559
- end
560
-
561
- it "should reject a wildcard subject" do
562
- @request.content.stubs(:subject).
563
- returns(OpenSSL::X509::Name.new([["CN", "*.local"]]))
564
-
565
- expect { @ca.check_internal_signing_policies('*.local', @request, false) }.to raise_error(
566
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
567
- /subject contains a wildcard/
568
- )
569
- end
570
-
571
- it "should reject a wildcard subjectAltName" do
572
- @request.stubs(:subject_alt_names).returns ['DNS:foo', 'DNS:*.bar']
573
- expect { @ca.check_internal_signing_policies(@name, @request, true) }.to raise_error(
574
- Puppet::SSL::CertificateAuthority::CertificateSigningError,
575
- /subjectAltName contains a wildcard/
576
- )
577
- end
578
402
  end
579
403
 
580
404
  it "should create a certificate instance with the content set to the newly signed x509 certificate" do
581
405
  @serial = 10
582
406
  @ca.stubs(:next_serial).returns @serial
583
407
 
584
- Puppet::SSL::CertificateRequest.stubs(:find).with(@name).returns @request
585
- @cert.stubs :save
408
+ Puppet::SSL::CertificateRequest.indirection.stubs(:find).with(@name).returns @request
409
+ Puppet::SSL::Certificate.indirection.stubs :save
586
410
  Puppet::SSL::Certificate.expects(:new).with(@name).returns @cert
587
411
 
588
412
  @ca.sign(@name)
@@ -590,8 +414,8 @@ describe Puppet::SSL::CertificateAuthority do
590
414
 
591
415
  it "should return the certificate instance" do
592
416
  @ca.stubs(:next_serial).returns @serial
593
- Puppet::SSL::CertificateRequest.stubs(:find).with(@name).returns @request
594
- @cert.stubs :save
417
+ Puppet::SSL::CertificateRequest.indirection.stubs(:find).with(@name).returns @request
418
+ Puppet::SSL::Certificate.indirection.stubs :save
595
419
  @ca.sign(@name).should equal(@cert)
596
420
  end
597
421
 
@@ -599,8 +423,8 @@ describe Puppet::SSL::CertificateAuthority do
599
423
  @ca.stubs(:next_serial).returns @serial
600
424
  @inventory.expects(:add).with(@cert)
601
425
 
602
- Puppet::SSL::CertificateRequest.stubs(:find).with(@name).returns @request
603
- @cert.stubs :save
426
+ Puppet::SSL::CertificateRequest.indirection.stubs(:find).with(@name).returns @request
427
+ Puppet::SSL::Certificate.indirection.stubs :save
604
428
  @ca.sign(@name)
605
429
  end
606
430
 
@@ -612,7 +436,7 @@ describe Puppet::SSL::CertificateAuthority do
612
436
  it "should do nothing if autosign is disabled" do
613
437
  Puppet.settings.expects(:value).with(:autosign).returns 'false'
614
438
 
615
- Puppet::SSL::CertificateRequest.expects(:search).never
439
+ Puppet::SSL::CertificateRequest.indirection.expects(:search).never
616
440
  @ca.autosign
617
441
  end
618
442
 
@@ -620,7 +444,7 @@ describe Puppet::SSL::CertificateAuthority do
620
444
  Puppet.settings.expects(:value).with(:autosign).returns '/auto/sign'
621
445
  FileTest.expects(:exist?).with("/auto/sign").returns false
622
446
 
623
- Puppet::SSL::CertificateRequest.expects(:search).never
447
+ Puppet::SSL::CertificateRequest.indirection.expects(:search).never
624
448
  @ca.autosign
625
449
  end
626
450
 
@@ -630,7 +454,7 @@ describe Puppet::SSL::CertificateAuthority do
630
454
  FileTest.stubs(:exist?).with("/auto/sign").returns true
631
455
  File.stubs(:readlines).with("/auto/sign").returns ["one\n", "two\n"]
632
456
 
633
- Puppet::SSL::CertificateRequest.stubs(:search).returns []
457
+ Puppet::SSL::CertificateRequest.indirection.stubs(:search).returns []
634
458
 
635
459
  @store = stub 'store', :allow => nil
636
460
  Puppet::Network::AuthStore.stubs(:new).returns @store
@@ -671,13 +495,13 @@ describe Puppet::SSL::CertificateAuthority do
671
495
  it "should sign all CSRs whose hostname matches the autosign configuration" do
672
496
  csr1 = mock 'csr1'
673
497
  csr2 = mock 'csr2'
674
- Puppet::SSL::CertificateRequest.stubs(:search).returns [csr1, csr2]
498
+ Puppet::SSL::CertificateRequest.indirection.stubs(:search).returns [csr1, csr2]
675
499
  end
676
500
 
677
501
  it "should not sign CSRs whose hostname does not match the autosign configuration" do
678
502
  csr1 = mock 'csr1'
679
503
  csr2 = mock 'csr2'
680
- Puppet::SSL::CertificateRequest.stubs(:search).returns [csr1, csr2]
504
+ Puppet::SSL::CertificateRequest.indirection.stubs(:search).returns [csr1, csr2]
681
505
  end
682
506
  end
683
507
  end
@@ -724,7 +548,7 @@ describe Puppet::SSL::CertificateAuthority do
724
548
  it "should be able to list waiting certificate requests" do
725
549
  req1 = stub 'req1', :name => "one"
726
550
  req2 = stub 'req2', :name => "two"
727
- Puppet::SSL::CertificateRequest.expects(:search).with("*").returns [req1, req2]
551
+ Puppet::SSL::CertificateRequest.indirection.expects(:search).with("*").returns [req1, req2]
728
552
 
729
553
  @ca.waiting?.should == %w{one two}
730
554
  end
@@ -742,19 +566,19 @@ describe Puppet::SSL::CertificateAuthority do
742
566
  it "should list certificates as the sorted list of all existing signed certificates" do
743
567
  cert1 = stub 'cert1', :name => "cert1"
744
568
  cert2 = stub 'cert2', :name => "cert2"
745
- Puppet::SSL::Certificate.expects(:search).with("*").returns [cert1, cert2]
569
+ Puppet::SSL::Certificate.indirection.expects(:search).with("*").returns [cert1, cert2]
746
570
  @ca.list.should == %w{cert1 cert2}
747
571
  end
748
572
 
749
573
  describe "and printing certificates" do
750
574
  it "should return nil if the certificate cannot be found" do
751
- Puppet::SSL::Certificate.expects(:find).with("myhost").returns nil
575
+ Puppet::SSL::Certificate.indirection.expects(:find).with("myhost").returns nil
752
576
  @ca.print("myhost").should be_nil
753
577
  end
754
578
 
755
579
  it "should print certificates by calling :to_text on the host's certificate" do
756
580
  cert1 = stub 'cert1', :name => "cert1", :to_text => "mytext"
757
- Puppet::SSL::Certificate.expects(:find).with("myhost").returns cert1
581
+ Puppet::SSL::Certificate.indirection.expects(:find).with("myhost").returns cert1
758
582
  @ca.print("myhost").should == "mytext"
759
583
  end
760
584
  end
@@ -762,19 +586,19 @@ describe Puppet::SSL::CertificateAuthority do
762
586
  describe "and fingerprinting certificates" do
763
587
  before :each do
764
588
  @cert = stub 'cert', :name => "cert", :fingerprint => "DIGEST"
765
- Puppet::SSL::Certificate.stubs(:find).with("myhost").returns @cert
766
- Puppet::SSL::CertificateRequest.stubs(:find).with("myhost")
589
+ Puppet::SSL::Certificate.indirection.stubs(:find).with("myhost").returns @cert
590
+ Puppet::SSL::CertificateRequest.indirection.stubs(:find).with("myhost")
767
591
  end
768
592
 
769
593
  it "should raise an error if the certificate or CSR cannot be found" do
770
- Puppet::SSL::Certificate.expects(:find).with("myhost").returns nil
771
- Puppet::SSL::CertificateRequest.expects(:find).with("myhost").returns nil
594
+ Puppet::SSL::Certificate.indirection.expects(:find).with("myhost").returns nil
595
+ Puppet::SSL::CertificateRequest.indirection.expects(:find).with("myhost").returns nil
772
596
  lambda { @ca.fingerprint("myhost") }.should raise_error
773
597
  end
774
598
 
775
599
  it "should try to find a CSR if no certificate can be found" do
776
- Puppet::SSL::Certificate.expects(:find).with("myhost").returns nil
777
- Puppet::SSL::CertificateRequest.expects(:find).with("myhost").returns @cert
600
+ Puppet::SSL::Certificate.indirection.expects(:find).with("myhost").returns nil
601
+ Puppet::SSL::CertificateRequest.indirection.expects(:find).with("myhost").returns @cert
778
602
  @cert.expects(:fingerprint)
779
603
  @ca.fingerprint("myhost")
780
604
  end
@@ -799,7 +623,7 @@ describe Puppet::SSL::CertificateAuthority do
799
623
  Puppet.settings.stubs(:value).returns "crtstuff"
800
624
 
801
625
  @cert = stub 'cert', :content => "mycert"
802
- Puppet::SSL::Certificate.stubs(:find).returns @cert
626
+ Puppet::SSL::Certificate.indirection.stubs(:find).returns @cert
803
627
 
804
628
  @crl = stub('crl', :content => "mycrl")
805
629
 
@@ -807,7 +631,7 @@ describe Puppet::SSL::CertificateAuthority do
807
631
  end
808
632
 
809
633
  it "should fail if the host's certificate cannot be found" do
810
- Puppet::SSL::Certificate.expects(:find).with("me").returns(nil)
634
+ Puppet::SSL::Certificate.indirection.expects(:find).with("me").returns(nil)
811
635
 
812
636
  lambda { @ca.verify("me") }.should raise_error(ArgumentError)
813
637
  end
@@ -870,7 +694,7 @@ describe Puppet::SSL::CertificateAuthority do
870
694
 
871
695
  @real_cert = stub 'real_cert', :serial => 15
872
696
  @cert = stub 'cert', :content => @real_cert
873
- Puppet::SSL::Certificate.stubs(:find).returns @cert
697
+ Puppet::SSL::Certificate.indirection.stubs(:find).returns @cert
874
698
 
875
699
  end
876
700
 
@@ -890,7 +714,7 @@ describe Puppet::SSL::CertificateAuthority do
890
714
  it "should get the serial number from the local certificate if it exists" do
891
715
  @ca.crl.expects(:revoke).with { |serial, key| serial == 15 }
892
716
 
893
- Puppet::SSL::Certificate.expects(:find).with("host").returns @cert
717
+ Puppet::SSL::Certificate.indirection.expects(:find).with("host").returns @cert
894
718
 
895
719
  @ca.revoke('host')
896
720
  end
@@ -898,7 +722,7 @@ describe Puppet::SSL::CertificateAuthority do
898
722
  it "should get the serial number from inventory if no local certificate exists" do
899
723
  real_cert = stub 'real_cert', :serial => 15
900
724
  cert = stub 'cert', :content => real_cert
901
- Puppet::SSL::Certificate.expects(:find).with("host").returns nil
725
+ Puppet::SSL::Certificate.indirection.expects(:find).with("host").returns nil
902
726
 
903
727
  @ca.inventory.expects(:serial).with("host").returns 16
904
728
 
@@ -915,13 +739,13 @@ describe Puppet::SSL::CertificateAuthority do
915
739
  before do
916
740
  @host = stub 'host', :generate_certificate_request => nil
917
741
  Puppet::SSL::Host.stubs(:new).returns @host
918
- Puppet::SSL::Certificate.stubs(:find).returns nil
742
+ Puppet::SSL::Certificate.indirection.stubs(:find).returns nil
919
743
 
920
744
  @ca.stubs(:sign)
921
745
  end
922
746
 
923
747
  it "should fail if a certificate already exists for the host" do
924
- Puppet::SSL::Certificate.expects(:find).with("him").returns "something"
748
+ Puppet::SSL::Certificate.indirection.expects(:find).with("him").returns "something"
925
749
 
926
750
  lambda { @ca.generate("him") }.should raise_error(ArgumentError)
927
751
  end
@@ -939,7 +763,8 @@ describe Puppet::SSL::CertificateAuthority do
939
763
  end
940
764
 
941
765
  it "should sign the generated request" do
942
- @ca.expects(:sign).with("him", false)
766
+ @ca.expects(:sign).with("him")
767
+
943
768
  @ca.generate("him")
944
769
  end
945
770
  end