puppet 5.3.4 → 6.29.0

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 (2105) hide show
  1. checksums.yaml +7 -0
  2. data/CODEOWNERS +11 -0
  3. data/CODE_OF_CONDUCT.md +70 -0
  4. data/CONTRIBUTING.md +59 -55
  5. data/Gemfile +52 -70
  6. data/Gemfile.lock +251 -0
  7. data/Guardfile.example +76 -0
  8. data/LICENSE +189 -4
  9. data/README.md +31 -37
  10. data/Rakefile +53 -52
  11. data/conf/auth.conf +7 -2
  12. data/conf/environment.conf +1 -1
  13. data/conf/fileserver.conf +1 -1
  14. data/conf/puppet.conf +4 -4
  15. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  16. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  17. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  18. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  19. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  20. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  21. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +19 -20
  22. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  23. data/ext/README.md +13 -0
  24. data/ext/build_defaults.yaml +1 -2
  25. data/ext/hiera/hiera.yaml +1 -1
  26. data/ext/osx/puppet.plist +2 -0
  27. data/ext/project_data.yaml +16 -12
  28. data/ext/redhat/client.init +2 -2
  29. data/ext/solaris/smf/puppet +11 -11
  30. data/ext/solaris/smf/puppet.xml +2 -0
  31. data/ext/windows/service/daemon.rb +40 -10
  32. data/install.rb +8 -27
  33. data/lib/hiera/puppet_function.rb +1 -1
  34. data/lib/hiera/scope.rb +31 -2
  35. data/lib/hiera_puppet.rb +2 -1
  36. data/lib/puppet/agent/locker.rb +0 -7
  37. data/lib/puppet/agent.rb +68 -26
  38. data/lib/puppet/application/agent.rb +107 -59
  39. data/lib/puppet/application/apply.rb +144 -74
  40. data/lib/puppet/application/cert.rb +27 -285
  41. data/lib/puppet/application/describe.rb +10 -15
  42. data/lib/puppet/application/device.rb +241 -89
  43. data/lib/puppet/application/doc.rb +8 -5
  44. data/lib/puppet/application/face_base.rb +23 -16
  45. data/lib/puppet/application/facts.rb +5 -0
  46. data/lib/puppet/application/filebucket.rb +51 -16
  47. data/lib/puppet/application/lookup.rb +92 -20
  48. data/lib/puppet/application/plugin.rb +1 -0
  49. data/lib/puppet/application/resource.rb +39 -23
  50. data/lib/puppet/application/script.rb +264 -0
  51. data/lib/puppet/application/ssl.rb +288 -0
  52. data/lib/puppet/application.rb +25 -9
  53. data/lib/puppet/application_support.rb +9 -3
  54. data/lib/puppet/concurrent/lock.rb +16 -0
  55. data/lib/puppet/concurrent/synchronized.rb +15 -0
  56. data/lib/puppet/concurrent/thread_local_singleton.rb +17 -0
  57. data/lib/puppet/concurrent.rb +2 -0
  58. data/lib/puppet/configurer/downloader.rb +36 -18
  59. data/lib/puppet/configurer/fact_handler.rb +5 -1
  60. data/lib/puppet/configurer/plugin_handler.rb +36 -11
  61. data/lib/puppet/configurer.rb +367 -152
  62. data/lib/puppet/confine/any.rb +1 -1
  63. data/lib/puppet/confine/boolean.rb +45 -0
  64. data/lib/puppet/confine/false.rb +7 -1
  65. data/lib/puppet/confine/true.rb +7 -1
  66. data/lib/puppet/confine/variable.rb +1 -1
  67. data/lib/puppet/confine.rb +6 -3
  68. data/lib/puppet/confine_collection.rb +2 -1
  69. data/lib/puppet/context/trusted_information.rb +48 -4
  70. data/lib/puppet/context.rb +120 -48
  71. data/lib/puppet/daemon.rb +17 -30
  72. data/lib/puppet/datatypes/error.rb +21 -0
  73. data/lib/puppet/datatypes/impl/error.rb +40 -0
  74. data/lib/puppet/datatypes.rb +213 -0
  75. data/lib/puppet/defaults.rb +651 -371
  76. data/lib/puppet/environments.rb +218 -105
  77. data/lib/puppet/error.rb +52 -4
  78. data/lib/puppet/etc.rb +26 -7
  79. data/lib/puppet/external/dot.rb +23 -24
  80. data/lib/puppet/external/pson/pure/generator.rb +1 -1
  81. data/lib/puppet/external/pson/pure/parser.rb +3 -2
  82. data/lib/puppet/face/catalog.rb +20 -1
  83. data/lib/puppet/face/config.rb +167 -32
  84. data/lib/puppet/face/epp.rb +52 -15
  85. data/lib/puppet/face/facts.rb +210 -0
  86. data/lib/puppet/face/generate.rb +2 -0
  87. data/lib/puppet/face/help/action.erb +5 -1
  88. data/lib/puppet/face/help/face.erb +2 -1
  89. data/lib/puppet/face/help/global.erb +2 -2
  90. data/lib/puppet/face/help/man.erb +1 -1
  91. data/lib/puppet/face/help.rb +80 -41
  92. data/lib/puppet/face/key.rb +1 -1
  93. data/lib/puppet/face/man.rb +55 -12
  94. data/lib/puppet/face/module/build.rb +5 -54
  95. data/lib/puppet/face/module/changes.rb +2 -1
  96. data/lib/puppet/face/module/generate.rb +6 -243
  97. data/lib/puppet/face/module/install.rb +1 -4
  98. data/lib/puppet/face/module/list.rb +5 -10
  99. data/lib/puppet/face/module/search.rb +13 -4
  100. data/lib/puppet/face/module/uninstall.rb +2 -5
  101. data/lib/puppet/face/module/upgrade.rb +2 -5
  102. data/lib/puppet/face/node/clean.rb +26 -12
  103. data/lib/puppet/face/node.rb +3 -3
  104. data/lib/puppet/face/parser.rb +78 -12
  105. data/lib/puppet/face/plugin.rb +9 -4
  106. data/lib/puppet/face/status.rb +3 -3
  107. data/lib/puppet/facter_impl.rb +96 -0
  108. data/lib/puppet/feature/base.rb +9 -28
  109. data/lib/puppet/feature/bolt.rb +3 -0
  110. data/lib/puppet/feature/eventlog.rb +1 -1
  111. data/lib/puppet/ffi/posix/constants.rb +14 -0
  112. data/lib/puppet/ffi/posix/functions.rb +24 -0
  113. data/lib/puppet/ffi/posix.rb +10 -0
  114. data/lib/puppet/file_bucket/dipper.rb +5 -5
  115. data/lib/puppet/file_bucket/file.rb +0 -2
  116. data/lib/puppet/file_serving/base.rb +16 -16
  117. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  118. data/lib/puppet/file_serving/configuration.rb +5 -1
  119. data/lib/puppet/file_serving/fileset.rb +17 -5
  120. data/lib/puppet/file_serving/http_metadata.rb +19 -5
  121. data/lib/puppet/file_serving/metadata.rb +12 -4
  122. data/lib/puppet/file_serving/mount/file.rb +6 -5
  123. data/lib/puppet/file_serving/mount/locales.rb +3 -3
  124. data/lib/puppet/file_serving/mount/modules.rb +4 -2
  125. data/lib/puppet/file_serving/mount/pluginfacts.rb +3 -3
  126. data/lib/puppet/file_serving/mount/plugins.rb +3 -3
  127. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  128. data/lib/puppet/file_serving/mount/tasks.rb +4 -2
  129. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  130. data/lib/puppet/file_system/file_impl.rb +45 -11
  131. data/lib/puppet/file_system/jruby.rb +23 -0
  132. data/lib/puppet/file_system/memory_file.rb +15 -2
  133. data/lib/puppet/file_system/memory_impl.rb +13 -0
  134. data/lib/puppet/file_system/posix.rb +3 -2
  135. data/lib/puppet/file_system/uniquefile.rb +15 -17
  136. data/lib/puppet/file_system/windows.rb +85 -2
  137. data/lib/puppet/file_system.rb +29 -15
  138. data/lib/puppet/forge/cache.rb +1 -1
  139. data/lib/puppet/forge/errors.rb +5 -5
  140. data/lib/puppet/forge/repository.rb +28 -87
  141. data/lib/puppet/forge.rb +45 -22
  142. data/lib/puppet/functions/abs.rb +61 -0
  143. data/lib/puppet/functions/alert.rb +1 -1
  144. data/lib/puppet/functions/all.rb +15 -11
  145. data/lib/puppet/functions/annotate.rb +11 -11
  146. data/lib/puppet/functions/any.rb +15 -11
  147. data/lib/puppet/functions/assert_type.rb +7 -7
  148. data/lib/puppet/functions/binary_file.rb +14 -2
  149. data/lib/puppet/functions/break.rb +34 -9
  150. data/lib/puppet/functions/call.rb +43 -5
  151. data/lib/puppet/functions/camelcase.rb +62 -0
  152. data/lib/puppet/functions/capitalize.rb +61 -0
  153. data/lib/puppet/functions/ceiling.rb +37 -0
  154. data/lib/puppet/functions/chomp.rb +57 -0
  155. data/lib/puppet/functions/chop.rb +67 -0
  156. data/lib/puppet/functions/compare.rb +125 -0
  157. data/lib/puppet/functions/contain.rb +25 -3
  158. data/lib/puppet/functions/convert_to.rb +34 -0
  159. data/lib/puppet/functions/crit.rb +1 -1
  160. data/lib/puppet/functions/debug.rb +1 -1
  161. data/lib/puppet/functions/defined.rb +11 -12
  162. data/lib/puppet/functions/dig.rb +47 -3
  163. data/lib/puppet/functions/downcase.rb +89 -0
  164. data/lib/puppet/functions/each.rb +20 -16
  165. data/lib/puppet/functions/emerg.rb +1 -1
  166. data/lib/puppet/functions/empty.rb +85 -0
  167. data/lib/puppet/functions/epp.rb +5 -4
  168. data/lib/puppet/functions/err.rb +1 -1
  169. data/lib/puppet/functions/eyaml_lookup_key.rb +21 -15
  170. data/lib/puppet/functions/filter.rb +31 -23
  171. data/lib/puppet/functions/find_file.rb +15 -2
  172. data/lib/puppet/functions/find_template.rb +63 -0
  173. data/lib/puppet/functions/flatten.rb +64 -0
  174. data/lib/puppet/functions/floor.rb +37 -0
  175. data/lib/puppet/functions/get.rb +150 -0
  176. data/lib/puppet/functions/getvar.rb +87 -0
  177. data/lib/puppet/functions/group_by.rb +62 -0
  178. data/lib/puppet/functions/hiera.rb +11 -11
  179. data/lib/puppet/functions/hiera_array.rb +11 -11
  180. data/lib/puppet/functions/hiera_hash.rb +12 -12
  181. data/lib/puppet/functions/hiera_include.rb +15 -15
  182. data/lib/puppet/functions/hocon_data.rb +1 -1
  183. data/lib/puppet/functions/include.rb +34 -2
  184. data/lib/puppet/functions/index.rb +167 -0
  185. data/lib/puppet/functions/info.rb +1 -1
  186. data/lib/puppet/functions/inline_epp.rb +8 -7
  187. data/lib/puppet/functions/join.rb +56 -0
  188. data/lib/puppet/functions/json_data.rb +3 -3
  189. data/lib/puppet/functions/keys.rb +25 -0
  190. data/lib/puppet/functions/length.rb +44 -0
  191. data/lib/puppet/functions/lest.rb +39 -1
  192. data/lib/puppet/functions/lookup.rb +3 -2
  193. data/lib/puppet/functions/lstrip.rb +58 -0
  194. data/lib/puppet/functions/map.rb +22 -18
  195. data/lib/puppet/functions/match.rb +19 -9
  196. data/lib/puppet/functions/max.rb +183 -0
  197. data/lib/puppet/functions/min.rb +182 -0
  198. data/lib/puppet/functions/module_directory.rb +41 -0
  199. data/lib/puppet/functions/new.rb +987 -8
  200. data/lib/puppet/functions/next.rb +20 -10
  201. data/lib/puppet/functions/notice.rb +1 -1
  202. data/lib/puppet/functions/partition.rb +62 -0
  203. data/lib/puppet/functions/reduce.rb +9 -11
  204. data/lib/puppet/functions/regsubst.rb +60 -35
  205. data/lib/puppet/functions/require.rb +42 -2
  206. data/lib/puppet/functions/return.rb +2 -9
  207. data/lib/puppet/functions/reverse_each.rb +72 -3
  208. data/lib/puppet/functions/round.rb +24 -0
  209. data/lib/puppet/functions/rstrip.rb +58 -0
  210. data/lib/puppet/functions/size.rb +15 -0
  211. data/lib/puppet/functions/slice.rb +23 -9
  212. data/lib/puppet/functions/sort.rb +74 -0
  213. data/lib/puppet/functions/split.rb +12 -10
  214. data/lib/puppet/functions/step.rb +74 -2
  215. data/lib/puppet/functions/strftime.rb +179 -10
  216. data/lib/puppet/functions/strip.rb +58 -0
  217. data/lib/puppet/functions/then.rb +65 -2
  218. data/lib/puppet/functions/tree_each.rb +32 -35
  219. data/lib/puppet/functions/type.rb +42 -1
  220. data/lib/puppet/functions/unique.rb +13 -13
  221. data/lib/puppet/functions/unwrap.rb +25 -6
  222. data/lib/puppet/functions/upcase.rb +89 -0
  223. data/lib/puppet/functions/values.rb +25 -0
  224. data/lib/puppet/functions/versioncmp.rb +7 -3
  225. data/lib/puppet/functions/warning.rb +1 -1
  226. data/lib/puppet/functions/with.rb +9 -7
  227. data/lib/puppet/functions/yaml_data.rb +11 -9
  228. data/lib/puppet/functions.rb +208 -91
  229. data/lib/puppet/generate/type.rb +12 -2
  230. data/lib/puppet/gettext/config.rb +31 -8
  231. data/lib/puppet/gettext/module_translations.rb +5 -5
  232. data/lib/puppet/gettext/stubs.rb +1 -1
  233. data/lib/puppet/graph/rb_tree_map.rb +2 -2
  234. data/lib/puppet/graph/relationship_graph.rb +2 -1
  235. data/lib/puppet/graph/simple_graph.rb +16 -10
  236. data/lib/puppet/graph.rb +0 -2
  237. data/lib/puppet/http/client.rb +468 -0
  238. data/lib/puppet/http/errors.rb +32 -0
  239. data/lib/puppet/http/external_client.rb +90 -0
  240. data/lib/puppet/http/redirector.rb +89 -0
  241. data/lib/puppet/http/resolver/server_list.rb +91 -0
  242. data/lib/puppet/http/resolver/settings.rb +26 -0
  243. data/lib/puppet/http/resolver/srv.rb +45 -0
  244. data/lib/puppet/http/resolver.rb +58 -0
  245. data/lib/puppet/http/response.rb +120 -0
  246. data/lib/puppet/http/retry_after_handler.rb +86 -0
  247. data/lib/puppet/http/service/ca.rb +112 -0
  248. data/lib/puppet/http/service/compiler.rb +393 -0
  249. data/lib/puppet/http/service/file_server.rb +207 -0
  250. data/lib/puppet/http/service/puppetserver.rb +39 -0
  251. data/lib/puppet/http/service/report.rb +66 -0
  252. data/lib/puppet/http/service.rb +196 -0
  253. data/lib/puppet/http/session.rb +131 -0
  254. data/lib/puppet/http.rb +37 -0
  255. data/lib/puppet/indirector/catalog/compiler.rb +60 -22
  256. data/lib/puppet/indirector/catalog/json.rb +14 -3
  257. data/lib/puppet/indirector/catalog/rest.rb +35 -0
  258. data/lib/puppet/indirector/catalog/yaml.rb +0 -16
  259. data/lib/puppet/indirector/certificate/file.rb +1 -1
  260. data/lib/puppet/indirector/certificate/rest.rb +3 -1
  261. data/lib/puppet/indirector/certificate_request/file.rb +1 -0
  262. data/lib/puppet/indirector/certificate_request/memory.rb +1 -0
  263. data/lib/puppet/indirector/certificate_request/rest.rb +1 -0
  264. data/lib/puppet/indirector/exec.rb +1 -1
  265. data/lib/puppet/indirector/face.rb +2 -2
  266. data/lib/puppet/indirector/fact_search.rb +60 -0
  267. data/lib/puppet/indirector/facts/facter.rb +31 -12
  268. data/lib/puppet/indirector/facts/json.rb +27 -0
  269. data/lib/puppet/indirector/facts/rest.rb +63 -0
  270. data/lib/puppet/indirector/facts/yaml.rb +7 -64
  271. data/lib/puppet/indirector/file_bucket_file/file.rb +7 -3
  272. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  273. data/lib/puppet/indirector/file_content/http.rb +8 -1
  274. data/lib/puppet/indirector/file_content/rest.rb +30 -0
  275. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  276. data/lib/puppet/indirector/file_metadata/rest.rb +53 -0
  277. data/lib/puppet/indirector/file_server.rb +5 -3
  278. data/lib/puppet/indirector/hiera.rb +6 -0
  279. data/lib/puppet/indirector/indirection.rb +59 -31
  280. data/lib/puppet/indirector/json.rb +6 -2
  281. data/lib/puppet/indirector/key/file.rb +2 -6
  282. data/lib/puppet/indirector/key/memory.rb +1 -0
  283. data/lib/puppet/indirector/msgpack.rb +2 -2
  284. data/lib/puppet/indirector/node/exec.rb +4 -5
  285. data/lib/puppet/indirector/node/json.rb +8 -0
  286. data/lib/puppet/indirector/node/rest.rb +24 -0
  287. data/lib/puppet/indirector/node/yaml.rb +0 -6
  288. data/lib/puppet/indirector/report/json.rb +34 -0
  289. data/lib/puppet/indirector/report/processor.rb +4 -3
  290. data/lib/puppet/indirector/report/rest.rb +19 -0
  291. data/lib/puppet/indirector/report/yaml.rb +23 -0
  292. data/lib/puppet/indirector/request.rb +49 -28
  293. data/lib/puppet/indirector/resource/ral.rb +7 -4
  294. data/lib/puppet/indirector/resource/validator.rb +1 -1
  295. data/lib/puppet/indirector/rest.rb +30 -66
  296. data/lib/puppet/indirector/ssl_file.rb +13 -52
  297. data/lib/puppet/indirector/status/rest.rb +18 -0
  298. data/lib/puppet/indirector/terminus.rb +11 -4
  299. data/lib/puppet/indirector/yaml.rb +5 -5
  300. data/lib/puppet/indirector.rb +3 -3
  301. data/lib/puppet/info_service/class_information_service.rb +1 -1
  302. data/lib/puppet/info_service/plan_information_service.rb +36 -0
  303. data/lib/puppet/info_service/task_information_service.rb +7 -3
  304. data/lib/puppet/info_service.rb +9 -0
  305. data/lib/puppet/interface/action.rb +23 -10
  306. data/lib/puppet/interface/action_builder.rb +8 -0
  307. data/lib/puppet/interface/action_manager.rb +2 -1
  308. data/lib/puppet/interface/documentation.rb +11 -7
  309. data/lib/puppet/interface/face_collection.rb +9 -4
  310. data/lib/puppet/interface/option.rb +4 -2
  311. data/lib/puppet/interface/option_manager.rb +5 -3
  312. data/lib/puppet/interface.rb +5 -3
  313. data/lib/puppet/loaders.rb +10 -1
  314. data/lib/puppet/metatype/manager.rb +81 -83
  315. data/lib/puppet/module/plan.rb +159 -0
  316. data/lib/puppet/module/task.rb +216 -32
  317. data/lib/puppet/module.rb +51 -39
  318. data/lib/puppet/module_tool/applications/application.rb +7 -6
  319. data/lib/puppet/module_tool/applications/checksummer.rb +3 -3
  320. data/lib/puppet/module_tool/applications/installer.rb +72 -13
  321. data/lib/puppet/module_tool/applications/uninstaller.rb +6 -5
  322. data/lib/puppet/module_tool/applications/unpacker.rb +4 -4
  323. data/lib/puppet/module_tool/applications/upgrader.rb +12 -8
  324. data/lib/puppet/module_tool/applications.rb +0 -1
  325. data/lib/puppet/module_tool/contents_description.rb +2 -1
  326. data/lib/puppet/module_tool/dependency.rb +1 -1
  327. data/lib/puppet/module_tool/errors/shared.rb +34 -2
  328. data/lib/puppet/module_tool/installed_modules.rb +3 -3
  329. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  330. data/lib/puppet/module_tool/metadata.rb +5 -8
  331. data/lib/puppet/module_tool/shared_behaviors.rb +8 -7
  332. data/lib/puppet/module_tool/tar/mini.rb +14 -4
  333. data/lib/puppet/module_tool.rb +4 -6
  334. data/lib/puppet/network/authconfig.rb +5 -16
  335. data/lib/puppet/network/authstore.rb +3 -2
  336. data/lib/puppet/network/format_support.rb +15 -10
  337. data/lib/puppet/network/formats.rb +168 -10
  338. data/lib/puppet/network/http/api/indirected_routes.rb +31 -20
  339. data/lib/puppet/network/http/api/master/v3/environment.rb +5 -2
  340. data/lib/puppet/network/http/api/master/v3/environments.rb +2 -3
  341. data/lib/puppet/network/http/api.rb +1 -10
  342. data/lib/puppet/network/http/base_pool.rb +36 -0
  343. data/lib/puppet/network/http/compression.rb +8 -1
  344. data/lib/puppet/network/http/connection.rb +59 -36
  345. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  346. data/lib/puppet/network/http/error.rb +3 -3
  347. data/lib/puppet/network/http/factory.rb +16 -18
  348. data/lib/puppet/network/http/handler.rb +60 -27
  349. data/lib/puppet/network/http/nocache_pool.rb +11 -4
  350. data/lib/puppet/network/http/pool.rb +24 -16
  351. data/lib/puppet/network/http/request.rb +2 -1
  352. data/lib/puppet/network/http/route.rb +4 -3
  353. data/lib/puppet/network/http/session.rb +3 -2
  354. data/lib/puppet/network/http/site.rb +5 -1
  355. data/lib/puppet/network/http.rb +2 -7
  356. data/lib/puppet/network/http_pool.rb +35 -1
  357. data/lib/puppet/network/resolver.rb +140 -67
  358. data/lib/puppet/network/rights.rb +3 -2
  359. data/lib/puppet/network/uri.rb +18 -0
  360. data/lib/puppet/node/environment.rb +65 -62
  361. data/lib/puppet/node/facts.rb +28 -1
  362. data/lib/puppet/node.rb +65 -8
  363. data/lib/puppet/pal/catalog_compiler.rb +108 -0
  364. data/lib/puppet/pal/compiler.rb +222 -0
  365. data/lib/puppet/pal/function_signature.rb +52 -0
  366. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  367. data/lib/puppet/pal/pal_api.rb +15 -0
  368. data/lib/puppet/pal/pal_impl.rb +588 -0
  369. data/lib/puppet/pal/plan_signature.rb +71 -0
  370. data/lib/puppet/pal/script_compiler.rb +73 -0
  371. data/lib/puppet/pal/task_signature.rb +58 -0
  372. data/lib/puppet/parameter/boolean.rb +1 -1
  373. data/lib/puppet/parameter/value_collection.rb +8 -8
  374. data/lib/puppet/parameter.rb +17 -10
  375. data/lib/puppet/parser/abstract_compiler.rb +36 -0
  376. data/lib/puppet/parser/ast/branch.rb +4 -4
  377. data/lib/puppet/parser/ast/leaf.rb +10 -4
  378. data/lib/puppet/parser/ast/pops_bridge.rb +34 -68
  379. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  380. data/lib/puppet/parser/ast.rb +5 -9
  381. data/lib/puppet/parser/catalog_compiler.rb +56 -0
  382. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +3 -1
  383. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +9 -2
  384. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  385. data/lib/puppet/parser/compiler.rb +73 -93
  386. data/lib/puppet/parser/environment_compiler.rb +4 -1
  387. data/lib/puppet/parser/files.rb +2 -1
  388. data/lib/puppet/parser/functions/assert_type.rb +3 -3
  389. data/lib/puppet/parser/functions/create_resources.rb +18 -14
  390. data/lib/puppet/parser/functions/each.rb +2 -2
  391. data/lib/puppet/parser/functions/epp.rb +3 -3
  392. data/lib/puppet/parser/functions/fail.rb +8 -1
  393. data/lib/puppet/parser/functions/filter.rb +3 -2
  394. data/lib/puppet/parser/functions/fqdn_rand.rb +27 -4
  395. data/lib/puppet/parser/functions/generate.rb +8 -7
  396. data/lib/puppet/parser/functions/hiera.rb +4 -4
  397. data/lib/puppet/parser/functions/hiera_array.rb +5 -5
  398. data/lib/puppet/parser/functions/hiera_hash.rb +6 -6
  399. data/lib/puppet/parser/functions/hiera_include.rb +10 -11
  400. data/lib/puppet/parser/functions/inline_epp.rb +5 -5
  401. data/lib/puppet/parser/functions/inline_template.rb +7 -1
  402. data/lib/puppet/parser/functions/lest.rb +1 -1
  403. data/lib/puppet/parser/functions/lookup.rb +1 -1
  404. data/lib/puppet/parser/functions/map.rb +1 -1
  405. data/lib/puppet/parser/functions/new.rb +32 -47
  406. data/lib/puppet/parser/functions/realize.rb +6 -0
  407. data/lib/puppet/parser/functions/reduce.rb +1 -1
  408. data/lib/puppet/parser/functions/return.rb +22 -1
  409. data/lib/puppet/parser/functions/reverse_each.rb +2 -2
  410. data/lib/puppet/parser/functions/scanf.rb +1 -1
  411. data/lib/puppet/parser/functions/sha256.rb +5 -0
  412. data/lib/puppet/parser/functions/sprintf.rb +12 -1
  413. data/lib/puppet/parser/functions/step.rb +1 -1
  414. data/lib/puppet/parser/functions/tag.rb +6 -0
  415. data/lib/puppet/parser/functions/tagged.rb +6 -3
  416. data/lib/puppet/parser/functions/template.rb +5 -0
  417. data/lib/puppet/parser/functions/then.rb +1 -1
  418. data/lib/puppet/parser/functions/with.rb +4 -4
  419. data/lib/puppet/parser/functions.rb +60 -17
  420. data/lib/puppet/parser/parser_factory.rb +1 -1
  421. data/lib/puppet/parser/relationship.rb +2 -1
  422. data/lib/puppet/parser/resource/param.rb +18 -5
  423. data/lib/puppet/parser/resource.rb +11 -8
  424. data/lib/puppet/parser/scope.rb +48 -22
  425. data/lib/puppet/parser/script_compiler.rb +123 -0
  426. data/lib/puppet/parser/templatewrapper.rb +4 -2
  427. data/lib/puppet/parser/type_loader.rb +15 -14
  428. data/lib/puppet/parser.rb +1 -0
  429. data/lib/puppet/plugins/configuration.rb +5 -1
  430. data/lib/puppet/pops/adaptable.rb +8 -17
  431. data/lib/puppet/pops/adapters.rb +22 -4
  432. data/lib/puppet/pops/evaluator/access_operator.rb +39 -5
  433. data/lib/puppet/pops/evaluator/closure.rb +19 -9
  434. data/lib/puppet/pops/evaluator/collector_transformer.rb +1 -1
  435. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +4 -4
  436. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  437. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +3 -2
  438. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -1
  439. data/lib/puppet/pops/evaluator/compare_operator.rb +7 -5
  440. data/lib/puppet/pops/evaluator/deferred_resolver.rb +132 -0
  441. data/lib/puppet/pops/evaluator/epp_evaluator.rb +15 -2
  442. data/lib/puppet/pops/evaluator/evaluator_impl.rb +82 -16
  443. data/lib/puppet/pops/evaluator/external_syntax_support.rb +6 -5
  444. data/lib/puppet/pops/evaluator/literal_evaluator.rb +1 -1
  445. data/lib/puppet/pops/evaluator/runtime3_converter.rb +24 -5
  446. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +5 -3
  447. data/lib/puppet/pops/evaluator/runtime3_support.rb +18 -21
  448. data/lib/puppet/pops/functions/dispatch.rb +13 -6
  449. data/lib/puppet/pops/functions/function.rb +2 -2
  450. data/lib/puppet/pops/issue_reporter.rb +18 -1
  451. data/lib/puppet/pops/issues.rb +73 -10
  452. data/lib/puppet/pops/loader/base_loader.rb +14 -2
  453. data/lib/puppet/pops/loader/dependency_loader.rb +11 -2
  454. data/lib/puppet/pops/loader/gem_support.rb +4 -2
  455. data/lib/puppet/pops/loader/generic_plan_instantiator.rb +28 -0
  456. data/lib/puppet/pops/loader/loader.rb +26 -5
  457. data/lib/puppet/pops/loader/loader_paths.rb +221 -32
  458. data/lib/puppet/pops/loader/module_loaders.rb +242 -40
  459. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +93 -0
  460. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +9 -9
  461. data/lib/puppet/pops/loader/ruby_data_type_instantiator.rb +39 -0
  462. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +1 -2
  463. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +121 -0
  464. data/lib/puppet/pops/loader/runtime3_type_loader.rb +10 -3
  465. data/lib/puppet/pops/loader/static_loader.rb +23 -44
  466. data/lib/puppet/pops/loader/task_instantiator.rb +44 -0
  467. data/lib/puppet/pops/loader/type_definition_instantiator.rb +8 -1
  468. data/lib/puppet/pops/loaders.rb +169 -50
  469. data/lib/puppet/pops/lookup/context.rb +1 -1
  470. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +1 -1
  471. data/lib/puppet/pops/lookup/global_data_provider.rb +1 -1
  472. data/lib/puppet/pops/lookup/hiera_config.rb +16 -2
  473. data/lib/puppet/pops/lookup/interpolation.rb +3 -2
  474. data/lib/puppet/pops/lookup/invocation.rb +10 -3
  475. data/lib/puppet/pops/lookup/key_recorder.rb +18 -0
  476. data/lib/puppet/pops/lookup/lookup_adapter.rb +65 -9
  477. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  478. data/lib/puppet/pops/lookup.rb +1 -0
  479. data/lib/puppet/pops/merge_strategy.rb +22 -18
  480. data/lib/puppet/pops/model/ast.pp +19 -0
  481. data/lib/puppet/pops/model/ast.rb +129 -1
  482. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  483. data/lib/puppet/pops/model/factory.rb +93 -13
  484. data/lib/puppet/pops/model/model_label_provider.rb +9 -1
  485. data/lib/puppet/pops/model/model_tree_dumper.rb +16 -1
  486. data/lib/puppet/pops/model/pn_transformer.rb +401 -0
  487. data/lib/puppet/pops/model/tree_dumper.rb +1 -1
  488. data/lib/puppet/pops/parser/code_merger.rb +4 -4
  489. data/lib/puppet/pops/parser/egrammar.ra +60 -18
  490. data/lib/puppet/pops/parser/eparser.rb +1926 -1745
  491. data/lib/puppet/pops/parser/epp_parser.rb +1 -1
  492. data/lib/puppet/pops/parser/epp_support.rb +9 -6
  493. data/lib/puppet/pops/parser/evaluating_parser.rb +9 -12
  494. data/lib/puppet/pops/parser/heredoc_support.rb +20 -10
  495. data/lib/puppet/pops/parser/interpolation_support.rb +16 -11
  496. data/lib/puppet/pops/parser/lexer2.rb +109 -100
  497. data/lib/puppet/pops/parser/lexer_support.rb +5 -4
  498. data/lib/puppet/pops/parser/locatable.rb +1 -1
  499. data/lib/puppet/pops/parser/locator.rb +116 -103
  500. data/lib/puppet/pops/parser/parser_support.rb +14 -5
  501. data/lib/puppet/pops/parser/pn_parser.rb +317 -0
  502. data/lib/puppet/pops/parser/slurp_support.rb +1 -3
  503. data/lib/puppet/pops/pcore.rb +43 -10
  504. data/lib/puppet/pops/pn.rb +236 -0
  505. data/lib/puppet/pops/puppet_stack.rb +55 -37
  506. data/lib/puppet/pops/resource/param.rb +1 -1
  507. data/lib/puppet/pops/resource/resource_type_impl.rb +4 -2
  508. data/lib/puppet/pops/serialization/abstract_reader.rb +4 -0
  509. data/lib/puppet/pops/serialization/abstract_writer.rb +6 -0
  510. data/lib/puppet/pops/serialization/extension.rb +1 -0
  511. data/lib/puppet/pops/serialization/from_data_converter.rb +68 -13
  512. data/lib/puppet/pops/serialization/json.rb +7 -7
  513. data/lib/puppet/pops/serialization/json_path.rb +5 -4
  514. data/lib/puppet/pops/serialization/object.rb +3 -4
  515. data/lib/puppet/pops/serialization/serializer.rb +2 -1
  516. data/lib/puppet/pops/serialization/to_data_converter.rb +24 -12
  517. data/lib/puppet/pops/serialization/to_stringified_converter.rb +226 -0
  518. data/lib/puppet/pops/serialization.rb +4 -2
  519. data/lib/puppet/pops/time/timespan.rb +4 -6
  520. data/lib/puppet/pops/types/class_loader.rb +6 -3
  521. data/lib/puppet/pops/types/implementation_registry.rb +28 -35
  522. data/lib/puppet/pops/types/iterable.rb +68 -13
  523. data/lib/puppet/pops/types/p_binary_type.rb +1 -2
  524. data/lib/puppet/pops/types/p_init_type.rb +1 -1
  525. data/lib/puppet/pops/types/p_meta_type.rb +5 -1
  526. data/lib/puppet/pops/types/p_object_type.rb +152 -17
  527. data/lib/puppet/pops/types/p_object_type_extension.rb +228 -0
  528. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +0 -1
  529. data/lib/puppet/pops/types/p_sem_ver_type.rb +18 -4
  530. data/lib/puppet/pops/types/p_sensitive_type.rb +11 -1
  531. data/lib/puppet/pops/types/p_timespan_type.rb +4 -4
  532. data/lib/puppet/pops/types/p_type_set_type.rb +28 -2
  533. data/lib/puppet/pops/types/p_uri_type.rb +190 -0
  534. data/lib/puppet/pops/types/puppet_object.rb +15 -1
  535. data/lib/puppet/pops/types/ruby_generator.rb +49 -58
  536. data/lib/puppet/pops/types/string_converter.rb +55 -23
  537. data/lib/puppet/pops/types/tree_iterators.rb +5 -1
  538. data/lib/puppet/pops/types/type_acceptor.rb +1 -1
  539. data/lib/puppet/pops/types/type_calculator.rb +45 -16
  540. data/lib/puppet/pops/types/type_factory.rb +46 -9
  541. data/lib/puppet/pops/types/type_formatter.rb +79 -17
  542. data/lib/puppet/pops/types/type_mismatch_describer.rb +3 -3
  543. data/lib/puppet/pops/types/type_parser.rb +112 -15
  544. data/lib/puppet/pops/types/type_with_members.rb +43 -0
  545. data/lib/puppet/pops/types/types.rb +231 -115
  546. data/lib/puppet/pops/utils.rb +2 -2
  547. data/lib/puppet/pops/validation/checker4_0.rb +181 -12
  548. data/lib/puppet/pops/validation/tasks_checker.rb +105 -0
  549. data/lib/puppet/pops/validation/validator_factory_4_0.rb +14 -8
  550. data/lib/puppet/pops/validation.rb +13 -20
  551. data/lib/puppet/pops/visitor.rb +12 -6
  552. data/lib/puppet/pops.rb +2 -1
  553. data/lib/puppet/property/ensure.rb +3 -2
  554. data/lib/puppet/property/keyvalue.rb +72 -9
  555. data/lib/puppet/property/list.rb +3 -2
  556. data/lib/puppet/property.rb +21 -18
  557. data/lib/puppet/provider/aix_object.rb +485 -0
  558. data/lib/puppet/provider/exec/posix.rb +16 -4
  559. data/lib/puppet/provider/exec.rb +71 -64
  560. data/lib/puppet/provider/file/posix.rb +11 -3
  561. data/lib/puppet/provider/file/windows.rb +50 -2
  562. data/lib/puppet/provider/group/aix.rb +69 -113
  563. data/lib/puppet/provider/group/groupadd.rb +92 -24
  564. data/lib/puppet/provider/group/ldap.rb +7 -4
  565. data/lib/puppet/provider/group/pw.rb +4 -2
  566. data/lib/puppet/provider/group/windows_adsi.rb +12 -8
  567. data/lib/puppet/provider/ldap.rb +8 -4
  568. data/lib/puppet/provider/nameservice/directoryservice.rb +12 -8
  569. data/lib/puppet/provider/nameservice/objectadd.rb +13 -24
  570. data/lib/puppet/provider/nameservice/pw.rb +14 -14
  571. data/lib/puppet/provider/nameservice.rb +20 -29
  572. data/lib/puppet/provider/network_device.rb +4 -2
  573. data/lib/puppet/provider/package/aix.rb +21 -4
  574. data/lib/puppet/provider/package/appdmg.rb +4 -3
  575. data/lib/puppet/provider/package/apple.rb +2 -2
  576. data/lib/puppet/provider/package/apt.rb +156 -10
  577. data/lib/puppet/provider/package/aptitude.rb +7 -1
  578. data/lib/puppet/provider/package/blastwave.rb +2 -1
  579. data/lib/puppet/provider/package/dnf.rb +7 -4
  580. data/lib/puppet/provider/package/dnfmodule.rb +141 -0
  581. data/lib/puppet/provider/package/dpkg.rb +51 -14
  582. data/lib/puppet/provider/package/fink.rb +22 -4
  583. data/lib/puppet/provider/package/gem.rb +151 -53
  584. data/lib/puppet/provider/package/macports.rb +8 -5
  585. data/lib/puppet/provider/package/nim.rb +19 -10
  586. data/lib/puppet/provider/package/openbsd.rb +30 -12
  587. data/lib/puppet/provider/package/opkg.rb +2 -1
  588. data/lib/puppet/provider/package/pacman.rb +9 -12
  589. data/lib/puppet/provider/package/pip.rb +271 -115
  590. data/lib/puppet/provider/package/pip2.rb +17 -0
  591. data/lib/puppet/provider/package/pip3.rb +2 -5
  592. data/lib/puppet/provider/package/pkg.rb +57 -10
  593. data/lib/puppet/provider/package/pkgdmg.rb +8 -7
  594. data/lib/puppet/provider/package/pkgng.rb +56 -26
  595. data/lib/puppet/provider/package/pkgutil.rb +4 -3
  596. data/lib/puppet/provider/package/portage.rb +32 -23
  597. data/lib/puppet/provider/package/portupgrade.rb +2 -1
  598. data/lib/puppet/provider/package/puppet_gem.rb +12 -3
  599. data/lib/puppet/provider/package/puppetserver_gem.rb +171 -0
  600. data/lib/puppet/provider/package/rpm.rb +87 -242
  601. data/lib/puppet/provider/package/sun.rb +2 -2
  602. data/lib/puppet/provider/package/windows/exe_package.rb +45 -10
  603. data/lib/puppet/provider/package/windows/msi_package.rb +8 -0
  604. data/lib/puppet/provider/package/windows/package.rb +14 -4
  605. data/lib/puppet/provider/package/windows.rb +21 -4
  606. data/lib/puppet/provider/package/yum.rb +143 -39
  607. data/lib/puppet/provider/package/zypper.rb +68 -7
  608. data/lib/puppet/provider/package.rb +4 -1
  609. data/lib/puppet/provider/package_targetable.rb +69 -0
  610. data/lib/puppet/provider/parsedfile.rb +43 -12
  611. data/lib/puppet/provider/service/base.rb +10 -7
  612. data/lib/puppet/provider/service/daemontools.rb +9 -9
  613. data/lib/puppet/provider/service/debian.rb +3 -0
  614. data/lib/puppet/provider/service/init.rb +11 -9
  615. data/lib/puppet/provider/service/launchd.rb +49 -17
  616. data/lib/puppet/provider/service/openbsd.rb +1 -1
  617. data/lib/puppet/provider/service/rcng.rb +2 -2
  618. data/lib/puppet/provider/service/redhat.rb +3 -2
  619. data/lib/puppet/provider/service/runit.rb +2 -8
  620. data/lib/puppet/provider/service/service.rb +2 -1
  621. data/lib/puppet/provider/service/smf.rb +60 -6
  622. data/lib/puppet/provider/service/systemd.rb +70 -26
  623. data/lib/puppet/provider/service/upstart.rb +39 -13
  624. data/lib/puppet/provider/service/windows.rb +117 -41
  625. data/lib/puppet/provider/user/aix.rb +223 -244
  626. data/lib/puppet/provider/user/directoryservice.rb +72 -16
  627. data/lib/puppet/provider/user/hpux.rb +2 -2
  628. data/lib/puppet/provider/user/ldap.rb +8 -4
  629. data/lib/puppet/provider/user/openbsd.rb +3 -2
  630. data/lib/puppet/provider/user/pw.rb +15 -5
  631. data/lib/puppet/provider/user/user_role_add.rb +17 -5
  632. data/lib/puppet/provider/user/useradd.rb +237 -62
  633. data/lib/puppet/provider/user/windows_adsi.rb +26 -2
  634. data/lib/puppet/provider.rb +41 -19
  635. data/lib/puppet/reference/configuration.rb +12 -3
  636. data/lib/puppet/reference/indirection.rb +2 -2
  637. data/lib/puppet/reference/metaparameter.rb +1 -3
  638. data/lib/puppet/reference/providers.rb +6 -7
  639. data/lib/puppet/reference/report.rb +1 -1
  640. data/lib/puppet/reference/type.rb +14 -19
  641. data/lib/puppet/relationship.rb +4 -9
  642. data/lib/puppet/reports/http.rb +15 -8
  643. data/lib/puppet/reports/store.rb +1 -1
  644. data/lib/puppet/reports.rb +3 -3
  645. data/lib/puppet/resource/capability_finder.rb +18 -14
  646. data/lib/puppet/resource/catalog.rb +49 -64
  647. data/lib/puppet/resource/status.rb +11 -3
  648. data/lib/puppet/resource/type.rb +28 -11
  649. data/lib/puppet/resource/type_collection.rb +27 -20
  650. data/lib/puppet/resource.rb +100 -24
  651. data/lib/puppet/rest/errors.rb +15 -0
  652. data/lib/puppet/rest/response.rb +35 -0
  653. data/lib/puppet/rest/route.rb +85 -0
  654. data/lib/puppet/rest/routes.rb +135 -0
  655. data/lib/puppet/runtime.rb +66 -0
  656. data/lib/puppet/settings/alias_setting.rb +37 -0
  657. data/lib/puppet/settings/base_setting.rb +34 -4
  658. data/lib/puppet/settings/config_file.rb +5 -5
  659. data/lib/puppet/settings/environment_conf.rb +12 -2
  660. data/lib/puppet/settings/file_setting.rb +3 -2
  661. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  662. data/lib/puppet/settings/ini_file.rb +67 -12
  663. data/lib/puppet/settings/server_list_setting.rb +9 -0
  664. data/lib/puppet/settings/ttl_setting.rb +5 -0
  665. data/lib/puppet/settings.rb +220 -67
  666. data/lib/puppet/ssl/base.rb +4 -11
  667. data/lib/puppet/ssl/certificate.rb +11 -4
  668. data/lib/puppet/ssl/certificate_request.rb +31 -23
  669. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  670. data/lib/puppet/ssl/certificate_signer.rb +11 -0
  671. data/lib/puppet/ssl/error.rb +26 -0
  672. data/lib/puppet/ssl/host.rb +291 -186
  673. data/lib/puppet/ssl/key.rb +5 -7
  674. data/lib/puppet/ssl/oids.rb +4 -3
  675. data/lib/puppet/ssl/openssl_loader.rb +24 -0
  676. data/lib/puppet/ssl/ssl_context.rb +30 -0
  677. data/lib/puppet/ssl/ssl_provider.rb +333 -0
  678. data/lib/puppet/ssl/state_machine.rb +472 -0
  679. data/lib/puppet/ssl/validator/default_validator.rb +61 -25
  680. data/lib/puppet/ssl/validator/no_validator.rb +3 -1
  681. data/lib/puppet/ssl/validator.rb +2 -1
  682. data/lib/puppet/ssl/verifier.rb +140 -0
  683. data/lib/puppet/ssl/verifier_adapter.rb +58 -0
  684. data/lib/puppet/ssl.rb +9 -3
  685. data/lib/puppet/syntax_checkers/base64.rb +1 -1
  686. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  687. data/lib/puppet/syntax_checkers/json.rb +1 -1
  688. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  689. data/lib/puppet/test/test_helper.rb +33 -18
  690. data/lib/puppet/thread_local.rb +7 -0
  691. data/lib/puppet/transaction/additional_resource_generator.rb +3 -3
  692. data/lib/puppet/transaction/event.rb +40 -16
  693. data/lib/puppet/transaction/event_manager.rb +17 -5
  694. data/lib/puppet/transaction/persistence.rb +22 -2
  695. data/lib/puppet/transaction/report.rb +57 -34
  696. data/lib/puppet/transaction/resource_harness.rb +9 -4
  697. data/lib/puppet/transaction.rb +77 -23
  698. data/lib/puppet/trusted_external.rb +41 -0
  699. data/lib/puppet/type/component.rb +2 -1
  700. data/lib/puppet/type/exec.rb +156 -66
  701. data/lib/puppet/type/file/checksum.rb +10 -4
  702. data/lib/puppet/type/file/checksum_value.rb +4 -3
  703. data/lib/puppet/type/file/content.rb +24 -8
  704. data/lib/puppet/type/file/ctime.rb +2 -1
  705. data/lib/puppet/type/file/data_sync.rb +8 -3
  706. data/lib/puppet/type/file/ensure.rb +11 -8
  707. data/lib/puppet/type/file/mode.rb +15 -3
  708. data/lib/puppet/type/file/mtime.rb +2 -1
  709. data/lib/puppet/type/file/selcontext.rb +2 -1
  710. data/lib/puppet/type/file/source.rb +98 -75
  711. data/lib/puppet/type/file/target.rb +2 -1
  712. data/lib/puppet/type/file/type.rb +2 -1
  713. data/lib/puppet/type/file.rb +146 -51
  714. data/lib/puppet/type/filebucket.rb +15 -11
  715. data/lib/puppet/type/group.rb +43 -12
  716. data/lib/puppet/type/notify.rb +6 -5
  717. data/lib/puppet/type/package.rb +185 -35
  718. data/lib/puppet/type/resources.rb +15 -4
  719. data/lib/puppet/type/schedule.rb +59 -99
  720. data/lib/puppet/type/service.rb +76 -25
  721. data/lib/puppet/type/stage.rb +1 -1
  722. data/lib/puppet/type/tidy.rb +57 -18
  723. data/lib/puppet/type/user.rb +186 -101
  724. data/lib/puppet/type.rb +159 -90
  725. data/lib/puppet/util/at_fork.rb +1 -1
  726. data/lib/puppet/util/autoload.rb +51 -62
  727. data/lib/puppet/util/backups.rb +1 -1
  728. data/lib/puppet/util/character_encoding.rb +11 -29
  729. data/lib/puppet/util/checksums.rb +101 -7
  730. data/lib/puppet/util/classgen.rb +12 -12
  731. data/lib/puppet/util/command_line/trollop.rb +1 -1
  732. data/lib/puppet/util/command_line.rb +16 -10
  733. data/lib/puppet/util/connection.rb +88 -0
  734. data/lib/puppet/util/diff.rb +4 -2
  735. data/lib/puppet/util/errors.rb +0 -2
  736. data/lib/puppet/util/execution.rb +28 -11
  737. data/lib/puppet/util/fact_dif.rb +81 -0
  738. data/lib/puppet/util/feature.rb +77 -43
  739. data/lib/puppet/util/fileparsing.rb +79 -46
  740. data/lib/puppet/util/filetype.rb +62 -13
  741. data/lib/puppet/util/http_proxy.rb +37 -25
  742. data/lib/puppet/util/inifile.rb +3 -4
  743. data/lib/puppet/util/instance_loader.rb +16 -29
  744. data/lib/puppet/util/json.rb +89 -0
  745. data/lib/puppet/util/json_lockfile.rb +3 -3
  746. data/lib/puppet/util/ldap/connection.rb +11 -9
  747. data/lib/puppet/util/ldap/manager.rb +6 -3
  748. data/lib/puppet/util/log/destinations.rb +21 -17
  749. data/lib/puppet/util/log.rb +26 -17
  750. data/lib/puppet/util/logging.rb +36 -47
  751. data/lib/puppet/util/metric.rb +4 -3
  752. data/lib/puppet/util/monkey_patches.rb +76 -23
  753. data/lib/puppet/util/network_device/base.rb +1 -1
  754. data/lib/puppet/util/network_device/config.rb +2 -3
  755. data/lib/puppet/util/package/version/debian.rb +175 -0
  756. data/lib/puppet/util/package/version/gem.rb +15 -0
  757. data/lib/puppet/util/package/version/pip.rb +167 -0
  758. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  759. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  760. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  761. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  762. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  763. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  764. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  765. data/lib/puppet/util/package/version/range.rb +53 -0
  766. data/lib/puppet/util/package/version/rpm.rb +73 -0
  767. data/lib/puppet/util/package.rb +25 -16
  768. data/lib/puppet/util/pidlock.rb +45 -5
  769. data/lib/puppet/util/platform.rb +48 -0
  770. data/lib/puppet/util/plist.rb +10 -4
  771. data/lib/puppet/util/posix.rb +69 -3
  772. data/lib/puppet/util/provider_features.rb +5 -10
  773. data/lib/puppet/util/rdoc/code_objects.rb +2 -1
  774. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +6 -4
  775. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +2 -2
  776. data/lib/puppet/util/rdoc/parser/puppet_parser_rdoc2.rb +1 -1
  777. data/lib/puppet/util/rdoc.rb +2 -2
  778. data/lib/puppet/util/reference.rb +10 -16
  779. data/lib/puppet/util/resource_template.rb +1 -1
  780. data/lib/puppet/util/rpm_compare.rb +193 -0
  781. data/lib/puppet/util/rubygems.rb +6 -14
  782. data/lib/puppet/util/run_mode.rb +6 -2
  783. data/lib/puppet/util/selinux.rb +41 -8
  784. data/lib/puppet/util/skip_tags.rb +4 -0
  785. data/lib/puppet/util/ssl.rb +31 -1
  786. data/lib/puppet/util/storage.rb +13 -2
  787. data/lib/puppet/util/suidmanager.rb +8 -7
  788. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  789. data/lib/puppet/util/tag_set.rb +1 -1
  790. data/lib/puppet/util/tagging.rb +19 -5
  791. data/lib/puppet/util/warnings.rb +0 -2
  792. data/lib/puppet/util/windows/adsi.rb +305 -206
  793. data/lib/puppet/util/windows/api_types.rb +60 -33
  794. data/lib/puppet/util/windows/com.rb +2 -1
  795. data/lib/puppet/util/windows/eventlog.rb +1 -6
  796. data/lib/puppet/util/windows/file.rb +20 -2
  797. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  798. data/lib/puppet/util/windows/principal.rb +24 -14
  799. data/lib/puppet/util/windows/process.rb +93 -4
  800. data/lib/puppet/util/windows/registry.rb +48 -16
  801. data/lib/puppet/util/windows/root_certs.rb +1 -1
  802. data/lib/puppet/util/windows/security.rb +66 -16
  803. data/lib/puppet/util/windows/service.rb +1147 -0
  804. data/lib/puppet/util/windows/sid.rb +68 -12
  805. data/lib/puppet/util/windows/user.rb +254 -14
  806. data/lib/puppet/util/windows.rb +23 -2
  807. data/lib/puppet/util/yaml.rb +62 -7
  808. data/lib/puppet/util.rb +130 -55
  809. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +18 -18
  810. data/lib/puppet/vendor/require_vendored.rb +0 -1
  811. data/lib/puppet/vendor.rb +1 -1
  812. data/lib/puppet/version.rb +2 -5
  813. data/lib/puppet/x509/cert_provider.rb +355 -0
  814. data/lib/puppet/x509/pem_store.rb +55 -0
  815. data/lib/puppet/x509.rb +7 -0
  816. data/lib/puppet.rb +83 -36
  817. data/lib/puppet_pal.rb +8 -0
  818. data/locales/puppet.pot +5 -9763
  819. data/man/man5/puppet.conf.5 +651 -390
  820. data/man/man8/puppet-agent.8 +88 -67
  821. data/man/man8/puppet-apply.8 +8 -5
  822. data/man/man8/puppet-catalog.8 +39 -11
  823. data/man/man8/puppet-config.8 +42 -8
  824. data/man/man8/puppet-describe.8 +1 -1
  825. data/man/man8/puppet-device.8 +55 -22
  826. data/man/man8/puppet-doc.8 +1 -1
  827. data/man/man8/puppet-epp.8 +35 -13
  828. data/man/man8/puppet-facts.8 +144 -6
  829. data/man/man8/puppet-filebucket.8 +58 -12
  830. data/man/man8/puppet-generate.8 +2 -2
  831. data/man/man8/puppet-help.8 +7 -4
  832. data/man/man8/puppet-key.8 +9 -15
  833. data/man/man8/puppet-lookup.8 +10 -7
  834. data/man/man8/puppet-man.8 +11 -5
  835. data/man/man8/puppet-module.8 +28 -106
  836. data/man/man8/puppet-node.8 +13 -13
  837. data/man/man8/puppet-parser.8 +32 -9
  838. data/man/man8/puppet-plugin.8 +2 -2
  839. data/man/man8/puppet-report.8 +9 -6
  840. data/man/man8/puppet-resource.8 +2 -2
  841. data/man/man8/puppet-script.8 +70 -0
  842. data/man/man8/puppet-ssl.8 +59 -0
  843. data/man/man8/puppet-status.8 +7 -7
  844. data/man/man8/puppet.8 +12 -3
  845. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +92 -0
  846. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  847. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  848. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  849. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  850. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  851. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  852. data/{lib/puppet/vendor/semantic_puppet → spec/fixtures/integration/l10n/envs/prod/modules/demo}/locales/config.yaml +8 -4
  853. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  854. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  855. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  856. data/spec/fixtures/ssl/127.0.0.1-key.pem +117 -0
  857. data/spec/fixtures/ssl/127.0.0.1.pem +69 -0
  858. data/spec/fixtures/ssl/bad-basic-constraints.pem +81 -0
  859. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +81 -0
  860. data/spec/fixtures/ssl/ca.pem +81 -0
  861. data/spec/fixtures/ssl/crl.pem +40 -0
  862. data/spec/fixtures/ssl/ec-key.pem +18 -0
  863. data/spec/fixtures/ssl/ec.pem +49 -0
  864. data/spec/fixtures/ssl/encrypted-ec-key.pem +21 -0
  865. data/spec/fixtures/ssl/encrypted-key.pem +120 -0
  866. data/spec/fixtures/ssl/intermediate-agent-crl.pem +40 -0
  867. data/spec/fixtures/ssl/intermediate-agent.pem +81 -0
  868. data/spec/fixtures/ssl/intermediate-crl.pem +46 -0
  869. data/spec/fixtures/ssl/intermediate.pem +81 -0
  870. data/spec/fixtures/ssl/netlock-arany-utf8.pem +23 -0
  871. data/spec/fixtures/ssl/oid-key.pem +117 -0
  872. data/spec/fixtures/ssl/oid.pem +69 -0
  873. data/spec/fixtures/ssl/pluto-key.pem +117 -0
  874. data/spec/fixtures/ssl/pluto.pem +66 -0
  875. data/spec/fixtures/ssl/request-key.pem +117 -0
  876. data/spec/fixtures/ssl/request.pem +60 -0
  877. data/spec/fixtures/ssl/revoked-key.pem +117 -0
  878. data/spec/fixtures/ssl/revoked.pem +66 -0
  879. data/spec/fixtures/ssl/signed-key.pem +117 -0
  880. data/spec/fixtures/ssl/signed.pem +66 -0
  881. data/spec/fixtures/ssl/tampered-cert.pem +66 -0
  882. data/spec/fixtures/ssl/tampered-csr.pem +60 -0
  883. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  884. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +117 -0
  885. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +69 -0
  886. data/spec/fixtures/ssl/unknown-ca-key.pem +117 -0
  887. data/spec/fixtures/ssl/unknown-ca.pem +81 -0
  888. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  889. data/spec/fixtures/unit/forge/bacula.json +76 -0
  890. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  891. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +22 -0
  892. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +18 -0
  893. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +7 -0
  894. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +1 -1
  895. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +6 -6
  896. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +11 -0
  897. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +11 -0
  898. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +11 -0
  899. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +11 -0
  900. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +12 -0
  901. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +9 -0
  902. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +9 -0
  903. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +1 -0
  904. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +1 -0
  905. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +19 -0
  906. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  907. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  908. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  909. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  910. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  911. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  912. data/spec/fixtures/unit/provider/parsedfile/aliases.txt +2 -0
  913. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +6 -0
  914. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +13 -0
  915. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  916. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +9 -0
  917. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +36 -0
  918. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -102
  919. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -106
  920. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -106
  921. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -102
  922. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -98
  923. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -102
  924. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -102
  925. data/spec/integration/agent/logging_spec.rb +7 -9
  926. data/spec/integration/application/agent_spec.rb +848 -0
  927. data/spec/integration/application/apply_spec.rb +338 -178
  928. data/spec/integration/application/doc_spec.rb +16 -7
  929. data/spec/integration/application/filebucket_spec.rb +255 -0
  930. data/spec/integration/application/help_spec.rb +42 -0
  931. data/spec/integration/application/lookup_spec.rb +105 -40
  932. data/spec/integration/application/module_spec.rb +89 -0
  933. data/spec/integration/application/plugin_spec.rb +123 -0
  934. data/spec/integration/application/resource_spec.rb +68 -0
  935. data/spec/integration/application/ssl_spec.rb +20 -0
  936. data/spec/integration/configurer_spec.rb +109 -12
  937. data/spec/integration/data_binding_spec.rb +83 -0
  938. data/spec/integration/defaults_spec.rb +30 -19
  939. data/spec/integration/directory_environments_spec.rb +17 -17
  940. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  941. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  942. data/spec/integration/http/client_spec.rb +213 -0
  943. data/spec/integration/indirector/catalog/compiler_spec.rb +10 -11
  944. data/spec/integration/indirector/direct_file_server_spec.rb +2 -4
  945. data/spec/integration/indirector/facts/facter_spec.rb +112 -63
  946. data/spec/integration/indirector/file_content/file_server_spec.rb +7 -8
  947. data/spec/integration/indirector/file_metadata/file_server_spec.rb +7 -8
  948. data/spec/integration/l10n/compiler_spec.rb +37 -0
  949. data/spec/integration/network/authconfig_spec.rb +23 -24
  950. data/spec/integration/network/formats_spec.rb +0 -1
  951. data/spec/integration/network/http/api/indirected_routes_spec.rb +9 -38
  952. data/spec/integration/network/http_pool_spec.rb +293 -0
  953. data/spec/integration/node/environment_spec.rb +16 -2
  954. data/spec/integration/node/facts_spec.rb +9 -10
  955. data/spec/integration/node_spec.rb +6 -11
  956. data/spec/integration/parser/catalog_spec.rb +8 -8
  957. data/spec/integration/parser/collection_spec.rb +6 -11
  958. data/spec/integration/parser/compiler_spec.rb +60 -30
  959. data/spec/integration/parser/pcore_resource_spec.rb +13 -3
  960. data/spec/integration/parser/scope_spec.rb +3 -3
  961. data/spec/integration/parser/script_compiler_spec.rb +113 -0
  962. data/spec/integration/parser/undef_param_spec.rb +1 -1
  963. data/spec/integration/provider/file/windows_spec.rb +162 -0
  964. data/spec/integration/resource/catalog_spec.rb +14 -17
  965. data/spec/integration/resource/type_collection_spec.rb +3 -8
  966. data/spec/integration/transaction/report_spec.rb +12 -17
  967. data/spec/integration/transaction_spec.rb +37 -39
  968. data/spec/integration/type/exec_spec.rb +71 -47
  969. data/spec/integration/type/file_spec.rb +142 -42
  970. data/spec/integration/type/notify_spec.rb +46 -0
  971. data/spec/integration/type/package_spec.rb +27 -31
  972. data/spec/integration/type/tidy_spec.rb +1 -2
  973. data/spec/integration/type_spec.rb +1 -3
  974. data/spec/integration/util/autoload_spec.rb +10 -8
  975. data/spec/integration/util/execution_spec.rb +54 -5
  976. data/spec/integration/util/rdoc/parser_spec.rb +14 -25
  977. data/spec/integration/util/settings_spec.rb +2 -2
  978. data/spec/integration/util/windows/adsi_spec.rb +116 -8
  979. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  980. data/spec/integration/util/windows/principal_spec.rb +33 -4
  981. data/spec/integration/util/windows/process_spec.rb +28 -44
  982. data/spec/integration/util/windows/registry_spec.rb +130 -53
  983. data/spec/integration/util/windows/security_spec.rb +103 -12
  984. data/spec/integration/util/windows/user_spec.rb +108 -29
  985. data/spec/integration/util_spec.rb +9 -38
  986. data/spec/lib/matchers/json.rb +13 -19
  987. data/{lib/puppet/ssl → spec/lib/puppet}/certificate_factory.rb +7 -8
  988. data/spec/lib/puppet/test_ca.rb +164 -0
  989. data/spec/lib/puppet_spec/compiler.rb +28 -1
  990. data/spec/lib/puppet_spec/files.rb +28 -24
  991. data/spec/lib/puppet_spec/fixtures.rb +24 -0
  992. data/spec/lib/puppet_spec/https.rb +95 -0
  993. data/spec/lib/puppet_spec/language.rb +34 -35
  994. data/spec/lib/puppet_spec/matchers.rb +0 -93
  995. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +3 -3
  996. data/spec/lib/puppet_spec/modules.rb +39 -4
  997. data/spec/lib/puppet_spec/puppetserver.rb +179 -0
  998. data/spec/lib/puppet_spec/scope.rb +1 -2
  999. data/spec/lib/puppet_spec/settings.rb +7 -1
  1000. data/spec/lib/puppet_spec/ssl.rb +265 -0
  1001. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  1002. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  1003. data/spec/shared_behaviours/file_server_terminus.rb +8 -11
  1004. data/spec/shared_behaviours/file_serving.rb +6 -8
  1005. data/spec/shared_behaviours/hiera_indirections.rb +3 -4
  1006. data/spec/shared_behaviours/iterative_functions.rb +0 -1
  1007. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  1008. data/spec/shared_behaviours/path_parameters.rb +1 -1
  1009. data/spec/shared_behaviours/things_that_declare_options.rb +2 -2
  1010. data/spec/shared_contexts/checksum.rb +4 -1
  1011. data/spec/shared_contexts/digests.rb +46 -1
  1012. data/spec/shared_contexts/https.rb +29 -0
  1013. data/spec/shared_contexts/l10n.rb +32 -0
  1014. data/spec/shared_contexts/types_setup.rb +10 -3
  1015. data/spec/shared_examples/rhel_package_provider.rb +112 -70
  1016. data/spec/spec_helper.rb +49 -22
  1017. data/spec/unit/agent/disabler_spec.rb +4 -5
  1018. data/spec/unit/agent/locker_spec.rb +12 -13
  1019. data/spec/unit/agent_spec.rb +181 -104
  1020. data/spec/unit/application/agent_spec.rb +159 -130
  1021. data/spec/unit/application/apply_spec.rb +199 -145
  1022. data/spec/unit/application/config_spec.rb +224 -5
  1023. data/spec/unit/application/describe_spec.rb +88 -51
  1024. data/spec/unit/application/device_spec.rb +424 -300
  1025. data/spec/unit/application/doc_spec.rb +46 -48
  1026. data/spec/unit/application/face_base_spec.rb +69 -68
  1027. data/spec/unit/application/facts_spec.rb +518 -9
  1028. data/spec/unit/application/filebucket_spec.rb +98 -74
  1029. data/spec/unit/application/indirection_base_spec.rb +8 -6
  1030. data/spec/unit/application/lookup_spec.rb +176 -47
  1031. data/spec/unit/application/man_spec.rb +52 -0
  1032. data/spec/unit/application/resource_spec.rb +76 -51
  1033. data/spec/unit/application/ssl_spec.rb +458 -0
  1034. data/spec/unit/application_spec.rb +171 -94
  1035. data/spec/unit/capability_spec.rb +17 -15
  1036. data/spec/unit/{ssl/certificate_factory_spec.rb → certificate_factory_spec.rb} +11 -22
  1037. data/spec/unit/concurrent/lock_spec.rb +29 -0
  1038. data/spec/unit/concurrent/thread_local_singleton_spec.rb +39 -0
  1039. data/spec/unit/configurer/downloader_spec.rb +41 -21
  1040. data/spec/unit/configurer/fact_handler_spec.rb +6 -11
  1041. data/spec/unit/configurer/plugin_handler_spec.rb +71 -48
  1042. data/spec/unit/configurer_spec.rb +851 -480
  1043. data/spec/unit/confine/exists_spec.rb +17 -15
  1044. data/spec/unit/confine/false_spec.rb +32 -6
  1045. data/spec/unit/confine/feature_spec.rb +7 -5
  1046. data/spec/unit/confine/true_spec.rb +32 -6
  1047. data/spec/unit/confine/variable_spec.rb +14 -15
  1048. data/spec/unit/confine_collection_spec.rb +28 -29
  1049. data/spec/unit/confine_spec.rb +36 -14
  1050. data/spec/unit/confiner_spec.rb +10 -11
  1051. data/spec/unit/context/trusted_information_spec.rb +68 -5
  1052. data/spec/unit/context_spec.rb +119 -38
  1053. data/spec/unit/daemon_spec.rb +39 -107
  1054. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -1
  1055. data/spec/unit/data_providers/hiera_data_provider_spec.rb +4 -5
  1056. data/spec/unit/datatypes_spec.rb +352 -0
  1057. data/spec/unit/defaults_spec.rb +182 -19
  1058. data/spec/unit/environments_spec.rb +592 -104
  1059. data/spec/unit/etc_spec.rb +52 -29
  1060. data/spec/unit/external/pson_spec.rb +0 -1
  1061. data/spec/unit/face/config_spec.rb +247 -33
  1062. data/spec/unit/face/epp_face_spec.rb +63 -9
  1063. data/spec/unit/face/facts_spec.rb +70 -1
  1064. data/spec/unit/face/generate_spec.rb +68 -5
  1065. data/spec/unit/face/help_spec.rb +67 -74
  1066. data/spec/unit/face/key_spec.rb +0 -1
  1067. data/spec/unit/face/module/install_spec.rb +3 -5
  1068. data/spec/unit/face/module/list_spec.rb +2 -73
  1069. data/spec/unit/face/module/search_spec.rb +39 -9
  1070. data/spec/unit/face/module/uninstall_spec.rb +4 -8
  1071. data/spec/unit/face/node_spec.rb +22 -59
  1072. data/spec/unit/face/parser_spec.rb +177 -25
  1073. data/spec/unit/face/plugin_spec.rb +56 -19
  1074. data/spec/unit/face/status_spec.rb +0 -1
  1075. data/spec/unit/facter_impl_spec.rb +31 -0
  1076. data/spec/unit/file_bucket/dipper_spec.rb +39 -28
  1077. data/spec/unit/file_bucket/file_spec.rb +0 -2
  1078. data/spec/unit/file_serving/base_spec.rb +17 -21
  1079. data/spec/unit/file_serving/configuration/parser_spec.rb +49 -28
  1080. data/spec/unit/file_serving/configuration_spec.rb +77 -70
  1081. data/spec/unit/file_serving/content_spec.rb +10 -12
  1082. data/spec/unit/file_serving/fileset_spec.rb +123 -59
  1083. data/spec/unit/file_serving/http_metadata_spec.rb +38 -14
  1084. data/spec/unit/file_serving/metadata_spec.rb +41 -42
  1085. data/spec/unit/file_serving/mount/file_spec.rb +31 -32
  1086. data/spec/unit/file_serving/mount/locales_spec.rb +25 -26
  1087. data/spec/unit/file_serving/mount/modules_spec.rb +14 -15
  1088. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +25 -26
  1089. data/spec/unit/file_serving/mount/plugins_spec.rb +25 -26
  1090. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  1091. data/spec/unit/file_serving/mount/tasks_spec.rb +14 -15
  1092. data/spec/unit/file_serving/mount_spec.rb +0 -1
  1093. data/spec/unit/file_serving/terminus_helper_spec.rb +47 -45
  1094. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -29
  1095. data/spec/unit/file_system/path_pattern_spec.rb +1 -1
  1096. data/spec/unit/file_system/uniquefile_spec.rb +41 -6
  1097. data/spec/unit/file_system_spec.rb +330 -9
  1098. data/spec/unit/forge/errors_spec.rb +1 -1
  1099. data/spec/unit/forge/forge_spec.rb +14 -57
  1100. data/spec/unit/forge/module_release_spec.rb +161 -48
  1101. data/spec/unit/forge/repository_spec.rb +66 -163
  1102. data/spec/unit/forge_spec.rb +47 -114
  1103. data/spec/unit/functions/abs_spec.rb +70 -0
  1104. data/spec/unit/functions/assert_type_spec.rb +2 -2
  1105. data/spec/unit/functions/binary_file_spec.rb +3 -3
  1106. data/spec/unit/functions/break_spec.rb +34 -2
  1107. data/spec/unit/functions/call_spec.rb +59 -5
  1108. data/spec/unit/functions/camelcase_spec.rb +34 -0
  1109. data/spec/unit/functions/capitalize_spec.rb +34 -0
  1110. data/spec/unit/functions/ceiling_spec.rb +65 -0
  1111. data/spec/unit/functions/chomp_spec.rb +46 -0
  1112. data/spec/unit/functions/chop_spec.rb +38 -0
  1113. data/spec/unit/functions/compare_spec.rb +147 -0
  1114. data/spec/unit/functions/contain_spec.rb +2 -3
  1115. data/spec/unit/functions/convert_to_spec.rb +25 -0
  1116. data/spec/unit/functions/defined_spec.rb +0 -1
  1117. data/spec/unit/functions/downcase_spec.rb +34 -0
  1118. data/spec/unit/functions/empty_spec.rb +87 -0
  1119. data/spec/unit/functions/epp_spec.rb +13 -5
  1120. data/spec/unit/functions/filter_spec.rb +4 -4
  1121. data/spec/unit/functions/find_file_spec.rb +7 -7
  1122. data/spec/unit/functions/find_template_spec.rb +69 -0
  1123. data/spec/unit/functions/flatten_spec.rb +31 -0
  1124. data/spec/unit/functions/floor_spec.rb +65 -0
  1125. data/spec/unit/functions/get_spec.rb +135 -0
  1126. data/spec/unit/functions/getvar_spec.rb +121 -0
  1127. data/spec/unit/functions/group_by_spec.rb +40 -0
  1128. data/spec/unit/functions/hiera_spec.rb +14 -48
  1129. data/spec/unit/functions/include_spec.rb +16 -5
  1130. data/spec/unit/functions/index_spec.rb +184 -0
  1131. data/spec/unit/functions/inline_epp_spec.rb +27 -2
  1132. data/spec/unit/functions/join_spec.rb +33 -0
  1133. data/spec/unit/functions/keys_spec.rb +31 -0
  1134. data/spec/unit/functions/length_spec.rb +50 -0
  1135. data/spec/unit/functions/logging_spec.rb +11 -3
  1136. data/spec/unit/functions/lookup_fixture_spec.rb +1 -2
  1137. data/spec/unit/functions/lookup_spec.rb +165 -63
  1138. data/spec/unit/functions/lstrip_spec.rb +30 -0
  1139. data/spec/unit/functions/match_spec.rb +21 -4
  1140. data/spec/unit/functions/max_spec.rb +129 -0
  1141. data/spec/unit/functions/min_spec.rb +129 -0
  1142. data/spec/unit/functions/module_directory_spec.rb +43 -0
  1143. data/spec/unit/functions/new_spec.rb +30 -14
  1144. data/spec/unit/functions/partition_spec.rb +40 -0
  1145. data/spec/unit/functions/regsubst_spec.rb +3 -4
  1146. data/spec/unit/functions/require_spec.rb +1 -2
  1147. data/spec/unit/functions/round_spec.rb +41 -0
  1148. data/spec/unit/functions/rstrip_spec.rb +30 -0
  1149. data/spec/unit/functions/shared.rb +15 -6
  1150. data/spec/unit/functions/size_spec.rb +50 -0
  1151. data/spec/unit/functions/sort_spec.rb +79 -0
  1152. data/spec/unit/functions/split_spec.rb +3 -4
  1153. data/spec/unit/functions/step_spec.rb +1 -1
  1154. data/spec/unit/functions/strftime_spec.rb +2 -2
  1155. data/spec/unit/functions/strip_spec.rb +30 -0
  1156. data/spec/unit/functions/tree_each_spec.rb +49 -0
  1157. data/spec/unit/functions/unwrap_spec.rb +8 -0
  1158. data/spec/unit/functions/upcase_spec.rb +34 -0
  1159. data/spec/unit/functions/values_spec.rb +30 -0
  1160. data/spec/unit/functions/versioncmp_spec.rb +43 -9
  1161. data/spec/unit/functions4_spec.rb +154 -86
  1162. data/spec/unit/gettext/config_spec.rb +45 -14
  1163. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  1164. data/spec/unit/graph/rb_tree_map_spec.rb +0 -2
  1165. data/spec/unit/graph/relationship_graph_spec.rb +1 -2
  1166. data/spec/unit/graph/simple_graph_spec.rb +51 -12
  1167. data/spec/unit/hiera/scope_spec.rb +7 -0
  1168. data/spec/unit/hiera_puppet_spec.rb +20 -20
  1169. data/spec/unit/http/client_spec.rb +938 -0
  1170. data/spec/unit/http/external_client_spec.rb +201 -0
  1171. data/spec/unit/http/resolver_spec.rb +133 -0
  1172. data/spec/unit/http/response_spec.rb +75 -0
  1173. data/spec/unit/http/service/ca_spec.rb +198 -0
  1174. data/spec/unit/http/service/compiler_spec.rb +806 -0
  1175. data/spec/unit/http/service/file_server_spec.rb +307 -0
  1176. data/spec/unit/http/service/puppetserver_spec.rb +82 -0
  1177. data/spec/unit/http/service/report_spec.rb +117 -0
  1178. data/spec/unit/http/service_spec.rb +144 -0
  1179. data/spec/unit/http/session_spec.rb +307 -0
  1180. data/spec/unit/indirector/catalog/compiler_spec.rb +343 -194
  1181. data/spec/unit/indirector/catalog/json_spec.rb +10 -5
  1182. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -1
  1183. data/spec/unit/indirector/catalog/rest_spec.rb +67 -3
  1184. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -1
  1185. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -1
  1186. data/spec/unit/indirector/certificate/file_spec.rb +0 -9
  1187. data/spec/unit/indirector/certificate/rest_spec.rb +8 -10
  1188. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -1
  1189. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -1
  1190. data/spec/unit/indirector/direct_file_server_spec.rb +47 -50
  1191. data/spec/unit/indirector/envelope_spec.rb +1 -2
  1192. data/spec/unit/indirector/exec_spec.rb +29 -24
  1193. data/spec/unit/indirector/face_spec.rb +8 -9
  1194. data/spec/unit/indirector/facts/facter_spec.rb +131 -43
  1195. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  1196. data/spec/unit/indirector/facts/network_device_spec.rb +8 -9
  1197. data/spec/unit/indirector/facts/rest_spec.rb +99 -0
  1198. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -1
  1199. data/spec/unit/indirector/facts/yaml_spec.rb +95 -79
  1200. data/spec/unit/indirector/file_bucket_file/file_spec.rb +156 -100
  1201. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -3
  1202. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -9
  1203. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -1
  1204. data/spec/unit/indirector/file_content/file_spec.rb +0 -1
  1205. data/spec/unit/indirector/file_content/rest_spec.rb +53 -3
  1206. data/spec/unit/indirector/file_content/selector_spec.rb +0 -1
  1207. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -1
  1208. data/spec/unit/indirector/file_metadata/file_spec.rb +12 -13
  1209. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  1210. data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -3
  1211. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -1
  1212. data/spec/unit/indirector/file_server_spec.rb +143 -137
  1213. data/spec/unit/indirector/indirection_spec.rb +296 -231
  1214. data/spec/unit/indirector/json_spec.rb +10 -12
  1215. data/spec/unit/indirector/key/file_spec.rb +20 -39
  1216. data/spec/unit/indirector/memory_spec.rb +6 -7
  1217. data/spec/unit/indirector/msgpack_spec.rb +10 -12
  1218. data/spec/unit/indirector/node/exec_spec.rb +43 -23
  1219. data/spec/unit/indirector/node/json_spec.rb +33 -0
  1220. data/spec/unit/indirector/node/memory_spec.rb +2 -4
  1221. data/spec/unit/indirector/node/msgpack_spec.rb +0 -1
  1222. data/spec/unit/indirector/node/plain_spec.rb +2 -4
  1223. data/spec/unit/indirector/node/rest_spec.rb +57 -3
  1224. data/spec/unit/indirector/node/store_configs_spec.rb +0 -1
  1225. data/spec/unit/indirector/node/yaml_spec.rb +0 -1
  1226. data/spec/unit/indirector/none_spec.rb +5 -5
  1227. data/spec/unit/indirector/plain_spec.rb +7 -8
  1228. data/spec/unit/indirector/report/json_spec.rb +72 -0
  1229. data/spec/unit/indirector/report/msgpack_spec.rb +0 -1
  1230. data/spec/unit/indirector/report/processor_spec.rb +21 -22
  1231. data/spec/unit/indirector/report/rest_spec.rb +58 -52
  1232. data/spec/unit/indirector/report/yaml_spec.rb +72 -9
  1233. data/spec/unit/indirector/request_spec.rb +27 -29
  1234. data/spec/unit/indirector/resource/ral_spec.rb +40 -82
  1235. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -1
  1236. data/spec/unit/indirector/rest_spec.rb +166 -107
  1237. data/spec/unit/indirector/ssl_file_spec.rb +99 -122
  1238. data/spec/unit/indirector/status/local_spec.rb +0 -1
  1239. data/spec/unit/indirector/status/rest_spec.rb +43 -3
  1240. data/spec/unit/indirector/terminus_spec.rb +29 -29
  1241. data/spec/unit/indirector/yaml_spec.rb +92 -70
  1242. data/spec/unit/indirector_spec.rb +2 -4
  1243. data/spec/unit/info_service_spec.rb +195 -11
  1244. data/spec/unit/interface/action_builder_spec.rb +0 -1
  1245. data/spec/unit/interface/action_manager_spec.rb +1 -2
  1246. data/spec/unit/interface/action_spec.rb +36 -13
  1247. data/spec/unit/interface/documentation_spec.rb +0 -1
  1248. data/spec/unit/interface/face_collection_spec.rb +19 -12
  1249. data/spec/unit/interface_spec.rb +6 -6
  1250. data/spec/unit/module_spec.rb +135 -113
  1251. data/spec/unit/module_tool/applications/installer_spec.rb +116 -13
  1252. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  1253. data/spec/unit/module_tool/applications/uninstaller_spec.rb +16 -0
  1254. data/spec/unit/module_tool/applications/unpacker_spec.rb +17 -17
  1255. data/spec/unit/module_tool/applications/upgrader_spec.rb +11 -5
  1256. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  1257. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  1258. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  1259. data/spec/unit/module_tool/tar/mini_spec.rb +32 -12
  1260. data/spec/unit/module_tool/tar_spec.rb +12 -13
  1261. data/spec/unit/module_tool_spec.rb +7 -34
  1262. data/spec/unit/network/auth_config_parser_spec.rb +11 -13
  1263. data/spec/unit/network/authconfig_spec.rb +16 -20
  1264. data/spec/unit/network/authorization_spec.rb +4 -5
  1265. data/spec/unit/network/authstore_spec.rb +0 -16
  1266. data/spec/unit/network/format_handler_spec.rb +0 -1
  1267. data/spec/unit/network/format_spec.rb +9 -10
  1268. data/spec/unit/network/format_support_spec.rb +29 -29
  1269. data/spec/unit/network/formats_spec.rb +82 -18
  1270. data/spec/unit/network/http/api/indirected_routes_spec.rb +54 -48
  1271. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +7 -9
  1272. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -2
  1273. data/spec/unit/network/http/api/master/v3/environments_spec.rb +11 -23
  1274. data/spec/unit/network/http/api_spec.rb +0 -28
  1275. data/spec/unit/network/http/compression_spec.rb +27 -25
  1276. data/spec/unit/network/http/connection_spec.rb +537 -275
  1277. data/spec/unit/network/http/factory_spec.rb +82 -36
  1278. data/spec/unit/network/http/handler_spec.rb +10 -23
  1279. data/spec/unit/network/http/nocache_pool_spec.rb +32 -11
  1280. data/spec/unit/network/http/pool_spec.rb +166 -59
  1281. data/spec/unit/network/http/request_spec.rb +0 -2
  1282. data/spec/unit/network/http/response_spec.rb +11 -13
  1283. data/spec/unit/network/http/route_spec.rb +0 -1
  1284. data/spec/unit/network/http/session_spec.rb +9 -3
  1285. data/spec/unit/network/http/site_spec.rb +7 -1
  1286. data/spec/unit/network/http_pool_spec.rb +99 -48
  1287. data/spec/unit/network/http_spec.rb +1 -2
  1288. data/spec/unit/network/resolver_spec.rb +103 -29
  1289. data/spec/unit/network/rights_spec.rb +52 -53
  1290. data/spec/unit/network/uri_spec.rb +47 -0
  1291. data/spec/unit/node/environment_spec.rb +72 -24
  1292. data/spec/unit/node/facts_spec.rb +20 -8
  1293. data/spec/unit/node_spec.rb +38 -23
  1294. data/spec/unit/other/selinux_spec.rb +0 -72
  1295. data/spec/unit/parameter/boolean_spec.rb +1 -2
  1296. data/spec/unit/parameter/package_options_spec.rb +1 -2
  1297. data/spec/unit/parameter/path_spec.rb +0 -1
  1298. data/spec/unit/parameter/value_collection_spec.rb +0 -1
  1299. data/spec/unit/parameter/value_spec.rb +0 -1
  1300. data/spec/unit/parameter_spec.rb +9 -9
  1301. data/spec/unit/parser/ast/block_expression_spec.rb +7 -9
  1302. data/spec/unit/parser/ast/leaf_spec.rb +20 -21
  1303. data/spec/unit/parser/compiler_spec.rb +93 -114
  1304. data/spec/unit/parser/environment_compiler_spec.rb +67 -23
  1305. data/spec/unit/parser/files_spec.rb +0 -1
  1306. data/spec/unit/parser/functions/create_resources_spec.rb +10 -1
  1307. data/spec/unit/parser/functions/digest_spec.rb +0 -5
  1308. data/spec/unit/parser/functions/fail_spec.rb +2 -7
  1309. data/spec/unit/parser/functions/file_spec.rb +13 -18
  1310. data/spec/unit/parser/functions/fqdn_rand_spec.rb +39 -2
  1311. data/spec/unit/parser/functions/generate_spec.rb +36 -39
  1312. data/spec/unit/parser/functions/inline_template_spec.rb +7 -5
  1313. data/spec/unit/parser/functions/realize_spec.rb +9 -0
  1314. data/spec/unit/parser/functions/regsubst_spec.rb +0 -5
  1315. data/spec/unit/parser/functions/scanf_spec.rb +0 -5
  1316. data/spec/unit/parser/functions/shellquote_spec.rb +0 -1
  1317. data/spec/unit/parser/functions/split_spec.rb +0 -5
  1318. data/spec/unit/parser/functions/sprintf_spec.rb +0 -5
  1319. data/spec/unit/parser/functions/tag_spec.rb +8 -6
  1320. data/spec/unit/parser/functions/tagged_spec.rb +36 -0
  1321. data/spec/unit/parser/functions/template_spec.rb +21 -17
  1322. data/spec/unit/parser/functions/versioncmp_spec.rb +1 -6
  1323. data/spec/unit/parser/functions_spec.rb +28 -4
  1324. data/spec/unit/parser/relationship_spec.rb +0 -1
  1325. data/spec/unit/parser/resource/param_spec.rb +1 -1
  1326. data/spec/unit/parser/resource_spec.rb +53 -48
  1327. data/spec/unit/parser/scope_spec.rb +72 -39
  1328. data/spec/unit/parser/templatewrapper_spec.rb +25 -15
  1329. data/spec/unit/parser/type_loader_spec.rb +18 -20
  1330. data/spec/unit/plan_spec.rb +65 -0
  1331. data/spec/unit/pops/adaptable_spec.rb +0 -2
  1332. data/spec/unit/pops/benchmark_spec.rb +0 -1
  1333. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -1
  1334. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +10 -1
  1335. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -1
  1336. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -1
  1337. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -1
  1338. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -2
  1339. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  1340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +133 -17
  1341. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -1
  1342. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +24 -11
  1343. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -1
  1344. data/spec/unit/pops/evaluator/variables_spec.rb +0 -1
  1345. data/spec/unit/pops/factory_rspec_helper.rb +1 -1
  1346. data/spec/unit/pops/factory_spec.rb +8 -9
  1347. data/spec/unit/pops/issues_spec.rb +40 -26
  1348. data/spec/unit/pops/loaders/dependency_loader_spec.rb +2 -2
  1349. data/spec/unit/pops/loaders/loader_spec.rb +516 -0
  1350. data/spec/unit/pops/loaders/loaders_spec.rb +294 -46
  1351. data/spec/unit/pops/loaders/module_loaders_spec.rb +112 -0
  1352. data/spec/unit/pops/loaders/static_loader_spec.rb +16 -44
  1353. data/spec/unit/pops/lookup/context_spec.rb +0 -1
  1354. data/spec/unit/pops/lookup/interpolation_spec.rb +7 -3
  1355. data/spec/unit/pops/lookup/lookup_spec.rb +81 -0
  1356. data/spec/unit/pops/merge_strategy_spec.rb +0 -1
  1357. data/spec/unit/pops/migration_spec.rb +3 -5
  1358. data/spec/unit/pops/model/model_spec.rb +5 -1
  1359. data/spec/unit/pops/model/pn_transformer_spec.rb +56 -0
  1360. data/spec/unit/pops/parser/lexer2_spec.rb +89 -26
  1361. data/spec/unit/pops/parser/locator_spec.rb +63 -1
  1362. data/spec/unit/pops/parser/parse_application_spec.rb +0 -1
  1363. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +42 -10
  1364. data/spec/unit/pops/parser/parse_calls_spec.rb +28 -1
  1365. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -1
  1366. data/spec/unit/pops/parser/parse_conditionals_spec.rb +12 -1
  1367. data/spec/unit/pops/parser/parse_containers_spec.rb +2 -14
  1368. data/spec/unit/pops/parser/parse_functions_spec.rb +1 -1
  1369. data/spec/unit/pops/parser/parse_heredoc_spec.rb +124 -12
  1370. data/spec/unit/pops/parser/parse_lambda_spec.rb +1 -1
  1371. data/spec/unit/pops/parser/parse_plan_spec.rb +47 -0
  1372. data/spec/unit/pops/parser/parse_resource_spec.rb +35 -36
  1373. data/spec/unit/pops/parser/parse_site_spec.rb +0 -1
  1374. data/spec/unit/pops/parser/pn_parser_spec.rb +100 -0
  1375. data/spec/unit/pops/pn_spec.rb +147 -0
  1376. data/spec/unit/pops/puppet_stack_spec.rb +38 -9
  1377. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -1
  1378. data/spec/unit/pops/serialization/packer_spec.rb +8 -0
  1379. data/spec/unit/pops/serialization/serialization_spec.rb +37 -5
  1380. data/spec/unit/pops/serialization/to_from_hr_spec.rb +74 -4
  1381. data/spec/unit/pops/serialization/to_stringified_spec.rb +162 -0
  1382. data/spec/unit/pops/types/deferred_spec.rb +87 -0
  1383. data/spec/unit/pops/types/error_spec.rb +207 -0
  1384. data/spec/unit/pops/types/iterable_spec.rb +1 -1
  1385. data/spec/unit/pops/types/p_init_type_spec.rb +98 -0
  1386. data/spec/unit/pops/types/p_object_type_spec.rb +298 -13
  1387. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  1388. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  1389. data/spec/unit/pops/types/p_timespan_type_spec.rb +33 -4
  1390. data/spec/unit/pops/types/p_timestamp_type_spec.rb +28 -2
  1391. data/spec/unit/pops/types/p_type_set_type_spec.rb +106 -2
  1392. data/spec/unit/pops/types/p_uri_type_spec.rb +191 -0
  1393. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  1394. data/spec/unit/pops/types/ruby_generator_spec.rb +87 -54
  1395. data/spec/unit/pops/types/string_converter_spec.rb +39 -6
  1396. data/spec/unit/pops/types/task_spec.rb +411 -0
  1397. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  1398. data/spec/unit/pops/types/type_calculator_spec.rb +120 -53
  1399. data/spec/unit/pops/types/type_formatter_spec.rb +31 -13
  1400. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +9 -0
  1401. data/spec/unit/pops/types/type_parser_spec.rb +26 -14
  1402. data/spec/unit/pops/types/types_spec.rb +99 -6
  1403. data/spec/unit/pops/validator/validator_spec.rb +455 -7
  1404. data/spec/unit/pops/visitor_spec.rb +0 -1
  1405. data/spec/unit/property/boolean_spec.rb +1 -1
  1406. data/spec/unit/property/ensure_spec.rb +0 -1
  1407. data/spec/unit/property/keyvalue_spec.rb +127 -38
  1408. data/spec/unit/property/list_spec.rb +26 -27
  1409. data/spec/unit/property/ordered_list_spec.rb +10 -14
  1410. data/spec/unit/property_spec.rb +55 -46
  1411. data/spec/unit/provider/aix_object_spec.rb +821 -0
  1412. data/spec/unit/provider/command_spec.rb +9 -9
  1413. data/spec/unit/provider/exec/posix_spec.rb +38 -15
  1414. data/spec/unit/provider/exec/shell_spec.rb +2 -2
  1415. data/spec/unit/provider/exec/windows_spec.rb +4 -6
  1416. data/spec/unit/provider/exec_spec.rb +210 -1
  1417. data/spec/unit/provider/file/posix_spec.rb +22 -24
  1418. data/spec/unit/provider/file/windows_spec.rb +17 -19
  1419. data/spec/unit/provider/group/aix_spec.rb +91 -0
  1420. data/spec/unit/provider/group/groupadd_spec.rb +237 -29
  1421. data/spec/unit/provider/group/ldap_spec.rb +33 -36
  1422. data/spec/unit/provider/group/pw_spec.rb +15 -18
  1423. data/spec/unit/provider/group/windows_adsi_spec.rb +173 -68
  1424. data/spec/unit/provider/ldap_spec.rb +61 -63
  1425. data/spec/unit/provider/nameservice/directoryservice_spec.rb +102 -109
  1426. data/spec/unit/provider/nameservice_spec.rb +99 -100
  1427. data/spec/unit/provider/package/aix_spec.rb +48 -22
  1428. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  1429. data/spec/unit/provider/package/apt_spec.rb +174 -37
  1430. data/spec/unit/provider/package/aptitude_spec.rb +8 -7
  1431. data/spec/unit/provider/package/aptrpm_spec.rb +8 -13
  1432. data/spec/unit/provider/package/base_spec.rb +7 -6
  1433. data/spec/unit/provider/package/dnf_spec.rb +43 -18
  1434. data/spec/unit/provider/package/dnfmodule_spec.rb +256 -0
  1435. data/spec/unit/provider/package/dpkg_spec.rb +348 -137
  1436. data/spec/unit/provider/package/freebsd_spec.rb +15 -18
  1437. data/spec/unit/provider/package/gem_spec.rb +210 -83
  1438. data/spec/unit/provider/package/hpux_spec.rb +15 -18
  1439. data/spec/unit/provider/package/macports_spec.rb +56 -54
  1440. data/spec/unit/provider/package/nim_spec.rb +76 -59
  1441. data/spec/unit/provider/package/openbsd_spec.rb +62 -49
  1442. data/spec/unit/provider/package/opkg_spec.rb +23 -26
  1443. data/spec/unit/provider/package/pacman_spec.rb +103 -133
  1444. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  1445. data/spec/unit/provider/package/pip3_spec.rb +20 -6
  1446. data/spec/unit/provider/package/pip_spec.rb +252 -157
  1447. data/spec/unit/provider/package/pkg_spec.rb +194 -98
  1448. data/spec/unit/provider/package/pkgdmg_spec.rb +64 -66
  1449. data/spec/unit/provider/package/pkgin_spec.rb +21 -24
  1450. data/spec/unit/provider/package/pkgng_spec.rb +80 -38
  1451. data/spec/unit/provider/package/pkgutil_spec.rb +45 -49
  1452. data/spec/unit/provider/package/portage_spec.rb +89 -74
  1453. data/spec/unit/provider/package/puppet_gem_spec.rb +53 -21
  1454. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  1455. data/spec/unit/provider/package/rpm_spec.rb +280 -261
  1456. data/spec/unit/provider/package/sun_spec.rb +16 -18
  1457. data/spec/unit/provider/package/tdnf_spec.rb +9 -12
  1458. data/spec/unit/provider/package/up2date_spec.rb +2 -4
  1459. data/spec/unit/provider/package/urpmi_spec.rb +18 -14
  1460. data/spec/unit/provider/package/windows/exe_package_spec.rb +32 -18
  1461. data/spec/unit/provider/package/windows/msi_package_spec.rb +20 -23
  1462. data/spec/unit/provider/package/windows/package_spec.rb +38 -43
  1463. data/spec/unit/provider/package/windows_spec.rb +51 -36
  1464. data/spec/unit/provider/package/yum_spec.rb +442 -13
  1465. data/spec/unit/provider/package/zypper_spec.rb +202 -106
  1466. data/spec/unit/provider/package_targetable_spec.rb +60 -0
  1467. data/spec/unit/provider/parsedfile_spec.rb +81 -46
  1468. data/spec/unit/provider/service/base_spec.rb +6 -11
  1469. data/spec/unit/provider/service/bsd_spec.rb +52 -51
  1470. data/spec/unit/provider/service/daemontools_spec.rb +71 -52
  1471. data/spec/unit/provider/service/debian_spec.rb +51 -53
  1472. data/spec/unit/provider/service/freebsd_spec.rb +21 -21
  1473. data/spec/unit/provider/service/gentoo_spec.rb +78 -82
  1474. data/spec/unit/provider/service/init_spec.rb +117 -67
  1475. data/spec/unit/provider/service/launchd_spec.rb +196 -114
  1476. data/spec/unit/provider/service/openbsd_spec.rb +98 -92
  1477. data/spec/unit/provider/service/openrc_spec.rb +73 -75
  1478. data/spec/unit/provider/service/openwrt_spec.rb +36 -44
  1479. data/spec/unit/provider/service/rcng_spec.rb +20 -21
  1480. data/spec/unit/provider/service/redhat_spec.rb +76 -58
  1481. data/spec/unit/provider/service/runit_spec.rb +62 -43
  1482. data/spec/unit/provider/service/smf_spec.rb +143 -73
  1483. data/spec/unit/provider/service/src_spec.rb +60 -69
  1484. data/spec/unit/provider/service/systemd_spec.rb +330 -155
  1485. data/spec/unit/provider/service/upstart_spec.rb +106 -84
  1486. data/spec/unit/provider/service/windows_spec.rb +336 -91
  1487. data/spec/unit/provider/user/aix_spec.rb +263 -112
  1488. data/spec/unit/provider/user/directoryservice_spec.rb +229 -124
  1489. data/spec/unit/provider/user/hpux_spec.rb +19 -20
  1490. data/spec/unit/provider/user/ldap_spec.rb +80 -83
  1491. data/spec/unit/provider/user/openbsd_spec.rb +11 -12
  1492. data/spec/unit/provider/user/pw_spec.rb +82 -44
  1493. data/spec/unit/provider/user/user_role_add_spec.rb +109 -92
  1494. data/spec/unit/provider/user/useradd_spec.rb +479 -90
  1495. data/spec/unit/provider/user/windows_adsi_spec.rb +144 -63
  1496. data/spec/unit/provider_spec.rb +241 -47
  1497. data/spec/unit/puppet_pal_2pec.rb +1033 -0
  1498. data/spec/unit/puppet_pal_catalog_spec.rb +962 -0
  1499. data/spec/unit/puppet_pal_spec.rb +3 -0
  1500. data/spec/unit/puppet_spec.rb +58 -25
  1501. data/spec/unit/relationship_spec.rb +0 -1
  1502. data/spec/unit/reports/http_spec.rb +70 -54
  1503. data/spec/unit/reports/store_spec.rb +20 -17
  1504. data/spec/unit/reports_spec.rb +12 -14
  1505. data/spec/unit/resource/capability_finder_spec.rb +31 -29
  1506. data/spec/unit/resource/catalog_spec.rb +104 -82
  1507. data/spec/unit/resource/status_spec.rb +23 -12
  1508. data/spec/unit/resource/type_collection_spec.rb +19 -17
  1509. data/spec/unit/resource/type_spec.rb +52 -38
  1510. data/spec/unit/resource_spec.rb +207 -49
  1511. data/spec/unit/rest/route_spec.rb +132 -0
  1512. data/spec/unit/scheduler/job_spec.rb +0 -1
  1513. data/spec/unit/scheduler/scheduler_spec.rb +0 -1
  1514. data/spec/unit/scheduler/splay_job_spec.rb +1 -2
  1515. data/spec/unit/settings/array_setting_spec.rb +1 -1
  1516. data/spec/unit/settings/autosign_setting_spec.rb +11 -11
  1517. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  1518. data/spec/unit/settings/config_file_spec.rb +9 -1
  1519. data/spec/unit/settings/directory_setting_spec.rb +2 -7
  1520. data/spec/unit/settings/duration_setting_spec.rb +1 -2
  1521. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  1522. data/spec/unit/settings/environment_conf_spec.rb +4 -6
  1523. data/spec/unit/settings/file_setting_spec.rb +54 -48
  1524. data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
  1525. data/spec/unit/settings/ini_file_spec.rb +314 -5
  1526. data/spec/unit/settings/path_setting_spec.rb +2 -3
  1527. data/spec/unit/settings/priority_setting_spec.rb +1 -2
  1528. data/spec/unit/settings/server_list_setting_spec.rb +21 -0
  1529. data/spec/unit/settings/string_setting_spec.rb +14 -15
  1530. data/spec/unit/settings/terminus_setting_spec.rb +1 -2
  1531. data/spec/unit/settings/value_translator_spec.rb +0 -1
  1532. data/spec/unit/settings_spec.rb +905 -448
  1533. data/spec/unit/ssl/base_spec.rb +13 -15
  1534. data/spec/unit/ssl/certificate_request_attributes_spec.rb +21 -8
  1535. data/spec/unit/ssl/certificate_request_spec.rb +84 -65
  1536. data/spec/unit/ssl/certificate_spec.rb +34 -32
  1537. data/spec/unit/ssl/digest_spec.rb +0 -1
  1538. data/spec/unit/ssl/host_spec.rb +336 -649
  1539. data/spec/unit/ssl/key_spec.rb +31 -49
  1540. data/spec/unit/ssl/oids_spec.rb +1 -0
  1541. data/spec/unit/ssl/ssl_provider_spec.rb +630 -0
  1542. data/spec/unit/ssl/state_machine_spec.rb +983 -0
  1543. data/spec/unit/ssl/validator_spec.rb +74 -214
  1544. data/spec/unit/ssl/verifier_spec.rb +123 -0
  1545. data/spec/unit/task_spec.rb +216 -27
  1546. data/spec/unit/test/test_helper_spec.rb +17 -0
  1547. data/spec/unit/transaction/additional_resource_generator_spec.rb +66 -72
  1548. data/spec/unit/transaction/event_manager_spec.rb +114 -89
  1549. data/spec/unit/transaction/event_spec.rb +16 -15
  1550. data/spec/unit/transaction/persistence_spec.rb +83 -27
  1551. data/spec/unit/transaction/report_spec.rb +55 -27
  1552. data/spec/unit/transaction/resource_harness_spec.rb +72 -33
  1553. data/spec/unit/transaction_spec.rb +328 -115
  1554. data/spec/unit/type/component_spec.rb +0 -1
  1555. data/spec/unit/type/exec_spec.rb +210 -95
  1556. data/spec/unit/type/file/checksum_spec.rb +29 -10
  1557. data/spec/unit/type/file/checksum_value_spec.rb +31 -32
  1558. data/spec/unit/type/file/content_spec.rb +72 -58
  1559. data/spec/unit/type/file/ctime_spec.rb +0 -1
  1560. data/spec/unit/type/file/ensure_spec.rb +13 -15
  1561. data/spec/unit/type/file/group_spec.rb +5 -7
  1562. data/spec/unit/type/file/mode_spec.rb +4 -6
  1563. data/spec/unit/type/file/mtime_spec.rb +0 -1
  1564. data/spec/unit/type/file/owner_spec.rb +6 -8
  1565. data/spec/unit/type/file/selinux_spec.rb +16 -21
  1566. data/spec/unit/type/file/source_spec.rb +186 -126
  1567. data/spec/unit/type/file/type_spec.rb +0 -1
  1568. data/spec/unit/type/file_spec.rb +321 -267
  1569. data/spec/unit/type/filebucket_spec.rb +12 -11
  1570. data/spec/unit/type/group_spec.rb +32 -11
  1571. data/spec/unit/type/noop_metaparam_spec.rb +1 -2
  1572. data/spec/unit/type/package/package_settings_spec.rb +44 -23
  1573. data/spec/unit/type/package_spec.rb +76 -54
  1574. data/spec/unit/type/resources_spec.rb +105 -75
  1575. data/spec/unit/type/schedule_spec.rb +29 -29
  1576. data/spec/unit/type/service_spec.rb +252 -76
  1577. data/spec/unit/type/stage_spec.rb +0 -1
  1578. data/spec/unit/type/tidy_spec.rb +92 -61
  1579. data/spec/unit/type/user_spec.rb +79 -143
  1580. data/spec/unit/type/whit_spec.rb +0 -1
  1581. data/spec/unit/type_spec.rb +288 -140
  1582. data/spec/unit/util/at_fork_spec.rb +21 -21
  1583. data/spec/unit/util/autoload_spec.rb +126 -94
  1584. data/spec/unit/util/backups_spec.rb +33 -35
  1585. data/spec/unit/util/character_encoding_spec.rb +5 -48
  1586. data/spec/unit/util/checksums_spec.rb +57 -42
  1587. data/spec/unit/util/colors_spec.rb +1 -2
  1588. data/spec/unit/util/command_line_spec.rb +50 -25
  1589. data/spec/unit/util/constant_inflector_spec.rb +0 -1
  1590. data/spec/unit/util/diff_spec.rb +12 -5
  1591. data/spec/unit/util/docs_spec.rb +1 -1
  1592. data/spec/unit/util/errors_spec.rb +0 -1
  1593. data/spec/unit/util/execution_spec.rb +288 -167
  1594. data/spec/unit/util/execution_stub_spec.rb +2 -3
  1595. data/spec/unit/util/feature_spec.rb +56 -29
  1596. data/spec/unit/util/filetype_spec.rb +62 -50
  1597. data/spec/unit/util/http_proxy_spec.rb +178 -17
  1598. data/spec/unit/util/inifile_spec.rb +70 -52
  1599. data/spec/unit/util/json_lockfile_spec.rb +3 -5
  1600. data/spec/unit/util/json_spec.rb +126 -0
  1601. data/spec/unit/util/ldap/connection_spec.rb +26 -25
  1602. data/spec/unit/util/ldap/generator_spec.rb +0 -1
  1603. data/spec/unit/util/ldap/manager_spec.rb +100 -129
  1604. data/spec/unit/util/lockfile_spec.rb +1 -2
  1605. data/spec/unit/util/log/destinations_spec.rb +68 -37
  1606. data/spec/unit/util/log_spec.rb +55 -151
  1607. data/spec/unit/util/logging_spec.rb +323 -105
  1608. data/spec/unit/util/metric_spec.rb +0 -1
  1609. data/spec/unit/util/monkey_patches_spec.rb +23 -13
  1610. data/spec/unit/util/multi_match_spec.rb +0 -1
  1611. data/spec/unit/util/network_device/config_spec.rb +0 -1
  1612. data/spec/unit/util/network_device/transport/base_spec.rb +5 -6
  1613. data/spec/unit/util/network_device_spec.rb +7 -9
  1614. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  1615. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  1616. data/spec/unit/util/package/version/range_spec.rb +175 -0
  1617. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  1618. data/spec/unit/util/package_spec.rb +0 -1
  1619. data/spec/unit/util/pidlock_spec.rb +130 -15
  1620. data/spec/unit/util/plist_spec.rb +66 -33
  1621. data/spec/unit/util/posix_spec.rb +426 -47
  1622. data/spec/unit/util/profiler/object_counts_spec.rb +2 -1
  1623. data/spec/unit/util/rdoc_spec.rb +9 -10
  1624. data/spec/unit/util/reference_spec.rb +0 -1
  1625. data/spec/unit/util/resource_template_spec.rb +20 -20
  1626. data/spec/unit/util/retry_action_spec.rb +7 -8
  1627. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  1628. data/spec/unit/util/rubygems_spec.rb +8 -43
  1629. data/spec/unit/util/run_mode_spec.rb +16 -17
  1630. data/spec/unit/util/selinux_spec.rb +204 -98
  1631. data/spec/unit/util/skip_tags_spec.rb +14 -0
  1632. data/spec/unit/util/splayer_spec.rb +8 -9
  1633. data/spec/unit/util/ssl_spec.rb +0 -1
  1634. data/spec/unit/util/storage_spec.rb +125 -12
  1635. data/spec/unit/util/suidmanager_spec.rb +83 -91
  1636. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -1
  1637. data/spec/unit/util/tag_set_spec.rb +8 -2
  1638. data/spec/unit/util/tagging_spec.rb +27 -9
  1639. data/spec/unit/util/terminal_spec.rb +9 -10
  1640. data/spec/unit/util/user_attr_spec.rb +1 -2
  1641. data/spec/unit/util/warnings_spec.rb +3 -4
  1642. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  1643. data/spec/unit/util/watcher_spec.rb +51 -21
  1644. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -2
  1645. data/spec/unit/util/windows/access_control_list_spec.rb +1 -2
  1646. data/spec/unit/util/windows/adsi_spec.rb +285 -137
  1647. data/spec/unit/util/windows/api_types_spec.rb +105 -42
  1648. data/spec/unit/util/windows/eventlog_spec.rb +10 -13
  1649. data/spec/unit/util/windows/file_spec.rb +0 -1
  1650. data/spec/unit/util/windows/root_certs_spec.rb +1 -2
  1651. data/spec/unit/util/windows/security_descriptor_spec.rb +1 -3
  1652. data/spec/unit/util/windows/service_spec.rb +677 -0
  1653. data/spec/unit/util/windows/sid_spec.rb +131 -21
  1654. data/spec/unit/util/windows/string_spec.rb +1 -2
  1655. data/spec/unit/util/windows_spec.rb +23 -0
  1656. data/spec/unit/util/yaml_spec.rb +193 -34
  1657. data/spec/unit/util_spec.rb +110 -130
  1658. data/spec/unit/version_spec.rb +6 -6
  1659. data/spec/unit/x509/cert_provider_spec.rb +606 -0
  1660. data/spec/unit/x509/pem_store_spec.rb +160 -0
  1661. data/tasks/benchmark.rake +41 -0
  1662. data/tasks/ci.rake +0 -5
  1663. data/tasks/generate_cert_fixtures.rake +194 -0
  1664. data/tasks/manpages.rake +15 -36
  1665. data/tasks/parallel.rake +3 -3
  1666. data/tasks/parser.rake +11 -3
  1667. metadata +3497 -3514
  1668. data/COMMITTERS.md +0 -244
  1669. data/MAINTAINERS +0 -66
  1670. data/ext/README.environment +0 -8
  1671. data/ext/autotest/Rakefile +0 -8
  1672. data/ext/autotest/config +0 -43
  1673. data/ext/autotest/readme.rst +0 -16
  1674. data/ext/cert_inspector +0 -140
  1675. data/ext/dbfix.sql +0 -132
  1676. data/ext/debian/README.Debian +0 -8
  1677. data/ext/debian/README.source +0 -2
  1678. data/ext/debian/TODO.Debian +0 -1
  1679. data/ext/debian/changelog.erb +0 -1122
  1680. data/ext/debian/compat +0 -1
  1681. data/ext/debian/control +0 -144
  1682. data/ext/debian/copyright +0 -361
  1683. data/ext/debian/docs +0 -1
  1684. data/ext/debian/fileserver.conf +0 -41
  1685. data/ext/debian/puppet-common.dirs +0 -13
  1686. data/ext/debian/puppet-common.install +0 -3
  1687. data/ext/debian/puppet-common.lintian-overrides +0 -5
  1688. data/ext/debian/puppet-common.manpages +0 -28
  1689. data/ext/debian/puppet-common.postinst +0 -35
  1690. data/ext/debian/puppet-common.postrm +0 -33
  1691. data/ext/debian/puppet-el.dirs +0 -1
  1692. data/ext/debian/puppet-el.emacsen-install +0 -25
  1693. data/ext/debian/puppet-el.emacsen-remove +0 -11
  1694. data/ext/debian/puppet-el.emacsen-startup +0 -9
  1695. data/ext/debian/puppet-el.install +0 -1
  1696. data/ext/debian/puppet-testsuite.install +0 -2
  1697. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  1698. data/ext/debian/puppet.lintian-overrides +0 -3
  1699. data/ext/debian/puppet.logrotate +0 -20
  1700. data/ext/debian/puppet.postinst +0 -20
  1701. data/ext/debian/puppet.postrm +0 -20
  1702. data/ext/debian/puppet.preinst +0 -20
  1703. data/ext/debian/puppetmaster-common.install +0 -2
  1704. data/ext/debian/puppetmaster-common.manpages +0 -2
  1705. data/ext/debian/puppetmaster-common.postinst +0 -6
  1706. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  1707. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  1708. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  1709. data/ext/debian/puppetmaster.README.debian +0 -17
  1710. data/ext/debian/puppetmaster.default +0 -14
  1711. data/ext/debian/puppetmaster.init +0 -137
  1712. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  1713. data/ext/debian/puppetmaster.postinst +0 -20
  1714. data/ext/debian/puppetmaster.postrm +0 -5
  1715. data/ext/debian/puppetmaster.preinst +0 -22
  1716. data/ext/debian/rules +0 -132
  1717. data/ext/debian/source/format +0 -1
  1718. data/ext/debian/source/options +0 -1
  1719. data/ext/debian/vim-puppet.README.Debian +0 -13
  1720. data/ext/debian/vim-puppet.dirs +0 -5
  1721. data/ext/debian/vim-puppet.yaml +0 -7
  1722. data/ext/debian/watch +0 -2
  1723. data/ext/envpuppet +0 -139
  1724. data/ext/envpuppet.bat +0 -14
  1725. data/ext/freebsd/puppetd +0 -26
  1726. data/ext/freebsd/puppetmasterd +0 -26
  1727. data/ext/gentoo/conf.d/puppet +0 -5
  1728. data/ext/gentoo/conf.d/puppetmaster +0 -12
  1729. data/ext/gentoo/init.d/puppet +0 -38
  1730. data/ext/gentoo/init.d/puppetmaster +0 -51
  1731. data/ext/gentoo/puppet/fileserver.conf +0 -41
  1732. data/ext/ips/puppet-agent +0 -44
  1733. data/ext/ips/puppet-master +0 -44
  1734. data/ext/ips/puppet.p5m.erb +0 -12
  1735. data/ext/ips/puppetagent.xml +0 -42
  1736. data/ext/ips/puppetmaster.xml +0 -42
  1737. data/ext/ips/rules +0 -19
  1738. data/ext/ips/transforms +0 -34
  1739. data/ext/ldap/puppet.schema +0 -24
  1740. data/ext/logcheck/puppet +0 -23
  1741. data/ext/osx/file_mapping.yaml +0 -33
  1742. data/ext/osx/postflight.erb +0 -109
  1743. data/ext/osx/preflight.erb +0 -52
  1744. data/ext/osx/prototype.plist.erb +0 -38
  1745. data/ext/puppet-test +0 -477
  1746. data/ext/pure_ruby_dsl/dsl_test.rb +0 -7
  1747. data/ext/rack/config.ru +0 -44
  1748. data/ext/rack/example-passenger-vhost.conf +0 -57
  1749. data/ext/redhat/fileserver.conf +0 -41
  1750. data/ext/redhat/logrotate +0 -21
  1751. data/ext/redhat/puppet.spec.erb +0 -846
  1752. data/ext/redhat/server.init +0 -128
  1753. data/ext/redhat/server.sysconfig +0 -13
  1754. data/ext/solaris/pkginfo +0 -6
  1755. data/ext/solaris/smf/puppetd.xml +0 -77
  1756. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  1757. data/ext/solaris/smf/svc-puppetd +0 -64
  1758. data/ext/solaris/smf/svc-puppetmasterd +0 -60
  1759. data/ext/suse/puppet.spec +0 -310
  1760. data/ext/suse/server.init +0 -173
  1761. data/ext/upload_facts.rb +0 -119
  1762. data/ext/windows/eventlog/Rakefile +0 -32
  1763. data/ext/windows/eventlog/puppetres.dll +0 -0
  1764. data/ext/windows/eventlog/puppetres.mc +0 -18
  1765. data/ext/yaml_nodes.rb +0 -105
  1766. data/lib/puppet/application/ca.rb +0 -11
  1767. data/lib/puppet/application/certificate.rb +0 -17
  1768. data/lib/puppet/application/certificate_request.rb +0 -7
  1769. data/lib/puppet/application/certificate_revocation_list.rb +0 -7
  1770. data/lib/puppet/application/master.rb +0 -317
  1771. data/lib/puppet/bindings.rb +0 -148
  1772. data/lib/puppet/configurer/downloader_factory.rb +0 -44
  1773. data/lib/puppet/external/nagios/base.rb +0 -472
  1774. data/lib/puppet/external/nagios/grammar.ry +0 -248
  1775. data/lib/puppet/external/nagios/makefile +0 -9
  1776. data/lib/puppet/external/nagios/parser.rb +0 -400
  1777. data/lib/puppet/external/nagios.rb +0 -46
  1778. data/lib/puppet/face/ca.rb +0 -266
  1779. data/lib/puppet/face/certificate.rb +0 -165
  1780. data/lib/puppet/face/certificate_request.rb +0 -56
  1781. data/lib/puppet/face/certificate_revocation_list.rb +0 -56
  1782. data/lib/puppet/feature/rack.rb +0 -19
  1783. data/lib/puppet/graph/random_prioritizer.rb +0 -16
  1784. data/lib/puppet/graph/title_hash_prioritizer.rb +0 -16
  1785. data/lib/puppet/indirector/certificate/ca.rb +0 -9
  1786. data/lib/puppet/indirector/certificate/disabled_ca.rb +0 -22
  1787. data/lib/puppet/indirector/certificate_request/ca.rb +0 -22
  1788. data/lib/puppet/indirector/certificate_request/disabled_ca.rb +0 -22
  1789. data/lib/puppet/indirector/certificate_revocation_list/ca.rb +0 -8
  1790. data/lib/puppet/indirector/certificate_revocation_list/disabled_ca.rb +0 -22
  1791. data/lib/puppet/indirector/certificate_revocation_list/file.rb +0 -8
  1792. data/lib/puppet/indirector/certificate_revocation_list/rest.rb +0 -22
  1793. data/lib/puppet/indirector/certificate_status/file.rb +0 -91
  1794. data/lib/puppet/indirector/certificate_status/rest.rb +0 -11
  1795. data/lib/puppet/indirector/certificate_status.rb +0 -4
  1796. data/lib/puppet/indirector/key/ca.rb +0 -16
  1797. data/lib/puppet/indirector/key/disabled_ca.rb +0 -22
  1798. data/lib/puppet/indirector/ldap.rb +0 -80
  1799. data/lib/puppet/indirector/node/ldap.rb +0 -259
  1800. data/lib/puppet/indirector/node/write_only_yaml.rb +0 -39
  1801. data/lib/puppet/module_tool/applications/builder.rb +0 -148
  1802. data/lib/puppet/module_tool/skeleton/templates/generator/Gemfile +0 -18
  1803. data/lib/puppet/module_tool/skeleton/templates/generator/README.md.erb +0 -89
  1804. data/lib/puppet/module_tool/skeleton/templates/generator/Rakefile +0 -32
  1805. data/lib/puppet/module_tool/skeleton/templates/generator/examples/init.pp.erb +0 -12
  1806. data/lib/puppet/module_tool/skeleton/templates/generator/manifests/init.pp.erb +0 -48
  1807. data/lib/puppet/module_tool/skeleton/templates/generator/metadata.json.erb +0 -1
  1808. data/lib/puppet/module_tool/skeleton/templates/generator/spec/classes/init_spec.rb.erb +0 -6
  1809. data/lib/puppet/module_tool/skeleton/templates/generator/spec/spec_helper.rb +0 -1
  1810. data/lib/puppet/network/http/api/ca/v1.rb +0 -11
  1811. data/lib/puppet/network/http/api/ca.rb +0 -2
  1812. data/lib/puppet/network/http/rack/rest.rb +0 -162
  1813. data/lib/puppet/network/http/rack.rb +0 -33
  1814. data/lib/puppet/network/http/webrick/rest.rb +0 -114
  1815. data/lib/puppet/network/http/webrick.rb +0 -123
  1816. data/lib/puppet/network/server.rb +0 -39
  1817. data/lib/puppet/pops/loader/null_loader.rb +0 -60
  1818. data/lib/puppet/provider/aixobject.rb +0 -392
  1819. data/lib/puppet/provider/augeas/augeas.rb +0 -567
  1820. data/lib/puppet/provider/cisco.rb +0 -9
  1821. data/lib/puppet/provider/computer/computer.rb +0 -20
  1822. data/lib/puppet/provider/cron/crontab.rb +0 -297
  1823. data/lib/puppet/provider/host/parsed.rb +0 -46
  1824. data/lib/puppet/provider/interface/cisco.rb +0 -27
  1825. data/lib/puppet/provider/macauthorization/macauthorization.rb +0 -298
  1826. data/lib/puppet/provider/mailalias/aliases.rb +0 -50
  1827. data/lib/puppet/provider/maillist/mailman.rb +0 -108
  1828. data/lib/puppet/provider/mcx/mcxcontent.rb +0 -173
  1829. data/lib/puppet/provider/mount/parsed.rb +0 -282
  1830. data/lib/puppet/provider/mount.rb +0 -59
  1831. data/lib/puppet/provider/naginator.rb +0 -63
  1832. data/lib/puppet/provider/scheduled_task/win32_taskscheduler.rb +0 -590
  1833. data/lib/puppet/provider/selboolean/getsetsebool.rb +0 -47
  1834. data/lib/puppet/provider/selmodule/semodule.rb +0 -140
  1835. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +0 -105
  1836. data/lib/puppet/provider/sshkey/parsed.rb +0 -50
  1837. data/lib/puppet/provider/vlan/cisco.rb +0 -28
  1838. data/lib/puppet/provider/yumrepo/inifile.rb +0 -305
  1839. data/lib/puppet/provider/zfs/zfs.rb +0 -88
  1840. data/lib/puppet/provider/zone/solaris.rb +0 -364
  1841. data/lib/puppet/provider/zpool/zpool.rb +0 -125
  1842. data/lib/puppet/ssl/certificate_authority/autosign_command.rb +0 -45
  1843. data/lib/puppet/ssl/certificate_authority/interface.rb +0 -324
  1844. data/lib/puppet/ssl/certificate_authority.rb +0 -553
  1845. data/lib/puppet/ssl/certificate_revocation_list.rb +0 -110
  1846. data/lib/puppet/ssl/configuration.rb +0 -61
  1847. data/lib/puppet/ssl/inventory.rb +0 -55
  1848. data/lib/puppet/type/augeas.rb +0 -211
  1849. data/lib/puppet/type/computer.rb +0 -66
  1850. data/lib/puppet/type/cron.rb +0 -475
  1851. data/lib/puppet/type/host.rb +0 -95
  1852. data/lib/puppet/type/interface.rb +0 -121
  1853. data/lib/puppet/type/k5login.rb +0 -88
  1854. data/lib/puppet/type/macauthorization.rb +0 -167
  1855. data/lib/puppet/type/mailalias.rb +0 -46
  1856. data/lib/puppet/type/maillist.rb +0 -62
  1857. data/lib/puppet/type/mcx.rb +0 -98
  1858. data/lib/puppet/type/mount.rb +0 -310
  1859. data/lib/puppet/type/nagios_command.rb +0 -3
  1860. data/lib/puppet/type/nagios_contact.rb +0 -3
  1861. data/lib/puppet/type/nagios_contactgroup.rb +0 -3
  1862. data/lib/puppet/type/nagios_host.rb +0 -3
  1863. data/lib/puppet/type/nagios_hostdependency.rb +0 -3
  1864. data/lib/puppet/type/nagios_hostescalation.rb +0 -3
  1865. data/lib/puppet/type/nagios_hostextinfo.rb +0 -3
  1866. data/lib/puppet/type/nagios_hostgroup.rb +0 -3
  1867. data/lib/puppet/type/nagios_service.rb +0 -3
  1868. data/lib/puppet/type/nagios_servicedependency.rb +0 -3
  1869. data/lib/puppet/type/nagios_serviceescalation.rb +0 -3
  1870. data/lib/puppet/type/nagios_serviceextinfo.rb +0 -3
  1871. data/lib/puppet/type/nagios_servicegroup.rb +0 -3
  1872. data/lib/puppet/type/nagios_timeperiod.rb +0 -3
  1873. data/lib/puppet/type/router.rb +0 -17
  1874. data/lib/puppet/type/scheduled_task.rb +0 -183
  1875. data/lib/puppet/type/selboolean.rb +0 -26
  1876. data/lib/puppet/type/selmodule.rb +0 -59
  1877. data/lib/puppet/type/ssh_authorized_key.rb +0 -143
  1878. data/lib/puppet/type/sshkey.rb +0 -83
  1879. data/lib/puppet/type/vlan.rb +0 -26
  1880. data/lib/puppet/type/yumrepo.rb +0 -409
  1881. data/lib/puppet/type/zfs.rb +0 -150
  1882. data/lib/puppet/type/zone.rb +0 -382
  1883. data/lib/puppet/type/zpool.rb +0 -91
  1884. data/lib/puppet/util/methodhelper.rb +0 -32
  1885. data/lib/puppet/util/nagios_maker.rb +0 -85
  1886. data/lib/puppet/util/network_device/cisco/device.rb +0 -285
  1887. data/lib/puppet/util/network_device/cisco/facts.rb +0 -72
  1888. data/lib/puppet/util/network_device/cisco/interface.rb +0 -94
  1889. data/lib/puppet/util/network_device/cisco.rb +0 -4
  1890. data/lib/puppet/util/network_device/ipcalc.rb +0 -68
  1891. data/lib/puppet/util/network_device/transport/ssh.rb +0 -126
  1892. data/lib/puppet/util/network_device/transport/telnet.rb +0 -47
  1893. data/lib/puppet/util/windows/taskscheduler.rb +0 -1276
  1894. data/lib/puppet/vendor/deep_merge/CHANGELOG +0 -45
  1895. data/lib/puppet/vendor/deep_merge/Gemfile +0 -3
  1896. data/lib/puppet/vendor/deep_merge/LICENSE +0 -21
  1897. data/lib/puppet/vendor/deep_merge/PUPPET_README.md +0 -6
  1898. data/lib/puppet/vendor/deep_merge/README.md +0 -113
  1899. data/lib/puppet/vendor/deep_merge/Rakefile +0 -19
  1900. data/lib/puppet/vendor/deep_merge/deep_merge.gemspec +0 -35
  1901. data/lib/puppet/vendor/deep_merge/lib/deep_merge/core.rb +0 -210
  1902. data/lib/puppet/vendor/deep_merge/lib/deep_merge/deep_merge_hash.rb +0 -28
  1903. data/lib/puppet/vendor/deep_merge/lib/deep_merge/rails_compat.rb +0 -27
  1904. data/lib/puppet/vendor/deep_merge/lib/deep_merge.rb +0 -2
  1905. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +0 -608
  1906. data/lib/puppet/vendor/load_deep_merge.rb +0 -1
  1907. data/lib/puppet/vendor/load_semantic.rb +0 -1
  1908. data/lib/puppet/vendor/load_semantic_puppet.rb +0 -1
  1909. data/lib/puppet/vendor/semantic/lib/semantic.rb +0 -5
  1910. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph.rb +0 -60
  1911. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/graph_node.rb +0 -117
  1912. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/module_release.rb +0 -58
  1913. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/source.rb +0 -25
  1914. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency/unsatisfiable_graph.rb +0 -31
  1915. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/dependency.rb +0 -181
  1916. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/gem_version.rb +0 -3
  1917. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version.rb +0 -203
  1918. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet/version_range.rb +0 -758
  1919. data/lib/puppet/vendor/semantic_puppet/lib/semantic_puppet.rb +0 -11
  1920. data/locales/ja/puppet.po +0 -11234
  1921. data/man/man8/puppet-ca.8 +0 -196
  1922. data/man/man8/puppet-cert.8 +0 -118
  1923. data/man/man8/puppet-certificate.8 +0 -240
  1924. data/man/man8/puppet-certificate_request.8 +0 -161
  1925. data/man/man8/puppet-certificate_revocation_list.8 +0 -139
  1926. data/man/man8/puppet-master.8 +0 -85
  1927. data/spec/fixtures/integration/provider/cron/crontab/create_normal_entry +0 -19
  1928. data/spec/fixtures/integration/provider/cron/crontab/create_special_entry +0 -18
  1929. data/spec/fixtures/integration/provider/cron/crontab/crontab_user1 +0 -15
  1930. data/spec/fixtures/integration/provider/cron/crontab/crontab_user2 +0 -4
  1931. data/spec/fixtures/integration/provider/cron/crontab/modify_entry +0 -13
  1932. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input1 +0 -15
  1933. data/spec/fixtures/integration/provider/cron/crontab/moved_cronjob_input2 +0 -6
  1934. data/spec/fixtures/integration/provider/cron/crontab/purged +0 -8
  1935. data/spec/fixtures/integration/provider/cron/crontab/remove_named_resource +0 -12
  1936. data/spec/fixtures/integration/provider/cron/crontab/remove_unnamed_resource +0 -14
  1937. data/spec/fixtures/integration/provider/cron/crontab/unspecialized +0 -15
  1938. data/spec/fixtures/integration/provider/mailalias/aliases/test1 +0 -31
  1939. data/spec/fixtures/integration/provider/sshkey/sample +0 -21
  1940. data/spec/fixtures/unit/provider/augeas/augeas/augeas/lenses/test.aug +0 -13
  1941. data/spec/fixtures/unit/provider/augeas/augeas/etc/fstab +0 -10
  1942. data/spec/fixtures/unit/provider/augeas/augeas/etc/hosts +0 -6
  1943. data/spec/fixtures/unit/provider/augeas/augeas/etc/test +0 -3
  1944. data/spec/fixtures/unit/provider/augeas/augeas/test.aug +0 -13
  1945. data/spec/fixtures/unit/provider/host/parsed/valid_hosts +0 -19
  1946. data/spec/fixtures/unit/provider/mount/mount-output.aix.txt +0 -7
  1947. data/spec/fixtures/unit/provider/mount/parsed/aix.filesystems +0 -152
  1948. data/spec/fixtures/unit/provider/mount/parsed/aix.mount +0 -11
  1949. data/spec/fixtures/unit/provider/mount/parsed/darwin.mount +0 -6
  1950. data/spec/fixtures/unit/provider/mount/parsed/freebsd.fstab +0 -8
  1951. data/spec/fixtures/unit/provider/mount/parsed/freebsd.mount +0 -3
  1952. data/spec/fixtures/unit/provider/mount/parsed/hpux.mount +0 -17
  1953. data/spec/fixtures/unit/provider/mount/parsed/linux.fstab +0 -11
  1954. data/spec/fixtures/unit/provider/mount/parsed/linux.mount +0 -5
  1955. data/spec/fixtures/unit/provider/mount/parsed/netbsd.fstab +0 -9
  1956. data/spec/fixtures/unit/provider/mount/parsed/netbsd.mount +0 -8
  1957. data/spec/fixtures/unit/provider/mount/parsed/openbsd.fstab +0 -4
  1958. data/spec/fixtures/unit/provider/mount/parsed/openbsd.mount +0 -4
  1959. data/spec/fixtures/unit/provider/mount/parsed/solaris.fstab +0 -11
  1960. data/spec/fixtures/unit/provider/mount/parsed/solaris.mount +0 -6
  1961. data/spec/fixtures/unit/provider/naginator/define_empty_param +0 -6
  1962. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -8
  1963. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  1964. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys +0 -7
  1965. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys1 +0 -3
  1966. data/spec/fixtures/unit/provider/ssh_authorized_key/parsed/authorized_keys2 +0 -1
  1967. data/spec/fixtures/unit/provider/sshkey/parsed/sample +0 -21
  1968. data/spec/fixtures/unit/provider/sshkey/parsed/sample_with_blank_lines +0 -8
  1969. data/spec/fixtures/unit/provider/zfs/zfs/zfs-list.out +0 -2
  1970. data/spec/fixtures/unit/provider/zpool/zpool/zpool-list.out +0 -2
  1971. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_get/should_yield_to_the_block.yml +0 -24
  1972. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_head/should_yield_to_the_block.yml +0 -24
  1973. data/spec/fixtures/vcr/cassettes/Puppet_Network_HTTP_Connection/when_handling_requests/_request_post/should_yield_to_the_block.yml +0 -24
  1974. data/spec/integration/faces/ca_spec.rb +0 -354
  1975. data/spec/integration/faces/config_spec.rb +0 -80
  1976. data/spec/integration/faces/documentation_spec.rb +0 -58
  1977. data/spec/integration/faces/plugin_spec.rb +0 -59
  1978. data/spec/integration/file_bucket/file_spec.rb +0 -69
  1979. data/spec/integration/file_serving/content_spec.rb +0 -8
  1980. data/spec/integration/file_serving/fileset_spec.rb +0 -13
  1981. data/spec/integration/file_serving/metadata_spec.rb +0 -9
  1982. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -21
  1983. data/spec/integration/file_system/uniquefile_spec.rb +0 -29
  1984. data/spec/integration/indirector/node/ldap_spec.rb +0 -14
  1985. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  1986. data/spec/integration/provider/cron/crontab_spec.rb +0 -242
  1987. data/spec/integration/provider/mailalias/aliases_spec.rb +0 -10
  1988. data/spec/integration/provider/mount_spec.rb +0 -161
  1989. data/spec/integration/provider/service/init_spec.rb +0 -46
  1990. data/spec/integration/provider/service/systemd_spec.rb +0 -20
  1991. data/spec/integration/provider/service/windows_spec.rb +0 -49
  1992. data/spec/integration/provider/ssh_authorized_key_spec.rb +0 -219
  1993. data/spec/integration/provider/sshkey_spec.rb +0 -159
  1994. data/spec/integration/provider/yumrepo_spec.rb +0 -130
  1995. data/spec/integration/reference/providers_spec.rb +0 -16
  1996. data/spec/integration/reports_spec.rb +0 -14
  1997. data/spec/integration/ssl/autosign_spec.rb +0 -145
  1998. data/spec/integration/ssl/certificate_authority_spec.rb +0 -162
  1999. data/spec/integration/ssl/certificate_request_spec.rb +0 -47
  2000. data/spec/integration/ssl/certificate_revocation_list_spec.rb +0 -34
  2001. data/spec/integration/ssl/host_spec.rb +0 -81
  2002. data/spec/integration/ssl/key_spec.rb +0 -104
  2003. data/spec/integration/test/test_helper_spec.rb +0 -32
  2004. data/spec/integration/type/nagios_spec.rb +0 -71
  2005. data/spec/integration/type/user_spec.rb +0 -64
  2006. data/spec/lib/matchers/include.rb +0 -27
  2007. data/spec/lib/matchers/include_spec.rb +0 -32
  2008. data/spec/shared_behaviours/file_serving_model.rb +0 -72
  2009. data/spec/unit/application/cert_spec.rb +0 -240
  2010. data/spec/unit/application/certificate_spec.rb +0 -22
  2011. data/spec/unit/application/master_spec.rb +0 -404
  2012. data/spec/unit/configurer/downloader_factory_spec.rb +0 -129
  2013. data/spec/unit/face/ca_spec.rb +0 -10
  2014. data/spec/unit/face/catalog_spec.rb +0 -7
  2015. data/spec/unit/face/certificate_request_spec.rb +0 -10
  2016. data/spec/unit/face/certificate_revocation_list_spec.rb +0 -10
  2017. data/spec/unit/face/certificate_spec.rb +0 -231
  2018. data/spec/unit/face/module/build_spec.rb +0 -69
  2019. data/spec/unit/face/module_spec.rb +0 -3
  2020. data/spec/unit/graph/title_hash_prioritizer_spec.rb +0 -49
  2021. data/spec/unit/indirector/certificate/ca_spec.rb +0 -23
  2022. data/spec/unit/indirector/certificate/disabled_ca_spec.rb +0 -33
  2023. data/spec/unit/indirector/certificate_request/ca_spec.rb +0 -57
  2024. data/spec/unit/indirector/certificate_request/disabled_ca_spec.rb +0 -33
  2025. data/spec/unit/indirector/certificate_revocation_list/ca_spec.rb +0 -16
  2026. data/spec/unit/indirector/certificate_revocation_list/disabled_ca_spec.rb +0 -33
  2027. data/spec/unit/indirector/certificate_revocation_list/file_spec.rb +0 -17
  2028. data/spec/unit/indirector/certificate_revocation_list/rest_spec.rb +0 -34
  2029. data/spec/unit/indirector/certificate_status/file_spec.rb +0 -191
  2030. data/spec/unit/indirector/certificate_status/rest_spec.rb +0 -18
  2031. data/spec/unit/indirector/code_spec.rb +0 -31
  2032. data/spec/unit/indirector/key/ca_spec.rb +0 -23
  2033. data/spec/unit/indirector/key/disabled_ca_spec.rb +0 -33
  2034. data/spec/unit/indirector/ldap_spec.rb +0 -137
  2035. data/spec/unit/indirector/node/ldap_spec.rb +0 -462
  2036. data/spec/unit/indirector/node/write_only_yaml_spec.rb +0 -12
  2037. data/spec/unit/indirector/store_configs_spec.rb +0 -8
  2038. data/spec/unit/man_spec.rb +0 -32
  2039. data/spec/unit/module_tool/applications/builder_spec.rb +0 -432
  2040. data/spec/unit/network/http/api/ca/v1_spec.rb +0 -26
  2041. data/spec/unit/network/http/rack/rest_spec.rb +0 -325
  2042. data/spec/unit/network/http/rack_spec.rb +0 -43
  2043. data/spec/unit/network/http/webrick/rest_spec.rb +0 -231
  2044. data/spec/unit/network/http/webrick_spec.rb +0 -280
  2045. data/spec/unit/network/server_spec.rb +0 -95
  2046. data/spec/unit/provider/aixobject_spec.rb +0 -101
  2047. data/spec/unit/provider/augeas/augeas_spec.rb +0 -1025
  2048. data/spec/unit/provider/cisco_spec.rb +0 -15
  2049. data/spec/unit/provider/cron/crontab_spec.rb +0 -207
  2050. data/spec/unit/provider/cron/parsed_spec.rb +0 -358
  2051. data/spec/unit/provider/host/parsed_spec.rb +0 -233
  2052. data/spec/unit/provider/interface/cisco_spec.rb +0 -57
  2053. data/spec/unit/provider/macauthorization_spec.rb +0 -155
  2054. data/spec/unit/provider/mcx/mcxcontent_spec.rb +0 -192
  2055. data/spec/unit/provider/mount/parsed_spec.rb +0 -317
  2056. data/spec/unit/provider/mount_spec.rb +0 -165
  2057. data/spec/unit/provider/naginator_spec.rb +0 -79
  2058. data/spec/unit/provider/network_device_spec.rb +0 -152
  2059. data/spec/unit/provider/scheduled_task/win32_taskscheduler_spec.rb +0 -2060
  2060. data/spec/unit/provider/selboolean_spec.rb +0 -36
  2061. data/spec/unit/provider/selmodule-example.pp +0 -0
  2062. data/spec/unit/provider/selmodule_spec.rb +0 -79
  2063. data/spec/unit/provider/ssh_authorized_key/parsed_spec.rb +0 -277
  2064. data/spec/unit/provider/sshkey/parsed_spec.rb +0 -95
  2065. data/spec/unit/provider/vlan/cisco_spec.rb +0 -55
  2066. data/spec/unit/provider/yumrepo/inifile_spec.rb +0 -326
  2067. data/spec/unit/provider/zfs/zfs_spec.rb +0 -112
  2068. data/spec/unit/provider/zone/solaris_spec.rb +0 -247
  2069. data/spec/unit/provider/zpool/zpool_spec.rb +0 -251
  2070. data/spec/unit/ssl/certificate_authority/autosign_command_spec.rb +0 -30
  2071. data/spec/unit/ssl/certificate_authority/interface_spec.rb +0 -560
  2072. data/spec/unit/ssl/certificate_authority_spec.rb +0 -1184
  2073. data/spec/unit/ssl/certificate_revocation_list_spec.rb +0 -196
  2074. data/spec/unit/ssl/configuration_spec.rb +0 -141
  2075. data/spec/unit/ssl/inventory_spec.rb +0 -151
  2076. data/spec/unit/type/augeas_spec.rb +0 -119
  2077. data/spec/unit/type/computer_spec.rb +0 -80
  2078. data/spec/unit/type/cron_spec.rb +0 -543
  2079. data/spec/unit/type/host_spec.rb +0 -681
  2080. data/spec/unit/type/interface_spec.rb +0 -129
  2081. data/spec/unit/type/k5login_spec.rb +0 -115
  2082. data/spec/unit/type/macauthorization_spec.rb +0 -113
  2083. data/spec/unit/type/mailalias_spec.rb +0 -49
  2084. data/spec/unit/type/maillist_spec.rb +0 -41
  2085. data/spec/unit/type/mcx_spec.rb +0 -79
  2086. data/spec/unit/type/mount_spec.rb +0 -634
  2087. data/spec/unit/type/nagios_spec.rb +0 -313
  2088. data/spec/unit/type/scheduled_task_spec.rb +0 -103
  2089. data/spec/unit/type/selboolean_spec.rb +0 -44
  2090. data/spec/unit/type/selmodule_spec.rb +0 -17
  2091. data/spec/unit/type/ssh_authorized_key_spec.rb +0 -258
  2092. data/spec/unit/type/sshkey_spec.rb +0 -77
  2093. data/spec/unit/type/vlan_spec.rb +0 -44
  2094. data/spec/unit/type/yumrepo_spec.rb +0 -398
  2095. data/spec/unit/type/zfs_spec.rb +0 -46
  2096. data/spec/unit/type/zone_spec.rb +0 -172
  2097. data/spec/unit/type/zpool_spec.rb +0 -109
  2098. data/spec/unit/util/nagios_maker_spec.rb +0 -122
  2099. data/spec/unit/util/network_device/cisco/device_spec.rb +0 -482
  2100. data/spec/unit/util/network_device/cisco/facts_spec.rb +0 -64
  2101. data/spec/unit/util/network_device/cisco/interface_spec.rb +0 -88
  2102. data/spec/unit/util/network_device/ipcalc_spec.rb +0 -62
  2103. data/spec/unit/util/network_device/transport/ssh_spec.rb +0 -218
  2104. data/spec/unit/util/network_device/transport/telnet_spec.rb +0 -86
  2105. data/spec/watchr.rb +0 -138
@@ -1,8 +1,10 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
2
+ require 'puppet/test_ca'
3
3
 
4
4
  require 'puppet/ssl/host'
5
5
  require 'matchers/json'
6
+ require 'puppet_spec/ssl'
7
+ require 'puppet/rest/routes'
6
8
 
7
9
  def base_json_comparison(result, json_hash)
8
10
  expect(result["fingerprint"]).to eq(json_hash["fingerprint"])
@@ -10,13 +12,11 @@ def base_json_comparison(result, json_hash)
10
12
  expect(result["state"]).to eq(json_hash["desired_state"])
11
13
  end
12
14
 
13
- describe Puppet::SSL::Host do
15
+ describe Puppet::SSL::Host, if: !Puppet::Util::Platform.jruby? do
14
16
  include JSONMatchers
15
17
  include PuppetSpec::Files
16
18
 
17
19
  before do
18
- Puppet::SSL::Host.indirection.terminus_class = :file
19
-
20
20
  # Get a safe temporary file
21
21
  dir = tmpdir("ssl_host_testing")
22
22
  Puppet.settings[:confdir] = dir
@@ -29,7 +29,6 @@ describe Puppet::SSL::Host do
29
29
  after do
30
30
  # Cleaned out any cached localhost instance.
31
31
  Puppet::SSL::Host.reset
32
- Puppet::SSL::Host.ca_location = :none
33
32
  end
34
33
 
35
34
  it "should use any provided name as its name" do
@@ -37,80 +36,68 @@ describe Puppet::SSL::Host do
37
36
  end
38
37
 
39
38
  it "should retrieve its public key from its private key" do
40
- realkey = mock 'realkey'
41
- key = stub 'key', :content => realkey
42
- Puppet::SSL::Key.indirection.stubs(:find).returns(key)
43
- pubkey = mock 'public_key'
44
- realkey.expects(:public_key).returns pubkey
39
+ realkey = double('realkey')
40
+ key = double('key', :content => realkey)
41
+ allow(Puppet::SSL::Key.indirection).to receive(:find).and_return(key)
42
+ pubkey = double('public_key')
43
+ expect(realkey).to receive(:public_key).and_return(pubkey)
45
44
 
46
45
  expect(@host.public_key).to equal(pubkey)
47
46
  end
48
47
 
49
- it "should default to being a non-ca host" do
50
- expect(@host.ca?).to be_falsey
51
- end
52
-
53
- it "should be a ca host if its name matches the CA_NAME" do
54
- Puppet::SSL::Host.stubs(:ca_name).returns "yayca"
55
- expect(Puppet::SSL::Host.new("yayca")).to be_ca
56
- end
57
-
58
- it "should have a method for determining the CA location" do
59
- expect(Puppet::SSL::Host).to respond_to(:ca_location)
60
- end
61
-
62
- it "should have a method for specifying the CA location" do
63
- expect(Puppet::SSL::Host).to respond_to(:ca_location=)
64
- end
48
+ describe 'localhost' do
49
+ before(:each) do
50
+ allow_any_instance_of(Puppet::SSL::Host).to receive(:certificate).and_return(nil)
51
+ allow_any_instance_of(Puppet::SSL::Host).to receive(:generate)
52
+ end
65
53
 
66
- it "should have a method for retrieving the default ssl host" do
67
- expect(Puppet::SSL::Host).to respond_to(:ca_location=)
68
- end
54
+ it "is deprecated" do
55
+ Puppet::SSL::Host.localhost
69
56
 
70
- it "should have a method for producing an instance to manage the local host's keys" do
71
- expect(Puppet::SSL::Host).to respond_to(:localhost)
72
- end
57
+ expect(@logs).to include(an_object_having_attributes(message: /Puppet::SSL::Host is deprecated/))
58
+ end
73
59
 
74
- it "should allow to reset localhost" do
75
- previous_host = Puppet::SSL::Host.localhost
76
- Puppet::SSL::Host.reset
77
- expect(Puppet::SSL::Host.localhost).not_to eq(previous_host)
78
- end
60
+ it "should allow to reset localhost" do
61
+ previous_host = Puppet::SSL::Host.localhost
62
+ Puppet::SSL::Host.reset
63
+ expect(Puppet::SSL::Host.localhost).not_to eq(previous_host)
64
+ end
79
65
 
80
- it "should generate the certificate for the localhost instance if no certificate is available" do
81
- host = stub 'host', :key => nil
82
- Puppet::SSL::Host.expects(:new).returns host
66
+ it "should generate the certificate for the localhost instance if no certificate is available" do
67
+ host = double('host', :key => nil)
68
+ expect(Puppet::SSL::Host).to receive(:new).and_return(host)
83
69
 
84
- host.expects(:certificate).returns nil
85
- host.expects(:generate)
70
+ expect(host).to receive(:certificate).and_return(nil)
71
+ expect(host).to receive(:generate)
86
72
 
87
- expect(Puppet::SSL::Host.localhost).to equal(host)
88
- end
73
+ expect(Puppet::SSL::Host.localhost).to equal(host)
74
+ end
89
75
 
90
- it "should create a localhost cert if no cert is available and it is a CA with autosign and it is using DNS alt names", :unless => Puppet.features.microsoft_windows? do
91
- Puppet[:autosign] = true
92
- Puppet[:confdir] = tmpdir('conf')
93
- Puppet[:dns_alt_names] = "foo,bar,baz"
94
- ca = Puppet::SSL::CertificateAuthority.new
95
- Puppet::SSL::CertificateAuthority.stubs(:instance).returns ca
76
+ it "should always read the key for the localhost instance in from disk" do
77
+ host = double('host', :certificate => "eh")
78
+ expect(host).to receive(:key)
79
+ expect(Puppet::SSL::Host).to receive(:new).and_return(host)
96
80
 
97
- localhost = Puppet::SSL::Host.localhost
98
- cert = localhost.certificate
81
+ Puppet::SSL::Host.localhost
82
+ end
99
83
 
100
- expect(cert).to be_a(Puppet::SSL::Certificate)
101
- expect(cert.subject_alt_names).to match_array(%W[DNS:#{Puppet[:certname]} DNS:foo DNS:bar DNS:baz])
84
+ it "should cache the localhost instance" do
85
+ host = double('host', :certificate => "eh", :key => 'foo')
86
+ expect(Puppet::SSL::Host).to receive(:new).once.and_return(host)
87
+ expect(Puppet::SSL::Host.localhost).to eq(Puppet::SSL::Host.localhost)
88
+ end
102
89
  end
103
90
 
104
91
  context "with dns_alt_names" do
105
92
  before :each do
106
- @key = stub('key content')
107
- key = stub('key', :generate => true, :content => @key)
108
- Puppet::SSL::Key.stubs(:new).returns key
109
- Puppet::SSL::Key.indirection.stubs(:save).with(key)
93
+ @key = double('key content')
94
+ key = double('key', :generate => true, :content => @key)
95
+ allow(Puppet::SSL::Key).to receive(:new).and_return(key)
96
+ allow(Puppet::SSL::Key.indirection).to receive(:save).with(key)
110
97
 
111
- @cr = stub('certificate request')
112
- Puppet::SSL::CertificateRequest.stubs(:new).returns @cr
113
- Puppet::SSL::CertificateRequest.indirection.stubs(:save).with(@cr)
98
+ @cr = double('certificate request', :render => "csr pem")
99
+ allow(Puppet::SSL::CertificateRequest).to receive(:new).and_return(@cr)
100
+ allow_any_instance_of(Puppet::SSL::Host).to receive(:submit_certificate_request)
114
101
  end
115
102
 
116
103
  describe "explicitly specified" do
@@ -119,78 +106,17 @@ describe Puppet::SSL::Host do
119
106
  end
120
107
 
121
108
  it "should not include subjectAltName if not the local node" do
122
- @cr.expects(:generate).with(@key, {})
109
+ expect(@cr).to receive(:generate).with(@key, {})
123
110
 
124
- Puppet::SSL::Host.new('not-the-' + Puppet[:certname]).generate
111
+ Puppet::SSL::Host.new('not-the-' + Puppet[:certname]).generate_certificate_request
125
112
  end
126
113
 
127
- it "should include subjectAltName if I am a CA" do
128
- @cr.expects(:generate).
129
- with(@key, { :dns_alt_names => Puppet[:dns_alt_names] })
114
+ it "should include subjectAltName if the local node" do
115
+ expect(@cr).to receive(:generate).with(@key, { :dns_alt_names => 'one, two' })
130
116
 
131
- Puppet::SSL::Host.localhost
117
+ Puppet::SSL::Host.new(Puppet[:certname]).generate_certificate_request
132
118
  end
133
119
  end
134
-
135
- describe "implicitly defaulted" do
136
- let(:ca) { stub('ca', :sign => nil) }
137
-
138
- before :each do
139
- Puppet[:dns_alt_names] = ''
140
-
141
- Puppet::SSL::CertificateAuthority.stubs(:instance).returns ca
142
- end
143
-
144
- it "should not include defaults if we're not the CA" do
145
- Puppet::SSL::CertificateAuthority.stubs(:ca?).returns false
146
-
147
- @cr.expects(:generate).with(@key, {})
148
-
149
- Puppet::SSL::Host.localhost
150
- end
151
-
152
- it "should not include defaults if not the local node" do
153
- Puppet::SSL::CertificateAuthority.stubs(:ca?).returns true
154
-
155
- @cr.expects(:generate).with(@key, {})
156
-
157
- Puppet::SSL::Host.new('not-the-' + Puppet[:certname]).generate
158
- end
159
-
160
- it "should not include defaults if we can't resolve our fqdn" do
161
- Puppet::SSL::CertificateAuthority.stubs(:ca?).returns true
162
- Facter.stubs(:value).with(:fqdn).returns nil
163
-
164
- @cr.expects(:generate).with(@key, {})
165
-
166
- Puppet::SSL::Host.localhost
167
- end
168
-
169
- it "should provide defaults if we're bootstrapping the local master" do
170
- Puppet::SSL::CertificateAuthority.stubs(:ca?).returns true
171
- Facter.stubs(:value).with(:fqdn).returns 'web.foo.com'
172
- Facter.stubs(:value).with(:domain).returns 'foo.com'
173
-
174
- @cr.expects(:generate).with(@key, {:dns_alt_names => "puppet, web.foo.com, puppet.foo.com"})
175
-
176
- Puppet::SSL::Host.localhost
177
- end
178
- end
179
- end
180
-
181
- it "should always read the key for the localhost instance in from disk" do
182
- host = stub 'host', :certificate => "eh"
183
- Puppet::SSL::Host.expects(:new).returns host
184
-
185
- host.expects(:key)
186
-
187
- Puppet::SSL::Host.localhost
188
- end
189
-
190
- it "should cache the localhost instance" do
191
- host = stub 'host', :certificate => "eh", :key => 'foo'
192
- Puppet::SSL::Host.expects(:new).once.returns host
193
- expect(Puppet::SSL::Host.localhost).to eq(Puppet::SSL::Host.localhost)
194
120
  end
195
121
 
196
122
  it "should be able to verify its certificate matches its key" do
@@ -199,177 +125,56 @@ describe Puppet::SSL::Host do
199
125
 
200
126
  it "should consider the certificate invalid if it cannot find a key" do
201
127
  host = Puppet::SSL::Host.new("foo")
202
- certificate = mock('cert', :fingerprint => 'DEADBEEF')
203
- host.expects(:certificate).twice.returns certificate
204
- host.expects(:key).returns nil
205
- expect { host.validate_certificate_with_key }.to raise_error(Puppet::Error, "No private key with which to validate certificate with fingerprint: DEADBEEF")
128
+ certificate = double('cert', :fingerprint => 'DEADBEEF')
129
+ expect(host).to receive(:key).and_return(nil)
130
+ expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, "No private key with which to validate certificate with fingerprint: DEADBEEF")
206
131
  end
207
132
 
208
133
  it "should consider the certificate invalid if it cannot find a certificate" do
209
134
  host = Puppet::SSL::Host.new("foo")
210
- host.expects(:key).never
211
- host.expects(:certificate).returns nil
212
- expect { host.validate_certificate_with_key }.to raise_error(Puppet::Error, "No certificate to validate.")
135
+ expect(host).not_to receive(:key)
136
+ expect { host.validate_certificate_with_key(nil) }.to raise_error(Puppet::Error, "No certificate to validate.")
213
137
  end
214
138
 
215
139
  it "should consider the certificate invalid if the SSL certificate's key verification fails" do
216
140
  host = Puppet::SSL::Host.new("foo")
217
- key = mock 'key', :content => "private_key"
218
- sslcert = mock 'sslcert'
219
- certificate = mock 'cert', {:content => sslcert, :fingerprint => 'DEADBEEF'}
220
- host.stubs(:key).returns key
221
- host.stubs(:certificate).returns certificate
222
- sslcert.expects(:check_private_key).with("private_key").returns false
223
- expect { host.validate_certificate_with_key }.to raise_error(Puppet::Error, /DEADBEEF/)
141
+ key = double('key', :content => "private_key")
142
+ sslcert = double('sslcert')
143
+ certificate = double('cert', {:content => sslcert, :fingerprint => 'DEADBEEF'})
144
+ allow(host).to receive(:key).and_return(key)
145
+ expect(sslcert).to receive(:check_private_key).with("private_key").and_return(false)
146
+ expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, /DEADBEEF/)
224
147
  end
225
148
 
226
149
  it "should consider the certificate valid if the SSL certificate's key verification succeeds" do
227
150
  host = Puppet::SSL::Host.new("foo")
228
- key = mock 'key', :content => "private_key"
229
- sslcert = mock 'sslcert'
230
- certificate = mock 'cert', :content => sslcert
231
- host.stubs(:key).returns key
232
- host.stubs(:certificate).returns certificate
233
- sslcert.expects(:check_private_key).with("private_key").returns true
234
- expect{ host.validate_certificate_with_key }.not_to raise_error
235
- end
236
-
237
- describe "when specifying the CA location" do
238
- it "should support the location ':local'" do
239
- expect { Puppet::SSL::Host.ca_location = :local }.not_to raise_error
240
- end
241
-
242
- it "should support the location ':remote'" do
243
- expect { Puppet::SSL::Host.ca_location = :remote }.not_to raise_error
244
- end
245
-
246
- it "should support the location ':none'" do
247
- expect { Puppet::SSL::Host.ca_location = :none }.not_to raise_error
248
- end
249
-
250
- it "should support the location ':only'" do
251
- expect { Puppet::SSL::Host.ca_location = :only }.not_to raise_error
252
- end
253
-
254
- it "should not support other modes" do
255
- expect { Puppet::SSL::Host.ca_location = :whatever }.to raise_error(ArgumentError)
256
- end
257
-
258
- describe "as 'local'" do
259
- before do
260
- Puppet::SSL::Host.ca_location = :local
261
- end
262
-
263
- it "should set the cache class for Certificate, CertificateRevocationList, and CertificateRequest as :file" do
264
- expect(Puppet::SSL::Certificate.indirection.cache_class).to eq(:file)
265
- expect(Puppet::SSL::CertificateRequest.indirection.cache_class).to eq(:file)
266
- expect(Puppet::SSL::CertificateRevocationList.indirection.cache_class).to eq(:file)
267
- end
268
-
269
- it "should set the terminus class for Key and Host as :file" do
270
- expect(Puppet::SSL::Key.indirection.terminus_class).to eq(:file)
271
- expect(Puppet::SSL::Host.indirection.terminus_class).to eq(:file)
272
- end
273
-
274
- it "should set the terminus class for Certificate, CertificateRevocationList, and CertificateRequest as :ca" do
275
- expect(Puppet::SSL::Certificate.indirection.terminus_class).to eq(:ca)
276
- expect(Puppet::SSL::CertificateRequest.indirection.terminus_class).to eq(:ca)
277
- expect(Puppet::SSL::CertificateRevocationList.indirection.terminus_class).to eq(:ca)
278
- end
279
- end
280
-
281
- describe "as 'remote'" do
282
- before do
283
- Puppet::SSL::Host.ca_location = :remote
284
- end
285
-
286
- it "should set the cache class for Certificate, CertificateRevocationList, and CertificateRequest as :file" do
287
- expect(Puppet::SSL::Certificate.indirection.cache_class).to eq(:file)
288
- expect(Puppet::SSL::CertificateRequest.indirection.cache_class).to eq(:file)
289
- expect(Puppet::SSL::CertificateRevocationList.indirection.cache_class).to eq(:file)
290
- end
291
-
292
- it "should set the terminus class for Key as :file" do
293
- expect(Puppet::SSL::Key.indirection.terminus_class).to eq(:file)
294
- end
295
-
296
- it "should set the terminus class for Host, Certificate, CertificateRevocationList, and CertificateRequest as :rest" do
297
- expect(Puppet::SSL::Host.indirection.terminus_class).to eq(:rest)
298
- expect(Puppet::SSL::Certificate.indirection.terminus_class).to eq(:rest)
299
- expect(Puppet::SSL::CertificateRequest.indirection.terminus_class).to eq(:rest)
300
- expect(Puppet::SSL::CertificateRevocationList.indirection.terminus_class).to eq(:rest)
301
- end
302
- end
303
-
304
- describe "as 'only'" do
305
- before do
306
- Puppet::SSL::Host.ca_location = :only
307
- end
308
-
309
- it "should set the terminus class for Key, Certificate, CertificateRevocationList, and CertificateRequest as :ca" do
310
- expect(Puppet::SSL::Key.indirection.terminus_class).to eq(:ca)
311
- expect(Puppet::SSL::Certificate.indirection.terminus_class).to eq(:ca)
312
- expect(Puppet::SSL::CertificateRequest.indirection.terminus_class).to eq(:ca)
313
- expect(Puppet::SSL::CertificateRevocationList.indirection.terminus_class).to eq(:ca)
314
- end
315
-
316
- it "should set the cache class for Certificate, CertificateRevocationList, and CertificateRequest to nil" do
317
- expect(Puppet::SSL::Certificate.indirection.cache_class).to be_nil
318
- expect(Puppet::SSL::CertificateRequest.indirection.cache_class).to be_nil
319
- expect(Puppet::SSL::CertificateRevocationList.indirection.cache_class).to be_nil
320
- end
321
-
322
- it "should set the terminus class for Host to :file" do
323
- expect(Puppet::SSL::Host.indirection.terminus_class).to eq(:file)
324
- end
325
- end
326
-
327
- describe "as 'none'" do
328
- before do
329
- Puppet::SSL::Host.ca_location = :none
330
- end
331
-
332
- it "should set the terminus class for Key, Certificate, CertificateRevocationList, and CertificateRequest as :file" do
333
- expect(Puppet::SSL::Key.indirection.terminus_class).to eq(:disabled_ca)
334
- expect(Puppet::SSL::Certificate.indirection.terminus_class).to eq(:disabled_ca)
335
- expect(Puppet::SSL::CertificateRequest.indirection.terminus_class).to eq(:disabled_ca)
336
- expect(Puppet::SSL::CertificateRevocationList.indirection.terminus_class).to eq(:disabled_ca)
337
- end
338
-
339
- it "should set the terminus class for Host to 'none'" do
340
- expect { Puppet::SSL::Host.indirection.terminus_class }.to raise_error(Puppet::DevError)
341
- end
342
- end
151
+ key = double('key', :content => "private_key")
152
+ sslcert = double('sslcert')
153
+ certificate = double('cert', :content => sslcert)
154
+ allow(host).to receive(:key).and_return(key)
155
+ expect(sslcert).to receive(:check_private_key).with("private_key").and_return(true)
156
+ expect{ host.validate_certificate_with_key(certificate) }.not_to raise_error
343
157
  end
344
158
 
345
- it "should have a class method for destroying all files related to a given host" do
346
- expect(Puppet::SSL::Host).to respond_to(:destroy)
159
+ it "should output agent-specific commands when validation fails" do
160
+ host = Puppet::SSL::Host.new("foo")
161
+ key = double('key', :content => "private_key")
162
+ sslcert = double('sslcert')
163
+ certificate = double('cert', {:content => sslcert, :fingerprint => 'DEADBEEF'})
164
+ allow(host).to receive(:key).and_return(key)
165
+ expect(sslcert).to receive(:check_private_key).with("private_key").and_return(false)
166
+ expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, /puppet ssl clean \n/)
347
167
  end
348
168
 
349
- describe "when destroying a host's SSL files" do
350
- before do
351
- Puppet::SSL::Key.indirection.stubs(:destroy).returns false
352
- Puppet::SSL::Certificate.indirection.stubs(:destroy).returns false
353
- Puppet::SSL::CertificateRequest.indirection.stubs(:destroy).returns false
354
- end
355
-
356
- it "should destroy its certificate, certificate request, and key" do
357
- Puppet::SSL::Key.indirection.expects(:destroy).with("myhost")
358
- Puppet::SSL::Certificate.indirection.expects(:destroy).with("myhost")
359
- Puppet::SSL::CertificateRequest.indirection.expects(:destroy).with("myhost")
360
-
361
- Puppet::SSL::Host.destroy("myhost")
362
- end
363
-
364
- it "should return true if any of the classes returned true" do
365
- Puppet::SSL::Certificate.indirection.expects(:destroy).with("myhost").returns true
366
-
367
- expect(Puppet::SSL::Host.destroy("myhost")).to be_truthy
368
- end
369
-
370
- it "should report that nothing was deleted if none of the classes returned true" do
371
- expect(Puppet::SSL::Host.destroy("myhost")).to eq("Nothing was deleted")
372
- end
169
+ it "should output device-specific commands when validation fails" do
170
+ Puppet[:certname] = "device.example.com"
171
+ host = Puppet::SSL::Host.new("device.example.com", true)
172
+ key = double('key', :content => "private_key")
173
+ sslcert = double('sslcert')
174
+ certificate = double('cert', {:content => sslcert, :fingerprint => 'DEADBEEF'})
175
+ allow(host).to receive(:key).and_return(key)
176
+ expect(sslcert).to receive(:check_private_key).with("private_key").and_return(false)
177
+ expect { host.validate_certificate_with_key(certificate) }.to raise_error(Puppet::Error, /puppet ssl clean --target device.example.com/)
373
178
  end
374
179
 
375
180
  describe "when initializing" do
@@ -382,11 +187,6 @@ describe Puppet::SSL::Host do
382
187
  it "should downcase a passed in name" do
383
188
  expect(Puppet::SSL::Host.new("Host.Domain.Com").name).to eq("host.domain.com")
384
189
  end
385
-
386
- it "should indicate that it is a CA host if its name matches the ca_name constant" do
387
- Puppet::SSL::Host.stubs(:ca_name).returns "myca"
388
- expect(Puppet::SSL::Host.new("myca")).to be_ca
389
- end
390
190
  end
391
191
 
392
192
  describe "when managing its private key" do
@@ -397,104 +197,98 @@ describe Puppet::SSL::Host do
397
197
  end
398
198
 
399
199
  it "should return nil if the key is not set and cannot be found" do
400
- Puppet::SSL::Key.indirection.expects(:find).with("myname").returns(nil)
200
+ expect(Puppet::SSL::Key.indirection).to receive(:find).with("myname").and_return(nil)
401
201
  expect(@host.key).to be_nil
402
202
  end
403
203
 
404
204
  it "should find the key in the Key class and return the Puppet instance" do
405
- Puppet::SSL::Key.indirection.expects(:find).with("myname").returns(@key)
205
+ expect(Puppet::SSL::Key.indirection).to receive(:find).with("myname").and_return(@key)
406
206
  expect(@host.key).to equal(@key)
407
207
  end
408
208
 
409
209
  it "should be able to generate and save a new key" do
410
- Puppet::SSL::Key.expects(:new).with("myname").returns(@key)
210
+ expect(Puppet::SSL::Key).to receive(:new).with("myname").and_return(@key)
411
211
 
412
- @key.expects(:generate)
413
- Puppet::SSL::Key.indirection.expects(:save)
212
+ expect(@key).to receive(:generate)
213
+ expect(Puppet::SSL::Key.indirection).to receive(:save)
414
214
 
415
215
  expect(@host.generate_key).to be_truthy
416
216
  expect(@host.key).to equal(@key)
417
217
  end
418
218
 
419
219
  it "should not retain keys that could not be saved" do
420
- Puppet::SSL::Key.expects(:new).with("myname").returns(@key)
220
+ expect(Puppet::SSL::Key).to receive(:new).with("myname").and_return(@key)
421
221
 
422
- @key.stubs(:generate)
423
- Puppet::SSL::Key.indirection.expects(:save).raises "eh"
222
+ expect(@key).to receive(:generate)
223
+ expect(Puppet::SSL::Key.indirection).to receive(:save).and_raise("eh")
424
224
 
425
225
  expect { @host.generate_key }.to raise_error(RuntimeError)
426
226
  expect(@host.key).to be_nil
427
227
  end
428
228
 
429
229
  it "should return any previously found key without requerying" do
430
- Puppet::SSL::Key.indirection.expects(:find).with("myname").returns(@key).once
230
+ expect(Puppet::SSL::Key.indirection).to receive(:find).with("myname").and_return(@key).once
431
231
  expect(@host.key).to equal(@key)
432
232
  expect(@host.key).to equal(@key)
433
233
  end
434
234
  end
435
235
 
436
236
  describe "when managing its certificate request" do
437
- before do
438
- @realrequest = "real request"
439
- @request = Puppet::SSL::CertificateRequest.new("myname")
440
- @request.content = @realrequest
237
+ before(:all) do
238
+ @pki = PuppetSpec::SSL.create_chained_pki
441
239
  end
442
240
 
443
- it "should return nil if the key is not set and cannot be found" do
444
- Puppet::SSL::CertificateRequest.indirection.expects(:find).with("myname").returns(nil)
445
- expect(@host.certificate_request).to be_nil
241
+ before(:each) do
242
+ Puppet[:requestdir] = tmpdir('requests')
446
243
  end
447
244
 
448
- it "should find the request in the Key class and return it and return the Puppet SSL request" do
449
- Puppet::SSL::CertificateRequest.indirection.expects(:find).with("myname").returns @request
450
-
451
- expect(@host.certificate_request).to equal(@request)
452
- end
245
+ let(:key) { Puppet::SSL::Key.from_s(@pki[:leaf_key].to_s, @host.name) }
453
246
 
454
247
  it "should generate a new key when generating the cert request if no key exists" do
455
- Puppet::SSL::CertificateRequest.expects(:new).with("myname").returns @request
456
-
457
- key = stub 'key', :public_key => mock("public_key"), :content => "mycontent"
248
+ expect(@host).to receive(:key).exactly(2).times.and_return(nil, key)
249
+ expect(@host).to receive(:generate_key).and_return(key)
458
250
 
459
- @host.expects(:key).times(2).returns(nil).then.returns(key)
460
- @host.expects(:generate_key).returns(key)
461
-
462
- @request.stubs(:generate)
463
- Puppet::SSL::CertificateRequest.indirection.stubs(:save)
251
+ allow(@host).to receive(:submit_certificate_request)
464
252
 
465
253
  @host.generate_certificate_request
254
+ expect(Puppet::FileSystem.exist?(File.join(Puppet[:requestdir], "#{@host.name}.pem"))).to be true
466
255
  end
467
256
 
468
257
  it "should be able to generate and save a new request using the private key" do
469
- Puppet::SSL::CertificateRequest.expects(:new).with("myname").returns @request
470
-
471
- key = stub 'key', :public_key => mock("public_key"), :content => "mycontent"
472
- @host.stubs(:key).returns(key)
473
- @request.expects(:generate).with("mycontent", {})
474
- Puppet::SSL::CertificateRequest.indirection.expects(:save).with(@request)
258
+ allow(@host).to receive(:key).and_return(key)
259
+ allow(@host).to receive(:submit_certificate_request)
475
260
 
476
261
  expect(@host.generate_certificate_request).to be_truthy
477
- expect(@host.certificate_request).to equal(@request)
262
+ expect(Puppet::FileSystem.exist?(File.join(Puppet[:requestdir], "#{@host.name}.pem"))).to be true
263
+ end
264
+
265
+ it "should send a new request to the CA for signing" do
266
+ allow(@host).to receive(:ssl_store).and_return(double("ssl store"))
267
+ allow(@host).to receive(:key).and_return(key)
268
+ request = double("request")
269
+ allow(request).to receive(:generate)
270
+ expect(request).to receive(:render).and_return("my request").twice
271
+ expect(Puppet::SSL::CertificateRequest).to receive(:new).and_return(request)
272
+
273
+ expect(Puppet::Rest::Routes).to receive(:put_certificate_request)
274
+ .with("my request", @host.name, anything)
275
+ .and_return(nil)
276
+
277
+ expect(@host.generate_certificate_request).to be true
478
278
  end
479
279
 
480
280
  it "should return any previously found request without requerying" do
481
- Puppet::SSL::CertificateRequest.indirection.expects(:find).with("myname").returns(@request).once
281
+ request = double("request")
282
+ expect(@host).to receive(:load_certificate_request_from_file).and_return(request).once
482
283
 
483
- expect(@host.certificate_request).to equal(@request)
484
- expect(@host.certificate_request).to equal(@request)
284
+ expect(@host.certificate_request).to equal(request)
285
+ expect(@host.certificate_request).to equal(request)
485
286
  end
486
287
 
487
288
  it "should not keep its certificate request in memory if the request cannot be saved" do
488
- Puppet::SSL::CertificateRequest.expects(:new).with("myname").returns @request
489
-
490
- key = stub 'key', :public_key => mock("public_key"), :content => "mycontent"
491
- @host.stubs(:key).returns(key)
492
- @request.stubs(:generate)
493
- @request.stubs(:name).returns("myname")
494
- terminus = stub 'terminus'
495
- terminus.stubs(:validate)
496
- Puppet::SSL::CertificateRequest.indirection.expects(:prepare).returns(terminus)
497
- terminus.expects(:save).with { |req| req.instance == @request && req.key == "myname" }.raises "eh"
289
+ allow(@host).to receive(:key).and_return(key)
290
+ allow(@host).to receive(:submit_certificate_request)
291
+ expect(Puppet::Util).to receive(:replace_file).and_raise(RuntimeError)
498
292
 
499
293
  expect { @host.generate_certificate_request }.to raise_error(RuntimeError)
500
294
 
@@ -503,114 +297,113 @@ describe Puppet::SSL::Host do
503
297
  end
504
298
 
505
299
  describe "when managing its certificate" do
506
- before do
507
- @realcert = mock 'certificate'
508
- @cert = stub 'cert', :content => @realcert
509
- @host.stubs(:key).returns mock("key")
510
- @host.stubs(:validate_certificate_with_key)
300
+ before(:all) do
301
+ @pki = PuppetSpec::SSL.create_chained_pki
511
302
  end
512
303
 
513
- it "should find the CA certificate if it does not have a certificate" do
514
- Puppet::SSL::Certificate.indirection.expects(:find).with(Puppet::SSL::CA_NAME, :fail_on_404 => true).returns mock("cacert")
515
- Puppet::SSL::Certificate.indirection.stubs(:find).with("myname").returns @cert
516
- @host.certificate
304
+ before(:each) do
305
+ Puppet[:certdir] = tmpdir('certs')
306
+ allow(@host).to receive(:key).and_return(double("key"))
307
+ allow(@host).to receive(:validate_certificate_with_key)
308
+ allow(@host).to receive(:ssl_store).and_return(double("ssl store"))
517
309
  end
518
310
 
519
- it "should not find the CA certificate if it is the CA host" do
520
- @host.expects(:ca?).returns true
521
- Puppet::SSL::Certificate.indirection.stubs(:find)
522
- Puppet::SSL::Certificate.indirection.expects(:find).with(Puppet::SSL::CA_NAME, :fail_on_404 => true).never
311
+ let(:ca_cert_response) { @pki[:ca_bundle] }
312
+ let(:crl_response) { @pki[:crl_chain] }
313
+ let(:host_cert_response) { @pki[:unrevoked_leaf_node_cert] }
314
+
315
+ it "should find the CA certificate and save it to disk" do
316
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
317
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
318
+ stub_request(:get, %r{puppet-ca/v1/certificate/#{@host.name}}).to_return(status: 404)
523
319
 
524
320
  @host.certificate
321
+ actual_ca_bundle = Puppet::FileSystem.read(Puppet[:localcacert])
322
+ expect(actual_ca_bundle).to match(/BEGIN CERTIFICATE.*END CERTIFICATE.*BEGIN CERTIFICATE/m)
525
323
  end
526
324
 
527
- it "should return nil if it cannot find a CA certificate" do
528
- Puppet::SSL::Certificate.indirection.expects(:find).with(Puppet::SSL::CA_NAME, :fail_on_404 => true).returns nil
529
- Puppet::SSL::Certificate.indirection.expects(:find).with("myname").never
325
+ it "should raise if it cannot find a CA certificate" do
326
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 404)
530
327
 
531
- expect(@host.certificate).to be_nil
328
+ expect(@host).not_to receive(:get_host_certificate)
329
+
330
+ expect {
331
+ @host.certificate
332
+ }.to raise_error(Puppet::Error, /CA certificate is missing from the server/)
532
333
  end
533
334
 
534
335
  it "should find the key if it does not have one" do
535
- Puppet::SSL::Certificate.indirection.stubs(:find)
536
- @host.expects(:key).returns mock("key")
336
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
337
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
338
+
339
+ expect(@host).to receive(:get_host_certificate).and_return(nil)
340
+ expect(@host).to receive(:key).and_return(double("key"))
537
341
  @host.certificate
538
342
  end
539
343
 
540
344
  it "should generate the key if one cannot be found" do
541
- Puppet::SSL::Certificate.indirection.stubs(:find)
542
- @host.expects(:key).returns nil
543
- @host.expects(:generate_key)
345
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
346
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
347
+
348
+ expect(@host).to receive(:get_host_certificate).and_return(nil)
349
+ expect(@host).to receive(:key).and_return(nil)
350
+ expect(@host).to receive(:generate_key)
544
351
  @host.certificate
545
352
  end
546
353
 
547
- it "should find the certificate in the Certificate class and return the Puppet certificate instance" do
548
- Puppet::SSL::Certificate.indirection.expects(:find).with(Puppet::SSL::CA_NAME, :fail_on_404 => true).returns mock("cacert")
549
- Puppet::SSL::Certificate.indirection.expects(:find).with("myname").returns @cert
550
- expect(@host.certificate).to equal(@cert)
551
- end
354
+ it "should find the host certificate, write it to file, and return the Puppet certificate instance" do
355
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
356
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
357
+ stub_request(:get, %r{puppet-ca/v1/certificate/#{@host.name}}).to_return(status: 200, body: host_cert_response.to_pem)
552
358
 
553
- it "should return any previously found certificate" do
554
- Puppet::SSL::Certificate.indirection.expects(:find).with(Puppet::SSL::CA_NAME, :fail_on_404 => true).returns mock("cacert")
555
- Puppet::SSL::Certificate.indirection.expects(:find).with("myname").returns(@cert).once
556
-
557
- expect(@host.certificate).to equal(@cert)
558
- expect(@host.certificate).to equal(@cert)
359
+ expected_cert = Puppet::SSL::Certificate.from_s(@pki[:unrevoked_leaf_node_cert])
360
+ actual_cert = @host.certificate
361
+ expect(actual_cert).to be_a(Puppet::SSL::Certificate)
362
+ expect(actual_cert.to_s).to eq(expected_cert.to_s)
363
+ host_cert_from_file = Puppet::FileSystem.read(File.join(Puppet[:certdir], "#{@host.name}.pem"))
364
+ expect(host_cert_from_file).to eq(expected_cert.to_s)
559
365
  end
560
- end
561
-
562
- it "should have a method for listing certificate hosts" do
563
- expect(Puppet::SSL::Host).to respond_to(:search)
564
- end
565
366
 
566
- describe "when listing certificate hosts" do
567
- it "should default to listing all clients with any file types" do
568
- Puppet::SSL::Key.indirection.expects(:search).returns []
569
- Puppet::SSL::Certificate.indirection.expects(:search).returns []
570
- Puppet::SSL::CertificateRequest.indirection.expects(:search).returns []
571
- Puppet::SSL::Host.search
572
- end
367
+ it "should return any previously found certificate" do
368
+ cert = double('cert')
369
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
370
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
371
+ expect(@host).to receive(:get_host_certificate).and_return(cert).once
573
372
 
574
- it "should be able to list only clients with a key" do
575
- Puppet::SSL::Key.indirection.expects(:search).returns []
576
- Puppet::SSL::Certificate.indirection.expects(:search).never
577
- Puppet::SSL::CertificateRequest.indirection.expects(:search).never
578
- Puppet::SSL::Host.search :for => Puppet::SSL::Key
373
+ expect(@host.certificate).to equal(cert)
374
+ expect(@host.certificate).to equal(cert)
579
375
  end
580
376
 
581
- it "should be able to list only clients with a certificate" do
582
- Puppet::SSL::Key.indirection.expects(:search).never
583
- Puppet::SSL::Certificate.indirection.expects(:search).returns []
584
- Puppet::SSL::CertificateRequest.indirection.expects(:search).never
585
- Puppet::SSL::Host.search :for => Puppet::SSL::Certificate
586
- end
377
+ context 'invalid certificates' do
378
+ it "should raise if the CA certificate downloaded from CA is invalid" do
379
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: 'garbage')
587
380
 
588
- it "should be able to list only clients with a certificate request" do
589
- Puppet::SSL::Key.indirection.expects(:search).never
590
- Puppet::SSL::Certificate.indirection.expects(:search).never
591
- Puppet::SSL::CertificateRequest.indirection.expects(:search).returns []
592
- Puppet::SSL::Host.search :for => Puppet::SSL::CertificateRequest
593
- end
381
+ expect { @host.certificate }.to raise_error(OpenSSL::X509::CertificateError, /Failed to parse CA certificates as PEM/)
382
+ end
594
383
 
595
- it "should return a Host instance created with the name of each found instance" do
596
- key = stub 'key', :name => "key", :to_ary => nil
597
- cert = stub 'cert', :name => "cert", :to_ary => nil
598
- csr = stub 'csr', :name => "csr", :to_ary => nil
384
+ it "should warn if the host certificate downloaded from CA is invalid" do
385
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
386
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
387
+ stub_request(:get, %r{puppet-ca/v1/certificate/#{@host.name}}).to_return(status: 200, body: 'garbage')
599
388
 
600
- Puppet::SSL::Key.indirection.expects(:search).returns [key]
601
- Puppet::SSL::Certificate.indirection.expects(:search).returns [cert]
602
- Puppet::SSL::CertificateRequest.indirection.expects(:search).returns [csr]
389
+ expect { @host.certificate }.to raise_error(Puppet::Error, /did not contain a valid certificate for #{@host.name}/)
390
+ end
603
391
 
604
- returned = []
605
- %w{key cert csr}.each do |name|
606
- result = mock(name)
607
- returned << result
608
- Puppet::SSL::Host.expects(:new).with(name).returns result
392
+ it 'should warn if the CA certificate loaded from disk is invalid' do
393
+ Puppet::FileSystem.open(Puppet[:localcacert], nil, "w:ASCII") do |f|
394
+ f.puts 'garbage'
395
+ end
396
+ expect { @host.certificate }.to raise_error(OpenSSL::X509::CertificateError, /Failed to parse CA certificates as PEM/)
609
397
  end
610
398
 
611
- result = Puppet::SSL::Host.search
612
- returned.each do |r|
613
- expect(result).to be_include(r)
399
+ it 'should warn if the host certificate loaded from disk in invalid' do
400
+ stub_request(:get, %r{puppet-ca/v1/certificate/ca}).to_return(status: 200, body: ca_cert_response)
401
+ stub_request(:get, %r{puppet-ca/v1/certificate_revocation_list/ca}).to_return(status: 200, body: crl_response)
402
+
403
+ Puppet::FileSystem.open(File.join(Puppet[:certdir], "#{@host.name}.pem"), nil, "w:ASCII") do |f|
404
+ f.puts 'garbage'
405
+ end
406
+ expect { @host.certificate }.to raise_error(Puppet::Error, /The certificate.*invalid/)
614
407
  end
615
408
  end
616
409
  end
@@ -622,145 +415,151 @@ describe Puppet::SSL::Host do
622
415
  describe "when generating files" do
623
416
  before do
624
417
  @host = Puppet::SSL::Host.new("me")
625
- @host.stubs(:generate_key)
626
- @host.stubs(:generate_certificate_request)
418
+ allow(@host).to receive(:generate_key)
419
+ allow(@host).to receive(:generate_certificate_request)
420
+ allow(@host).to receive(:certificate_request)
421
+ allow(@host).to receive(:certificate)
627
422
  end
628
423
 
629
424
  it "should generate a key if one is not present" do
630
- @host.stubs(:key).returns nil
631
- @host.expects(:generate_key)
425
+ allow(@host).to receive(:key).and_return nil
426
+ expect(@host).to receive(:generate_key)
632
427
 
633
428
  @host.generate
634
429
  end
635
430
 
636
431
  it "should generate a certificate request if one is not present" do
637
- @host.expects(:certificate_request).returns nil
638
- @host.expects(:generate_certificate_request)
432
+ expect(@host).to receive(:certificate_request).and_return nil
433
+ expect(@host).to receive(:generate_certificate_request)
639
434
 
640
435
  @host.generate
641
436
  end
642
-
643
- describe "and it can create a certificate authority" do
644
- before do
645
- @ca = mock 'ca'
646
- Puppet::SSL::CertificateAuthority.stubs(:instance).returns @ca
647
- end
648
-
649
- it "should use the CA to sign its certificate request if it does not have a certificate" do
650
- @host.expects(:certificate).returns nil
651
-
652
- @ca.expects(:sign).with(@host.name, {allow_dns_alt_names: true})
653
-
654
- @host.generate
655
- end
656
- end
657
-
658
- describe "and it cannot create a certificate authority" do
659
- before do
660
- Puppet::SSL::CertificateAuthority.stubs(:instance).returns nil
661
- end
662
-
663
- it "should seek its certificate" do
664
- @host.expects(:certificate)
665
-
666
- @host.generate
667
- end
668
- end
669
437
  end
670
438
 
671
439
  it "should have a method for creating an SSL store" do
672
440
  expect(Puppet::SSL::Host.new("me")).to respond_to(:ssl_store)
673
441
  end
674
442
 
675
- it "should always return the same store" do
676
- host = Puppet::SSL::Host.new("foo")
677
- store = mock 'store'
678
- store.stub_everything
679
- OpenSSL::X509::Store.expects(:new).returns store
680
- expect(host.ssl_store).to equal(host.ssl_store)
681
- end
682
-
683
443
  describe "when creating an SSL store" do
684
444
  before do
685
- @host = Puppet::SSL::Host.new("me")
686
- @store = mock 'store'
687
- @store.stub_everything
688
- OpenSSL::X509::Store.stubs(:new).returns @store
689
-
690
445
  Puppet[:localcacert] = "ssl_host_testing"
691
-
692
- Puppet::SSL::CertificateRevocationList.indirection.stubs(:find).returns(nil)
693
446
  end
694
447
 
695
448
  it "should accept a purpose" do
696
- @store.expects(:purpose=).with "my special purpose"
697
- @host.ssl_store("my special purpose")
698
- end
449
+ store = double('store', :add_file => nil)
450
+ expect(OpenSSL::X509::Store).to receive(:new).and_return(store)
451
+ expect(store).to receive(:purpose=).with(OpenSSL::X509::PURPOSE_SSL_SERVER)
452
+ host = Puppet::SSL::Host.new("me")
453
+ host.crl_usage = false
699
454
 
700
- it "should default to OpenSSL::X509::PURPOSE_ANY as the purpose" do
701
- @store.expects(:purpose=).with OpenSSL::X509::PURPOSE_ANY
702
- @host.ssl_store
455
+ host.ssl_store(OpenSSL::X509::PURPOSE_SSL_SERVER)
703
456
  end
704
457
 
705
- it "should add the local CA cert file" do
706
- Puppet[:localcacert] = "/ca/cert/file"
707
- @store.expects(:add_file).with Puppet[:localcacert]
708
- @host.ssl_store
458
+ context "and the CRL is not on disk" do
459
+ before do
460
+ @pki = PuppetSpec::SSL.create_chained_pki
461
+ @revoked_cert = @pki[:revoked_root_node_cert]
462
+ localcacert = Puppet.settings[:localcacert]
463
+ Puppet::Util.replace_file(localcacert, 0644) {|f| f.write @pki[:ca_bundle] }
464
+ end
465
+
466
+ after do
467
+ Puppet::FileSystem.unlink(Puppet.settings[:localcacert])
468
+ Puppet::FileSystem.unlink(Puppet.settings[:hostcrl])
469
+ end
470
+
471
+ it "retrieves it from the server" do
472
+ expect(Puppet::Rest::Routes).to receive(:get_crls)
473
+ .with(Puppet::SSL::CA_NAME, anything)
474
+ .and_return(@pki[:crl_chain])
475
+
476
+ @host.ssl_store
477
+ expect(Puppet::FileSystem.read(Puppet.settings[:hostcrl], :encoding => Encoding::UTF_8)).to eq(@pki[:crl_chain])
478
+ end
709
479
  end
710
480
 
711
481
  describe "and a CRL is available" do
712
482
  before do
713
- @crl = stub 'crl', :content => "real_crl"
714
- Puppet::SSL::CertificateRevocationList.indirection.stubs(:find).returns @crl
483
+ pki = PuppetSpec::SSL.create_chained_pki
484
+
485
+ @revoked_cert_from_self_signed_root = pki[:revoked_root_node_cert]
486
+ @revoked_cert_from_ca_with_untrusted_chain = pki[:revoked_leaf_node_cert]
487
+ @unrevoked_cert_from_self_signed_root = pki[:unrevoked_root_node_cert]
488
+ @unrevoked_cert_from_revoked_ca = pki[:unrevoked_int_node_cert]
489
+ @unrevoked_cert_from_ca_with_untrusted_chain = pki[:unrevoked_leaf_node_cert]
490
+
491
+ localcacert = Puppet.settings[:localcacert]
492
+ hostcrl = Puppet.settings[:hostcrl]
493
+
494
+ Puppet::Util.replace_file(localcacert, 0644) {|f| f.write pki[:ca_bundle] }
495
+ Puppet::Util.replace_file(hostcrl, 0644) {|f| f.write pki[:crl_chain] }
715
496
  end
716
497
 
717
- [true, 'chain'].each do |crl_setting|
498
+ after do
499
+ Puppet::FileSystem.unlink(Puppet.settings[:localcacert])
500
+ Puppet::FileSystem.unlink(Puppet.settings[:hostcrl])
501
+ end
502
+
503
+ [true, :chain].each do |crl_setting|
718
504
  describe "and 'certificate_revocation' is #{crl_setting}" do
719
505
  before do
720
- Puppet[:certificate_revocation] = crl_setting
506
+ @host = Puppet::SSL::Host.new(crl_setting.to_s)
507
+ @host.crl_usage = crl_setting
721
508
  end
722
509
 
723
- it "should add the CRL" do
724
- @store.expects(:add_crl).with "real_crl"
725
- @host.ssl_store
510
+ it "should verify unrevoked certs" do
511
+ expect(
512
+ @host.ssl_store.verify(@unrevoked_cert_from_self_signed_root)
513
+ ).to be true
726
514
  end
727
515
 
728
- it "should set the flags to OpenSSL::X509::V_FLAG_CRL_CHECK_ALL|OpenSSL::X509::V_FLAG_CRL_CHECK" do
729
- @store.expects(:flags=).with(OpenSSL::X509::V_FLAG_CRL_CHECK_ALL|OpenSSL::X509::V_FLAG_CRL_CHECK)
730
- @host.ssl_store
516
+ it "should not verify revoked certs" do
517
+ [@revoked_cert_from_self_signed_root,
518
+ @revoked_cert_from_ca_with_untrusted_chain,
519
+ @unrevoked_cert_from_revoked_ca,
520
+ @unrevoked_cert_from_ca_with_untrusted_chain].each do |cert|
521
+ expect(@host.ssl_store.verify(cert)).to be false
522
+ end
731
523
  end
732
524
  end
733
525
  end
734
526
 
735
527
  describe "and 'certificate_revocation' is leaf" do
736
528
  before do
737
- Puppet[:certificate_revocation] = 'leaf'
529
+ @host = Puppet::SSL::Host.new("leaf")
530
+ @host.crl_usage = :leaf
738
531
  end
739
532
 
740
- it "should add the CRL" do
741
- @store.expects(:add_crl).with "real_crl"
742
- @host.ssl_store
533
+ it "should verify unrevoked certs regardless of signing CA's revocation status" do
534
+ [@unrevoked_cert_from_self_signed_root,
535
+ @unrevoked_cert_from_revoked_ca,
536
+ @unrevoked_cert_from_ca_with_untrusted_chain].each do |cert|
537
+ expect(@host.ssl_store.verify(cert)).to be true
538
+ end
743
539
  end
744
540
 
745
- it "should set the flags to OpenSSL::X509::V_FLAG_CRL_CHECK" do
746
- @store.expects(:flags=).with(OpenSSL::X509::V_FLAG_CRL_CHECK)
747
- @host.ssl_store
541
+ it "should not verify certs revoked by their signing CA" do
542
+ [@revoked_cert_from_self_signed_root,
543
+ @revoked_cert_from_ca_with_untrusted_chain].each do |cert|
544
+ expect(@host.ssl_store.verify(cert)).to be false
545
+ end
748
546
  end
749
547
  end
750
548
 
751
549
  describe "and 'certificate_revocation' is false" do
752
550
  before do
753
- Puppet[:certificate_revocation] = false
754
- end
755
-
756
- it "should not add the CRL" do
757
- @store.expects(:add_crl).never
758
- @host.ssl_store
551
+ @host = Puppet::SSL::Host.new("host")
552
+ @host.crl_usage = false
759
553
  end
760
554
 
761
- it "should not set the flags" do
762
- @store.expects(:flags=).never
763
- @host.ssl_store
555
+ it "should verify valid certs regardless of revocation status" do
556
+ [@revoked_cert_from_self_signed_root,
557
+ @revoked_cert_from_ca_with_untrusted_chain,
558
+ @unrevoked_cert_from_self_signed_root,
559
+ @unrevoked_cert_from_revoked_ca,
560
+ @unrevoked_cert_from_ca_with_untrusted_chain].each do |cert|
561
+ expect(@host.ssl_store.verify(cert)).to be true
562
+ end
764
563
  end
765
564
  end
766
565
  end
@@ -772,187 +571,75 @@ describe Puppet::SSL::Host do
772
571
  end
773
572
 
774
573
  it "should generate its certificate request and attempt to read the certificate again if no certificate is found" do
775
- @host.expects(:certificate).times(2).returns(nil).then.returns "foo"
776
- @host.expects(:generate)
574
+ expect(@host).to receive(:certificate).twice.and_return(nil, "foo")
575
+ expect(@host).to receive(:generate)
777
576
  @host.wait_for_cert(1)
778
577
  end
779
578
 
780
579
  it "should catch and log errors during CSR saving" do
781
- @host.expects(:certificate).times(2).returns(nil).then.returns "foo"
782
- @host.expects(:generate).raises(RuntimeError).then.returns nil
783
- @host.stubs(:sleep)
580
+ expect(@host).to receive(:certificate).twice.and_return(nil, "foo")
581
+ times_generate_called = 0
582
+ expect(@host).to receive(:generate) do
583
+ times_generate_called += 1
584
+ raise RuntimeError if times_generate_called == 1
585
+ nil
586
+ end
587
+ allow(@host).to receive(:sleep)
784
588
  @host.wait_for_cert(1)
785
589
  end
786
590
 
787
591
  it "should sleep and retry after failures saving the CSR if waitforcert is enabled" do
788
- @host.expects(:certificate).times(2).returns(nil).then.returns "foo"
789
- @host.expects(:generate).raises(RuntimeError).then.returns nil
790
- @host.expects(:sleep).with(1)
592
+ expect(@host).to receive(:certificate).twice.and_return(nil, "foo")
593
+ times_generate_called = 0
594
+ expect(@host).to receive(:generate) do
595
+ times_generate_called += 1
596
+ raise RuntimeError if times_generate_called == 1
597
+ nil
598
+ end
599
+ expect(@host).to receive(:sleep).with(1)
791
600
  @host.wait_for_cert(1)
792
601
  end
793
602
 
794
603
  it "should exit after failures saving the CSR of waitforcert is disabled" do
795
- @host.expects(:certificate).returns(nil)
796
- @host.expects(:generate).raises(RuntimeError)
797
- @host.expects(:puts)
604
+ expect(@host).to receive(:certificate).and_return(nil)
605
+ expect(@host).to receive(:generate).and_raise(RuntimeError)
606
+ expect(@host).to receive(:puts)
798
607
  expect { @host.wait_for_cert(0) }.to exit_with 1
799
608
  end
800
609
 
801
610
  it "should exit if the wait time is 0 and it can neither find nor retrieve a certificate" do
802
- @host.stubs(:certificate).returns nil
803
- @host.expects(:generate)
804
- @host.expects(:puts)
611
+ allow(@host).to receive(:certificate).and_return(nil)
612
+ expect(@host).to receive(:generate)
613
+ expect(@host).to receive(:puts)
805
614
  expect { @host.wait_for_cert(0) }.to exit_with 1
806
615
  end
807
616
 
808
617
  it "should sleep for the specified amount of time if no certificate is found after generating its certificate request" do
809
- @host.expects(:certificate).times(3).returns(nil).then.returns(nil).then.returns "foo"
810
- @host.expects(:generate)
618
+ expect(@host).to receive(:certificate).exactly(3).times().and_return(nil, nil, "foo")
619
+ expect(@host).to receive(:generate)
811
620
 
812
- @host.expects(:sleep).with(1)
621
+ expect(@host).to receive(:sleep).with(1)
813
622
 
814
623
  @host.wait_for_cert(1)
815
624
  end
816
625
 
817
626
  it "should catch and log exceptions during certificate retrieval" do
818
- @host.expects(:certificate).times(3).returns(nil).then.raises(RuntimeError).then.returns("foo")
819
- @host.stubs(:generate)
820
- @host.stubs(:sleep)
821
-
822
- Puppet.expects(:err)
823
-
824
- @host.wait_for_cert(1)
825
- end
826
- end
827
-
828
- describe "when handling JSON", :unless => Puppet.features.microsoft_windows? do
829
- include PuppetSpec::Files
830
-
831
- before do
832
- Puppet[:vardir] = tmpdir("ssl_test_vardir")
833
- Puppet[:ssldir] = tmpdir("ssl_test_ssldir")
834
- # localcacert is where each client stores the CA certificate
835
- # cacert is where the master stores the CA certificate
836
- # Since we need to play the role of both for testing we need them to be the same and exist
837
- Puppet[:cacert] = Puppet[:localcacert]
838
-
839
- @ca=Puppet::SSL::CertificateAuthority.new
840
- end
841
-
842
- describe "when converting to JSON" do
843
- let(:host) do
844
- Puppet::SSL::Host.new("bazinga")
845
- end
846
-
847
- let(:json_hash) do
848
- {
849
- "fingerprint" => host.certificate_request.fingerprint,
850
- "desired_state" => 'requested',
851
- "name" => host.name
852
- }
853
- end
854
-
855
- it "should be able to identify a host with an unsigned certificate request" do
856
- host.generate_certificate_request
857
-
858
- result = JSON.parse(Puppet::SSL::Host.new(host.name).to_json)
859
-
860
- base_json_comparison result, json_hash
861
- end
862
-
863
- it "should validate against the schema" do
864
- host.generate_certificate_request
865
-
866
- expect(host.to_json).to validate_against('api/schemas/host.json')
867
- end
868
-
869
- describe "explicit fingerprints" do
870
- [:SHA1, :SHA256, :SHA512].each do |md|
871
- it "should include #{md}" do
872
- mds = md.to_s
873
- host.generate_certificate_request
874
- json_hash["fingerprints"] = {}
875
- json_hash["fingerprints"][mds] = host.certificate_request.fingerprint(md)
876
-
877
- result = JSON.parse(Puppet::SSL::Host.new(host.name).to_json)
878
- base_json_comparison result, json_hash
879
- expect(result["fingerprints"][mds]).to eq(json_hash["fingerprints"][mds])
880
- end
881
- end
882
- end
883
-
884
- describe "dns_alt_names" do
885
- describe "when not specified" do
886
- it "should include the dns_alt_names associated with the certificate" do
887
- host.generate_certificate_request
888
- json_hash["desired_alt_names"] = host.certificate_request.subject_alt_names
889
-
890
- result = JSON.parse(Puppet::SSL::Host.new(host.name).to_json)
891
- base_json_comparison result, json_hash
892
- expect(result["dns_alt_names"]).to eq(json_hash["desired_alt_names"])
893
- end
894
- end
895
-
896
- [ "",
897
- "test, alt, names"
898
- ].each do |alt_names|
899
- describe "when #{alt_names}" do
900
- before(:each) do
901
- host.generate_certificate_request :dns_alt_names => alt_names
902
- end
903
-
904
- it "should include the dns_alt_names associated with the certificate" do
905
- json_hash["desired_alt_names"] = host.certificate_request.subject_alt_names
906
-
907
- result = JSON.parse(Puppet::SSL::Host.new(host.name).to_json)
908
- base_json_comparison result, json_hash
909
- expect(result["dns_alt_names"]).to eq(json_hash["desired_alt_names"])
910
- end
911
-
912
- it "should validate against the schema" do
913
- expect(host.to_json).to validate_against('api/schemas/host.json')
914
- end
915
- end
627
+ times_certificate_called = 0
628
+ expect(@host).to receive(:certificate) do
629
+ times_certificate_called += 1
630
+ if times_certificate_called == 1
631
+ return nil
632
+ elsif times_certificate_called == 2
633
+ raise RuntimeError
916
634
  end
917
- end
635
+ "foo"
636
+ end.exactly(3).times()
637
+ allow(@host).to receive(:generate)
638
+ allow(@host).to receive(:sleep)
918
639
 
919
- it "should be able to identify a host with a signed certificate" do
920
- host.generate_certificate_request
921
- @ca.sign(host.name)
922
- json_hash = {
923
- "fingerprint" => Puppet::SSL::Certificate.indirection.find(host.name).fingerprint,
924
- "desired_state" => 'signed',
925
- "name" => host.name,
926
- }
927
-
928
- result = JSON.parse(Puppet::SSL::Host.new(host.name).to_json)
929
- base_json_comparison result, json_hash
930
- end
931
-
932
- it "should be able to identify a host with a revoked certificate" do
933
- host.generate_certificate_request
934
- @ca.sign(host.name)
935
- @ca.revoke(host.name)
936
- json_hash["fingerprint"] = Puppet::SSL::Certificate.indirection.find(host.name).fingerprint
937
- json_hash["desired_state"] = 'revoked'
640
+ expect(Puppet).to receive(:log_exception).at_least(:once)
938
641
 
939
- result = JSON.parse(Puppet::SSL::Host.new(host.name).to_json)
940
- base_json_comparison result, json_hash
941
- end
942
- end
943
-
944
- describe "when converting from JSON" do
945
- it "should return a Puppet::SSL::Host object with the specified desired state" do
946
- host = Puppet::SSL::Host.new("bazinga")
947
- host.desired_state="signed"
948
- json_hash = {
949
- "name" => host.name,
950
- "desired_state" => host.desired_state,
951
- }
952
- generated_host = Puppet::SSL::Host.from_data_hash(json_hash)
953
- expect(generated_host.desired_state).to eq(host.desired_state)
954
- expect(generated_host.name).to eq(host.name)
955
- end
642
+ @host.wait_for_cert(1)
956
643
  end
957
644
  end
958
645
  end