puppet 8.4.0-universal-darwin → 8.5.1-universal-darwin

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1872) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -1
  3. data/Gemfile.lock +78 -61
  4. data/ext/project_data.yaml +4 -4
  5. data/ext/windows/service/daemon.rb +8 -8
  6. data/lib/hiera/puppet_function.rb +4 -4
  7. data/lib/hiera/scope.rb +5 -4
  8. data/lib/hiera_puppet.rb +0 -1
  9. data/lib/puppet/agent/disabler.rb +2 -2
  10. data/lib/puppet/agent.rb +3 -3
  11. data/lib/puppet/application/agent.rb +80 -78
  12. data/lib/puppet/application/apply.rb +45 -45
  13. data/lib/puppet/application/describe.rb +21 -21
  14. data/lib/puppet/application/device.rb +49 -49
  15. data/lib/puppet/application/doc.rb +27 -27
  16. data/lib/puppet/application/face_base.rb +2 -3
  17. data/lib/puppet/application/filebucket.rb +58 -58
  18. data/lib/puppet/application/generate.rb +1 -1
  19. data/lib/puppet/application/lookup.rb +44 -44
  20. data/lib/puppet/application/resource.rb +34 -34
  21. data/lib/puppet/application/script.rb +29 -29
  22. data/lib/puppet/application/ssl.rb +18 -18
  23. data/lib/puppet/application.rb +7 -7
  24. data/lib/puppet/application_support.rb +1 -1
  25. data/lib/puppet/compilable_resource_type.rb +2 -2
  26. data/lib/puppet/concurrent/lock.rb +0 -1
  27. data/lib/puppet/configurer/fact_handler.rb +3 -3
  28. data/lib/puppet/configurer.rb +8 -7
  29. data/lib/puppet/confine/any.rb +1 -1
  30. data/lib/puppet/confine/boolean.rb +1 -1
  31. data/lib/puppet/confine/exists.rb +1 -1
  32. data/lib/puppet/confine/false.rb +1 -1
  33. data/lib/puppet/confine/feature.rb +1 -2
  34. data/lib/puppet/confine/true.rb +1 -1
  35. data/lib/puppet/confine/variable.rb +1 -1
  36. data/lib/puppet/confine_collection.rb +1 -1
  37. data/lib/puppet/context/trusted_information.rb +4 -4
  38. data/lib/puppet/daemon.rb +6 -6
  39. data/lib/puppet/datatypes.rb +3 -2
  40. data/lib/puppet/defaults.rb +12 -12
  41. data/lib/puppet/environments.rb +7 -7
  42. data/lib/puppet/error.rb +7 -6
  43. data/lib/puppet/etc.rb +3 -2
  44. data/lib/puppet/external/dot.rb +25 -25
  45. data/lib/puppet/face/catalog/select.rb +1 -1
  46. data/lib/puppet/face/config.rb +1 -1
  47. data/lib/puppet/face/epp.rb +9 -9
  48. data/lib/puppet/face/facts.rb +2 -2
  49. data/lib/puppet/face/generate.rb +1 -1
  50. data/lib/puppet/face/help.rb +17 -21
  51. data/lib/puppet/face/module/install.rb +4 -3
  52. data/lib/puppet/face/module/list.rb +7 -8
  53. data/lib/puppet/face/module/upgrade.rb +4 -3
  54. data/lib/puppet/face/parser.rb +6 -6
  55. data/lib/puppet/feature/base.rb +2 -2
  56. data/lib/puppet/feature/libuser.rb +2 -2
  57. data/lib/puppet/ffi/posix/constants.rb +1 -1
  58. data/lib/puppet/ffi/windows/functions.rb +1 -1
  59. data/lib/puppet/file_bucket/dipper.rb +8 -6
  60. data/lib/puppet/file_bucket/file.rb +2 -2
  61. data/lib/puppet/file_serving/configuration.rb +1 -1
  62. data/lib/puppet/file_serving/fileset.rb +2 -2
  63. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  64. data/lib/puppet/file_serving/metadata.rb +4 -5
  65. data/lib/puppet/file_serving/terminus_selector.rb +1 -1
  66. data/lib/puppet/file_system/file_impl.rb +4 -4
  67. data/lib/puppet/file_system/uniquefile.rb +4 -4
  68. data/lib/puppet/file_system/windows.rb +7 -7
  69. data/lib/puppet/file_system.rb +1 -1
  70. data/lib/puppet/forge/cache.rb +1 -1
  71. data/lib/puppet/forge/repository.rb +1 -1
  72. data/lib/puppet/forge.rb +3 -3
  73. data/lib/puppet/functions/abs.rb +4 -3
  74. data/lib/puppet/functions/all.rb +1 -1
  75. data/lib/puppet/functions/any.rb +1 -1
  76. data/lib/puppet/functions/assert_type.rb +3 -2
  77. data/lib/puppet/functions/break.rb +1 -1
  78. data/lib/puppet/functions/camelcase.rb +2 -2
  79. data/lib/puppet/functions/capitalize.rb +2 -2
  80. data/lib/puppet/functions/chomp.rb +1 -1
  81. data/lib/puppet/functions/chop.rb +1 -1
  82. data/lib/puppet/functions/compare.rb +1 -1
  83. data/lib/puppet/functions/contain.rb +5 -4
  84. data/lib/puppet/functions/dig.rb +3 -3
  85. data/lib/puppet/functions/downcase.rb +2 -2
  86. data/lib/puppet/functions/eyaml_lookup_key.rb +1 -1
  87. data/lib/puppet/functions/filter.rb +6 -7
  88. data/lib/puppet/functions/get.rb +1 -1
  89. data/lib/puppet/functions/getvar.rb +4 -4
  90. data/lib/puppet/functions/group_by.rb +2 -2
  91. data/lib/puppet/functions/include.rb +3 -2
  92. data/lib/puppet/functions/index.rb +1 -1
  93. data/lib/puppet/functions/join.rb +1 -1
  94. data/lib/puppet/functions/lookup.rb +2 -2
  95. data/lib/puppet/functions/lstrip.rb +1 -1
  96. data/lib/puppet/functions/map.rb +2 -2
  97. data/lib/puppet/functions/match.rb +4 -4
  98. data/lib/puppet/functions/max.rb +2 -2
  99. data/lib/puppet/functions/min.rb +2 -2
  100. data/lib/puppet/functions/next.rb +1 -1
  101. data/lib/puppet/functions/require.rb +3 -2
  102. data/lib/puppet/functions/rstrip.rb +1 -1
  103. data/lib/puppet/functions/slice.rb +1 -1
  104. data/lib/puppet/functions/strftime.rb +1 -1
  105. data/lib/puppet/functions/strip.rb +1 -1
  106. data/lib/puppet/functions/tree_each.rb +2 -2
  107. data/lib/puppet/functions/unique.rb +8 -8
  108. data/lib/puppet/functions/upcase.rb +2 -2
  109. data/lib/puppet/functions.rb +18 -18
  110. data/lib/puppet/generate/models/type/property.rb +1 -1
  111. data/lib/puppet/generate/models/type/type.rb +2 -2
  112. data/lib/puppet/generate/type.rb +3 -3
  113. data/lib/puppet/graph/rb_tree_map.rb +5 -5
  114. data/lib/puppet/graph/relationship_graph.rb +17 -17
  115. data/lib/puppet/graph/simple_graph.rb +25 -25
  116. data/lib/puppet/http/client.rb +4 -4
  117. data/lib/puppet/http/dns.rb +2 -3
  118. data/lib/puppet/http/errors.rb +2 -2
  119. data/lib/puppet/http/factory.rb +1 -1
  120. data/lib/puppet/http/proxy.rb +2 -2
  121. data/lib/puppet/http/redirector.rb +1 -1
  122. data/lib/puppet/http/resolver/server_list.rb +3 -3
  123. data/lib/puppet/http/response_converter.rb +2 -3
  124. data/lib/puppet/http/service/ca.rb +3 -3
  125. data/lib/puppet/http/service/compiler.rb +2 -2
  126. data/lib/puppet/http/service/file_server.rb +1 -1
  127. data/lib/puppet/http/service/puppetserver.rb +1 -1
  128. data/lib/puppet/http/service.rb +6 -9
  129. data/lib/puppet/http/session.rb +1 -1
  130. data/lib/puppet/indirector/catalog/compiler.rb +17 -19
  131. data/lib/puppet/indirector/data_binding/hiera.rb +0 -1
  132. data/lib/puppet/indirector/exec.rb +1 -1
  133. data/lib/puppet/indirector/face.rb +3 -3
  134. data/lib/puppet/indirector/fact_search.rb +1 -1
  135. data/lib/puppet/indirector/facts/json.rb +1 -1
  136. data/lib/puppet/indirector/file_bucket_file/file.rb +5 -5
  137. data/lib/puppet/indirector/file_bucket_file/selector.rb +0 -1
  138. data/lib/puppet/indirector/file_metadata/http.rb +2 -2
  139. data/lib/puppet/indirector/hiera.rb +2 -3
  140. data/lib/puppet/indirector/indirection.rb +12 -12
  141. data/lib/puppet/indirector/json.rb +2 -2
  142. data/lib/puppet/indirector/msgpack.rb +2 -2
  143. data/lib/puppet/indirector/node/exec.rb +2 -4
  144. data/lib/puppet/indirector/none.rb +0 -1
  145. data/lib/puppet/indirector/report/json.rb +1 -1
  146. data/lib/puppet/indirector/report/msgpack.rb +1 -1
  147. data/lib/puppet/indirector/report/yaml.rb +1 -1
  148. data/lib/puppet/indirector/request.rb +3 -3
  149. data/lib/puppet/indirector/resource/ral.rb +6 -6
  150. data/lib/puppet/indirector/rest.rb +1 -1
  151. data/lib/puppet/indirector/yaml.rb +2 -2
  152. data/lib/puppet/info_service/class_information_service.rb +8 -10
  153. data/lib/puppet/info_service/plan_information_service.rb +3 -3
  154. data/lib/puppet/info_service/task_information_service.rb +3 -3
  155. data/lib/puppet/interface/action.rb +13 -13
  156. data/lib/puppet/interface/action_builder.rb +1 -1
  157. data/lib/puppet/interface/action_manager.rb +2 -2
  158. data/lib/puppet/interface/documentation.rb +15 -15
  159. data/lib/puppet/interface/face_collection.rb +5 -5
  160. data/lib/puppet/interface/option.rb +6 -6
  161. data/lib/puppet/interface/option_manager.rb +2 -2
  162. data/lib/puppet/interface.rb +1 -1
  163. data/lib/puppet/metatype/manager.rb +4 -5
  164. data/lib/puppet/module/plan.rb +3 -3
  165. data/lib/puppet/module/task.rb +16 -16
  166. data/lib/puppet/module.rb +6 -5
  167. data/lib/puppet/module_tool/applications/checksummer.rb +1 -1
  168. data/lib/puppet/module_tool/applications/installer.rb +3 -3
  169. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  170. data/lib/puppet/module_tool/applications/unpacker.rb +1 -1
  171. data/lib/puppet/module_tool/applications/upgrader.rb +4 -4
  172. data/lib/puppet/module_tool/contents_description.rb +3 -3
  173. data/lib/puppet/module_tool/dependency.rb +2 -2
  174. data/lib/puppet/module_tool/errors/installer.rb +1 -1
  175. data/lib/puppet/module_tool/errors/shared.rb +3 -3
  176. data/lib/puppet/module_tool/installed_modules.rb +2 -2
  177. data/lib/puppet/module_tool/local_tarball.rb +3 -3
  178. data/lib/puppet/module_tool/metadata.rb +2 -2
  179. data/lib/puppet/module_tool/shared_behaviors.rb +11 -11
  180. data/lib/puppet/module_tool/tar/mini.rb +1 -1
  181. data/lib/puppet/module_tool/tar.rb +1 -1
  182. data/lib/puppet/module_tool.rb +4 -4
  183. data/lib/puppet/network/client_request.rb +0 -1
  184. data/lib/puppet/network/format.rb +1 -1
  185. data/lib/puppet/network/format_handler.rb +5 -5
  186. data/lib/puppet/network/format_support.rb +0 -1
  187. data/lib/puppet/network/formats.rb +15 -13
  188. data/lib/puppet/network/http/api/indirected_routes.rb +27 -15
  189. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  190. data/lib/puppet/network/http/api/master/v3.rb +0 -1
  191. data/lib/puppet/network/http/api/server/v3/environments.rb +2 -3
  192. data/lib/puppet/network/http/api/server/v3.rb +6 -6
  193. data/lib/puppet/network/http/api.rb +11 -11
  194. data/lib/puppet/network/http/connection.rb +3 -3
  195. data/lib/puppet/network/http/error.rb +2 -2
  196. data/lib/puppet/network/http/handler.rb +5 -5
  197. data/lib/puppet/network/http/request.rb +9 -5
  198. data/lib/puppet/network/http_pool.rb +1 -2
  199. data/lib/puppet/node/environment.rb +13 -13
  200. data/lib/puppet/node/facts.rb +6 -8
  201. data/lib/puppet/node.rb +4 -6
  202. data/lib/puppet/pal/compiler.rb +4 -4
  203. data/lib/puppet/pal/function_signature.rb +2 -2
  204. data/lib/puppet/pal/pal_impl.rb +39 -44
  205. data/lib/puppet/pal/plan_signature.rb +1 -1
  206. data/lib/puppet/pal/task_signature.rb +2 -2
  207. data/lib/puppet/parameter/path.rb +3 -3
  208. data/lib/puppet/parameter/value.rb +1 -1
  209. data/lib/puppet/parameter/value_collection.rb +5 -5
  210. data/lib/puppet/parameter.rb +4 -4
  211. data/lib/puppet/parser/abstract_compiler.rb +1 -1
  212. data/lib/puppet/parser/ast/hostclass.rb +1 -1
  213. data/lib/puppet/parser/ast/pops_bridge.rb +5 -5
  214. data/lib/puppet/parser/ast/resource.rb +1 -1
  215. data/lib/puppet/parser/ast/resourceparam.rb +1 -1
  216. data/lib/puppet/parser/catalog_compiler.rb +1 -1
  217. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +0 -2
  218. data/lib/puppet/parser/compiler.rb +11 -11
  219. data/lib/puppet/parser/e4_parser_adapter.rb +1 -1
  220. data/lib/puppet/parser/files.rb +2 -2
  221. data/lib/puppet/parser/functions/assert_type.rb +15 -15
  222. data/lib/puppet/parser/functions/binary_file.rb +6 -6
  223. data/lib/puppet/parser/functions/break.rb +9 -9
  224. data/lib/puppet/parser/functions/contain.rb +1 -1
  225. data/lib/puppet/parser/functions/create_resources.rb +6 -5
  226. data/lib/puppet/parser/functions/defined.rb +24 -24
  227. data/lib/puppet/parser/functions/dig.rb +10 -10
  228. data/lib/puppet/parser/functions/digest.rb +1 -1
  229. data/lib/puppet/parser/functions/each.rb +21 -21
  230. data/lib/puppet/parser/functions/epp.rb +1 -1
  231. data/lib/puppet/parser/functions/fail.rb +1 -1
  232. data/lib/puppet/parser/functions/file.rb +1 -1
  233. data/lib/puppet/parser/functions/filter.rb +20 -20
  234. data/lib/puppet/parser/functions/find_file.rb +6 -7
  235. data/lib/puppet/parser/functions/fqdn_rand.rb +4 -4
  236. data/lib/puppet/parser/functions/generate.rb +2 -2
  237. data/lib/puppet/parser/functions/hiera.rb +21 -21
  238. data/lib/puppet/parser/functions/hiera_array.rb +19 -20
  239. data/lib/puppet/parser/functions/hiera_hash.rb +21 -22
  240. data/lib/puppet/parser/functions/hiera_include.rb +21 -22
  241. data/lib/puppet/parser/functions/include.rb +2 -2
  242. data/lib/puppet/parser/functions/inline_epp.rb +1 -1
  243. data/lib/puppet/parser/functions/inline_template.rb +3 -2
  244. data/lib/puppet/parser/functions/lest.rb +11 -11
  245. data/lib/puppet/parser/functions/lookup.rb +22 -22
  246. data/lib/puppet/parser/functions/map.rb +20 -20
  247. data/lib/puppet/parser/functions/match.rb +11 -11
  248. data/lib/puppet/parser/functions/md5.rb +1 -1
  249. data/lib/puppet/parser/functions/new.rb +236 -237
  250. data/lib/puppet/parser/functions/next.rb +8 -8
  251. data/lib/puppet/parser/functions/realize.rb +4 -3
  252. data/lib/puppet/parser/functions/reduce.rb +27 -27
  253. data/lib/puppet/parser/functions/regsubst.rb +4 -3
  254. data/lib/puppet/parser/functions/require.rb +3 -2
  255. data/lib/puppet/parser/functions/return.rb +18 -18
  256. data/lib/puppet/parser/functions/reverse_each.rb +22 -22
  257. data/lib/puppet/parser/functions/scanf.rb +6 -6
  258. data/lib/puppet/parser/functions/sha1.rb +1 -1
  259. data/lib/puppet/parser/functions/sha256.rb +1 -1
  260. data/lib/puppet/parser/functions/slice.rb +10 -10
  261. data/lib/puppet/parser/functions/split.rb +2 -1
  262. data/lib/puppet/parser/functions/sprintf.rb +4 -4
  263. data/lib/puppet/parser/functions/step.rb +20 -20
  264. data/lib/puppet/parser/functions/strftime.rb +43 -43
  265. data/lib/puppet/parser/functions/tag.rb +3 -2
  266. data/lib/puppet/parser/functions/tagged.rb +3 -2
  267. data/lib/puppet/parser/functions/template.rb +3 -2
  268. data/lib/puppet/parser/functions/then.rb +17 -17
  269. data/lib/puppet/parser/functions/type.rb +15 -15
  270. data/lib/puppet/parser/functions/versioncmp.rb +1 -1
  271. data/lib/puppet/parser/functions/with.rb +4 -4
  272. data/lib/puppet/parser/functions.rb +6 -6
  273. data/lib/puppet/parser/relationship.rb +2 -2
  274. data/lib/puppet/parser/resource.rb +12 -17
  275. data/lib/puppet/parser/scope.rb +49 -48
  276. data/lib/puppet/parser/script_compiler.rb +5 -5
  277. data/lib/puppet/parser/templatewrapper.rb +1 -1
  278. data/lib/puppet/parser/type_loader.rb +3 -3
  279. data/lib/puppet/plugins.rb +1 -1
  280. data/lib/puppet/pops/adaptable.rb +0 -1
  281. data/lib/puppet/pops/evaluator/access_operator.rb +61 -63
  282. data/lib/puppet/pops/evaluator/closure.rb +9 -11
  283. data/lib/puppet/pops/evaluator/collector_transformer.rb +2 -2
  284. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -1
  285. data/lib/puppet/pops/evaluator/collectors/catalog_collector.rb +1 -1
  286. data/lib/puppet/pops/evaluator/collectors/exported_collector.rb +2 -2
  287. data/lib/puppet/pops/evaluator/collectors/fixed_set_collector.rb +2 -3
  288. data/lib/puppet/pops/evaluator/compare_operator.rb +12 -10
  289. data/lib/puppet/pops/evaluator/deferred_resolver.rb +17 -15
  290. data/lib/puppet/pops/evaluator/epp_evaluator.rb +6 -6
  291. data/lib/puppet/pops/evaluator/evaluator_impl.rb +80 -79
  292. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  293. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +2 -3
  294. data/lib/puppet/pops/evaluator/literal_evaluator.rb +18 -6
  295. data/lib/puppet/pops/evaluator/puppet_proc.rb +3 -3
  296. data/lib/puppet/pops/evaluator/relationship_operator.rb +6 -6
  297. data/lib/puppet/pops/evaluator/runtime3_converter.rb +10 -9
  298. data/lib/puppet/pops/evaluator/runtime3_support.rb +15 -14
  299. data/lib/puppet/pops/functions/dispatch.rb +5 -7
  300. data/lib/puppet/pops/functions/dispatcher.rb +4 -4
  301. data/lib/puppet/pops/functions/function.rb +2 -2
  302. data/lib/puppet/pops/issue_reporter.rb +3 -3
  303. data/lib/puppet/pops/issues.rb +5 -1
  304. data/lib/puppet/pops/label_provider.rb +2 -2
  305. data/lib/puppet/pops/loader/base_loader.rb +1 -2
  306. data/lib/puppet/pops/loader/dependency_loader.rb +2 -2
  307. data/lib/puppet/pops/loader/gem_support.rb +1 -1
  308. data/lib/puppet/pops/loader/loader_paths.rb +6 -7
  309. data/lib/puppet/pops/loader/module_loaders.rb +13 -18
  310. data/lib/puppet/pops/loader/predefined_loader.rb +1 -1
  311. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +2 -1
  312. data/lib/puppet/pops/loader/puppet_plan_instantiator.rb +2 -1
  313. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +4 -4
  314. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +7 -6
  315. data/lib/puppet/pops/loader/runtime3_type_loader.rb +1 -1
  316. data/lib/puppet/pops/loader/simple_environment_loader.rb +1 -1
  317. data/lib/puppet/pops/loader/static_loader.rb +2 -2
  318. data/lib/puppet/pops/loader/task_instantiator.rb +2 -2
  319. data/lib/puppet/pops/loader/type_definition_instantiator.rb +2 -1
  320. data/lib/puppet/pops/loader/typed_name.rb +1 -1
  321. data/lib/puppet/pops/loader/uri_helper.rb +1 -1
  322. data/lib/puppet/pops/loaders.rb +3 -3
  323. data/lib/puppet/pops/lookup/context.rb +32 -25
  324. data/lib/puppet/pops/lookup/data_dig_function_provider.rb +2 -2
  325. data/lib/puppet/pops/lookup/explainer.rb +9 -9
  326. data/lib/puppet/pops/lookup/global_data_provider.rb +2 -2
  327. data/lib/puppet/pops/lookup/hiera_config.rb +23 -20
  328. data/lib/puppet/pops/lookup/interpolation.rb +4 -3
  329. data/lib/puppet/pops/lookup/key_recorder.rb +1 -1
  330. data/lib/puppet/pops/lookup/lookup_adapter.rb +7 -5
  331. data/lib/puppet/pops/lookup/lookup_key.rb +1 -1
  332. data/lib/puppet/pops/lookup/sub_lookup.rb +1 -1
  333. data/lib/puppet/pops/lookup.rb +1 -2
  334. data/lib/puppet/pops/merge_strategy.rb +10 -8
  335. data/lib/puppet/pops/migration/migration_checker.rb +3 -3
  336. data/lib/puppet/pops/model/ast_transformer.rb +7 -7
  337. data/lib/puppet/pops/model/factory.rb +12 -13
  338. data/lib/puppet/pops/model/model_label_provider.rb +3 -1
  339. data/lib/puppet/pops/model/model_tree_dumper.rb +21 -21
  340. data/lib/puppet/pops/model/tree_dumper.rb +3 -3
  341. data/lib/puppet/pops/parser/code_merger.rb +2 -2
  342. data/lib/puppet/pops/parser/epp_parser.rb +2 -2
  343. data/lib/puppet/pops/parser/epp_support.rb +5 -5
  344. data/lib/puppet/pops/parser/evaluating_parser.rb +4 -4
  345. data/lib/puppet/pops/parser/heredoc_support.rb +4 -4
  346. data/lib/puppet/pops/parser/interpolation_support.rb +20 -20
  347. data/lib/puppet/pops/parser/lexer2.rb +30 -29
  348. data/lib/puppet/pops/parser/lexer_support.rb +20 -18
  349. data/lib/puppet/pops/parser/locator.rb +11 -11
  350. data/lib/puppet/pops/parser/parser_support.rb +7 -7
  351. data/lib/puppet/pops/parser/pn_parser.rb +1 -1
  352. data/lib/puppet/pops/parser/slurp_support.rb +10 -10
  353. data/lib/puppet/pops/pcore.rb +1 -1
  354. data/lib/puppet/pops/pn.rb +1 -2
  355. data/lib/puppet/pops/resource/param.rb +11 -12
  356. data/lib/puppet/pops/resource/resource_type_impl.rb +34 -34
  357. data/lib/puppet/pops/semantic_error.rb +1 -1
  358. data/lib/puppet/pops/serialization/abstract_writer.rb +2 -2
  359. data/lib/puppet/pops/serialization/from_data_converter.rb +12 -9
  360. data/lib/puppet/pops/serialization/json.rb +2 -2
  361. data/lib/puppet/pops/serialization/object.rb +1 -2
  362. data/lib/puppet/pops/serialization/serializer.rb +13 -14
  363. data/lib/puppet/pops/serialization/to_data_converter.rb +3 -3
  364. data/lib/puppet/pops/serialization/to_stringified_converter.rb +5 -5
  365. data/lib/puppet/pops/time/timespan.rb +7 -6
  366. data/lib/puppet/pops/time/timestamp.rb +4 -2
  367. data/lib/puppet/pops/types/annotation.rb +3 -3
  368. data/lib/puppet/pops/types/class_loader.rb +8 -7
  369. data/lib/puppet/pops/types/implementation_registry.rb +2 -1
  370. data/lib/puppet/pops/types/iterable.rb +9 -9
  371. data/lib/puppet/pops/types/p_binary_type.rb +2 -2
  372. data/lib/puppet/pops/types/p_init_type.rb +2 -3
  373. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  374. data/lib/puppet/pops/types/p_object_type.rb +52 -51
  375. data/lib/puppet/pops/types/p_object_type_extension.rb +1 -2
  376. data/lib/puppet/pops/types/p_runtime_type.rb +1 -2
  377. data/lib/puppet/pops/types/p_sem_ver_type.rb +4 -5
  378. data/lib/puppet/pops/types/p_sensitive_type.rb +1 -1
  379. data/lib/puppet/pops/types/p_timespan_type.rb +3 -4
  380. data/lib/puppet/pops/types/p_timestamp_type.rb +1 -2
  381. data/lib/puppet/pops/types/p_type_set_type.rb +29 -31
  382. data/lib/puppet/pops/types/p_uri_type.rb +8 -8
  383. data/lib/puppet/pops/types/ruby_generator.rb +7 -6
  384. data/lib/puppet/pops/types/ruby_method.rb +6 -7
  385. data/lib/puppet/pops/types/string_converter.rb +29 -32
  386. data/lib/puppet/pops/types/tree_iterators.rb +6 -8
  387. data/lib/puppet/pops/types/type_asserter.rb +3 -3
  388. data/lib/puppet/pops/types/type_calculator.rb +36 -36
  389. data/lib/puppet/pops/types/type_factory.rb +9 -8
  390. data/lib/puppet/pops/types/type_formatter.rb +34 -38
  391. data/lib/puppet/pops/types/type_mismatch_describer.rb +25 -22
  392. data/lib/puppet/pops/types/type_parser.rb +12 -10
  393. data/lib/puppet/pops/types/type_with_members.rb +0 -1
  394. data/lib/puppet/pops/types/types.rb +85 -97
  395. data/lib/puppet/pops/utils.rb +2 -2
  396. data/lib/puppet/pops/validation/checker4_0.rb +51 -38
  397. data/lib/puppet/pops/validation/tasks_checker.rb +3 -3
  398. data/lib/puppet/pops/validation/validator_factory_4_0.rb +2 -0
  399. data/lib/puppet/pops/validation.rb +15 -15
  400. data/lib/puppet/pops/visitor.rb +1 -1
  401. data/lib/puppet/property/ensure.rb +0 -1
  402. data/lib/puppet/property/keyvalue.rb +5 -6
  403. data/lib/puppet/property/list.rb +1 -1
  404. data/lib/puppet/property.rb +8 -10
  405. data/lib/puppet/provider/aix_object.rb +9 -9
  406. data/lib/puppet/provider/exec/posix.rb +1 -1
  407. data/lib/puppet/provider/exec.rb +3 -3
  408. data/lib/puppet/provider/file/windows.rb +3 -3
  409. data/lib/puppet/provider/group/groupadd.rb +2 -2
  410. data/lib/puppet/provider/group/pw.rb +0 -1
  411. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  412. data/lib/puppet/provider/ldap.rb +2 -3
  413. data/lib/puppet/provider/nameservice/directoryservice.rb +11 -11
  414. data/lib/puppet/provider/nameservice/pw.rb +0 -1
  415. data/lib/puppet/provider/nameservice.rb +9 -10
  416. data/lib/puppet/provider/package/aix.rb +4 -4
  417. data/lib/puppet/provider/package/appdmg.rb +3 -3
  418. data/lib/puppet/provider/package/apple.rb +1 -1
  419. data/lib/puppet/provider/package/apt.rb +7 -3
  420. data/lib/puppet/provider/package/aptrpm.rb +6 -4
  421. data/lib/puppet/provider/package/blastwave.rb +3 -3
  422. data/lib/puppet/provider/package/dnf.rb +5 -0
  423. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  424. data/lib/puppet/provider/package/dpkg.rb +8 -8
  425. data/lib/puppet/provider/package/gem.rb +6 -7
  426. data/lib/puppet/provider/package/hpux.rb +2 -2
  427. data/lib/puppet/provider/package/nim.rb +4 -4
  428. data/lib/puppet/provider/package/openbsd.rb +8 -8
  429. data/lib/puppet/provider/package/opkg.rb +6 -6
  430. data/lib/puppet/provider/package/pacman.rb +2 -2
  431. data/lib/puppet/provider/package/pip.rb +8 -8
  432. data/lib/puppet/provider/package/pkg.rb +19 -19
  433. data/lib/puppet/provider/package/pkgdmg.rb +5 -5
  434. data/lib/puppet/provider/package/pkgin.rb +6 -6
  435. data/lib/puppet/provider/package/pkgng.rb +1 -1
  436. data/lib/puppet/provider/package/pkgutil.rb +11 -11
  437. data/lib/puppet/provider/package/portage.rb +3 -3
  438. data/lib/puppet/provider/package/portupgrade.rb +5 -7
  439. data/lib/puppet/provider/package/puppet_gem.rb +2 -2
  440. data/lib/puppet/provider/package/puppetserver_gem.rb +4 -4
  441. data/lib/puppet/provider/package/rpm.rb +9 -9
  442. data/lib/puppet/provider/package/sun.rb +2 -2
  443. data/lib/puppet/provider/package/tdnf.rb +6 -1
  444. data/lib/puppet/provider/package/windows/exe_package.rb +2 -2
  445. data/lib/puppet/provider/package/windows/package.rb +3 -3
  446. data/lib/puppet/provider/package/windows.rb +1 -1
  447. data/lib/puppet/provider/package/yum.rb +25 -14
  448. data/lib/puppet/provider/package/zypper.rb +7 -7
  449. data/lib/puppet/provider/package.rb +1 -1
  450. data/lib/puppet/provider/package_targetable.rb +2 -2
  451. data/lib/puppet/provider/parsedfile.rb +5 -7
  452. data/lib/puppet/provider/service/base.rb +0 -1
  453. data/lib/puppet/provider/service/daemontools.rb +10 -10
  454. data/lib/puppet/provider/service/debian.rb +2 -2
  455. data/lib/puppet/provider/service/freebsd.rb +15 -17
  456. data/lib/puppet/provider/service/init.rb +2 -3
  457. data/lib/puppet/provider/service/launchd.rb +3 -3
  458. data/lib/puppet/provider/service/openrc.rb +1 -1
  459. data/lib/puppet/provider/service/redhat.rb +2 -1
  460. data/lib/puppet/provider/service/runit.rb +2 -3
  461. data/lib/puppet/provider/service/service.rb +0 -1
  462. data/lib/puppet/provider/service/smf.rb +4 -4
  463. data/lib/puppet/provider/service/src.rb +3 -4
  464. data/lib/puppet/provider/service/systemd.rb +3 -2
  465. data/lib/puppet/provider/service/upstart.rb +6 -8
  466. data/lib/puppet/provider/service/windows.rb +15 -15
  467. data/lib/puppet/provider/user/aix.rb +14 -14
  468. data/lib/puppet/provider/user/directoryservice.rb +8 -8
  469. data/lib/puppet/provider/user/hpux.rb +9 -9
  470. data/lib/puppet/provider/user/ldap.rb +4 -4
  471. data/lib/puppet/provider/user/openbsd.rb +1 -1
  472. data/lib/puppet/provider/user/pw.rb +1 -2
  473. data/lib/puppet/provider/user/user_role_add.rb +9 -9
  474. data/lib/puppet/provider/user/useradd.rb +4 -4
  475. data/lib/puppet/provider/user/windows_adsi.rb +6 -6
  476. data/lib/puppet/provider.rb +2 -2
  477. data/lib/puppet/reference/configuration.rb +15 -14
  478. data/lib/puppet/reference/indirection.rb +14 -14
  479. data/lib/puppet/reference/providers.rb +2 -2
  480. data/lib/puppet/reference/type.rb +1 -1
  481. data/lib/puppet/relationship.rb +2 -2
  482. data/lib/puppet/reports/log.rb +0 -1
  483. data/lib/puppet/reports/store.rb +2 -2
  484. data/lib/puppet/resource/catalog.rb +26 -30
  485. data/lib/puppet/resource/status.rb +4 -3
  486. data/lib/puppet/resource/type.rb +10 -11
  487. data/lib/puppet/resource/type_collection.rb +5 -5
  488. data/lib/puppet/resource.rb +35 -30
  489. data/lib/puppet/scheduler/scheduler.rb +1 -1
  490. data/lib/puppet/scheduler.rb +1 -1
  491. data/lib/puppet/settings/base_setting.rb +2 -2
  492. data/lib/puppet/settings/boolean_setting.rb +1 -1
  493. data/lib/puppet/settings/config_file.rb +2 -2
  494. data/lib/puppet/settings/duration_setting.rb +2 -3
  495. data/lib/puppet/settings/environment_conf.rb +6 -4
  496. data/lib/puppet/settings/errors.rb +3 -3
  497. data/lib/puppet/settings/integer_setting.rb +1 -1
  498. data/lib/puppet/settings/priority_setting.rb +3 -4
  499. data/lib/puppet/settings/server_list_setting.rb +4 -4
  500. data/lib/puppet/settings/ttl_setting.rb +3 -4
  501. data/lib/puppet/settings/value_translator.rb +1 -1
  502. data/lib/puppet/settings.rb +39 -36
  503. data/lib/puppet/ssl/base.rb +2 -2
  504. data/lib/puppet/ssl/certificate.rb +2 -2
  505. data/lib/puppet/ssl/certificate_request.rb +10 -10
  506. data/lib/puppet/ssl/certificate_request_attributes.rb +1 -1
  507. data/lib/puppet/ssl/oids.rb +4 -4
  508. data/lib/puppet/ssl/ssl_provider.rb +8 -6
  509. data/lib/puppet/ssl/state_machine.rb +11 -11
  510. data/lib/puppet/syntax_checkers/base64.rb +1 -1
  511. data/lib/puppet/syntax_checkers/epp.rb +2 -2
  512. data/lib/puppet/syntax_checkers/json.rb +2 -2
  513. data/lib/puppet/syntax_checkers/pp.rb +2 -2
  514. data/lib/puppet/syntax_checkers.rb +1 -1
  515. data/lib/puppet/test/test_helper.rb +10 -9
  516. data/lib/puppet/transaction/additional_resource_generator.rb +5 -5
  517. data/lib/puppet/transaction/event_manager.rb +2 -3
  518. data/lib/puppet/transaction/persistence.rb +1 -1
  519. data/lib/puppet/transaction/report.rb +14 -16
  520. data/lib/puppet/transaction/resource_harness.rb +2 -2
  521. data/lib/puppet/transaction.rb +11 -11
  522. data/lib/puppet/trusted_external.rb +1 -1
  523. data/lib/puppet/type/exec.rb +7 -11
  524. data/lib/puppet/type/file/checksum_value.rb +2 -2
  525. data/lib/puppet/type/file/content.rb +5 -5
  526. data/lib/puppet/type/file/ctime.rb +0 -1
  527. data/lib/puppet/type/file/data_sync.rb +2 -2
  528. data/lib/puppet/type/file/ensure.rb +6 -9
  529. data/lib/puppet/type/file/owner.rb +0 -1
  530. data/lib/puppet/type/file/selcontext.rb +0 -1
  531. data/lib/puppet/type/file/source.rb +2 -2
  532. data/lib/puppet/type/file/target.rb +2 -3
  533. data/lib/puppet/type/file/type.rb +0 -1
  534. data/lib/puppet/type/file.rb +22 -26
  535. data/lib/puppet/type/group.rb +2 -2
  536. data/lib/puppet/type/package.rb +8 -8
  537. data/lib/puppet/type/resources.rb +8 -8
  538. data/lib/puppet/type/schedule.rb +4 -4
  539. data/lib/puppet/type/service.rb +4 -4
  540. data/lib/puppet/type/tidy.rb +7 -7
  541. data/lib/puppet/type/user.rb +20 -19
  542. data/lib/puppet/type.rb +44 -49
  543. data/lib/puppet/util/at_fork/solaris.rb +4 -4
  544. data/lib/puppet/util/autoload.rb +2 -2
  545. data/lib/puppet/util/backups.rb +3 -3
  546. data/lib/puppet/util/checksums.rb +1 -1
  547. data/lib/puppet/util/classgen.rb +2 -3
  548. data/lib/puppet/util/colors.rb +33 -33
  549. data/lib/puppet/util/command_line/puppet_option_parser.rb +5 -4
  550. data/lib/puppet/util/command_line/trollop.rb +38 -34
  551. data/lib/puppet/util/command_line.rb +1 -1
  552. data/lib/puppet/util/diff.rb +4 -4
  553. data/lib/puppet/util/docs.rb +3 -3
  554. data/lib/puppet/util/errors.rb +2 -2
  555. data/lib/puppet/util/execution.rb +12 -11
  556. data/lib/puppet/util/feature.rb +6 -8
  557. data/lib/puppet/util/fileparsing.rb +9 -12
  558. data/lib/puppet/util/filetype.rb +3 -3
  559. data/lib/puppet/util/inifile.rb +1 -1
  560. data/lib/puppet/util/ldap/manager.rb +6 -7
  561. data/lib/puppet/util/libuser.rb +1 -1
  562. data/lib/puppet/util/log/destination.rb +0 -1
  563. data/lib/puppet/util/log/destinations.rb +2 -4
  564. data/lib/puppet/util/log.rb +7 -6
  565. data/lib/puppet/util/logging.rb +6 -7
  566. data/lib/puppet/util/metaid.rb +0 -1
  567. data/lib/puppet/util/metric.rb +3 -3
  568. data/lib/puppet/util/monkey_patches.rb +1 -1
  569. data/lib/puppet/util/multi_match.rb +4 -4
  570. data/lib/puppet/util/network_device/base.rb +1 -1
  571. data/lib/puppet/util/network_device/config.rb +2 -2
  572. data/lib/puppet/util/package/version/pip.rb +2 -2
  573. data/lib/puppet/util/package/version/range/lt.rb +1 -1
  574. data/lib/puppet/util/package/version/range.rb +5 -5
  575. data/lib/puppet/util/package.rb +1 -1
  576. data/lib/puppet/util/pidlock.rb +1 -1
  577. data/lib/puppet/util/plist.rb +6 -5
  578. data/lib/puppet/util/posix.rb +3 -4
  579. data/lib/puppet/util/profiler/aggregate.rb +2 -3
  580. data/lib/puppet/util/profiler/logging.rb +1 -1
  581. data/lib/puppet/util/profiler/wall_clock.rb +2 -3
  582. data/lib/puppet/util/provider_features.rb +1 -2
  583. data/lib/puppet/util/rdoc/code_objects.rb +11 -10
  584. data/lib/puppet/util/rdoc/generators/puppet_generator.rb +37 -34
  585. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +17 -15
  586. data/lib/puppet/util/rdoc.rb +8 -8
  587. data/lib/puppet/util/reference.rb +2 -2
  588. data/lib/puppet/util/resource_template.rb +0 -1
  589. data/lib/puppet/util/retry_action.rb +2 -2
  590. data/lib/puppet/util/rpm_compare.rb +7 -7
  591. data/lib/puppet/util/rubygems.rb +0 -1
  592. data/lib/puppet/util/run_mode.rb +3 -3
  593. data/lib/puppet/util/selinux.rb +3 -3
  594. data/lib/puppet/util/storage.rb +1 -1
  595. data/lib/puppet/util/suidmanager.rb +13 -15
  596. data/lib/puppet/util/symbolic_file_mode.rb +8 -7
  597. data/lib/puppet/util/tagging.rb +2 -2
  598. data/lib/puppet/util/user_attr.rb +1 -1
  599. data/lib/puppet/util/watched_file.rb +2 -1
  600. data/lib/puppet/util/watcher/periodic_watcher.rb +0 -1
  601. data/lib/puppet/util/windows/access_control_list.rb +5 -4
  602. data/lib/puppet/util/windows/adsi.rb +14 -14
  603. data/lib/puppet/util/windows/com.rb +2 -2
  604. data/lib/puppet/util/windows/daemon.rb +8 -8
  605. data/lib/puppet/util/windows/eventlog.rb +4 -4
  606. data/lib/puppet/util/windows/file.rb +16 -12
  607. data/lib/puppet/util/windows/monkey_patches/process.rb +1 -1
  608. data/lib/puppet/util/windows/principal.rb +8 -6
  609. data/lib/puppet/util/windows/process.rb +28 -22
  610. data/lib/puppet/util/windows/registry.rb +47 -14
  611. data/lib/puppet/util/windows/root_certs.rb +1 -1
  612. data/lib/puppet/util/windows/security.rb +20 -18
  613. data/lib/puppet/util/windows/service.rb +4 -4
  614. data/lib/puppet/util/windows/sid.rb +8 -7
  615. data/lib/puppet/util/windows/user.rb +4 -2
  616. data/lib/puppet/util/windows.rb +1 -1
  617. data/lib/puppet/util.rb +14 -16
  618. data/lib/puppet/version.rb +1 -1
  619. data/lib/puppet/x509/cert_provider.rb +12 -12
  620. data/lib/puppet.rb +8 -7
  621. data/locales/puppet.pot +2008 -2004
  622. data/man/man5/puppet.conf.5 +2 -2
  623. data/man/man8/puppet-agent.8 +1 -1
  624. data/man/man8/puppet-apply.8 +1 -1
  625. data/man/man8/puppet-catalog.8 +1 -1
  626. data/man/man8/puppet-config.8 +1 -1
  627. data/man/man8/puppet-describe.8 +1 -1
  628. data/man/man8/puppet-device.8 +1 -1
  629. data/man/man8/puppet-doc.8 +1 -1
  630. data/man/man8/puppet-epp.8 +1 -1
  631. data/man/man8/puppet-facts.8 +1 -1
  632. data/man/man8/puppet-filebucket.8 +1 -1
  633. data/man/man8/puppet-generate.8 +1 -1
  634. data/man/man8/puppet-help.8 +1 -1
  635. data/man/man8/puppet-lookup.8 +1 -1
  636. data/man/man8/puppet-module.8 +1 -1
  637. data/man/man8/puppet-node.8 +1 -1
  638. data/man/man8/puppet-parser.8 +1 -1
  639. data/man/man8/puppet-plugin.8 +1 -1
  640. data/man/man8/puppet-report.8 +1 -1
  641. data/man/man8/puppet-resource.8 +1 -1
  642. data/man/man8/puppet-script.8 +1 -1
  643. data/man/man8/puppet-ssl.8 +1 -1
  644. data/man/man8/puppet.8 +2 -2
  645. data/tasks/generate_cert_fixtures.rake +1 -0
  646. metadata +3 -2455
  647. data/spec/fixtures/faulty_face/puppet/face/syntax.rb +0 -8
  648. data/spec/fixtures/hiera.yaml +0 -9
  649. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -92
  650. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +0 -3
  651. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +0 -2
  652. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +0 -25
  653. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/README +0 -3
  654. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/manifests/init.pp +0 -17
  655. data/spec/fixtures/integration/application/module/environments/direnv/modules/nginx/metadata.json +0 -20
  656. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +0 -4
  657. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +0 -3
  658. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +0 -8
  659. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +0 -25
  660. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +0 -19
  661. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +0 -20
  662. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +0 -8
  663. data/spec/fixtures/integration/node/environment/sitedir/00_a.pp +0 -2
  664. data/spec/fixtures/integration/node/environment/sitedir/01_b.pp +0 -6
  665. data/spec/fixtures/integration/node/environment/sitedir/03_empty.pp +0 -0
  666. data/spec/fixtures/integration/node/environment/sitedir/04_include.pp +0 -2
  667. data/spec/fixtures/integration/node/environment/sitedir2/00_a.pp +0 -2
  668. data/spec/fixtures/integration/node/environment/sitedir2/02_folder/01_b.pp +0 -6
  669. data/spec/fixtures/integration/node/environment/sitedir2/03_c.pp +0 -1
  670. data/spec/fixtures/integration/node/environment/sitedir2/04_include.pp +0 -2
  671. data/spec/fixtures/java.tgz +0 -0
  672. data/spec/fixtures/manifests/site.pp +0 -0
  673. data/spec/fixtures/module.tar.gz +0 -0
  674. data/spec/fixtures/releases/jamtur01-apache/Modulefile +0 -2
  675. data/spec/fixtures/releases/jamtur01-apache/files/httpd +0 -24
  676. data/spec/fixtures/releases/jamtur01-apache/files/test.vhost +0 -18
  677. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/provider/a2mod/debian.rb +0 -21
  678. data/spec/fixtures/releases/jamtur01-apache/lib/puppet/type/a2mod.rb +0 -12
  679. data/spec/fixtures/releases/jamtur01-apache/manifests/dev.pp +0 -5
  680. data/spec/fixtures/releases/jamtur01-apache/manifests/init.pp +0 -34
  681. data/spec/fixtures/releases/jamtur01-apache/manifests/params.pp +0 -17
  682. data/spec/fixtures/releases/jamtur01-apache/manifests/php.pp +0 -5
  683. data/spec/fixtures/releases/jamtur01-apache/manifests/ssl.pp +0 -15
  684. data/spec/fixtures/releases/jamtur01-apache/manifests/vhost.pp +0 -15
  685. data/spec/fixtures/releases/jamtur01-apache/metadata.json +0 -1
  686. data/spec/fixtures/releases/jamtur01-apache/templates/vhost-default.conf.erb +0 -20
  687. data/spec/fixtures/releases/jamtur01-apache/tests/apache.pp +0 -1
  688. data/spec/fixtures/releases/jamtur01-apache/tests/dev.pp +0 -1
  689. data/spec/fixtures/releases/jamtur01-apache/tests/init.pp +0 -1
  690. data/spec/fixtures/releases/jamtur01-apache/tests/php.pp +0 -1
  691. data/spec/fixtures/releases/jamtur01-apache/tests/ssl.pp +0 -1
  692. data/spec/fixtures/releases/jamtur01-apache/tests/vhost.pp +0 -2
  693. data/spec/fixtures/ssl/127.0.0.1-key.pem +0 -117
  694. data/spec/fixtures/ssl/127.0.0.1.pem +0 -70
  695. data/spec/fixtures/ssl/bad-basic-constraints.pem +0 -81
  696. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +0 -81
  697. data/spec/fixtures/ssl/ca.pem +0 -81
  698. data/spec/fixtures/ssl/crl.pem +0 -40
  699. data/spec/fixtures/ssl/ec-key-openssl.pem +0 -8
  700. data/spec/fixtures/ssl/ec-key-pk8.pem +0 -5
  701. data/spec/fixtures/ssl/ec-key.pem +0 -18
  702. data/spec/fixtures/ssl/ec.pem +0 -50
  703. data/spec/fixtures/ssl/encrypted-ec-key.pem +0 -21
  704. data/spec/fixtures/ssl/encrypted-key.pem +0 -120
  705. data/spec/fixtures/ssl/intermediate-agent-crl.pem +0 -40
  706. data/spec/fixtures/ssl/intermediate-agent.pem +0 -81
  707. data/spec/fixtures/ssl/intermediate-crl.pem +0 -46
  708. data/spec/fixtures/ssl/intermediate.pem +0 -81
  709. data/spec/fixtures/ssl/netlock-arany-utf8.pem +0 -23
  710. data/spec/fixtures/ssl/oid-key.pem +0 -117
  711. data/spec/fixtures/ssl/oid.pem +0 -70
  712. data/spec/fixtures/ssl/pluto-key.pem +0 -117
  713. data/spec/fixtures/ssl/pluto.pem +0 -67
  714. data/spec/fixtures/ssl/renewed.pem +0 -67
  715. data/spec/fixtures/ssl/request-key.pem +0 -117
  716. data/spec/fixtures/ssl/request.pem +0 -62
  717. data/spec/fixtures/ssl/revoked-key.pem +0 -117
  718. data/spec/fixtures/ssl/revoked.pem +0 -67
  719. data/spec/fixtures/ssl/signed-key.pem +0 -117
  720. data/spec/fixtures/ssl/signed.pem +0 -67
  721. data/spec/fixtures/ssl/tampered-cert.pem +0 -67
  722. data/spec/fixtures/ssl/tampered-csr.pem +0 -62
  723. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  724. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +0 -117
  725. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +0 -70
  726. data/spec/fixtures/ssl/unknown-ca-key.pem +0 -117
  727. data/spec/fixtures/ssl/unknown-ca.pem +0 -81
  728. data/spec/fixtures/stdlib.tgz +0 -0
  729. data/spec/fixtures/unit/application/environments/production/data/common.yaml +0 -24
  730. data/spec/fixtures/unit/application/environments/production/environment.conf +0 -1
  731. data/spec/fixtures/unit/application/environments/production/manifests/site.pp +0 -1
  732. data/spec/fixtures/unit/application/environments/puppet_func_provider/environment.conf +0 -1
  733. data/spec/fixtures/unit/application/environments/puppet_func_provider/functions/environment/data.pp +0 -10
  734. data/spec/fixtures/unit/application/environments/puppet_func_provider/manifests/site.pp +0 -1
  735. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/data/bad.json +0 -3
  736. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/environment.conf +0 -2
  737. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/hiera.yaml +0 -5
  738. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_json/manifests/site.pp +0 -5
  739. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/data/bad.yaml +0 -3
  740. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/environment.conf +0 -2
  741. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/hiera.yaml +0 -5
  742. data/spec/fixtures/unit/data_providers/environments/hiera_bad_syntax_yaml/manifests/site.pp +0 -5
  743. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/data/common.yaml +0 -2
  744. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/environment.conf +0 -2
  745. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/manifests/site.pp +0 -1
  746. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/data/common.yaml +0 -2
  747. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/manifests/init.pp +0 -5
  748. data/spec/fixtures/unit/data_providers/environments/hiera_defaults/modules/one/metadata.json +0 -9
  749. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/first.json +0 -3
  750. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/name.yaml +0 -2
  751. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/second.json +0 -3
  752. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/single.yaml +0 -2
  753. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/third_utf8.json +0 -3
  754. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data1/utf8.yaml +0 -3
  755. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/data2/single.yaml +0 -2
  756. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/environment.conf +0 -2
  757. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/hiera.yaml +0 -22
  758. data/spec/fixtures/unit/data_providers/environments/hiera_env_config/manifests/site.pp +0 -5
  759. data/spec/fixtures/unit/data_providers/environments/hiera_misc/data/common.yaml +0 -48
  760. data/spec/fixtures/unit/data_providers/environments/hiera_misc/environment.conf +0 -2
  761. data/spec/fixtures/unit/data_providers/environments/hiera_misc/manifests/site.pp +0 -1
  762. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/data/common.yaml +0 -30
  763. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/manifests/init.pp +0 -13
  764. data/spec/fixtures/unit/data_providers/environments/hiera_misc/modules/one/metadata.json +0 -9
  765. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/common.yaml +0 -4
  766. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/data/specific.yaml +0 -4
  767. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/environment.conf +0 -2
  768. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/hiera.yaml +0 -7
  769. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/manifests/site.pp +0 -1
  770. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/first.json +0 -3
  771. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/name.yaml +0 -2
  772. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/second.json +0 -3
  773. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server1.yaml +0 -1
  774. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/server2.yaml +0 -1
  775. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data1/single.yaml +0 -2
  776. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/data2/single.yaml +0 -2
  777. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/hiera.yaml +0 -20
  778. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/manifests/init.pp +0 -5
  779. data/spec/fixtures/unit/data_providers/environments/hiera_module_config/modules/one/metadata.json +0 -9
  780. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/common.yaml +0 -4
  781. data/spec/fixtures/unit/data_providers/environments/hiera_modules/data/specific.yaml +0 -4
  782. data/spec/fixtures/unit/data_providers/environments/hiera_modules/environment.conf +0 -2
  783. data/spec/fixtures/unit/data_providers/environments/hiera_modules/hiera.yaml +0 -7
  784. data/spec/fixtures/unit/data_providers/environments/hiera_modules/manifests/site.pp +0 -1
  785. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/data/common.yaml +0 -6
  786. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/hiera.yaml +0 -5
  787. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/manifests/init.pp +0 -2
  788. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/one/metadata.json +0 -9
  789. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/data/common.yaml +0 -4
  790. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/hiera.yaml +0 -5
  791. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/manifests/init.pp +0 -3
  792. data/spec/fixtures/unit/data_providers/environments/hiera_modules/modules/two/metadata.json +0 -9
  793. data/spec/fixtures/unit/data_providers/environments/production/environment.conf +0 -2
  794. data/spec/fixtures/unit/data_providers/environments/production/lib/puppet/functions/environment/data.rb +0 -9
  795. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  796. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/manifests/init.pp +0 -10
  797. data/spec/fixtures/unit/data_providers/environments/production/modules/abc/metadata.json +0 -9
  798. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/functions/data.pp +0 -6
  799. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/manifests/init.pp +0 -9
  800. data/spec/fixtures/unit/data_providers/environments/production/modules/xyz/metadata.json +0 -9
  801. data/spec/fixtures/unit/forge/bacula-releases.json +0 -128
  802. data/spec/fixtures/unit/forge/bacula.json +0 -76
  803. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  804. data/spec/fixtures/unit/functions/hiera/hiera/backend/hieraspec_backend.rb +0 -22
  805. data/spec/fixtures/unit/functions/lookup/data/common.yaml +0 -19
  806. data/spec/fixtures/unit/functions/lookup/hiera/backend/custom_backend.rb +0 -18
  807. data/spec/fixtures/unit/functions/lookup/hiera/backend/other_backend.rb +0 -7
  808. data/spec/fixtures/unit/functions/lookup_fixture/data/common.yaml +0 -19
  809. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/environment.conf +0 -2
  810. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/lib/puppet/functions/environment/data.rb +0 -13
  811. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/lib/puppet/functions/abc/data.rb +0 -9
  812. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/manifests/init.pp +0 -8
  813. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/abc/metadata.json +0 -9
  814. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/lib/puppet/functions/bad_data/data.rb +0 -7
  815. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/manifests/init.pp +0 -2
  816. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bad_data/metadata.json +0 -9
  817. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/lib/puppet/functions/bca/data.rb +0 -9
  818. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/manifests/init.pp +0 -2
  819. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/bca/metadata.json +0 -9
  820. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/data/empty.json +0 -0
  821. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/hiera.yaml +0 -5
  822. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/manifests/init.pp +0 -2
  823. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_json/metadata.json +0 -9
  824. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/data/empty_key.json +0 -1
  825. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/hiera.yaml +0 -5
  826. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/manifests/init.pp +0 -2
  827. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_json/metadata.json +0 -9
  828. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/data/empty_key.yaml +0 -1
  829. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/hiera.yaml +0 -5
  830. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/manifests/init.pp +0 -2
  831. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_key_yaml/metadata.json +0 -9
  832. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/data/empty.yaml +0 -2
  833. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/hiera.yaml +0 -5
  834. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/manifests/init.pp +0 -2
  835. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/empty_yaml/metadata.json +0 -9
  836. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/data/first.json +0 -4
  837. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/hiera.yaml +0 -8
  838. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/manifests/init.pp +0 -5
  839. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/hieraprovider/metadata.json +0 -9
  840. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/lib/puppet/functions/meta/data.rb +0 -9
  841. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/manifests/init.pp +0 -3
  842. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/meta/metadata.json +0 -9
  843. data/spec/fixtures/unit/functions/lookup_fixture/environments/production/modules/no_provider/manifests/init.pp +0 -2
  844. data/spec/fixtures/unit/indirector/data_binding/hiera/global.yaml +0 -10
  845. data/spec/fixtures/unit/indirector/data_binding/hiera/invalid.yaml +0 -1
  846. data/spec/fixtures/unit/indirector/hiera/global.yaml +0 -10
  847. data/spec/fixtures/unit/indirector/hiera/invalid.yaml +0 -1
  848. data/spec/fixtures/unit/module/trailing-comma.json +0 -24
  849. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/init.pp +0 -3
  850. data/spec/fixtures/unit/parser/functions/create_resources/foo/manifests/wrongdefine.pp +0 -3
  851. data/spec/fixtures/unit/parser/lexer/aliastest.pp +0 -16
  852. data/spec/fixtures/unit/parser/lexer/append.pp +0 -11
  853. data/spec/fixtures/unit/parser/lexer/argumentdefaults.pp +0 -14
  854. data/spec/fixtures/unit/parser/lexer/arithmetic_expression.pp +0 -8
  855. data/spec/fixtures/unit/parser/lexer/arraytrailingcomma.pp +0 -3
  856. data/spec/fixtures/unit/parser/lexer/casestatement.pp +0 -65
  857. data/spec/fixtures/unit/parser/lexer/classheirarchy.pp +0 -15
  858. data/spec/fixtures/unit/parser/lexer/classincludes.pp +0 -17
  859. data/spec/fixtures/unit/parser/lexer/classpathtest.pp +0 -11
  860. data/spec/fixtures/unit/parser/lexer/collection.pp +0 -10
  861. data/spec/fixtures/unit/parser/lexer/collection_override.pp +0 -8
  862. data/spec/fixtures/unit/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  863. data/spec/fixtures/unit/parser/lexer/componentmetaparams.pp +0 -11
  864. data/spec/fixtures/unit/parser/lexer/componentrequire.pp +0 -8
  865. data/spec/fixtures/unit/parser/lexer/deepclassheirarchy.pp +0 -23
  866. data/spec/fixtures/unit/parser/lexer/defineoverrides.pp +0 -17
  867. data/spec/fixtures/unit/parser/lexer/emptyclass.pp +0 -9
  868. data/spec/fixtures/unit/parser/lexer/emptyexec.pp +0 -3
  869. data/spec/fixtures/unit/parser/lexer/emptyifelse.pp +0 -9
  870. data/spec/fixtures/unit/parser/lexer/falsevalues.pp +0 -3
  871. data/spec/fixtures/unit/parser/lexer/filecreate.pp +0 -11
  872. data/spec/fixtures/unit/parser/lexer/fqdefinition.pp +0 -5
  873. data/spec/fixtures/unit/parser/lexer/fqparents.pp +0 -11
  874. data/spec/fixtures/unit/parser/lexer/funccomma.pp +0 -5
  875. data/spec/fixtures/unit/parser/lexer/hash.pp +0 -33
  876. data/spec/fixtures/unit/parser/lexer/ifexpression.pp +0 -12
  877. data/spec/fixtures/unit/parser/lexer/implicititeration.pp +0 -15
  878. data/spec/fixtures/unit/parser/lexer/multilinecomments.pp +0 -10
  879. data/spec/fixtures/unit/parser/lexer/multipleclass.pp +0 -9
  880. data/spec/fixtures/unit/parser/lexer/multipleinstances.pp +0 -7
  881. data/spec/fixtures/unit/parser/lexer/multisubs.pp +0 -13
  882. data/spec/fixtures/unit/parser/lexer/namevartest.pp +0 -9
  883. data/spec/fixtures/unit/parser/lexer/scopetest.pp +0 -13
  884. data/spec/fixtures/unit/parser/lexer/selectorvalues.pp +0 -49
  885. data/spec/fixtures/unit/parser/lexer/simpledefaults.pp +0 -5
  886. data/spec/fixtures/unit/parser/lexer/simpleselector.pp +0 -38
  887. data/spec/fixtures/unit/parser/lexer/singleary.pp +0 -19
  888. data/spec/fixtures/unit/parser/lexer/singlequote.pp +0 -11
  889. data/spec/fixtures/unit/parser/lexer/singleselector.pp +0 -22
  890. data/spec/fixtures/unit/parser/lexer/subclass_name_duplication.pp +0 -11
  891. data/spec/fixtures/unit/parser/lexer/tag.pp +0 -9
  892. data/spec/fixtures/unit/parser/lexer/tagged.pp +0 -35
  893. data/spec/fixtures/unit/parser/lexer/virtualresources.pp +0 -14
  894. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/binder_config.yaml +0 -10
  895. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/lib/puppet/bindings/confdirtest.rb +0 -10
  896. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet/bindings/awesome2/default.rb +0 -20
  897. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/awesome2/lib/puppet_x/awesome2/echo_scheme_handler.rb +0 -18
  898. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/bad/lib/puppet/bindings/bad/default.rb +0 -5
  899. data/spec/fixtures/unit/pops/binder/bindings_composer/ok/modules/good/lib/puppet/bindings/good/default.rb +0 -6
  900. data/spec/fixtures/unit/pops/binder/config/binder_config/nolayer/binder_config.yaml +0 -6
  901. data/spec/fixtures/unit/pops/binder/config/binder_config/ok/binder_config.yaml +0 -9
  902. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/functions/usee_puppet.pp +0 -3
  903. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/callee.rb +0 -5
  904. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/functions/usee/usee_ruby.rb +0 -6
  905. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/lib/puppet/type/usee_type.rb +0 -5
  906. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/manifests/init.pp +0 -8
  907. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee/types/zero.pp +0 -1
  908. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/usee2/lib/puppet/functions/usee2/callee.rb +0 -5
  909. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet.pp +0 -5
  910. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_puppet_init.pp +0 -5
  911. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/functions/puppet_calling_ruby.pp +0 -5
  912. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller.rb +0 -5
  913. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/caller2.rb +0 -5
  914. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet.rb +0 -5
  915. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_puppet_init.rb +0 -5
  916. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/lib/puppet/functions/user/ruby_calling_ruby.rb +0 -5
  917. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/manifests/init.pp +0 -87
  918. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/metadata.json +0 -10
  919. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseeone.pp +0 -1
  920. data/spec/fixtures/unit/pops/loaders/loaders/dependent_modules_with_metadata/modules/user/types/withuseezero.pp +0 -1
  921. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load.rb +0 -11
  922. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  923. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  924. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  925. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  926. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee.rb +0 -8
  927. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/callee_ws.rb +0 -8
  928. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/func_with_syntax_error.rb +0 -9
  929. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  930. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/metadata.json +0 -9
  931. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcalled.pp +0 -3
  932. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller.pp +0 -3
  933. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/functions/puppetcaller4.pp +0 -3
  934. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller.rb +0 -5
  935. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/caller_ws.rb +0 -12
  936. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/lib/puppet/functions/user/callingpuppet.rb +0 -5
  937. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/user/metadata.json +0 -9
  938. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/functions/hello.pp +0 -3
  939. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/manifests/init.pp +0 -3
  940. data/spec/fixtures/unit/pops/loaders/loaders/module_no_lib/modules/modulea/metadata.json +0 -10
  941. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +0 -10
  942. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/hello.pp +0 -3
  943. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/functions/subspace/hello.pp +0 -3
  944. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/modulea/rb_func_a.rb +0 -5
  945. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/lib/puppet/functions/rb_func_a.rb +0 -5
  946. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/manifests/init.pp +0 -3
  947. data/spec/fixtures/unit/pops/loaders/loaders/single_module/modules/modulea/metadata.json +0 -10
  948. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/lib/puppet/functions/moduleb/rb_func_b.rb +0 -6
  949. data/spec/fixtures/unit/pops/loaders/loaders/wo_metadata_module/modules/moduleb/manifests/init.pp +0 -3
  950. data/spec/fixtures/unit/pops/parser/lexer/aliastest.pp +0 -16
  951. data/spec/fixtures/unit/pops/parser/lexer/append.pp +0 -11
  952. data/spec/fixtures/unit/pops/parser/lexer/argumentdefaults.pp +0 -14
  953. data/spec/fixtures/unit/pops/parser/lexer/arithmetic_expression.pp +0 -8
  954. data/spec/fixtures/unit/pops/parser/lexer/arraytrailingcomma.pp +0 -3
  955. data/spec/fixtures/unit/pops/parser/lexer/casestatement.pp +0 -65
  956. data/spec/fixtures/unit/pops/parser/lexer/classheirarchy.pp +0 -15
  957. data/spec/fixtures/unit/pops/parser/lexer/classincludes.pp +0 -17
  958. data/spec/fixtures/unit/pops/parser/lexer/classpathtest.pp +0 -11
  959. data/spec/fixtures/unit/pops/parser/lexer/collection.pp +0 -10
  960. data/spec/fixtures/unit/pops/parser/lexer/collection_override.pp +0 -8
  961. data/spec/fixtures/unit/pops/parser/lexer/collection_within_virtual_definitions.pp +0 -20
  962. data/spec/fixtures/unit/pops/parser/lexer/componentmetaparams.pp +0 -11
  963. data/spec/fixtures/unit/pops/parser/lexer/componentrequire.pp +0 -8
  964. data/spec/fixtures/unit/pops/parser/lexer/deepclassheirarchy.pp +0 -23
  965. data/spec/fixtures/unit/pops/parser/lexer/defineoverrides.pp +0 -17
  966. data/spec/fixtures/unit/pops/parser/lexer/emptyclass.pp +0 -9
  967. data/spec/fixtures/unit/pops/parser/lexer/emptyexec.pp +0 -3
  968. data/spec/fixtures/unit/pops/parser/lexer/emptyifelse.pp +0 -9
  969. data/spec/fixtures/unit/pops/parser/lexer/falsevalues.pp +0 -3
  970. data/spec/fixtures/unit/pops/parser/lexer/filecreate.pp +0 -11
  971. data/spec/fixtures/unit/pops/parser/lexer/fqdefinition.pp +0 -5
  972. data/spec/fixtures/unit/pops/parser/lexer/fqparents.pp +0 -11
  973. data/spec/fixtures/unit/pops/parser/lexer/funccomma.pp +0 -5
  974. data/spec/fixtures/unit/pops/parser/lexer/hash.pp +0 -33
  975. data/spec/fixtures/unit/pops/parser/lexer/ifexpression.pp +0 -12
  976. data/spec/fixtures/unit/pops/parser/lexer/implicititeration.pp +0 -15
  977. data/spec/fixtures/unit/pops/parser/lexer/multilinecomments.pp +0 -10
  978. data/spec/fixtures/unit/pops/parser/lexer/multipleclass.pp +0 -9
  979. data/spec/fixtures/unit/pops/parser/lexer/multipleinstances.pp +0 -7
  980. data/spec/fixtures/unit/pops/parser/lexer/multisubs.pp +0 -13
  981. data/spec/fixtures/unit/pops/parser/lexer/namevartest.pp +0 -9
  982. data/spec/fixtures/unit/pops/parser/lexer/scopetest.pp +0 -13
  983. data/spec/fixtures/unit/pops/parser/lexer/selectorvalues.pp +0 -49
  984. data/spec/fixtures/unit/pops/parser/lexer/simpledefaults.pp +0 -5
  985. data/spec/fixtures/unit/pops/parser/lexer/simpleselector.pp +0 -38
  986. data/spec/fixtures/unit/pops/parser/lexer/singleary.pp +0 -19
  987. data/spec/fixtures/unit/pops/parser/lexer/singlequote.pp +0 -11
  988. data/spec/fixtures/unit/pops/parser/lexer/singleselector.pp +0 -22
  989. data/spec/fixtures/unit/pops/parser/lexer/subclass_name_duplication.pp +0 -11
  990. data/spec/fixtures/unit/pops/parser/lexer/tag.pp +0 -9
  991. data/spec/fixtures/unit/pops/parser/lexer/tagged.pp +0 -35
  992. data/spec/fixtures/unit/pops/parser/lexer/virtualresources.pp +0 -14
  993. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_input.out +0 -1
  994. data/spec/fixtures/unit/provider/aix_object/aix_colon_list_real_world_output.out +0 -1
  995. data/spec/fixtures/unit/provider/cron/crontab/single_line.yaml +0 -272
  996. data/spec/fixtures/unit/provider/cron/crontab/vixie_header.txt +0 -3
  997. data/spec/fixtures/unit/provider/cron/parsed/managed +0 -6
  998. data/spec/fixtures/unit/provider/cron/parsed/simple +0 -9
  999. data/spec/fixtures/unit/provider/package/dnfmodule/dnf-module-list.txt +0 -19
  1000. data/spec/fixtures/unit/provider/package/gem/gem-list-single-package +0 -4
  1001. data/spec/fixtures/unit/provider/package/gem/line-with-1.8.5-warning +0 -14
  1002. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.detail +0 -19
  1003. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.list +0 -10
  1004. data/spec/fixtures/unit/provider/package/openbsd/pkginfo.query +0 -1
  1005. data/spec/fixtures/unit/provider/package/openbsd/pkginfo_flavors.list +0 -2
  1006. data/spec/fixtures/unit/provider/package/pkg/dummy_implicit_version +0 -3
  1007. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris10 +0 -1
  1008. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.certificate_warning +0 -2
  1009. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.installed +0 -1
  1010. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.ifo.known +0 -1
  1011. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.installed +0 -1
  1012. data/spec/fixtures/unit/provider/package/pkg/dummy_solaris11.known +0 -1
  1013. data/spec/fixtures/unit/provider/package/pkg/incomplete +0 -1
  1014. data/spec/fixtures/unit/provider/package/pkg/solaris11 +0 -2
  1015. data/spec/fixtures/unit/provider/package/pkg/unknown_status +0 -12
  1016. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +0 -7
  1017. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +0 -1
  1018. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +0 -5
  1019. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +0 -30
  1020. data/spec/fixtures/unit/provider/package/sun/dummy.server +0 -12
  1021. data/spec/fixtures/unit/provider/package/sun/simple +0 -24
  1022. data/spec/fixtures/unit/provider/package/yum/yum-check-update-broken-notices.txt +0 -187
  1023. data/spec/fixtures/unit/provider/package/yum/yum-check-update-multiline.txt +0 -201
  1024. data/spec/fixtures/unit/provider/package/yum/yum-check-update-obsoletes.txt +0 -195
  1025. data/spec/fixtures/unit/provider/package/yum/yum-check-update-plugin-output.txt +0 -36
  1026. data/spec/fixtures/unit/provider/package/yum/yum-check-update-security.txt +0 -184
  1027. data/spec/fixtures/unit/provider/package/yum/yum-check-update-simple.txt +0 -13
  1028. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +0 -9
  1029. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-SLES11sp1.out +0 -369
  1030. data/spec/fixtures/unit/provider/package/zypper/zypper-list-updates-empty.out +0 -3
  1031. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +0 -13
  1032. data/spec/fixtures/unit/provider/parsedfile/aliases.txt +0 -2
  1033. data/spec/fixtures/unit/provider/parsedfile/simple.txt +0 -7
  1034. data/spec/fixtures/unit/provider/service/base/ps_ef.mixed_encoding +0 -3
  1035. data/spec/fixtures/unit/provider/service/gentoo/rc_update_show +0 -30
  1036. data/spec/fixtures/unit/provider/service/openbsd/rcctl_getall +0 -6
  1037. data/spec/fixtures/unit/provider/service/openrc/rcservice_list +0 -8
  1038. data/spec/fixtures/unit/provider/service/openrc/rcstatus +0 -43
  1039. data/spec/fixtures/unit/provider/service/smf/svcs_fmri.out +0 -6
  1040. data/spec/fixtures/unit/provider/service/smf/svcs_instances.out +0 -4
  1041. data/spec/fixtures/unit/provider/service/smf/svcs_multiple_fmris.out +0 -13
  1042. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +0 -16
  1043. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  1044. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -36
  1045. data/spec/fixtures/unit/reports/tagmail/tagmail_email.conf +0 -2
  1046. data/spec/fixtures/unit/reports/tagmail/tagmail_failers.conf +0 -3
  1047. data/spec/fixtures/unit/reports/tagmail/tagmail_passers.conf +0 -30
  1048. data/spec/fixtures/unit/ssl/certificate/old-style-cert-exts.pem +0 -33
  1049. data/spec/fixtures/unit/ssl/certificate_request/old-style-cert-request.pem +0 -28
  1050. data/spec/fixtures/unit/type/user/authorized_keys +0 -6
  1051. data/spec/fixtures/unit/util/filetype/aixtab_output +0 -44
  1052. data/spec/fixtures/unit/util/filetype/suntab_output +0 -9
  1053. data/spec/fixtures/unit/util/monkey_patches/x509.pem +0 -32
  1054. data/spec/fixtures/unit/util/rdoc/basic.pp +0 -16
  1055. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +0 -104
  1056. 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 +0 -108
  1057. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +0 -108
  1058. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +0 -104
  1059. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +0 -100
  1060. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +0 -104
  1061. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +0 -104
  1062. data/spec/fixtures/yaml/report2.6.x.yaml +0 -190
  1063. data/spec/fixtures/yaml/test.local.yaml +0 -16
  1064. data/spec/integration/agent/logging_spec.rb +0 -179
  1065. data/spec/integration/application/agent_spec.rb +0 -1067
  1066. data/spec/integration/application/apply_spec.rb +0 -781
  1067. data/spec/integration/application/doc_spec.rb +0 -24
  1068. data/spec/integration/application/filebucket_spec.rb +0 -255
  1069. data/spec/integration/application/help_spec.rb +0 -44
  1070. data/spec/integration/application/lookup_spec.rb +0 -275
  1071. data/spec/integration/application/module_spec.rb +0 -230
  1072. data/spec/integration/application/plugin_spec.rb +0 -145
  1073. data/spec/integration/application/resource_spec.rb +0 -68
  1074. data/spec/integration/application/ssl_spec.rb +0 -20
  1075. data/spec/integration/configurer_spec.rb +0 -166
  1076. data/spec/integration/data_binding_spec.rb +0 -278
  1077. data/spec/integration/defaults_spec.rb +0 -279
  1078. data/spec/integration/directory_environments_spec.rb +0 -67
  1079. data/spec/integration/environments/default_manifest_spec.rb +0 -215
  1080. data/spec/integration/environments/setting_hooks_spec.rb +0 -27
  1081. data/spec/integration/environments/settings_interpolation_spec.rb +0 -106
  1082. data/spec/integration/environments/settings_spec.rb +0 -128
  1083. data/spec/integration/http/client_spec.rb +0 -229
  1084. data/spec/integration/indirector/catalog/compiler_spec.rb +0 -75
  1085. data/spec/integration/indirector/direct_file_server_spec.rb +0 -90
  1086. data/spec/integration/indirector/facts/facter_spec.rb +0 -168
  1087. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -106
  1088. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -75
  1089. data/spec/integration/l10n/compiler_spec.rb +0 -37
  1090. data/spec/integration/network/formats_spec.rb +0 -90
  1091. data/spec/integration/network/http/api/indirected_routes_spec.rb +0 -60
  1092. data/spec/integration/network/http_pool_spec.rb +0 -275
  1093. data/spec/integration/node/environment_spec.rb +0 -170
  1094. data/spec/integration/node/facts_spec.rb +0 -40
  1095. data/spec/integration/node_spec.rb +0 -77
  1096. data/spec/integration/parser/catalog_spec.rb +0 -68
  1097. data/spec/integration/parser/class_spec.rb +0 -33
  1098. data/spec/integration/parser/collection_spec.rb +0 -362
  1099. data/spec/integration/parser/compiler_spec.rb +0 -1221
  1100. data/spec/integration/parser/conditionals_spec.rb +0 -95
  1101. data/spec/integration/parser/dynamic_scoping_spec.rb +0 -66
  1102. data/spec/integration/parser/environment_spec.rb +0 -47
  1103. data/spec/integration/parser/node_spec.rb +0 -163
  1104. data/spec/integration/parser/parameter_defaults_spec.rb +0 -358
  1105. data/spec/integration/parser/pcore_resource_spec.rb +0 -243
  1106. data/spec/integration/parser/resource_expressions_spec.rb +0 -222
  1107. data/spec/integration/parser/scope_spec.rb +0 -735
  1108. data/spec/integration/parser/script_compiler_spec.rb +0 -113
  1109. data/spec/integration/parser/undef_param_spec.rb +0 -95
  1110. data/spec/integration/provider/file/windows_spec.rb +0 -162
  1111. data/spec/integration/resource/catalog_spec.rb +0 -47
  1112. data/spec/integration/resource/type_collection_spec.rb +0 -88
  1113. data/spec/integration/transaction/report_spec.rb +0 -706
  1114. data/spec/integration/transaction_spec.rb +0 -553
  1115. data/spec/integration/type/exec_spec.rb +0 -114
  1116. data/spec/integration/type/file_spec.rb +0 -2012
  1117. data/spec/integration/type/notify_spec.rb +0 -46
  1118. data/spec/integration/type/package_spec.rb +0 -200
  1119. data/spec/integration/type/tidy_spec.rb +0 -45
  1120. data/spec/integration/type_spec.rb +0 -30
  1121. data/spec/integration/util/autoload_spec.rb +0 -104
  1122. data/spec/integration/util/execution_spec.rb +0 -104
  1123. data/spec/integration/util/rdoc/parser_spec.rb +0 -171
  1124. data/spec/integration/util/settings_spec.rb +0 -115
  1125. data/spec/integration/util/windows/adsi_spec.rb +0 -207
  1126. data/spec/integration/util/windows/monkey_patches/process_spec.rb +0 -231
  1127. data/spec/integration/util/windows/principal_spec.rb +0 -279
  1128. data/spec/integration/util/windows/process_spec.rb +0 -96
  1129. data/spec/integration/util/windows/registry_spec.rb +0 -334
  1130. data/spec/integration/util/windows/security_spec.rb +0 -1010
  1131. data/spec/integration/util/windows/user_spec.rb +0 -226
  1132. data/spec/integration/util_spec.rb +0 -104
  1133. data/spec/lib/matchers/containment_matchers.rb +0 -52
  1134. data/spec/lib/matchers/include_in_order.rb +0 -20
  1135. data/spec/lib/matchers/include_in_order_spec.rb +0 -30
  1136. data/spec/lib/matchers/json.rb +0 -132
  1137. data/spec/lib/matchers/match_tokens2.rb +0 -74
  1138. data/spec/lib/matchers/relationship_graph_matchers.rb +0 -48
  1139. data/spec/lib/matchers/resource.rb +0 -74
  1140. data/spec/lib/puppet/certificate_factory.rb +0 -218
  1141. data/spec/lib/puppet/face/1.0.0/huzzah.rb +0 -8
  1142. data/spec/lib/puppet/face/basetest.rb +0 -51
  1143. data/spec/lib/puppet/face/huzzah/obsolete.rb +0 -6
  1144. data/spec/lib/puppet/face/huzzah.rb +0 -8
  1145. data/spec/lib/puppet/face/version_matching.rb +0 -12
  1146. data/spec/lib/puppet/indirector/indirector_testing/json.rb +0 -6
  1147. data/spec/lib/puppet/indirector/indirector_testing/memory.rb +0 -7
  1148. data/spec/lib/puppet/indirector/indirector_testing/msgpack.rb +0 -6
  1149. data/spec/lib/puppet/indirector_proxy.rb +0 -34
  1150. data/spec/lib/puppet/indirector_testing.rb +0 -31
  1151. data/spec/lib/puppet/test_ca.rb +0 -157
  1152. data/spec/lib/puppet_spec/character_encoding.rb +0 -12
  1153. data/spec/lib/puppet_spec/compiler.rb +0 -112
  1154. data/spec/lib/puppet_spec/files.rb +0 -107
  1155. data/spec/lib/puppet_spec/fixtures.rb +0 -52
  1156. data/spec/lib/puppet_spec/handler.rb +0 -53
  1157. data/spec/lib/puppet_spec/https.rb +0 -95
  1158. data/spec/lib/puppet_spec/language.rb +0 -75
  1159. data/spec/lib/puppet_spec/matchers.rb +0 -68
  1160. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +0 -56
  1161. data/spec/lib/puppet_spec/module_tool/stub_source.rb +0 -136
  1162. data/spec/lib/puppet_spec/modules.rb +0 -82
  1163. data/spec/lib/puppet_spec/network.rb +0 -127
  1164. data/spec/lib/puppet_spec/pops.rb +0 -29
  1165. data/spec/lib/puppet_spec/puppetserver.rb +0 -180
  1166. data/spec/lib/puppet_spec/scope.rb +0 -13
  1167. data/spec/lib/puppet_spec/settings.rb +0 -39
  1168. data/spec/lib/puppet_spec/ssl.rb +0 -265
  1169. data/spec/lib/puppet_spec/unindent.rb +0 -5
  1170. data/spec/lib/puppet_spec/verbose.rb +0 -20
  1171. data/spec/shared_behaviours/all_parsedfile_providers.rb +0 -21
  1172. data/spec/shared_behaviours/an_indirector_face.rb +0 -6
  1173. data/spec/shared_behaviours/documentation_on_faces.rb +0 -261
  1174. data/spec/shared_behaviours/file_server_terminus.rb +0 -38
  1175. data/spec/shared_behaviours/file_serving.rb +0 -73
  1176. data/spec/shared_behaviours/hiera_indirections.rb +0 -98
  1177. data/spec/shared_behaviours/iterative_functions.rb +0 -68
  1178. data/spec/shared_behaviours/memory_terminus.rb +0 -28
  1179. data/spec/shared_behaviours/path_parameters.rb +0 -160
  1180. data/spec/shared_behaviours/store_configs_terminus.rb +0 -21
  1181. data/spec/shared_behaviours/things_that_declare_options.rb +0 -262
  1182. data/spec/shared_contexts/checksum.rb +0 -65
  1183. data/spec/shared_contexts/digests.rb +0 -100
  1184. data/spec/shared_contexts/https.rb +0 -29
  1185. data/spec/shared_contexts/l10n.rb +0 -32
  1186. data/spec/shared_contexts/provider.rb +0 -16
  1187. data/spec/shared_contexts/types_setup.rb +0 -204
  1188. data/spec/shared_examples/rhel_package_provider.rb +0 -398
  1189. data/spec/spec_helper.rb +0 -240
  1190. data/spec/unit/agent/disabler_spec.rb +0 -63
  1191. data/spec/unit/agent/locker_spec.rb +0 -99
  1192. data/spec/unit/agent_spec.rb +0 -411
  1193. data/spec/unit/application/agent_spec.rb +0 -640
  1194. data/spec/unit/application/apply_spec.rb +0 -559
  1195. data/spec/unit/application/config_spec.rb +0 -232
  1196. data/spec/unit/application/describe_spec.rb +0 -135
  1197. data/spec/unit/application/device_spec.rb +0 -616
  1198. data/spec/unit/application/doc_spec.rb +0 -333
  1199. data/spec/unit/application/face_base_spec.rb +0 -454
  1200. data/spec/unit/application/facts_spec.rb +0 -139
  1201. data/spec/unit/application/filebucket_spec.rb +0 -319
  1202. data/spec/unit/application/indirection_base_spec.rb +0 -50
  1203. data/spec/unit/application/lookup_spec.rb +0 -698
  1204. data/spec/unit/application/resource_spec.rb +0 -229
  1205. data/spec/unit/application/ssl_spec.rb +0 -507
  1206. data/spec/unit/application_spec.rb +0 -730
  1207. data/spec/unit/certificate_factory_spec.rb +0 -170
  1208. data/spec/unit/concurrent/lock_spec.rb +0 -29
  1209. data/spec/unit/concurrent/thread_local_singleton_spec.rb +0 -39
  1210. data/spec/unit/configurer/downloader_spec.rb +0 -252
  1211. data/spec/unit/configurer/fact_handler_spec.rb +0 -147
  1212. data/spec/unit/configurer/plugin_handler_spec.rb +0 -152
  1213. data/spec/unit/configurer_spec.rb +0 -1488
  1214. data/spec/unit/confine/exists_spec.rb +0 -82
  1215. data/spec/unit/confine/false_spec.rb +0 -78
  1216. data/spec/unit/confine/feature_spec.rb +0 -59
  1217. data/spec/unit/confine/true_spec.rb +0 -78
  1218. data/spec/unit/confine/variable_spec.rb +0 -105
  1219. data/spec/unit/confine_collection_spec.rb +0 -132
  1220. data/spec/unit/confine_spec.rb +0 -99
  1221. data/spec/unit/confiner_spec.rb +0 -61
  1222. data/spec/unit/context/trusted_information_spec.rb +0 -213
  1223. data/spec/unit/context_spec.rb +0 -217
  1224. data/spec/unit/daemon_spec.rb +0 -176
  1225. data/spec/unit/data_binding_spec.rb +0 -11
  1226. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -122
  1227. data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -362
  1228. data/spec/unit/datatypes_spec.rb +0 -352
  1229. data/spec/unit/defaults_spec.rb +0 -182
  1230. data/spec/unit/environments_spec.rb +0 -1186
  1231. data/spec/unit/etc_spec.rb +0 -465
  1232. data/spec/unit/external/pson_spec.rb +0 -58
  1233. data/spec/unit/face/config_spec.rb +0 -402
  1234. data/spec/unit/face/epp_face_spec.rb +0 -385
  1235. data/spec/unit/face/facts_spec.rb +0 -78
  1236. data/spec/unit/face/generate_spec.rb +0 -293
  1237. data/spec/unit/face/help_spec.rb +0 -208
  1238. data/spec/unit/face/module/install_spec.rb +0 -40
  1239. data/spec/unit/face/module/list_spec.rb +0 -256
  1240. data/spec/unit/face/module/uninstall_spec.rb +0 -45
  1241. data/spec/unit/face/module/upgrade_spec.rb +0 -26
  1242. data/spec/unit/face/node_spec.rb +0 -129
  1243. data/spec/unit/face/parser_spec.rb +0 -310
  1244. data/spec/unit/face/plugin_spec.rb +0 -158
  1245. data/spec/unit/face_spec.rb +0 -1
  1246. data/spec/unit/facter_impl_spec.rb +0 -31
  1247. data/spec/unit/file_bucket/dipper_spec.rb +0 -405
  1248. data/spec/unit/file_bucket/file_spec.rb +0 -58
  1249. data/spec/unit/file_serving/base_spec.rb +0 -164
  1250. data/spec/unit/file_serving/configuration/parser_spec.rb +0 -206
  1251. data/spec/unit/file_serving/configuration_spec.rb +0 -240
  1252. data/spec/unit/file_serving/content_spec.rb +0 -98
  1253. data/spec/unit/file_serving/fileset_spec.rb +0 -417
  1254. data/spec/unit/file_serving/http_metadata_spec.rb +0 -109
  1255. data/spec/unit/file_serving/metadata_spec.rb +0 -551
  1256. data/spec/unit/file_serving/mount/file_spec.rb +0 -188
  1257. data/spec/unit/file_serving/mount/locales_spec.rb +0 -72
  1258. data/spec/unit/file_serving/mount/modules_spec.rb +0 -69
  1259. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +0 -72
  1260. data/spec/unit/file_serving/mount/plugins_spec.rb +0 -72
  1261. data/spec/unit/file_serving/mount/scripts_spec.rb +0 -69
  1262. data/spec/unit/file_serving/mount/tasks_spec.rb +0 -71
  1263. data/spec/unit/file_serving/mount_spec.rb +0 -30
  1264. data/spec/unit/file_serving/terminus_helper_spec.rb +0 -114
  1265. data/spec/unit/file_serving/terminus_selector_spec.rb +0 -84
  1266. data/spec/unit/file_system/path_pattern_spec.rb +0 -153
  1267. data/spec/unit/file_system/uniquefile_spec.rb +0 -245
  1268. data/spec/unit/file_system_spec.rb +0 -1198
  1269. data/spec/unit/forge/errors_spec.rb +0 -80
  1270. data/spec/unit/forge/forge_spec.rb +0 -69
  1271. data/spec/unit/forge/module_release_spec.rb +0 -331
  1272. data/spec/unit/forge/repository_spec.rb +0 -154
  1273. data/spec/unit/forge_spec.rb +0 -210
  1274. data/spec/unit/functions/abs_spec.rb +0 -70
  1275. data/spec/unit/functions/all_spec.rb +0 -97
  1276. data/spec/unit/functions/annotate_spec.rb +0 -175
  1277. data/spec/unit/functions/any_spec.rb +0 -109
  1278. data/spec/unit/functions/assert_type_spec.rb +0 -97
  1279. data/spec/unit/functions/binary_file_spec.rb +0 -46
  1280. data/spec/unit/functions/break_spec.rb +0 -207
  1281. data/spec/unit/functions/call_spec.rb +0 -131
  1282. data/spec/unit/functions/camelcase_spec.rb +0 -34
  1283. data/spec/unit/functions/capitalize_spec.rb +0 -34
  1284. data/spec/unit/functions/ceiling_spec.rb +0 -65
  1285. data/spec/unit/functions/chomp_spec.rb +0 -46
  1286. data/spec/unit/functions/chop_spec.rb +0 -38
  1287. data/spec/unit/functions/compare_spec.rb +0 -147
  1288. data/spec/unit/functions/contain_spec.rb +0 -297
  1289. data/spec/unit/functions/convert_to_spec.rb +0 -25
  1290. data/spec/unit/functions/defined_spec.rb +0 -288
  1291. data/spec/unit/functions/dig_spec.rb +0 -58
  1292. data/spec/unit/functions/downcase_spec.rb +0 -34
  1293. data/spec/unit/functions/each_spec.rb +0 -107
  1294. data/spec/unit/functions/empty_spec.rb +0 -87
  1295. data/spec/unit/functions/epp_spec.rb +0 -178
  1296. data/spec/unit/functions/filter_spec.rb +0 -145
  1297. data/spec/unit/functions/find_file_spec.rb +0 -69
  1298. data/spec/unit/functions/find_template_spec.rb +0 -69
  1299. data/spec/unit/functions/flatten_spec.rb +0 -31
  1300. data/spec/unit/functions/floor_spec.rb +0 -65
  1301. data/spec/unit/functions/get_spec.rb +0 -135
  1302. data/spec/unit/functions/getvar_spec.rb +0 -121
  1303. data/spec/unit/functions/group_by_spec.rb +0 -40
  1304. data/spec/unit/functions/hiera_spec.rb +0 -495
  1305. data/spec/unit/functions/include_spec.rb +0 -186
  1306. data/spec/unit/functions/index_spec.rb +0 -184
  1307. data/spec/unit/functions/inline_epp_spec.rb +0 -120
  1308. data/spec/unit/functions/join_spec.rb +0 -33
  1309. data/spec/unit/functions/keys_spec.rb +0 -31
  1310. data/spec/unit/functions/length_spec.rb +0 -50
  1311. data/spec/unit/functions/lest_spec.rb +0 -34
  1312. data/spec/unit/functions/logging_spec.rb +0 -62
  1313. data/spec/unit/functions/lookup_fixture_spec.rb +0 -687
  1314. data/spec/unit/functions/lookup_spec.rb +0 -3415
  1315. data/spec/unit/functions/lstrip_spec.rb +0 -30
  1316. data/spec/unit/functions/map_spec.rb +0 -163
  1317. data/spec/unit/functions/match_spec.rb +0 -74
  1318. data/spec/unit/functions/max_spec.rb +0 -158
  1319. data/spec/unit/functions/min_spec.rb +0 -158
  1320. data/spec/unit/functions/module_directory_spec.rb +0 -43
  1321. data/spec/unit/functions/new_spec.rb +0 -776
  1322. data/spec/unit/functions/next_spec.rb +0 -93
  1323. data/spec/unit/functions/partition_spec.rb +0 -40
  1324. data/spec/unit/functions/reduce_spec.rb +0 -85
  1325. data/spec/unit/functions/regsubst_spec.rb +0 -114
  1326. data/spec/unit/functions/require_spec.rb +0 -82
  1327. data/spec/unit/functions/return_spec.rb +0 -109
  1328. data/spec/unit/functions/reverse_each_spec.rb +0 -108
  1329. data/spec/unit/functions/round_spec.rb +0 -41
  1330. data/spec/unit/functions/rstrip_spec.rb +0 -30
  1331. data/spec/unit/functions/scanf_spec.rb +0 -32
  1332. data/spec/unit/functions/shared.rb +0 -94
  1333. data/spec/unit/functions/size_spec.rb +0 -50
  1334. data/spec/unit/functions/slice_spec.rb +0 -136
  1335. data/spec/unit/functions/sort_spec.rb +0 -79
  1336. data/spec/unit/functions/split_spec.rb +0 -59
  1337. data/spec/unit/functions/step_spec.rb +0 -113
  1338. data/spec/unit/functions/strftime_spec.rb +0 -152
  1339. data/spec/unit/functions/strip_spec.rb +0 -30
  1340. data/spec/unit/functions/then_spec.rb +0 -40
  1341. data/spec/unit/functions/tree_each_spec.rb +0 -493
  1342. data/spec/unit/functions/type_spec.rb +0 -35
  1343. data/spec/unit/functions/unique_spec.rb +0 -111
  1344. data/spec/unit/functions/unwrap_spec.rb +0 -37
  1345. data/spec/unit/functions/upcase_spec.rb +0 -34
  1346. data/spec/unit/functions/values_spec.rb +0 -30
  1347. data/spec/unit/functions/versioncmp_spec.rb +0 -70
  1348. data/spec/unit/functions/with_spec.rb +0 -31
  1349. data/spec/unit/functions4_spec.rb +0 -1046
  1350. data/spec/unit/gettext/config_spec.rb +0 -156
  1351. data/spec/unit/gettext/module_loading_spec.rb +0 -53
  1352. data/spec/unit/graph/key_spec.rb +0 -41
  1353. data/spec/unit/graph/rb_tree_map_spec.rb +0 -570
  1354. data/spec/unit/graph/relationship_graph_spec.rb +0 -401
  1355. data/spec/unit/graph/sequential_prioritizer_spec.rb +0 -32
  1356. data/spec/unit/graph/simple_graph_spec.rb +0 -759
  1357. data/spec/unit/hiera/scope_spec.rb +0 -105
  1358. data/spec/unit/hiera_puppet_spec.rb +0 -159
  1359. data/spec/unit/http/client_spec.rb +0 -937
  1360. data/spec/unit/http/dns_spec.rb +0 -281
  1361. data/spec/unit/http/external_client_spec.rb +0 -201
  1362. data/spec/unit/http/factory_spec.rb +0 -160
  1363. data/spec/unit/http/pool_entry_spec.rb +0 -49
  1364. data/spec/unit/http/pool_spec.rb +0 -401
  1365. data/spec/unit/http/proxy_spec.rb +0 -347
  1366. data/spec/unit/http/resolver_spec.rb +0 -133
  1367. data/spec/unit/http/response_spec.rb +0 -75
  1368. data/spec/unit/http/service/ca_spec.rb +0 -281
  1369. data/spec/unit/http/service/compiler_spec.rb +0 -746
  1370. data/spec/unit/http/service/file_server_spec.rb +0 -309
  1371. data/spec/unit/http/service/puppetserver_spec.rb +0 -112
  1372. data/spec/unit/http/service/report_spec.rb +0 -107
  1373. data/spec/unit/http/service_spec.rb +0 -137
  1374. data/spec/unit/http/session_spec.rb +0 -309
  1375. data/spec/unit/http/site_spec.rb +0 -96
  1376. data/spec/unit/indirector/catalog/compiler_spec.rb +0 -1238
  1377. data/spec/unit/indirector/catalog/json_spec.rb +0 -66
  1378. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -11
  1379. data/spec/unit/indirector/catalog/rest_spec.rb +0 -91
  1380. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -16
  1381. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -23
  1382. data/spec/unit/indirector/data_binding/hiera_spec.rb +0 -19
  1383. data/spec/unit/indirector/data_binding/none_spec.rb +0 -28
  1384. data/spec/unit/indirector/direct_file_server_spec.rb +0 -87
  1385. data/spec/unit/indirector/envelope_spec.rb +0 -32
  1386. data/spec/unit/indirector/exec_spec.rb +0 -63
  1387. data/spec/unit/indirector/face_spec.rb +0 -80
  1388. data/spec/unit/indirector/facts/facter_spec.rb +0 -290
  1389. data/spec/unit/indirector/facts/json_spec.rb +0 -255
  1390. data/spec/unit/indirector/facts/network_device_spec.rb +0 -77
  1391. data/spec/unit/indirector/facts/rest_spec.rb +0 -99
  1392. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -16
  1393. data/spec/unit/indirector/facts/yaml_spec.rb +0 -255
  1394. data/spec/unit/indirector/file_bucket_file/file_spec.rb +0 -426
  1395. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -89
  1396. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +0 -46
  1397. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -13
  1398. data/spec/unit/indirector/file_content/file_spec.rb +0 -13
  1399. data/spec/unit/indirector/file_content/rest_spec.rb +0 -60
  1400. data/spec/unit/indirector/file_content/selector_spec.rb +0 -9
  1401. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -13
  1402. data/spec/unit/indirector/file_metadata/file_spec.rb +0 -57
  1403. data/spec/unit/indirector/file_metadata/http_spec.rb +0 -194
  1404. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -116
  1405. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -10
  1406. data/spec/unit/indirector/file_server_spec.rb +0 -288
  1407. data/spec/unit/indirector/hiera_spec.rb +0 -22
  1408. data/spec/unit/indirector/indirection_spec.rb +0 -916
  1409. data/spec/unit/indirector/json_spec.rb +0 -200
  1410. data/spec/unit/indirector/memory_spec.rb +0 -26
  1411. data/spec/unit/indirector/msgpack_spec.rb +0 -199
  1412. data/spec/unit/indirector/node/exec_spec.rb +0 -107
  1413. data/spec/unit/indirector/node/json_spec.rb +0 -33
  1414. data/spec/unit/indirector/node/memory_spec.rb +0 -16
  1415. data/spec/unit/indirector/node/msgpack_spec.rb +0 -23
  1416. data/spec/unit/indirector/node/plain_spec.rb +0 -34
  1417. data/spec/unit/indirector/node/rest_spec.rb +0 -66
  1418. data/spec/unit/indirector/node/store_configs_spec.rb +0 -16
  1419. data/spec/unit/indirector/node/yaml_spec.rb +0 -23
  1420. data/spec/unit/indirector/none_spec.rb +0 -33
  1421. data/spec/unit/indirector/plain_spec.rb +0 -26
  1422. data/spec/unit/indirector/report/json_spec.rb +0 -72
  1423. data/spec/unit/indirector/report/msgpack_spec.rb +0 -27
  1424. data/spec/unit/indirector/report/processor_spec.rb +0 -99
  1425. data/spec/unit/indirector/report/rest_spec.rb +0 -58
  1426. data/spec/unit/indirector/report/yaml_spec.rb +0 -91
  1427. data/spec/unit/indirector/request_spec.rb +0 -295
  1428. data/spec/unit/indirector/resource/ral_spec.rb +0 -89
  1429. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -20
  1430. data/spec/unit/indirector/rest_spec.rb +0 -149
  1431. data/spec/unit/indirector/terminus_spec.rb +0 -264
  1432. data/spec/unit/indirector/yaml_spec.rb +0 -188
  1433. data/spec/unit/indirector_spec.rb +0 -148
  1434. data/spec/unit/info_service_spec.rb +0 -575
  1435. data/spec/unit/interface/action_builder_spec.rb +0 -216
  1436. data/spec/unit/interface/action_manager_spec.rb +0 -254
  1437. data/spec/unit/interface/action_spec.rb +0 -670
  1438. data/spec/unit/interface/documentation_spec.rb +0 -32
  1439. data/spec/unit/interface/face_collection_spec.rb +0 -219
  1440. data/spec/unit/interface/option_builder_spec.rb +0 -86
  1441. data/spec/unit/interface/option_spec.rb +0 -156
  1442. data/spec/unit/interface_spec.rb +0 -305
  1443. data/spec/unit/module_spec.rb +0 -985
  1444. data/spec/unit/module_tool/application_spec.rb +0 -25
  1445. data/spec/unit/module_tool/applications/checksummer_spec.rb +0 -115
  1446. data/spec/unit/module_tool/applications/installer_spec.rb +0 -473
  1447. data/spec/unit/module_tool/applications/uninstaller_spec.rb +0 -181
  1448. data/spec/unit/module_tool/applications/unpacker_spec.rb +0 -75
  1449. data/spec/unit/module_tool/applications/upgrader_spec.rb +0 -337
  1450. data/spec/unit/module_tool/install_directory_spec.rb +0 -70
  1451. data/spec/unit/module_tool/installed_modules_spec.rb +0 -49
  1452. data/spec/unit/module_tool/metadata_spec.rb +0 -330
  1453. data/spec/unit/module_tool/tar/gnu_spec.rb +0 -23
  1454. data/spec/unit/module_tool/tar/mini_spec.rb +0 -109
  1455. data/spec/unit/module_tool/tar_spec.rb +0 -36
  1456. data/spec/unit/module_tool_spec.rb +0 -304
  1457. data/spec/unit/network/authconfig_spec.rb +0 -8
  1458. data/spec/unit/network/authorization_spec.rb +0 -8
  1459. data/spec/unit/network/format_handler_spec.rb +0 -93
  1460. data/spec/unit/network/format_spec.rb +0 -205
  1461. data/spec/unit/network/format_support_spec.rb +0 -199
  1462. data/spec/unit/network/formats_spec.rb +0 -584
  1463. data/spec/unit/network/http/api/indirected_routes_spec.rb +0 -425
  1464. data/spec/unit/network/http/api/master_spec.rb +0 -38
  1465. data/spec/unit/network/http/api/server/v3/environments_spec.rb +0 -51
  1466. data/spec/unit/network/http/api/server/v3_spec.rb +0 -78
  1467. data/spec/unit/network/http/api_spec.rb +0 -109
  1468. data/spec/unit/network/http/connection_spec.rb +0 -636
  1469. data/spec/unit/network/http/error_spec.rb +0 -30
  1470. data/spec/unit/network/http/handler_spec.rb +0 -164
  1471. data/spec/unit/network/http/request_spec.rb +0 -108
  1472. data/spec/unit/network/http/response_spec.rb +0 -106
  1473. data/spec/unit/network/http/route_spec.rb +0 -90
  1474. data/spec/unit/network/http_pool_spec.rb +0 -145
  1475. data/spec/unit/network/uri_spec.rb +0 -47
  1476. data/spec/unit/node/environment_spec.rb +0 -612
  1477. data/spec/unit/node/facts_spec.rb +0 -225
  1478. data/spec/unit/node_spec.rb +0 -434
  1479. data/spec/unit/other/selinux_spec.rb +0 -27
  1480. data/spec/unit/parameter/boolean_spec.rb +0 -35
  1481. data/spec/unit/parameter/package_options_spec.rb +0 -43
  1482. data/spec/unit/parameter/path_spec.rb +0 -23
  1483. data/spec/unit/parameter/value_collection_spec.rb +0 -160
  1484. data/spec/unit/parameter/value_spec.rb +0 -82
  1485. data/spec/unit/parameter_spec.rb +0 -272
  1486. data/spec/unit/parser/ast/block_expression_spec.rb +0 -66
  1487. data/spec/unit/parser/ast/leaf_spec.rb +0 -136
  1488. data/spec/unit/parser/compiler_spec.rb +0 -1020
  1489. data/spec/unit/parser/files_spec.rb +0 -101
  1490. data/spec/unit/parser/functions/create_resources_spec.rb +0 -326
  1491. data/spec/unit/parser/functions/digest_spec.rb +0 -26
  1492. data/spec/unit/parser/functions/fail_spec.rb +0 -23
  1493. data/spec/unit/parser/functions/file_spec.rb +0 -99
  1494. data/spec/unit/parser/functions/fqdn_rand_spec.rb +0 -87
  1495. data/spec/unit/parser/functions/generate_spec.rb +0 -124
  1496. data/spec/unit/parser/functions/hiera_array_spec.rb +0 -12
  1497. data/spec/unit/parser/functions/hiera_hash_spec.rb +0 -12
  1498. data/spec/unit/parser/functions/hiera_include_spec.rb +0 -12
  1499. data/spec/unit/parser/functions/hiera_spec.rb +0 -12
  1500. data/spec/unit/parser/functions/inline_template_spec.rb +0 -36
  1501. data/spec/unit/parser/functions/lookup_spec.rb +0 -14
  1502. data/spec/unit/parser/functions/realize_spec.rb +0 -70
  1503. data/spec/unit/parser/functions/regsubst_spec.rb +0 -19
  1504. data/spec/unit/parser/functions/scanf_spec.rb +0 -25
  1505. data/spec/unit/parser/functions/shellquote_spec.rb +0 -66
  1506. data/spec/unit/parser/functions/split_spec.rb +0 -13
  1507. data/spec/unit/parser/functions/sprintf_spec.rb +0 -68
  1508. data/spec/unit/parser/functions/tag_spec.rb +0 -30
  1509. data/spec/unit/parser/functions/tagged_spec.rb +0 -36
  1510. data/spec/unit/parser/functions/template_spec.rb +0 -93
  1511. data/spec/unit/parser/functions/versioncmp_spec.rb +0 -28
  1512. data/spec/unit/parser/functions_spec.rb +0 -156
  1513. data/spec/unit/parser/relationship_spec.rb +0 -74
  1514. data/spec/unit/parser/resource/param_spec.rb +0 -32
  1515. data/spec/unit/parser/resource_spec.rb +0 -657
  1516. data/spec/unit/parser/scope_spec.rb +0 -698
  1517. data/spec/unit/parser/templatewrapper_spec.rb +0 -111
  1518. data/spec/unit/parser/type_loader_spec.rb +0 -202
  1519. data/spec/unit/plan_spec.rb +0 -65
  1520. data/spec/unit/pops/adaptable_spec.rb +0 -139
  1521. data/spec/unit/pops/benchmark_spec.rb +0 -123
  1522. data/spec/unit/pops/containment_spec.rb +0 -0
  1523. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -560
  1524. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -317
  1525. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -101
  1526. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -108
  1527. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -267
  1528. data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -189
  1529. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -46
  1530. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +0 -1639
  1531. data/spec/unit/pops/evaluator/evaluator_rspec_helper.rb +0 -75
  1532. data/spec/unit/pops/evaluator/json_strict_literal_evaluator_spec.rb +0 -63
  1533. data/spec/unit/pops/evaluator/literal_evaluator_spec.rb +0 -43
  1534. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -89
  1535. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -181
  1536. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -43
  1537. data/spec/unit/pops/evaluator/variables_spec.rb +0 -88
  1538. data/spec/unit/pops/factory_rspec_helper.rb +0 -65
  1539. data/spec/unit/pops/factory_spec.rb +0 -309
  1540. data/spec/unit/pops/issues_spec.rb +0 -210
  1541. data/spec/unit/pops/label_provider_spec.rb +0 -46
  1542. data/spec/unit/pops/loaders/dependency_loader_spec.rb +0 -122
  1543. data/spec/unit/pops/loaders/environment_loader_spec.rb +0 -172
  1544. data/spec/unit/pops/loaders/loader_paths_spec.rb +0 -43
  1545. data/spec/unit/pops/loaders/loader_spec.rb +0 -516
  1546. data/spec/unit/pops/loaders/loaders_spec.rb +0 -863
  1547. data/spec/unit/pops/loaders/module_loaders_spec.rb +0 -268
  1548. data/spec/unit/pops/loaders/static_loader_spec.rb +0 -85
  1549. data/spec/unit/pops/lookup/context_spec.rb +0 -333
  1550. data/spec/unit/pops/lookup/interpolation_spec.rb +0 -389
  1551. data/spec/unit/pops/lookup/lookup_spec.rb +0 -375
  1552. data/spec/unit/pops/merge_strategy_spec.rb +0 -17
  1553. data/spec/unit/pops/migration_spec.rb +0 -51
  1554. data/spec/unit/pops/model/model_spec.rb +0 -41
  1555. data/spec/unit/pops/model/pn_transformer_spec.rb +0 -56
  1556. data/spec/unit/pops/parser/epp_parser_spec.rb +0 -115
  1557. data/spec/unit/pops/parser/evaluating_parser_spec.rb +0 -89
  1558. data/spec/unit/pops/parser/lexer2_spec.rb +0 -942
  1559. data/spec/unit/pops/parser/locator_spec.rb +0 -86
  1560. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -380
  1561. data/spec/unit/pops/parser/parse_calls_spec.rb +0 -171
  1562. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -184
  1563. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -247
  1564. data/spec/unit/pops/parser/parse_functions_spec.rb +0 -19
  1565. data/spec/unit/pops/parser/parse_heredoc_spec.rb +0 -276
  1566. data/spec/unit/pops/parser/parse_lambda_spec.rb +0 -19
  1567. data/spec/unit/pops/parser/parse_plan_spec.rb +0 -47
  1568. data/spec/unit/pops/parser/parse_resource_spec.rb +0 -328
  1569. data/spec/unit/pops/parser/parser_rspec_helper.rb +0 -17
  1570. data/spec/unit/pops/parser/parser_spec.rb +0 -211
  1571. data/spec/unit/pops/parser/parsing_typed_parameters_spec.rb +0 -65
  1572. data/spec/unit/pops/parser/pn_parser_spec.rb +0 -100
  1573. data/spec/unit/pops/pn_spec.rb +0 -147
  1574. data/spec/unit/pops/puppet_stack_spec.rb +0 -108
  1575. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -37
  1576. data/spec/unit/pops/serialization/packer_spec.rb +0 -162
  1577. data/spec/unit/pops/serialization/serialization_spec.rb +0 -458
  1578. data/spec/unit/pops/serialization/to_from_hr_spec.rb +0 -649
  1579. data/spec/unit/pops/serialization/to_stringified_spec.rb +0 -162
  1580. data/spec/unit/pops/time/timespan_spec.rb +0 -121
  1581. data/spec/unit/pops/time/timestamp_spec.rb +0 -13
  1582. data/spec/unit/pops/types/class_loader_spec.rb +0 -10
  1583. data/spec/unit/pops/types/deferred_spec.rb +0 -87
  1584. data/spec/unit/pops/types/error_spec.rb +0 -207
  1585. data/spec/unit/pops/types/iterable_spec.rb +0 -262
  1586. data/spec/unit/pops/types/p_binary_type_spec.rb +0 -243
  1587. data/spec/unit/pops/types/p_init_type_spec.rb +0 -383
  1588. data/spec/unit/pops/types/p_object_type_spec.rb +0 -1730
  1589. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -340
  1590. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -191
  1591. data/spec/unit/pops/types/p_timespan_type_spec.rb +0 -323
  1592. data/spec/unit/pops/types/p_timestamp_type_spec.rb +0 -391
  1593. data/spec/unit/pops/types/p_type_set_type_spec.rb +0 -549
  1594. data/spec/unit/pops/types/p_uri_type_spec.rb +0 -191
  1595. data/spec/unit/pops/types/recursion_guard_spec.rb +0 -93
  1596. data/spec/unit/pops/types/ruby_generator_spec.rb +0 -874
  1597. data/spec/unit/pops/types/string_converter_spec.rb +0 -1202
  1598. data/spec/unit/pops/types/task_spec.rb +0 -411
  1599. data/spec/unit/pops/types/type_acceptor_spec.rb +0 -106
  1600. data/spec/unit/pops/types/type_asserter_spec.rb +0 -43
  1601. data/spec/unit/pops/types/type_calculator_spec.rb +0 -2504
  1602. data/spec/unit/pops/types/type_factory_spec.rb +0 -322
  1603. data/spec/unit/pops/types/type_formatter_spec.rb +0 -427
  1604. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -424
  1605. data/spec/unit/pops/types/type_parser_spec.rb +0 -445
  1606. data/spec/unit/pops/types/types_spec.rb +0 -755
  1607. data/spec/unit/pops/utils_spec.rb +0 -70
  1608. data/spec/unit/pops/validation_spec.rb +0 -66
  1609. data/spec/unit/pops/validator/validator_spec.rb +0 -1029
  1610. data/spec/unit/pops/visitor_spec.rb +0 -93
  1611. data/spec/unit/property/boolean_spec.rb +0 -24
  1612. data/spec/unit/property/ensure_spec.rb +0 -11
  1613. data/spec/unit/property/keyvalue_spec.rb +0 -259
  1614. data/spec/unit/property/list_spec.rb +0 -172
  1615. data/spec/unit/property/ordered_list_spec.rb +0 -59
  1616. data/spec/unit/property_spec.rb +0 -563
  1617. data/spec/unit/provider/README.markdown +0 -4
  1618. data/spec/unit/provider/aix_object_spec.rb +0 -821
  1619. data/spec/unit/provider/command_spec.rb +0 -62
  1620. data/spec/unit/provider/exec/posix_spec.rb +0 -232
  1621. data/spec/unit/provider/exec/shell_spec.rb +0 -53
  1622. data/spec/unit/provider/exec/windows_spec.rb +0 -105
  1623. data/spec/unit/provider/exec_spec.rb +0 -244
  1624. data/spec/unit/provider/file/posix_spec.rb +0 -230
  1625. data/spec/unit/provider/file/windows_spec.rb +0 -152
  1626. data/spec/unit/provider/group/aix_spec.rb +0 -91
  1627. data/spec/unit/provider/group/directoryservice_spec.rb +0 -33
  1628. data/spec/unit/provider/group/groupadd_spec.rb +0 -284
  1629. data/spec/unit/provider/group/ldap_spec.rb +0 -98
  1630. data/spec/unit/provider/group/pw_spec.rb +0 -78
  1631. data/spec/unit/provider/group/windows_adsi_spec.rb +0 -398
  1632. data/spec/unit/provider/ldap_spec.rb +0 -242
  1633. data/spec/unit/provider/nameservice/directoryservice_spec.rb +0 -157
  1634. data/spec/unit/provider/nameservice_spec.rb +0 -398
  1635. data/spec/unit/provider/package/aix_spec.rb +0 -158
  1636. data/spec/unit/provider/package/appdmg_spec.rb +0 -42
  1637. data/spec/unit/provider/package/apt_spec.rb +0 -302
  1638. data/spec/unit/provider/package/aptitude_spec.rb +0 -46
  1639. data/spec/unit/provider/package/aptrpm_spec.rb +0 -42
  1640. data/spec/unit/provider/package/base_spec.rb +0 -19
  1641. data/spec/unit/provider/package/dnf_spec.rb +0 -62
  1642. data/spec/unit/provider/package/dnfmodule_spec.rb +0 -276
  1643. data/spec/unit/provider/package/dpkg_spec.rb +0 -444
  1644. data/spec/unit/provider/package/freebsd_spec.rb +0 -51
  1645. data/spec/unit/provider/package/gem_spec.rb +0 -487
  1646. data/spec/unit/provider/package/hpux_spec.rb +0 -48
  1647. data/spec/unit/provider/package/macports_spec.rb +0 -142
  1648. data/spec/unit/provider/package/nim_spec.rb +0 -267
  1649. data/spec/unit/provider/package/openbsd_spec.rb +0 -417
  1650. data/spec/unit/provider/package/opkg_spec.rb +0 -180
  1651. data/spec/unit/provider/package/pacman_spec.rb +0 -438
  1652. data/spec/unit/provider/package/pip2_spec.rb +0 -38
  1653. data/spec/unit/provider/package/pip3_spec.rb +0 -38
  1654. data/spec/unit/provider/package/pip_spec.rb +0 -504
  1655. data/spec/unit/provider/package/pkg_spec.rb +0 -473
  1656. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -166
  1657. data/spec/unit/provider/package/pkgin_spec.rb +0 -185
  1658. data/spec/unit/provider/package/pkgng_spec.rb +0 -228
  1659. data/spec/unit/provider/package/pkgutil_spec.rb +0 -231
  1660. data/spec/unit/provider/package/portage_spec.rb +0 -226
  1661. data/spec/unit/provider/package/puppet_gem_spec.rb +0 -130
  1662. data/spec/unit/provider/package/puppetserver_gem_spec.rb +0 -139
  1663. data/spec/unit/provider/package/rpm_spec.rb +0 -674
  1664. data/spec/unit/provider/package/sun_spec.rb +0 -112
  1665. data/spec/unit/provider/package/tdnf_spec.rb +0 -15
  1666. data/spec/unit/provider/package/up2date_spec.rb +0 -22
  1667. data/spec/unit/provider/package/urpmi_spec.rb +0 -84
  1668. data/spec/unit/provider/package/windows/exe_package_spec.rb +0 -114
  1669. data/spec/unit/provider/package/windows/msi_package_spec.rb +0 -111
  1670. data/spec/unit/provider/package/windows/package_spec.rb +0 -180
  1671. data/spec/unit/provider/package/windows_spec.rb +0 -272
  1672. data/spec/unit/provider/package/yum_spec.rb +0 -512
  1673. data/spec/unit/provider/package/zypper_spec.rb +0 -327
  1674. data/spec/unit/provider/package_targetable_spec.rb +0 -60
  1675. data/spec/unit/provider/parsedfile_spec.rb +0 -263
  1676. data/spec/unit/provider/service/base_spec.rb +0 -109
  1677. data/spec/unit/provider/service/bsd_spec.rb +0 -127
  1678. data/spec/unit/provider/service/daemontools_spec.rb +0 -190
  1679. data/spec/unit/provider/service/debian_spec.rb +0 -158
  1680. data/spec/unit/provider/service/freebsd_spec.rb +0 -92
  1681. data/spec/unit/provider/service/gentoo_spec.rb +0 -250
  1682. data/spec/unit/provider/service/init_spec.rb +0 -316
  1683. data/spec/unit/provider/service/launchd_spec.rb +0 -425
  1684. data/spec/unit/provider/service/openbsd_spec.rb +0 -196
  1685. data/spec/unit/provider/service/openrc_spec.rb +0 -231
  1686. data/spec/unit/provider/service/openwrt_spec.rb +0 -101
  1687. data/spec/unit/provider/service/rcng_spec.rb +0 -40
  1688. data/spec/unit/provider/service/redhat_spec.rb +0 -190
  1689. data/spec/unit/provider/service/runit_spec.rb +0 -164
  1690. data/spec/unit/provider/service/smf_spec.rb +0 -526
  1691. data/spec/unit/provider/service/src_spec.rb +0 -186
  1692. data/spec/unit/provider/service/systemd_spec.rb +0 -578
  1693. data/spec/unit/provider/service/upstart_spec.rb +0 -681
  1694. data/spec/unit/provider/service/windows_spec.rb +0 -475
  1695. data/spec/unit/provider/user/aix_spec.rb +0 -320
  1696. data/spec/unit/provider/user/directoryservice_spec.rb +0 -1256
  1697. data/spec/unit/provider/user/hpux_spec.rb +0 -72
  1698. data/spec/unit/provider/user/ldap_spec.rb +0 -286
  1699. data/spec/unit/provider/user/openbsd_spec.rb +0 -76
  1700. data/spec/unit/provider/user/pw_spec.rb +0 -252
  1701. data/spec/unit/provider/user/user_role_add_spec.rb +0 -374
  1702. data/spec/unit/provider/user/useradd_spec.rb +0 -849
  1703. data/spec/unit/provider/user/windows_adsi_spec.rb +0 -407
  1704. data/spec/unit/provider_spec.rb +0 -904
  1705. data/spec/unit/puppet_pal_2pec.rb +0 -1033
  1706. data/spec/unit/puppet_pal_catalog_spec.rb +0 -962
  1707. data/spec/unit/puppet_pal_spec.rb +0 -3
  1708. data/spec/unit/puppet_spec.rb +0 -127
  1709. data/spec/unit/relationship_spec.rb +0 -202
  1710. data/spec/unit/reports/http_spec.rb +0 -119
  1711. data/spec/unit/reports/store_spec.rb +0 -69
  1712. data/spec/unit/reports_spec.rb +0 -68
  1713. data/spec/unit/resource/catalog_spec.rb +0 -1160
  1714. data/spec/unit/resource/status_spec.rb +0 -216
  1715. data/spec/unit/resource/type_collection_spec.rb +0 -332
  1716. data/spec/unit/resource/type_spec.rb +0 -876
  1717. data/spec/unit/resource_spec.rb +0 -1189
  1718. data/spec/unit/scheduler/job_spec.rb +0 -78
  1719. data/spec/unit/scheduler/scheduler_spec.rb +0 -115
  1720. data/spec/unit/scheduler/splay_job_spec.rb +0 -34
  1721. data/spec/unit/settings/array_setting_spec.rb +0 -39
  1722. data/spec/unit/settings/autosign_setting_spec.rb +0 -104
  1723. data/spec/unit/settings/certificate_revocation_setting_spec.rb +0 -37
  1724. data/spec/unit/settings/config_file_spec.rb +0 -147
  1725. data/spec/unit/settings/directory_setting_spec.rb +0 -27
  1726. data/spec/unit/settings/duration_setting_spec.rb +0 -48
  1727. data/spec/unit/settings/enum_setting_spec.rb +0 -27
  1728. data/spec/unit/settings/environment_conf_spec.rb +0 -133
  1729. data/spec/unit/settings/file_setting_spec.rb +0 -344
  1730. data/spec/unit/settings/http_extra_headers_spec.rb +0 -62
  1731. data/spec/unit/settings/ini_file_spec.rb +0 -550
  1732. data/spec/unit/settings/integer_setting_spec.rb +0 -42
  1733. data/spec/unit/settings/path_setting_spec.rb +0 -29
  1734. data/spec/unit/settings/port_setting_spec.rb +0 -31
  1735. data/spec/unit/settings/priority_setting_spec.rb +0 -65
  1736. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  1737. data/spec/unit/settings/string_setting_spec.rb +0 -74
  1738. data/spec/unit/settings/terminus_setting_spec.rb +0 -27
  1739. data/spec/unit/settings/value_translator_spec.rb +0 -75
  1740. data/spec/unit/settings_spec.rb +0 -2343
  1741. data/spec/unit/ssl/base_spec.rb +0 -125
  1742. data/spec/unit/ssl/certificate_request_attributes_spec.rb +0 -80
  1743. data/spec/unit/ssl/certificate_request_spec.rb +0 -373
  1744. data/spec/unit/ssl/certificate_signer_spec.rb +0 -17
  1745. data/spec/unit/ssl/certificate_spec.rb +0 -183
  1746. data/spec/unit/ssl/digest_spec.rb +0 -34
  1747. data/spec/unit/ssl/oids_spec.rb +0 -73
  1748. data/spec/unit/ssl/ssl_provider_spec.rb +0 -657
  1749. data/spec/unit/ssl/state_machine_spec.rb +0 -1117
  1750. data/spec/unit/ssl/verifier_spec.rb +0 -102
  1751. data/spec/unit/task_spec.rb +0 -345
  1752. data/spec/unit/test/test_helper_spec.rb +0 -17
  1753. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -534
  1754. data/spec/unit/transaction/event_manager_spec.rb +0 -365
  1755. data/spec/unit/transaction/event_spec.rb +0 -198
  1756. data/spec/unit/transaction/persistence_spec.rb +0 -276
  1757. data/spec/unit/transaction/report_spec.rb +0 -772
  1758. data/spec/unit/transaction/resource_harness_spec.rb +0 -625
  1759. data/spec/unit/transaction_spec.rb +0 -1037
  1760. data/spec/unit/type/README.markdown +0 -4
  1761. data/spec/unit/type/component_spec.rb +0 -52
  1762. data/spec/unit/type/exec_spec.rb +0 -937
  1763. data/spec/unit/type/file/checksum_spec.rb +0 -104
  1764. data/spec/unit/type/file/checksum_value_spec.rb +0 -285
  1765. data/spec/unit/type/file/content_spec.rb +0 -440
  1766. data/spec/unit/type/file/ctime_spec.rb +0 -33
  1767. data/spec/unit/type/file/ensure_spec.rb +0 -121
  1768. data/spec/unit/type/file/group_spec.rb +0 -65
  1769. data/spec/unit/type/file/mode_spec.rb +0 -220
  1770. data/spec/unit/type/file/mtime_spec.rb +0 -33
  1771. data/spec/unit/type/file/owner_spec.rb +0 -63
  1772. data/spec/unit/type/file/selinux_spec.rb +0 -86
  1773. data/spec/unit/type/file/source_spec.rb +0 -730
  1774. data/spec/unit/type/file/type_spec.rb +0 -18
  1775. data/spec/unit/type/file_spec.rb +0 -1746
  1776. data/spec/unit/type/filebucket_spec.rb +0 -104
  1777. data/spec/unit/type/group_spec.rb +0 -105
  1778. data/spec/unit/type/noop_metaparam_spec.rb +0 -37
  1779. data/spec/unit/type/package/package_settings_spec.rb +0 -156
  1780. data/spec/unit/type/package_spec.rb +0 -396
  1781. data/spec/unit/type/resources_spec.rb +0 -362
  1782. data/spec/unit/type/schedule_spec.rb +0 -621
  1783. data/spec/unit/type/service_spec.rb +0 -458
  1784. data/spec/unit/type/stage_spec.rb +0 -7
  1785. data/spec/unit/type/tidy_spec.rb +0 -493
  1786. data/spec/unit/type/user_spec.rb +0 -553
  1787. data/spec/unit/type/whit_spec.rb +0 -9
  1788. data/spec/unit/type_spec.rb +0 -1473
  1789. data/spec/unit/util/at_fork_spec.rb +0 -150
  1790. data/spec/unit/util/autoload_spec.rb +0 -330
  1791. data/spec/unit/util/backups_spec.rb +0 -130
  1792. data/spec/unit/util/character_encoding_spec.rb +0 -186
  1793. data/spec/unit/util/checksums_spec.rb +0 -223
  1794. data/spec/unit/util/colors_spec.rb +0 -44
  1795. data/spec/unit/util/command_line_spec.rb +0 -200
  1796. data/spec/unit/util/command_line_utils/puppet_option_parser_spec.rb +0 -129
  1797. data/spec/unit/util/constant_inflector_spec.rb +0 -55
  1798. data/spec/unit/util/diff_spec.rb +0 -46
  1799. data/spec/unit/util/docs_spec.rb +0 -100
  1800. data/spec/unit/util/errors_spec.rb +0 -36
  1801. data/spec/unit/util/execution_spec.rb +0 -943
  1802. data/spec/unit/util/execution_stub_spec.rb +0 -38
  1803. data/spec/unit/util/feature_spec.rb +0 -129
  1804. data/spec/unit/util/filetype_spec.rb +0 -223
  1805. data/spec/unit/util/inifile_spec.rb +0 -510
  1806. data/spec/unit/util/json_lockfile_spec.rb +0 -48
  1807. data/spec/unit/util/json_spec.rb +0 -126
  1808. data/spec/unit/util/ldap/connection_spec.rb +0 -162
  1809. data/spec/unit/util/ldap/generator_spec.rb +0 -49
  1810. data/spec/unit/util/ldap/manager_spec.rb +0 -612
  1811. data/spec/unit/util/lockfile_spec.rb +0 -117
  1812. data/spec/unit/util/log/destinations_spec.rb +0 -258
  1813. data/spec/unit/util/log_spec.rb +0 -479
  1814. data/spec/unit/util/logging_spec.rb +0 -618
  1815. data/spec/unit/util/metric_spec.rb +0 -89
  1816. data/spec/unit/util/monkey_patches_spec.rb +0 -161
  1817. data/spec/unit/util/multi_match_spec.rb +0 -38
  1818. data/spec/unit/util/network_device/config_spec.rb +0 -91
  1819. data/spec/unit/util/network_device/transport/base_spec.rb +0 -40
  1820. data/spec/unit/util/network_device_spec.rb +0 -43
  1821. data/spec/unit/util/package/version/debian_spec.rb +0 -83
  1822. data/spec/unit/util/package/version/pip_spec.rb +0 -464
  1823. data/spec/unit/util/package/version/range_spec.rb +0 -175
  1824. data/spec/unit/util/package/version/rpm_spec.rb +0 -121
  1825. data/spec/unit/util/package_spec.rb +0 -19
  1826. data/spec/unit/util/pidlock_spec.rb +0 -333
  1827. data/spec/unit/util/plist_spec.rb +0 -168
  1828. data/spec/unit/util/posix_spec.rb +0 -630
  1829. data/spec/unit/util/profiler/aggregate_spec.rb +0 -55
  1830. data/spec/unit/util/profiler/around_profiler_spec.rb +0 -61
  1831. data/spec/unit/util/profiler/logging_spec.rb +0 -70
  1832. data/spec/unit/util/profiler/object_counts_spec.rb +0 -13
  1833. data/spec/unit/util/profiler/wall_clock_spec.rb +0 -13
  1834. data/spec/unit/util/profiler_spec.rb +0 -47
  1835. data/spec/unit/util/rdoc_spec.rb +0 -55
  1836. data/spec/unit/util/reference_spec.rb +0 -38
  1837. data/spec/unit/util/resource_template_spec.rb +0 -57
  1838. data/spec/unit/util/retry_action_spec.rb +0 -84
  1839. data/spec/unit/util/rpm_compare_spec.rb +0 -196
  1840. data/spec/unit/util/rubygems_spec.rb +0 -47
  1841. data/spec/unit/util/run_mode_spec.rb +0 -185
  1842. data/spec/unit/util/selinux_spec.rb +0 -422
  1843. data/spec/unit/util/skip_tags_spec.rb +0 -14
  1844. data/spec/unit/util/splayer_spec.rb +0 -44
  1845. data/spec/unit/util/storage_spec.rb +0 -330
  1846. data/spec/unit/util/suidmanager_spec.rb +0 -278
  1847. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -180
  1848. data/spec/unit/util/tag_set_spec.rb +0 -52
  1849. data/spec/unit/util/tagging_spec.rb +0 -246
  1850. data/spec/unit/util/terminal_spec.rb +0 -41
  1851. data/spec/unit/util/user_attr_spec.rb +0 -45
  1852. data/spec/unit/util/warnings_spec.rb +0 -45
  1853. data/spec/unit/util/watched_file_spec.rb +0 -52
  1854. data/spec/unit/util/watcher/periodic_watcher_spec.rb +0 -52
  1855. data/spec/unit/util/watcher_spec.rb +0 -86
  1856. data/spec/unit/util/windows/access_control_entry_spec.rb +0 -66
  1857. data/spec/unit/util/windows/access_control_list_spec.rb +0 -132
  1858. data/spec/unit/util/windows/adsi_spec.rb +0 -704
  1859. data/spec/unit/util/windows/api_types_spec.rb +0 -184
  1860. data/spec/unit/util/windows/eventlog_spec.rb +0 -120
  1861. data/spec/unit/util/windows/file_spec.rb +0 -88
  1862. data/spec/unit/util/windows/root_certs_spec.rb +0 -16
  1863. data/spec/unit/util/windows/security_descriptor_spec.rb +0 -115
  1864. data/spec/unit/util/windows/service_spec.rb +0 -677
  1865. data/spec/unit/util/windows/sid_spec.rb +0 -338
  1866. data/spec/unit/util/windows/string_spec.rb +0 -55
  1867. data/spec/unit/util/windows_spec.rb +0 -23
  1868. data/spec/unit/util/yaml_spec.rb +0 -171
  1869. data/spec/unit/util_spec.rb +0 -960
  1870. data/spec/unit/version_spec.rb +0 -61
  1871. data/spec/unit/x509/cert_provider_spec.rb +0 -663
  1872. data/spec/unit/x509/pem_store_spec.rb +0 -160
@@ -1,3415 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet_spec/compiler'
3
- require 'puppet_spec/files'
4
- require 'puppet/pops'
5
- require 'deep_merge/core'
6
-
7
- describe "The lookup function" do
8
- include PuppetSpec::Compiler
9
- include PuppetSpec::Files
10
-
11
- let(:env_name) { 'spec' }
12
- let(:code_dir_files) { {} }
13
- let(:code_dir) { tmpdir('code') }
14
- let(:ruby_dir) { tmpdir('ruby') }
15
- let(:env_modules) { {} }
16
- let(:env_hiera_yaml) do
17
- <<-YAML.unindent
18
- ---
19
- version: 5
20
- hierarchy:
21
- - name: "Common"
22
- data_hash: yaml_data
23
- path: "common.yaml"
24
- YAML
25
- end
26
-
27
- let(:env_data) { {} }
28
-
29
- let(:environment_files) do
30
- {
31
- env_name => {
32
- 'modules' => env_modules,
33
- 'hiera.yaml' => env_hiera_yaml,
34
- 'data' => env_data
35
- }
36
- }
37
- end
38
-
39
- let(:logs) { [] }
40
- let(:scope_additions ) { {} }
41
- let(:notices) { logs.select { |log| log.level == :notice }.map { |log| log.message } }
42
- let(:warnings) { logs.select { |log| log.level == :warning }.map { |log| log.message } }
43
- let(:debugs) { logs.select { |log| log.level == :debug }.map { |log| log.message } }
44
- let(:env) { Puppet::Node::Environment.create(env_name.to_sym, [File.join(populated_env_dir, env_name, 'modules')]) }
45
- let(:environments) { Puppet::Environments::Directories.new(populated_env_dir, []) }
46
- let(:node) { Puppet::Node.new('test_lookup', :environment => env) }
47
- let(:compiler) { Puppet::Parser::Compiler.new(node) }
48
- let(:lookup_func) { Puppet.lookup(:loaders).puppet_system_loader.load(:function, 'lookup') }
49
- let(:invocation_with_explain) { Puppet::Pops::Lookup::Invocation.new(compiler.topscope, {}, {}, true) }
50
- let(:explanation) { invocation_with_explain.explainer.explain }
51
-
52
- let(:populated_code_dir) do
53
- dir_contained_in(code_dir, code_dir_files)
54
- code_dir
55
- end
56
-
57
- let(:env_dir) do
58
- d = File.join(populated_code_dir, 'environments')
59
- Dir.mkdir(d)
60
- d
61
- end
62
-
63
- let(:populated_env_dir) do
64
- dir_contained_in(env_dir, environment_files)
65
- env_dir
66
- end
67
-
68
- before(:each) do
69
- Puppet.settings[:codedir] = code_dir
70
- Puppet.push_context(:environments => environments, :current_environment => env)
71
- end
72
-
73
- after(:each) do
74
- Puppet.pop_context
75
- if Object.const_defined?(:Hiera)
76
- Hiera.send(:remove_instance_variable, :@config) if Hiera.instance_variable_defined?(:@config)
77
- Hiera.send(:remove_instance_variable, :@logger) if Hiera.instance_variable_defined?(:@logger)
78
- if Hiera.const_defined?(:Config)
79
- Hiera::Config.send(:remove_instance_variable, :@config) if Hiera::Config.instance_variable_defined?(:@config)
80
- end
81
- if Hiera.const_defined?(:Backend) && Hiera::Backend.respond_to?(:clear!)
82
- Hiera::Backend.clear!
83
- end
84
- end
85
- end
86
-
87
- def collect_notices(code, explain = false, &block)
88
- Puppet[:code] = code
89
- Puppet::Util::Log.with_destination(Puppet::Test::LogCollector.new(logs)) do
90
- scope = compiler.topscope
91
- scope['domain'] = 'example.com'
92
- scope_additions.each_pair { |k, v| scope[k] = v }
93
- if explain
94
- begin
95
- invocation_with_explain.lookup('dummy', nil) do
96
- if block_given?
97
- compiler.compile { |catalog| block.call(compiler.topscope); catalog }
98
- else
99
- compiler.compile
100
- end
101
- end
102
- rescue RuntimeError => e
103
- invocation_with_explain.report_text { e.message }
104
- end
105
- else
106
- if block_given?
107
- compiler.compile { |catalog| block.call(compiler.topscope); catalog }
108
- else
109
- compiler.compile
110
- end
111
- end
112
- end
113
- nil
114
- end
115
-
116
- def lookup(key, options = {}, explain = false, type = nil)
117
- value_type = type ? ", #{type}" : ''
118
- nc_opts = options.empty? ? '' : ", #{Puppet::Pops::Types::TypeFormatter.string(options)}"
119
- keys = key.is_a?(Array) ? key : [key]
120
- collect_notices(keys.map { |k| "notice(String(lookup('#{k}'#{value_type}#{nc_opts}), '%p'))" }.join("\n"), explain)
121
- if explain
122
- explanation
123
- else
124
- result = notices.map { |n| Puppet::Pops::Types::TypeParser.singleton.parse_literal(n) }
125
- key.is_a?(Array) ? result : result[0]
126
- end
127
- end
128
-
129
- def explain(key, options = {})
130
- lookup(key, options, true)[1]
131
- explanation
132
- end
133
-
134
- context 'with faulty hiera.yaml configuration' do
135
- context 'in global layer' do
136
- let(:global_data) do
137
- {
138
- 'common.yaml' => <<-YAML.unindent
139
- a: value a (from global)
140
- YAML
141
- }
142
- end
143
-
144
- let(:code_dir_files) do
145
- {
146
- 'hiera.yaml' => hiera_yaml,
147
- 'data' => global_data
148
- }
149
- end
150
-
151
- before(:each) do
152
- # Need to set here since spec_helper defines these settings in its "before each"
153
- Puppet.settings[:codedir] = populated_code_dir
154
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
155
- end
156
-
157
- context 'using a not yet supported hiera version' do
158
- let(:hiera_yaml) { <<-YAML.unindent }
159
- version: 6
160
- YAML
161
-
162
- it 'fails and reports error' do
163
- expect { lookup('a') }.to raise_error("This runtime does not support hiera.yaml version 6 (file: #{code_dir}/hiera.yaml)")
164
- end
165
- end
166
-
167
- context 'with multiply defined backend using hiera version 3' do
168
- let(:hiera_yaml) { <<-YAML.unindent }
169
- :version: 3
170
- :backends:
171
- - yaml
172
- - json
173
- - yaml
174
- YAML
175
-
176
- it 'fails and reports error' do
177
- expect { lookup('a') }.to raise_error(
178
- "Backend 'yaml' is defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 5)")
179
- end
180
- end
181
-
182
- context 'using hiera version 4' do
183
- let(:hiera_yaml) { <<-YAML.unindent }
184
- version: 4
185
- YAML
186
-
187
- it 'fails and reports error' do
188
- expect { lookup('a') }.to raise_error(
189
- "hiera.yaml version 4 cannot be used in the global layer (file: #{code_dir}/hiera.yaml)")
190
- end
191
- end
192
-
193
- context 'using hiera version 5' do
194
- context 'with multiply defined hierarchy' do
195
- let(:hiera_yaml) { <<-YAML.unindent }
196
- version: 5
197
- hierarchy:
198
- - name: Common
199
- path: common.yaml
200
- - name: Other
201
- path: other.yaml
202
- - name: Common
203
- path: common.yaml
204
- YAML
205
-
206
- it 'fails and reports error' do
207
- expect { lookup('a') }.to raise_error(
208
- "Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{code_dir}/hiera.yaml, line: 7)")
209
- end
210
- end
211
-
212
- context 'with hiera3_backend that is provided as data_hash function' do
213
- let(:hiera_yaml) { <<-YAML.unindent }
214
- version: 5
215
- hierarchy:
216
- - name: Common
217
- hiera3_backend: hocon
218
- path: common.conf
219
- YAML
220
-
221
- it 'fails and reports error' do
222
- expect { lookup('a') }.to raise_error(
223
- "Use \"data_hash: hocon_data\" instead of \"hiera3_backend: hocon\" (file: #{code_dir}/hiera.yaml, line: 4)")
224
- end
225
- end
226
-
227
- context 'with no data provider function defined' do
228
- let(:hiera_yaml) { <<-YAML.unindent }
229
- version: 5
230
- defaults:
231
- datadir: data
232
- hierarchy:
233
- - name: Common
234
- path: common.txt
235
- YAML
236
-
237
- it 'fails and reports error' do
238
- expect { lookup('a') }.to raise_error(
239
- "One of data_hash, lookup_key, data_dig, or hiera3_backend must be defined in hierarchy 'Common' (file: #{code_dir}/hiera.yaml)")
240
- end
241
- end
242
-
243
- context 'with multiple data providers in defaults' do
244
- let(:hiera_yaml) { <<-YAML.unindent }
245
- version: 5
246
- defaults:
247
- data_hash: yaml_data
248
- lookup_key: eyaml_lookup_key
249
- datadir: data
250
- hierarchy:
251
- - name: Common
252
- path: common.txt
253
- YAML
254
-
255
- it 'fails and reports error' do
256
- expect { lookup('a') }.to raise_error(
257
- "Only one of data_hash, lookup_key, data_dig, or hiera3_backend can be defined in defaults (file: #{code_dir}/hiera.yaml)")
258
- end
259
- end
260
-
261
- context 'with non existing data provider function' do
262
- let(:hiera_yaml) { <<-YAML.unindent }
263
- version: 5
264
- hierarchy:
265
- - name: Common
266
- data_hash: nonesuch_txt_data
267
- path: common.yaml
268
- YAML
269
-
270
- it 'fails and reports error' do
271
- Puppet[:strict] = :error
272
- expect { lookup('a') }.to raise_error(
273
- "Unable to find 'data_hash' function named 'nonesuch_txt_data' (file: #{code_dir}/hiera.yaml)")
274
- end
275
- end
276
-
277
- context 'with a declared default_hierarchy' do
278
- let(:hiera_yaml) { <<-YAML.unindent }
279
- version: 5
280
- hierarchy:
281
- - name: Common
282
- path: common.yaml
283
- default_hierarchy:
284
- - name: Defaults
285
- path: defaults.yaml
286
- YAML
287
-
288
- it 'fails and reports error' do
289
- expect { lookup('a') }.to raise_error(
290
- "'default_hierarchy' is only allowed in the module layer (file: #{code_dir}/hiera.yaml, line: 5)")
291
- end
292
- end
293
-
294
- context 'with missing variables' do
295
- let(:scope_additions) { { 'fqdn' => 'test.example.com' } }
296
- let(:hiera_yaml) { <<-YAML.unindent }
297
- version: 5
298
- hierarchy:
299
- - name: Common # don't report this line %{::nonesuch}
300
- path: "%{::fqdn}/%{::nonesuch}/data.yaml"
301
- YAML
302
-
303
- it 'fails and reports errors when strict == error' do
304
- expect { lookup('a') }.to raise_error("Function lookup() did not find a value for the name 'a'")
305
- end
306
- end
307
-
308
- context 'using interpolation functions' do
309
- let(:hiera_yaml) { <<-YAML.unindent }
310
- version: 5
311
- hierarchy:
312
- - name: Common # don't report this line %{::nonesuch}
313
- path: "%{lookup('fqdn')}/data.yaml"
314
- YAML
315
-
316
- it 'fails and reports errors when strict == error' do
317
- expect { lookup('a') }.to raise_error("Interpolation using method syntax is not allowed in this context (file: #{code_dir}/hiera.yaml)")
318
- end
319
- end
320
- end
321
- end
322
-
323
- context 'in environment layer' do
324
- context 'using hiera version 4' do
325
- context 'with an unknown backend' do
326
- let(:env_hiera_yaml) { <<-YAML.unindent }
327
- version: 4
328
- hierarchy:
329
- - name: Common
330
- backend: nonesuch
331
- path: common.yaml
332
- YAML
333
-
334
- it 'fails and reports error' do
335
- expect { lookup('a') }.to raise_error(
336
- "No data provider is registered for backend 'nonesuch' (file: #{env_dir}/spec/hiera.yaml, line: 4)")
337
- end
338
- end
339
-
340
- context 'with multiply defined hierarchy' do
341
- let(:env_hiera_yaml) { <<-YAML.unindent }
342
- version: 4
343
- hierarchy:
344
- - name: Common
345
- backend: yaml
346
- path: common.yaml
347
- - name: Other
348
- backend: yaml
349
- path: other.yaml
350
- - name: Common
351
- backend: yaml
352
- path: common.yaml
353
- YAML
354
-
355
- it 'fails and reports error' do
356
- expect { lookup('a') }.to raise_error(
357
- "Hierarchy name 'Common' defined more than once. First defined at (line: 3) (file: #{env_dir}/spec/hiera.yaml, line: 9)")
358
- end
359
- end
360
- end
361
-
362
- context 'using hiera version 5' do
363
- context 'with a hiera3_backend declaration' do
364
- let(:env_hiera_yaml) { <<-YAML.unindent }
365
- version: 5
366
- hierarchy:
367
- - name: Common
368
- hiera3_backend: something
369
- YAML
370
-
371
- it 'fails and reports error' do
372
- expect { lookup('a') }.to raise_error(
373
- "'hiera3_backend' is only allowed in the global layer (file: #{env_dir}/spec/hiera.yaml, line: 4)")
374
- end
375
- end
376
-
377
- context 'with a declared default_hierarchy' do
378
- let(:env_hiera_yaml) { <<-YAML.unindent }
379
- version: 5
380
- hierarchy:
381
- - name: Common
382
- path: common.yaml
383
- default_hierarchy:
384
- - name: Defaults
385
- path: defaults.yaml
386
- YAML
387
-
388
- it 'fails and reports error' do
389
- Puppet[:strict] = :error
390
- expect { lookup('a') }.to raise_error(
391
- "'default_hierarchy' is only allowed in the module layer (file: #{env_dir}/spec/hiera.yaml, line: 5)")
392
- end
393
- end
394
- end
395
- end
396
- end
397
-
398
- context 'with an environment' do
399
- let(:env_data) do
400
- {
401
- 'common.yaml' => <<-YAML.unindent
402
- ---
403
- a: value a (from environment)
404
- c:
405
- c_b: value c_b (from environment)
406
- mod_a::a: value mod_a::a (from environment)
407
- mod_a::hash_a:
408
- a: value mod_a::hash_a.a (from environment)
409
- mod_a::hash_b:
410
- a: value mod_a::hash_b.a (from environment)
411
- hash_b:
412
- hash_ba:
413
- bab: value hash_b.hash_ba.bab (from environment)
414
- hash_c:
415
- hash_ca:
416
- caa: value hash_c.hash_ca.caa (from environment)
417
- lookup_options:
418
- mod_a::hash_b:
419
- merge: hash
420
- hash_c:
421
- merge: hash
422
- YAML
423
- }
424
- end
425
-
426
- it 'finds data in the environment' do
427
- expect(lookup('a')).to eql('value a (from environment)')
428
- end
429
-
430
- context 'with log-level debug' do
431
- before(:each) { Puppet[:log_level] = 'debug' }
432
-
433
- it 'does not report a regular lookup as APL' do
434
- expect(lookup('a')).to eql('value a (from environment)')
435
- expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(0)
436
- end
437
-
438
- it 'reports regular lookup as lookup' do
439
- expect(lookup('a')).to eql('value a (from environment)')
440
- expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(1)
441
- end
442
-
443
- it 'does not report APL as lookup' do
444
- collect_notices("class mod_a($a) { notice($a) }; include mod_a")
445
- expect(debugs.count { |dbg| dbg =~ /\A\s*Lookup of/ }).to eql(0)
446
- end
447
-
448
- it 'reports APL as APL' do
449
- collect_notices("class mod_a($a) { notice($a) }; include mod_a")
450
- expect(debugs.count { |dbg| dbg =~ /\A\s*Automatic Parameter Lookup of/ }).to eql(1)
451
- end
452
- end
453
-
454
- context 'that has no lookup configured' do
455
- let(:environment_files) do
456
- {
457
- env_name => {
458
- 'data' => env_data
459
- }
460
- }
461
- end
462
-
463
- it 'does not find data in the environment' do
464
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'a'/)
465
- end
466
-
467
- context "but an environment.conf with 'environment_data_provider=hiera'" do
468
- let(:environment_files) do
469
- {
470
- env_name => {
471
- 'environment.conf' => "environment_data_provider=hiera\n",
472
- 'data' => env_data
473
- }
474
- }
475
- end
476
-
477
- it 'finds data in the environment and reports deprecation warning for environment.conf' do
478
- expect(lookup('a')).to eql('value a (from environment)')
479
- expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
480
- end
481
-
482
- context 'and a hiera.yaml file' do
483
- let(:env_hiera_yaml) do
484
- <<-YAML.unindent
485
- ---
486
- version: 4
487
- hierarchy:
488
- - name: common
489
- backend: yaml
490
- YAML
491
- end
492
-
493
- let(:environment_files) do
494
- {
495
- env_name => {
496
- 'hiera.yaml' => env_hiera_yaml,
497
- 'environment.conf' => "environment_data_provider=hiera\n",
498
- 'data' => env_data
499
- }
500
- }
501
- end
502
-
503
- it 'finds data in the environment and reports deprecation warnings for both environment.conf and hiera.yaml' do
504
- expect(lookup('a')).to eql('value a (from environment)')
505
- expect(warnings).to include(/Defining environment_data_provider='hiera' in environment.conf is deprecated/)
506
- expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
507
- end
508
- end
509
- end
510
-
511
- context "but an environment.conf with 'environment_data_provider=function'" do
512
- let(:environment_files) do
513
- {
514
- env_name => {
515
- 'environment.conf' => "environment_data_provider=function\n",
516
- 'functions' => {
517
- 'environment' => { 'data.pp' => <<-PUPPET.unindent }
518
- function environment::data() {
519
- { 'a' => 'value a' }
520
- }
521
- PUPPET
522
- }
523
- }
524
- }
525
- end
526
-
527
- it 'finds data in the environment and reports deprecation warning for environment.conf' do
528
- expect(lookup('a')).to eql('value a')
529
- expect(warnings).to include(/Defining environment_data_provider='function' in environment.conf is deprecated. A 'hiera.yaml' file should be used instead/)
530
- expect(warnings).to include(/Using of legacy data provider function 'environment::data'. Please convert to a 'data_hash' function/)
531
- end
532
- end
533
- end
534
-
535
- context 'that has interpolated paths configured' do
536
- let(:env_hiera_yaml) do
537
- <<-YAML.unindent
538
- ---
539
- version: 5
540
- hierarchy:
541
- - name: "Varying"
542
- data_hash: yaml_data
543
- path: "#{data_path}"
544
- YAML
545
- end
546
-
547
- let(:environment_files) do
548
- {
549
- env_name => {
550
- 'hiera.yaml' => env_hiera_yaml,
551
- 'modules' => {},
552
- 'data' => {
553
- 'x.yaml' => <<-YAML.unindent,
554
- y: value y from x
555
- YAML
556
- 'x_d.yaml' => <<-YAML.unindent,
557
- y: value y from x_d
558
- YAML
559
- 'x_e.yaml' => <<-YAML.unindent,
560
- y: value y from x_e
561
- YAML
562
- }
563
- }
564
- }
565
- end
566
-
567
- context 'using local variable reference' do
568
- let(:data_path) { 'x%{var.sub}.yaml' }
569
-
570
- it 'reloads the configuration if interpolated values change' do
571
- Puppet[:log_level] = 'debug'
572
- collect_notices("notice('success')") do |scope|
573
- scope['var'] = {}
574
- expect(lookup_func.call(scope, 'y')).to eql('value y from x')
575
- nested_scope = scope.compiler.newscope(scope)
576
- nested_scope['var'] = { 'sub' => '_d' }
577
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
578
- nested_scope = scope.compiler.newscope(scope)
579
- nested_scope['var'] = { 'sub' => '_e' }
580
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_e')
581
- end
582
- expect(notices).to eql(['success'])
583
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
584
- end
585
-
586
- it 'does not include the lookups performed during stability check in explain output' do
587
- Puppet[:log_level] = 'debug'
588
- collect_notices("notice('success')") do |scope|
589
- var = { 'sub' => '_d' }
590
- scope['var'] = var
591
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
592
-
593
- # Second call triggers the check
594
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
595
- end
596
- expect(notices).to eql(['success'])
597
- expect(debugs.any? { |m| m =~ /Sub key: "sub"/ }).to be_falsey
598
- end
599
- end
600
-
601
- context 'using global variable reference' do
602
- let(:data_path) { 'x%{::var.sub}.yaml' }
603
-
604
- it 'does not raise an error when reloads the configuration if interpolating undefined values' do
605
- collect_notices("notice('success')") do |scope|
606
- expect { lookup_func.call(scope, 'y') }.to_not raise_error
607
- end
608
- end
609
-
610
- it 'does not reload the configuration if value changes locally' do
611
- Puppet[:log_level] = 'debug'
612
- collect_notices("notice('success')") do |scope|
613
- scope['var'] = { 'sub' => '_d' }
614
- expect(lookup_func.call(scope, 'y')).to eql('value y from x_d')
615
- nested_scope = scope.compiler.newscope(scope)
616
- nested_scope['var'] = { 'sub' => '_e' }
617
- expect(lookup_func.call(nested_scope, 'y')).to eql('value y from x_d')
618
- end
619
- expect(notices).to eql(['success'])
620
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_falsey
621
- end
622
- end
623
- end
624
-
625
- context 'that uses reserved' do
626
- let(:environment_files) do
627
- { env_name => { 'hiera.yaml' => hiera_yaml } }
628
- end
629
-
630
- context 'option' do
631
- let(:hiera_yaml) { <<-YAML.unindent }
632
- version: 5
633
- hierarchy:
634
- - name: "Illegal"
635
- options:
636
- #{opt_spec}
637
- data_hash: yaml_data
638
- YAML
639
-
640
- context 'path' do
641
- let(:opt_spec) { 'path: data/foo.yaml' }
642
-
643
- it 'fails and reports the reserved option key' do
644
- expect { lookup('a') }.to raise_error do |e|
645
- expect(e.message).to match(/Option key 'path' used in hierarchy 'Illegal' is reserved by Puppet/)
646
- end
647
- end
648
- end
649
-
650
- context 'uri' do
651
- let(:opt_spec) { 'uri: file:///data/foo.yaml' }
652
-
653
- it 'fails and reports the reserved option key' do
654
- expect { lookup('a') }.to raise_error do |e|
655
- expect(e.message).to match(/Option key 'uri' used in hierarchy 'Illegal' is reserved by Puppet/)
656
- end
657
- end
658
- end
659
- end
660
-
661
- context 'default option' do
662
- let(:hiera_yaml) { <<-YAML.unindent }
663
- ---
664
- version: 5
665
- defaults:
666
- options:
667
- #{opt_spec}
668
- hierarchy:
669
- - name: "Illegal"
670
- data_hash: yaml_data
671
- YAML
672
-
673
- context 'path' do
674
- let(:opt_spec) { 'path: data/foo.yaml' }
675
-
676
- it 'fails and reports the reserved option key' do
677
- expect { lookup('a') }.to raise_error do |e|
678
- expect(e.message).to match(/Option key 'path' used in defaults is reserved by Puppet/)
679
- end
680
- end
681
- end
682
-
683
- context 'uri' do
684
- let(:opt_spec) { 'uri: file:///data/foo.yaml' }
685
-
686
- it 'fails and reports the reserved option key' do
687
- expect { lookup('a') }.to raise_error do |e|
688
- expect(e.message).to match(/Option key 'uri' used in defaults is reserved by Puppet/)
689
- end
690
- end
691
- end
692
- end
693
- end
694
-
695
- context 'with yaml data file' do
696
- let(:environment_files) do
697
- {
698
- env_name => {
699
- 'hiera.yaml' => <<-YAML.unindent,
700
- ---
701
- version: 5
702
- YAML
703
- 'data' => {
704
- 'common.yaml' => common_yaml
705
- }
706
- }
707
- }
708
- end
709
-
710
- context 'that contains hash values with interpolated keys' do
711
- let(:common_yaml) do
712
- <<-YAML.unindent
713
- ---
714
- a:
715
- "%{key}": "the %{value}"
716
- b: "Detail in %{lookup('a.a_key')}"
717
- YAML
718
- end
719
-
720
- it 'interpolates both key and value"' do
721
- Puppet[:log_level] = 'debug'
722
- collect_notices("notice('success')") do |scope|
723
- scope['key'] = ''
724
- scope['value'] = ''
725
- expect(lookup_func.call(scope, 'a')).to eql({'' => 'the '})
726
- nested_scope = scope.compiler.newscope(scope)
727
- nested_scope['key'] = 'a_key'
728
- nested_scope['value'] = 'interpolated value'
729
- expect(lookup_func.call(nested_scope, 'a')).to eql({'a_key' => 'the interpolated value'})
730
- end
731
- expect(notices).to eql(['success'])
732
- end
733
-
734
- it 'navigates to a value behind an interpolated key"' do
735
- Puppet[:log_level] = 'debug'
736
- collect_notices("notice('success')") do |scope|
737
- scope['key'] = 'a_key'
738
- scope['value'] = 'interpolated value'
739
- expect(lookup_func.call(scope, 'a.a_key')).to eql('the interpolated value')
740
- end
741
- expect(notices).to eql(['success'])
742
- end
743
-
744
- it 'navigates to a value behind an interpolated key using an interpolated value"' do
745
- Puppet[:log_level] = 'debug'
746
- collect_notices("notice('success')") do |scope|
747
- scope['key'] = 'a_key'
748
- scope['value'] = 'interpolated value'
749
- expect(lookup_func.call(scope, 'b')).to eql('Detail in the interpolated value')
750
- end
751
- expect(notices).to eql(['success'])
752
- end
753
- end
754
-
755
- context 'that is empty' do
756
- let(:common_yaml) { '' }
757
-
758
- it 'fails with a "did not find"' do
759
- expect { lookup('a') }.to raise_error do |e|
760
- expect(e.message).to match(/did not find a value for the name 'a'/)
761
- end
762
- end
763
-
764
- it 'logs a warning that the file does not contain a hash' do
765
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
766
- expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
767
- end
768
- end
769
-
770
- context 'that contains illegal yaml' do
771
- let(:common_yaml) { "@!#%**&:\n" }
772
-
773
- it 'fails lookup and that the key is not found' do
774
- expect { lookup('a') }.to raise_error do |e|
775
- expect(e.message).to match(/Unable to parse/)
776
- end
777
- end
778
- end
779
-
780
- context 'that contains a legal yaml that is not a hash' do
781
- let(:common_yaml) { "- A list\n- of things" }
782
-
783
- it 'fails with a "invalid yaml hash"' do
784
- expect { lookup('a') }.to raise_error do |e|
785
- expect(e.message).to match(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
786
- end
787
- end
788
-
789
- context 'when strict mode is off' do
790
- before :each do
791
- Puppet[:strict] = :warning
792
- end
793
- it 'fails with a "did not find"' do
794
- expect { lookup('a') }.to raise_error do |e|
795
- expect(e.message).to match(/did not find a value for the name 'a'/)
796
- end
797
- end
798
-
799
- it 'logs a warning that the file does not contain a hash' do
800
- expect { lookup('a') }.to raise_error(Puppet::DataBinding::LookupError)
801
- expect(warnings).to include(/spec\/data\/common.yaml: file does not contain a valid yaml hash/)
802
- end
803
- end
804
- end
805
-
806
- context 'that contains a legal yaml hash with illegal types' do
807
- let(:common_yaml) do
808
- <<-YAML.unindent
809
- ---
810
- a: !ruby/object:Puppet::Graph::Key
811
- value: x
812
- YAML
813
- end
814
-
815
- it 'fails lookup and reports parsing failed' do
816
- expect { lookup('a') }.to raise_error do |e|
817
- expect(e.message).to match(/Unable to parse .*: Tried to load unspecified class: Puppet::Graph::Key/)
818
- end
819
- end
820
- end
821
-
822
- context 'that contains a legal yaml hash with unexpected types' do
823
- let(:common_yaml) do
824
- <<-YAML.unindent
825
- ---
826
- a: 123
827
- YAML
828
- end
829
-
830
- it 'fails lookup and reports a type mismatch' do
831
- expect { lookup('a', {}, false, String) }.to raise_error do |e|
832
- expect(e.message).to match(/Found value has wrong type, expects a String value, got Integer \(line: 1, column: \d+\)/)
833
- end
834
- end
835
- end
836
-
837
- context 'that contains illegal interpolations' do
838
- context 'in the form of an alias that is not the entire string' do
839
- let(:common_yaml) { <<-YAML.unindent }
840
- a: "%{alias('x')} and then some"
841
- x: value x
842
- YAML
843
-
844
- it 'fails lookup and reports a type mismatch' do
845
- expect { lookup('a') }.to raise_error("'alias' interpolation is only permitted if the expression is equal to the entire string")
846
- end
847
- end
848
-
849
- context 'in the form of an unknown function name' do
850
- let(:common_yaml) { <<-YAML.unindent }
851
- a: "%{what('x')}"
852
- x: value x
853
- YAML
854
-
855
- it 'fails lookup and reports a type mismatch' do
856
- expect { lookup('a') }.to raise_error("Unknown interpolation method 'what'")
857
- end
858
- end
859
- end
860
-
861
- context 'that contains an array with duplicates' do
862
- let(:common_yaml) { <<-YAML.unindent }
863
- a:
864
- - alpha
865
- - bravo
866
- - charlie
867
- - bravo
868
- YAML
869
-
870
- it 'retains the duplicates when using default merge strategy' do
871
- expect(lookup('a')).to eql(%w(alpha bravo charlie bravo))
872
- end
873
-
874
- it 'does deduplification when using merge strategy "unique"' do
875
- expect(lookup('a', :merge => 'unique')).to eql(%w(alpha bravo charlie))
876
- end
877
- end
878
- end
879
-
880
- context 'with lookup_options' do
881
- let(:environment_files) do
882
- {
883
- env_name => {
884
- 'hiera.yaml' => <<-YAML.unindent,
885
- ---
886
- version: 5
887
- YAML
888
- 'data' => {
889
- 'common.yaml' => common_yaml
890
- }
891
- }
892
- }
893
- end
894
-
895
- context 'that are empty' do
896
- let(:common_yaml) { <<-YAML.unindent }
897
- lookup_options:
898
- a: b
899
- YAML
900
-
901
- it 'ignores empty options' do
902
- expect(lookup('a')).to eq("b")
903
- end
904
- end
905
-
906
- context 'that contains a legal yaml hash with unexpected types' do
907
- let(:common_yaml) { <<-YAML.unindent }
908
- lookup_options:
909
- :invalid_symbol
910
- YAML
911
-
912
- it 'fails lookup and reports a type mismatch' do
913
- expect {
914
- lookup('a')
915
- }.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
916
- end
917
- end
918
- end
919
-
920
- context 'with lookup_options configured using patterns' do
921
- let(:mod_common) {
922
- <<-YAML.unindent
923
- mod::hash_a:
924
- aa:
925
- aaa: aaa (from module)
926
- ab:
927
- aba: aba (from module)
928
- mod::hash_b:
929
- ba:
930
- baa: baa (from module)
931
- bb:
932
- bba: bba (from module)
933
- lookup_options:
934
- '^mod::ha.*_a':
935
- merge: deep
936
- '^mod::ha.*_b':
937
- merge: deep
938
- YAML
939
- }
940
-
941
- let(:mod_base) do
942
- {
943
- 'hiera.yaml' => <<-YAML.unindent,
944
- version: 5
945
- YAML
946
- 'data' => {
947
- 'common.yaml' => mod_common
948
- }
949
- }
950
- end
951
-
952
- let(:env_modules) do
953
- {
954
- 'mod' => mod_base
955
- }
956
- end
957
-
958
- let(:env_hiera_yaml) do
959
- <<-YAML.unindent
960
- ---
961
- version: 5
962
- hierarchy:
963
- - name: X
964
- paths:
965
- - first.yaml
966
- - second.yaml
967
- YAML
968
- end
969
-
970
- let(:env_lookup_options) { <<-YAML.unindent }
971
- lookup_options:
972
- b:
973
- merge: hash
974
- '^[^b]$':
975
- merge: deep
976
- '^c':
977
- merge: first
978
- '^b':
979
- merge: first
980
- '^mod::ha.*_b':
981
- merge: hash
982
- YAML
983
-
984
- let(:env_data) do
985
- {
986
- 'first.yaml' => <<-YAML.unindent + env_lookup_options,
987
- a:
988
- aa:
989
- aaa: a.aa.aaa
990
- b:
991
- ba:
992
- baa: b.ba.baa
993
- bb:
994
- bba: b.bb.bba
995
- c:
996
- ca:
997
- caa: c.ca.caa
998
- mod::hash_a:
999
- aa:
1000
- aab: aab (from environment)
1001
- ab:
1002
- aba: aba (from environment)
1003
- abb: abb (from environment)
1004
- mod::hash_b:
1005
- ba:
1006
- bab: bab (from environment)
1007
- bc:
1008
- bca: bca (from environment)
1009
- sa:
1010
- sa1: ['e', 'd', '--f']
1011
- YAML
1012
- 'second.yaml' => <<-YAML.unindent,
1013
- a:
1014
- aa:
1015
- aab: a.aa.aab
1016
- b:
1017
- ba:
1018
- bab: b.ba.bab
1019
- bb:
1020
- bbb: b.bb.bbb
1021
- c:
1022
- ca:
1023
- cab: c.ca.cab
1024
- sa:
1025
- sa1: ['b', 'a', 'f', 'c']
1026
- YAML
1027
- }
1028
- end
1029
-
1030
- it 'finds lookup_options that matches a pattern' do
1031
- expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
1032
- end
1033
-
1034
- it 'gives a direct key match higher priority than a matching pattern' do
1035
- expect(lookup('b')).to eql({'ba' => { 'baa' => 'b.ba.baa' }, 'bb' => { 'bba'=>'b.bb.bba' }})
1036
- end
1037
-
1038
- it 'uses the first matching pattern' do
1039
- expect(lookup('c')).to eql({'ca' => { 'caa' => 'c.ca.caa', 'cab' => 'c.ca.cab' }})
1040
- end
1041
-
1042
- it 'uses lookup_option found by pattern from module' do
1043
- expect(lookup('mod::hash_a')).to eql({
1044
- 'aa' => {
1045
- 'aaa' => 'aaa (from module)',
1046
- 'aab' => 'aab (from environment)'
1047
- },
1048
- 'ab' => {
1049
- 'aba' => 'aba (from environment)',
1050
- 'abb' => 'abb (from environment)'
1051
- }
1052
- })
1053
- end
1054
-
1055
- it 'merges lookup_options found by pattern in environment and module (environment wins)' do
1056
- expect(lookup('mod::hash_b')).to eql({
1057
- 'ba' => {
1058
- 'bab' => 'bab (from environment)'
1059
- },
1060
- 'bb' => {
1061
- 'bba' => 'bba (from module)'
1062
- },
1063
- 'bc' => {
1064
- 'bca' => 'bca (from environment)'
1065
- }
1066
- })
1067
- end
1068
-
1069
- context 'and lookup_options is empty' do
1070
- let(:mod_common) { <<-YAML.unindent }
1071
- lookup_options:
1072
- mod::a: b
1073
- YAML
1074
-
1075
- it 'ignores empty options' do
1076
- expect(lookup('mod::a')).to eq("b")
1077
- end
1078
- end
1079
-
1080
- context 'and lookup_options contains a legal hash with unexpected types' do
1081
- let(:mod_common) { <<-YAML.unindent }
1082
- lookup_options:
1083
- :invalid_symbol
1084
- YAML
1085
-
1086
- it 'fails lookup and reports a type mismatch' do
1087
- expect {
1088
- lookup('mod::a')
1089
- }.to raise_error(Puppet::DataBinding::LookupError, /has wrong type, expects Puppet::LookupValue, got Runtime\[ruby, 'Symbol'\]/)
1090
- end
1091
- end
1092
-
1093
- context 'and patterns in module are not limited to module keys' do
1094
- let(:mod_common) {
1095
- <<-YAML.unindent
1096
- mod::hash_a:
1097
- aa:
1098
- aaa: aaa (from module)
1099
- ab:
1100
- aba: aba (from module)
1101
- lookup_options:
1102
- '^.*_a':
1103
- merge: deep
1104
- YAML
1105
- }
1106
-
1107
- it 'fails with error' do
1108
- expect { lookup('mod::a') }.to raise_error(Puppet::DataBinding::LookupError, /all lookup_options patterns must match a key starting with module name/)
1109
- end
1110
- end
1111
-
1112
- context 'and there are no lookup options that do not use patterns' do
1113
-
1114
- let(:env_lookup_options) { <<-YAML.unindent }
1115
- lookup_options:
1116
- '^[^b]$':
1117
- merge: deep
1118
- '^c':
1119
- merge: first
1120
- '^b':
1121
- merge: first
1122
- '^mod::ha.*_b':
1123
- merge: hash
1124
- YAML
1125
-
1126
- it 'finds lookup_options that matches a pattern' do
1127
- expect(lookup('a')).to eql({'aa' => { 'aaa' => 'a.aa.aaa', 'aab' => 'a.aa.aab' }})
1128
- end
1129
- end
1130
-
1131
- context 'and lookup options use a hash' do
1132
-
1133
- let(:env_lookup_options) { <<-YAML.unindent }
1134
- lookup_options:
1135
- 'sa':
1136
- merge:
1137
- strategy: deep
1138
- knockout_prefix: --
1139
- sort_merged_arrays: true
1140
- YAML
1141
-
1142
- it 'applies knockout_prefix and sort_merged_arrays' do
1143
- expect(lookup('sa')).to eql({ 'sa1' => %w(a b c d e) })
1144
- end
1145
-
1146
- it 'overrides knockout_prefix and sort_merged_arrays with explicitly given values' do
1147
- expect(
1148
- lookup('sa', 'merge' => { 'strategy' => 'deep', 'knockout_prefix' => '##', 'sort_merged_arrays' => false })).to(
1149
- eql({ 'sa1' => %w(b a f c e d --f) }))
1150
- end
1151
- end
1152
- end
1153
-
1154
- context 'and an environment Hiera v5 configuration using globs' do
1155
- let(:env_hiera_yaml) do
1156
- <<-YAML.unindent
1157
- ---
1158
- version: 5
1159
- hierarchy:
1160
- - name: Globs
1161
- globs:
1162
- - "globs/*.yaml"
1163
- - "globs_%{domain}/*.yaml"
1164
- YAML
1165
- end
1166
-
1167
- let(:env_data) do
1168
- {
1169
- 'globs' => {
1170
- 'a.yaml' => <<-YAML.unindent,
1171
- glob_a: value glob_a
1172
- YAML
1173
- 'b.yaml' => <<-YAML.unindent
1174
- glob_b:
1175
- a: value glob_b.a
1176
- b: value glob_b.b
1177
- YAML
1178
- },
1179
- 'globs_example.com' => {
1180
- 'a.yaml' => <<-YAML.unindent,
1181
- glob_c: value glob_a
1182
- YAML
1183
- 'b.yaml' => <<-YAML.unindent
1184
- glob_d:
1185
- a: value glob_d.a
1186
- b: value glob_d.b
1187
- YAML
1188
-
1189
- }
1190
- }
1191
- end
1192
-
1193
- it 'finds environment data using globs' do
1194
- expect(lookup('glob_a')).to eql('value glob_a')
1195
- expect(warnings).to be_empty
1196
- end
1197
-
1198
- it 'finds environment data using interpolated globs' do
1199
- expect(lookup('glob_d.a')).to eql('value glob_d.a')
1200
- expect(warnings).to be_empty
1201
- end
1202
- end
1203
-
1204
- context 'and an environment Hiera v5 configuration using uris' do
1205
- let(:env_hiera_yaml) do
1206
- <<-YAML.unindent
1207
- ---
1208
- version: 5
1209
- hierarchy:
1210
- - name: Uris
1211
- uris:
1212
- - "http://test.example.com"
1213
- - "/some/arbitrary/path"
1214
- - "urn:with:opaque:path"
1215
- - "dothis%20-f%20bar"
1216
- data_hash: mod::uri_test_func
1217
- YAML
1218
- end
1219
-
1220
- let(:env_modules) do
1221
- {
1222
- 'mod' => { 'lib' => { 'puppet' => { 'functions' => { 'mod' => { 'uri_test_func.rb' => <<-RUBY } } } } }
1223
- Puppet::Functions.create_function(:'mod::uri_test_func') do
1224
- dispatch :uri_test_func do
1225
- param 'Hash', :options
1226
- param 'Puppet::LookupContext', :context
1227
- end
1228
-
1229
- def uri_test_func(options, context)
1230
- { 'uri' => [ options['uri'] ] }
1231
- end
1232
- end
1233
- RUBY
1234
- }
1235
- end
1236
-
1237
- it 'The uris are propagated in the options hash' do
1238
- expect(lookup('uri', 'merge' => 'unique')).to eql(
1239
- %w(http://test.example.com /some/arbitrary/path urn:with:opaque:path dothis%20-f%20bar))
1240
- expect(warnings).to be_empty
1241
- end
1242
-
1243
- context 'and a uri uses bad syntax' do
1244
- let(:env_hiera_yaml) do
1245
- <<-YAML.unindent
1246
- ---
1247
- version: 5
1248
- hierarchy:
1249
- - name: Uris
1250
- uri: "dothis -f bar"
1251
- data_hash: mod::uri_test_func
1252
- YAML
1253
- end
1254
-
1255
- it 'an attempt to lookup raises InvalidURIError' do
1256
- expect{ lookup('uri', 'merge' => 'unique') }.to raise_error(/bad URI/)
1257
- end
1258
- end
1259
- end
1260
-
1261
- context 'and an environment Hiera v5 configuration using mapped_paths' do
1262
- let(:scope_additions) do
1263
- {
1264
- 'mapped' => {
1265
- 'array_var' => ['a', 'b', 'c'],
1266
- 'hash_var' => { 'x' => 'a', 'y' => 'b', 'z' => 'c' },
1267
- 'string_var' => 's' },
1268
- 'var' => 'global_var' # overridden by mapped path variable
1269
- }
1270
- end
1271
-
1272
- let(:env_hiera_yaml) do
1273
- <<-YAML.unindent
1274
- ---
1275
- version: 5
1276
- hierarchy:
1277
- - name: Mapped Paths
1278
- mapped_paths: #{mapped_paths}
1279
- - name: Global Path
1280
- path: "%{var}.yaml"
1281
- YAML
1282
- end
1283
-
1284
- let(:environment_files) do
1285
- {
1286
- env_name => {
1287
- 'hiera.yaml' => env_hiera_yaml,
1288
- 'data' => env_data
1289
- }
1290
- }
1291
- end
1292
-
1293
- context 'that originates from an array' do
1294
- let (:mapped_paths) { '[mapped.array_var, var, "paths/%{var}.yaml"]' }
1295
-
1296
- let(:env_data) do
1297
- {
1298
- 'paths' => {
1299
- 'a.yaml' => <<-YAML.unindent,
1300
- path_a: value path_a
1301
- path_h:
1302
- a: value path_h.a
1303
- c: value path_h.c
1304
- YAML
1305
- 'b.yaml' => <<-YAML.unindent,
1306
- path_h:
1307
- b: value path_h.b
1308
- d: value path_h.d
1309
- YAML
1310
- 'd.yaml' => <<-YAML.unindent
1311
- path_h:
1312
- b: value path_h.b (from d.yaml)
1313
- d: value path_h.d (from d.yaml)
1314
- YAML
1315
- },
1316
- 'global_var.yaml' => <<-YAML.unindent,
1317
- path_h:
1318
- e: value path_h.e
1319
- YAML
1320
- 'other_var.yaml' => <<-YAML.unindent
1321
- path_h:
1322
- e: value path_h.e (from other_var.yaml)
1323
- YAML
1324
- }
1325
- end
1326
-
1327
- it 'finds environment data using mapped_paths' do
1328
- expect(lookup('path_a')).to eql('value path_a')
1329
- expect(warnings).to be_empty
1330
- end
1331
-
1332
- it 'includes mapped path in explain output' do
1333
- explanation = explain('path_h', 'merge' => 'deep')
1334
- ['a', 'b', 'c'].each do |var|
1335
- expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
1336
- end
1337
- expect(warnings).to be_empty
1338
- end
1339
-
1340
- it 'performs merges between mapped paths and global path interpolated using same key' do
1341
- expect(lookup('path_h', 'merge' => 'hash')).to eql(
1342
- {
1343
- 'a' => 'value path_h.a',
1344
- 'b' => 'value path_h.b',
1345
- 'c' => 'value path_h.c',
1346
- 'd' => 'value path_h.d',
1347
- 'e' => 'value path_h.e'
1348
- })
1349
- expect(warnings).to be_empty
1350
- end
1351
-
1352
- it 'keeps track of changes in key overridden by interpolated key' do
1353
- Puppet[:log_level] = 'debug'
1354
- collect_notices("notice('success')") do |scope|
1355
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1356
- {
1357
- 'a' => 'value path_h.a',
1358
- 'b' => 'value path_h.b',
1359
- 'c' => 'value path_h.c',
1360
- 'd' => 'value path_h.d',
1361
- 'e' => 'value path_h.e'
1362
- })
1363
- scope.with_local_scope('var' => 'other_var') do
1364
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1365
- {
1366
- 'a' => 'value path_h.a',
1367
- 'b' => 'value path_h.b',
1368
- 'c' => 'value path_h.c',
1369
- 'd' => 'value path_h.d',
1370
- 'e' => 'value path_h.e (from other_var.yaml)'
1371
- })
1372
- end
1373
- end
1374
- expect(notices).to eql(['success'])
1375
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
1376
- end
1377
-
1378
- it 'keeps track of changes in elements of mapped key' do
1379
- Puppet[:log_level] = 'debug'
1380
- collect_notices("notice('success')") do |scope|
1381
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1382
- {
1383
- 'a' => 'value path_h.a',
1384
- 'b' => 'value path_h.b',
1385
- 'c' => 'value path_h.c',
1386
- 'd' => 'value path_h.d',
1387
- 'e' => 'value path_h.e'
1388
- })
1389
- scope['mapped']['array_var'] = ['a', 'c', 'd']
1390
- expect(lookup_func.call(scope, 'path_h', 'merge' => 'hash')).to eql(
1391
- {
1392
- 'a' => 'value path_h.a',
1393
- 'b' => 'value path_h.b (from d.yaml)',
1394
- 'c' => 'value path_h.c',
1395
- 'd' => 'value path_h.d (from d.yaml)',
1396
- 'e' => 'value path_h.e'
1397
- })
1398
- end
1399
- expect(notices).to eql(['success'])
1400
- expect(debugs.any? { |m| m =~ /Hiera configuration recreated due to change of scope variables used in interpolation expressions/ }).to be_truthy
1401
- end
1402
- end
1403
-
1404
- context 'that originates from a hash' do
1405
- let (:mapped_paths) { '[mapped.hash_var, var, "paths/%{var.0}.%{var.1}.yaml"]' }
1406
-
1407
- let(:env_data) do
1408
- {
1409
- 'paths' => {
1410
- 'x.a.yaml' => <<-YAML.unindent,
1411
- path_xa: value path_xa
1412
- path_m:
1413
- a: value path_m.a
1414
- c: value path_m.c
1415
- YAML
1416
- 'y.b.yaml' => <<-YAML.unindent
1417
- path_m:
1418
- b: value path_m.b
1419
- d: value path_m.d
1420
- YAML
1421
- },
1422
- 'global_var.yaml' => <<-YAML.unindent
1423
- path_m:
1424
- e: value path_m.e
1425
- YAML
1426
- }
1427
- end
1428
-
1429
- it 'finds environment data using mapped_paths' do
1430
- expect(lookup('path_xa')).to eql('value path_xa')
1431
- expect(warnings).to be_empty
1432
- end
1433
-
1434
- it 'includes mapped path in explain output' do
1435
- explanation = explain('path_h', 'merge' => 'deep')
1436
- ['x\.a', 'y\.b', 'z\.c'].each do |var|
1437
- expect(explanation).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/#{var}\.yaml"\n\s+Original path: "paths\/%\{var\.0\}\.%\{var\.1\}\.yaml"/)
1438
- end
1439
- expect(warnings).to be_empty
1440
- end
1441
-
1442
- it 'performs merges between mapped paths' do
1443
- expect(lookup('path_m', 'merge' => 'hash')).to eql(
1444
- {
1445
- 'a' => 'value path_m.a',
1446
- 'b' => 'value path_m.b',
1447
- 'c' => 'value path_m.c',
1448
- 'd' => 'value path_m.d',
1449
- 'e' => 'value path_m.e'
1450
- })
1451
- expect(warnings).to be_empty
1452
- end
1453
- end
1454
-
1455
- context 'that originates from a string' do
1456
- let (:mapped_paths) { '[mapped.string_var, var, "paths/%{var}.yaml"]' }
1457
-
1458
- let(:env_data) do
1459
- {
1460
- 'paths' => {
1461
- 's.yaml' => <<-YAML.unindent,
1462
- path_s: value path_s
1463
- YAML
1464
- }
1465
- }
1466
- end
1467
-
1468
- it 'includes mapped path in explain output' do
1469
- expect(explain('path_s')).to match(/^\s+Path "#{env_dir}\/spec\/data\/paths\/s\.yaml"\n\s+Original path: "paths\/%\{var\}\.yaml"/)
1470
- expect(warnings).to be_empty
1471
- end
1472
-
1473
- it 'finds environment data using mapped_paths' do
1474
- expect(lookup('path_s')).to eql('value path_s')
1475
- expect(warnings).to be_empty
1476
- end
1477
- end
1478
-
1479
- context 'where the enty does not exist' do
1480
- let (:mapped_paths) { '[mapped.nosuch_var, var, "paths/%{var}.yaml"]' }
1481
-
1482
- it 'finds environment data using mapped_paths' do
1483
- expect(explain('hello')).to match(/No such key: "hello"/)
1484
- expect(warnings).to be_empty
1485
- end
1486
- end
1487
- end
1488
-
1489
- context 'and an environment Hiera v3 configuration' do
1490
- let(:env_hiera_yaml) do
1491
- <<-YAML.unindent
1492
- ---
1493
- :backends: yaml
1494
- :yaml:
1495
- :datadir: #{env_dir}/#{env_name}/hieradata
1496
- YAML
1497
- end
1498
-
1499
- let(:environment_files) do
1500
- {
1501
- env_name => {
1502
- 'hiera.yaml' => env_hiera_yaml,
1503
- 'hieradata' => {
1504
- 'common.yaml' => <<-YAML.unindent,
1505
- g: Value g
1506
- YAML
1507
- }
1508
- }
1509
- }
1510
- end
1511
-
1512
- it 'will raise an error if --strict is set to error' do
1513
- Puppet[:strict] = :error
1514
- expect { lookup('g') }.to raise_error(Puppet::Error, /hiera.yaml version 3 cannot be used in an environment/)
1515
- end
1516
-
1517
- it 'will log a warning and ignore the file if --strict is set to warning' do
1518
- Puppet[:strict] = :warning
1519
- expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
1520
- end
1521
-
1522
- it 'will not log a warning and ignore the file if --strict is set to off' do
1523
- Puppet[:strict] = :off
1524
- expect { lookup('g') }.to raise_error(Puppet::Error, /did not find a value for the name 'g'/)
1525
- expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
1526
- end
1527
-
1528
- it 'will use the configuration if appointed by global setting but still warn when encountered by environment data provider' do
1529
- Puppet[:strict] = :warning
1530
- Puppet.settings[:hiera_config] = File.join(env_dir, env_name, 'hiera.yaml')
1531
- expect(lookup('g')).to eql('Value g')
1532
- expect(warnings).to include(/hiera.yaml version 3 found at the environment root was ignored/)
1533
- end
1534
- end
1535
-
1536
- context 'and a global empty Hiera configuration' do
1537
- let(:hiera_yaml_path) { File.join(code_dir, 'hiera.yaml') }
1538
- let(:code_dir_files) do
1539
- {
1540
- 'hiera.yaml' => '',
1541
- }
1542
- end
1543
-
1544
- let(:environment_files) do
1545
- {
1546
- env_name => {
1547
- 'hieradata' => {
1548
- 'common.yaml' => <<-YAML.unindent,
1549
- x: value x (from environment)
1550
- YAML
1551
- }
1552
- }
1553
- }
1554
- end
1555
-
1556
- before(:each) do
1557
- # Need to set here since spec_helper defines these settings in its "before each"
1558
- Puppet.settings[:hiera_config] = hiera_yaml_path
1559
- end
1560
-
1561
- it 'uses a Hiera version 3 defaults' do
1562
- expect(lookup('x')).to eql('value x (from environment)')
1563
- end
1564
-
1565
- context 'obtained using /dev/null', :unless => Puppet::Util::Platform.windows? do
1566
- let(:code_dir_files) { {} }
1567
-
1568
- it 'uses a Hiera version 3 defaults' do
1569
- Puppet[:hiera_config] = '/dev/null'
1570
- expect(lookup('x')).to eql('value x (from environment)')
1571
- end
1572
- end
1573
- end
1574
-
1575
- context 'and a global configuration' do
1576
- let(:hiera_yaml) do
1577
- <<-YAML.unindent
1578
- ---
1579
- :backends:
1580
- - yaml
1581
- - json
1582
- - custom
1583
- - hocon
1584
- :yaml:
1585
- :datadir: #{code_dir}/hieradata
1586
- :json:
1587
- :datadir: #{code_dir}/hieradata
1588
- :hocon:
1589
- :datadir: #{code_dir}/hieradata
1590
- :hierarchy:
1591
- - common
1592
- - "%{domain}"
1593
- :merge_behavior: deeper
1594
- YAML
1595
- end
1596
-
1597
- let(:code_dir_files) do
1598
- {
1599
- 'hiera.yaml' => hiera_yaml,
1600
- 'hieradata' => {
1601
- 'common.yaml' => <<-YAML.unindent,
1602
- a: value a (from global)
1603
- hash_b:
1604
- hash_ba:
1605
- bab: value hash_b.hash_ba.bab (from global)
1606
- hash_c:
1607
- hash_ca:
1608
- cab: value hash_c.hash_ca.cab (from global)
1609
- ipl_hiera_env: "environment value '%{hiera('mod_a::hash_a.a')}'"
1610
- ipl_hiera_mod: "module value '%{hiera('mod_a::abc')}'"
1611
- ipl_hiera_modc: "module value '%{hiera('mod_a::caller')}'"
1612
- YAML
1613
- 'example.com.yaml' => <<-YAML.unindent,
1614
- x: value x (from global example.com.yaml)
1615
- YAML
1616
- 'common.json' => <<-JSON.unindent,
1617
- {
1618
- "hash_b": {
1619
- "hash_ba": {
1620
- "bac": "value hash_b.hash_ba.bac (from global json)"
1621
- }
1622
- },
1623
- "hash_c": {
1624
- "hash_ca": {
1625
- "cac": "value hash_c.hash_ca.cac (from global json)"
1626
- }
1627
- }
1628
- }
1629
- JSON
1630
- 'common.conf' => <<-HOCON.unindent,
1631
- // The 'xs' is a value used for testing
1632
- xs = { subkey = value xs.subkey (from global hocon) }
1633
- HOCON
1634
- }
1635
- }
1636
- end
1637
-
1638
- before(:all) do
1639
- $LOAD_PATH.unshift(my_fixture_dir)
1640
- end
1641
-
1642
- after(:all) do
1643
- if Kernel.const_defined?(:Hiera) && Hiera.const_defined?(:Backend)
1644
- Hiera::Backend.send(:remove_const, :Custom_backend) if Hiera::Backend.const_defined?(:Custom_backend)
1645
- Hiera::Backend.send(:remove_const, :Other_backend) if Hiera::Backend.const_defined?(:Other_backend)
1646
- end
1647
- $LOAD_PATH.shift
1648
- end
1649
-
1650
- before(:each) do
1651
- # Need to set here since spec_helper defines these settings in its "before each"
1652
- Puppet.settings[:codedir] = populated_code_dir
1653
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
1654
- end
1655
-
1656
- around(:each) do |example|
1657
- Puppet.override(:environments => environments, :current_environment => env) do
1658
- example.run
1659
- end
1660
- end
1661
-
1662
- context 'version 3', :if => Puppet.features.hiera? do
1663
- it 'finds data in in global layer and reports deprecation warnings for hiera.yaml' do
1664
- expect(lookup('a')).to eql('value a (from global)')
1665
- expect(warnings).to include(/Use of 'hiera.yaml' version 3 is deprecated. It should be converted to version 5/)
1666
- end
1667
-
1668
- it 'explain contains output from global layer' do
1669
- explanation = explain('a')
1670
- expect(explanation).to include('Global Data Provider (hiera configuration version 3)')
1671
- expect(explanation).to include('Hierarchy entry "yaml"')
1672
- expect(explanation).to include('Hierarchy entry "json"')
1673
- expect(explanation).to include('Found key: "a" value: "value a (from global)"')
1674
- end
1675
-
1676
- it 'ignores merge behavior specified in global hiera.yaml' do
1677
- expect(lookup('hash_b')).to eql(
1678
- { 'hash_ba' => { 'bab' => 'value hash_b.hash_ba.bab (from global)'} })
1679
- end
1680
-
1681
- it 'uses the merge from lookup options to merge all layers' do
1682
- expect(lookup('hash_c')).to eql(
1683
- { 'hash_ca' => { 'cab' => 'value hash_c.hash_ca.cab (from global)' } })
1684
- end
1685
-
1686
- it 'uses the explicitly given merge to override lookup options and to merge all layers' do
1687
- expect(lookup('hash_c', 'merge' => 'deep')).to eql(
1688
- {
1689
- 'hash_ca' =>
1690
- {
1691
- 'caa' => 'value hash_c.hash_ca.caa (from environment)',
1692
- 'cab' => 'value hash_c.hash_ca.cab (from global)',
1693
- 'cac' => 'value hash_c.hash_ca.cac (from global json)',
1694
- 'cad' => 'value hash_c.hash_ca.cad (from global custom)'
1695
- }
1696
- })
1697
- end
1698
-
1699
- it 'paths are interpolated' do
1700
- expect(lookup('x')).to eql('value x (from global example.com.yaml)')
1701
- end
1702
-
1703
- it 'backend data sources are propagated to custom backend' do
1704
- expect(lookup('datasources')).to eql(['common', 'example.com'])
1705
- end
1706
-
1707
- it 'backend specific options are propagated to custom backend' do
1708
- expect(lookup('other_option')).to eql('value of other_option')
1709
- end
1710
-
1711
- it 'dotted keys are passed down to custom backend' do
1712
- expect(lookup('dotted.key')).to eql('custom backend received request for dotted.key value')
1713
- end
1714
-
1715
- it 'delegates configured hocon backend to hocon_data function' do
1716
- expect(explain('xs')).to match(/Hierarchy entry "hocon"\n.*\n.*\n.*"common"\n\s*Found key: "xs"/m)
1717
- end
1718
-
1719
- it 'can dig down into subkeys provided by hocon_data function' do
1720
- expect(lookup('xs.subkey')).to eql('value xs.subkey (from global hocon)')
1721
- end
1722
-
1723
- it 'multiple hiera3_backend declarations can be used and are merged into the generated config' do
1724
- expect(lookup(['datasources', 'other_option'])).to eql([['common', 'example.com'], 'value of other_option'])
1725
- expect(Hiera::Config.instance_variable_get(:@config)).to eql(
1726
- {
1727
- :backends => ['custom', 'other'],
1728
- :hierarchy => ['common', '%{domain}'],
1729
- :custom => { :datadir => "#{code_dir}/hieradata" },
1730
- :other => { :other_option => 'value of other_option', :datadir=>"#{code_dir}/hieradata" },
1731
- :logger => 'puppet'
1732
- })
1733
- end
1734
-
1735
- context 'with a module data provider' do
1736
- let(:module_files) do
1737
- {
1738
- 'mod_a' => {
1739
- 'hiera.yaml' => <<-YAML.unindent,
1740
- version: 5
1741
- hierarchy:
1742
- - name: Common
1743
- path: common.yaml
1744
- YAML
1745
- 'data' => {
1746
- 'common.yaml' => <<-YAML.unindent
1747
- mod_a::abc: value mod_a::abc (from module)
1748
- mod_a::caller: "calling module is %{calling_module}"
1749
- YAML
1750
- }
1751
- }
1752
- }
1753
- end
1754
-
1755
- let(:environment_files) do
1756
- {
1757
- env_name => {
1758
- 'hiera.yaml' => env_hiera_yaml,
1759
- 'data' => env_data,
1760
- 'modules' => module_files
1761
- }
1762
- }
1763
- end
1764
-
1765
- it "interpolation function 'hiera' finds values in environment" do
1766
- expect(lookup('ipl_hiera_env')).to eql("environment value 'value mod_a::hash_a.a (from environment)'")
1767
- end
1768
-
1769
- it "interpolation function 'hiera' finds values in module" do
1770
- expect(lookup('ipl_hiera_mod')).to eql("module value 'value mod_a::abc (from module)'")
1771
- end
1772
-
1773
- it "interpolation function 'hiera' finds values in module and that module does not find %{calling_module}" do
1774
- expect(lookup('ipl_hiera_modc')).to eql("module value 'calling module is '")
1775
- end
1776
-
1777
- context 'but no environment data provider' do
1778
- let(:environment_files) do
1779
- {
1780
- env_name => {
1781
- 'modules' => module_files
1782
- }
1783
- }
1784
- end
1785
-
1786
- it "interpolation function 'hiera' does not find values in a module" do
1787
- expect(lookup('ipl_hiera_mod')).to eql("module value ''")
1788
- end
1789
- end
1790
- end
1791
-
1792
-
1793
- context 'using an eyaml backend' do
1794
- let(:private_key_name) { 'private_key.pkcs7.pem' }
1795
- let(:public_key_name) { 'public_key.pkcs7.pem' }
1796
-
1797
- let(:private_key) do
1798
- <<-PKCS7.unindent
1799
- -----BEGIN RSA PRIVATE KEY-----
1800
- MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
1801
- CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
1802
- 2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
1803
- NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
1804
- tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
1805
- EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
1806
- mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
1807
- sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
1808
- sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
1809
- 017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
1810
- CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
1811
- uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
1812
- /iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
1813
- 7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
1814
- V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
1815
- CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
1816
- yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
1817
- jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
1818
- 6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
1819
- ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
1820
- mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
1821
- Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
1822
- fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
1823
- bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
1824
- 1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
1825
- -----END RSA PRIVATE KEY-----
1826
- PKCS7
1827
- end
1828
-
1829
- let(:public_key) do
1830
- <<-PKCS7.unindent
1831
- -----BEGIN CERTIFICATE-----
1832
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
1833
- MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1834
- CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
1835
- V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
1836
- AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
1837
- aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
1838
- N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
1839
- aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
1840
- MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
1841
- nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
1842
- BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
1843
- sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
1844
- eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
1845
- pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
1846
- xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
1847
- 5O117dMBdzDBjcNMOA==
1848
- -----END CERTIFICATE-----
1849
- PKCS7
1850
- end
1851
-
1852
- let(:keys_dir) do
1853
- keys = tmpdir('keys')
1854
- dir_contained_in(keys, {
1855
- private_key_name => private_key,
1856
- public_key_name => public_key
1857
- })
1858
- keys
1859
- end
1860
-
1861
- let(:private_key_path) { File.join(keys_dir, private_key_name) }
1862
- let(:public_key_path) { File.join(keys_dir, public_key_name) }
1863
- let(:hiera_yaml) do
1864
- <<-YAML.unindent
1865
- :backends:
1866
- - eyaml
1867
- - yaml
1868
- :eyaml:
1869
- :datadir: #{code_dir}/hieradata
1870
- :pkcs7_private_key: #{private_key_path}
1871
- :pkcs7_public_key: #{public_key_path}
1872
- :yaml:
1873
- :datadir: #{code_dir}/hieradata
1874
- :hierarchy:
1875
- - common
1876
- YAML
1877
- end
1878
-
1879
- let(:data_files) do
1880
- {
1881
- 'common.yaml' => <<-YAML.unindent,
1882
- b: value 'b' (from global)
1883
- c:
1884
- c_a: value c_a (from global)
1885
- YAML
1886
- 'common.eyaml' => <<-YAML.unindent
1887
- a: >
1888
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
1889
- DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
1890
- LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
1891
- xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
1892
- 6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
1893
- QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
1894
- QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
1895
- tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
1896
- oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
1897
- gV4beiCFtLU=]
1898
- a_ref: "A reference to %{hiera('a')}"
1899
- b_ref: "A reference to %{hiera('b')}"
1900
- c_ref: "%{alias('c')}"
1901
- :symbol: "A symbol"
1902
- YAML
1903
- }
1904
- end
1905
-
1906
- let(:code_dir_files) do
1907
- {
1908
- 'hiera.yaml' => hiera_yaml,
1909
- 'hieradata' => data_files
1910
- }
1911
- end
1912
-
1913
- before(:each) do
1914
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
1915
- end
1916
-
1917
- it 'finds data in the global layer' do
1918
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
1919
- end
1920
-
1921
- it 'can use a hiera interpolation' do
1922
- expect(lookup('a_ref')).to eql("A reference to Encrypted value 'a' (from global)")
1923
- end
1924
-
1925
- it 'can use a hiera interpolation that refers back to yaml' do
1926
- expect(lookup('b_ref')).to eql("A reference to value 'b' (from global)")
1927
- end
1928
-
1929
- it 'can use a hiera interpolation that refers back to yaml, but only in global layer' do
1930
- expect(lookup(['c', 'c_ref'], 'merge' => 'deep')).to eql([{'c_a' => 'value c_a (from global)', 'c_b' => 'value c_b (from environment)'}, { 'c_a' => 'value c_a (from global)' }])
1931
- end
1932
-
1933
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
1934
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
1935
- end
1936
- end
1937
-
1938
- context 'using deep_merge_options' do
1939
- let(:hiera_yaml) do
1940
- <<-YAML.unindent
1941
- ---
1942
- :backends:
1943
- - yaml
1944
- :yaml:
1945
- :datadir: #{code_dir}/hieradata
1946
- :hierarchy:
1947
- - common
1948
- - other
1949
- :merge_behavior: deeper
1950
- :deep_merge_options:
1951
- :unpack_arrays: ','
1952
- YAML
1953
- end
1954
-
1955
- let(:code_dir_files) do
1956
- {
1957
- 'hiera.yaml' => hiera_yaml,
1958
- 'hieradata' => {
1959
- 'common.yaml' => <<-YAML.unindent,
1960
- hash:
1961
- array:
1962
- - x1,x2
1963
- array:
1964
- - x1,x2
1965
- str: a string
1966
- mixed:
1967
- x: hx
1968
- y: hy
1969
- YAML
1970
- 'other.yaml' => <<-YAML.unindent,
1971
- hash:
1972
- array:
1973
- - x3
1974
- - x4
1975
- array:
1976
- - x3
1977
- - x4
1978
- str: another string
1979
- mixed:
1980
- - h1
1981
- - h2
1982
- YAML
1983
- }
1984
- }
1985
- end
1986
-
1987
- it 'ignores configured merge_behavior when looking up arrays' do
1988
- expect(lookup('array')).to eql(['x1,x2'])
1989
- end
1990
-
1991
- it 'ignores configured merge_behavior when merging arrays' do
1992
- expect(lookup('array', 'merge' => 'unique')).to eql(['x1,x2', 'x3', 'x4'])
1993
- end
1994
-
1995
- it 'ignores configured merge_behavior when looking up hashes' do
1996
- expect(lookup('hash')).to eql({'array' => ['x1,x2']})
1997
- end
1998
-
1999
- it 'ignores configured merge_behavior when merging hashes' do
2000
- expect(lookup('hash', 'merge' => 'hash')).to eql({'array' => ['x1,x2']})
2001
- end
2002
- end
2003
-
2004
- context 'using relative datadir paths' do
2005
- let(:hiera_yaml) do
2006
- <<-YAML.unindent
2007
- ---
2008
- :backends:
2009
- - yaml
2010
- :yaml:
2011
- :datadir: relative_data
2012
- :hierarchy:
2013
- - common
2014
- YAML
2015
- end
2016
-
2017
- let(:populated_code_dir) do
2018
- dir_contained_in(code_dir, code_dir_files.merge({
2019
- 'fake_cwd' => {
2020
- 'relative_data' => {
2021
- 'common.yaml' => <<-YAML.unindent
2022
- a: value a (from fake_cwd/relative_data/common.yaml)
2023
- YAML
2024
- }
2025
- }
2026
- }))
2027
- code_dir
2028
- end
2029
-
2030
- around(:each) do |example|
2031
- cwd = Dir.pwd
2032
- Dir.chdir(File.join(code_dir, 'fake_cwd'))
2033
- begin
2034
- example.run
2035
- ensure
2036
- Dir.chdir(cwd)
2037
- end
2038
- end
2039
-
2040
- it 'finds data from data file beneath relative datadir' do
2041
- expect(lookup('a')).to eql('value a (from fake_cwd/relative_data/common.yaml)')
2042
- end
2043
- end
2044
- end
2045
-
2046
- context 'version 5' do
2047
- let(:scope_additions) { { 'ipl_datadir' => 'hieradata' } }
2048
- let(:hiera_yaml) do
2049
- <<-YAML.unindent
2050
- ---
2051
- version: 5
2052
- defaults:
2053
- datadir: "%{ipl_datadir}"
2054
-
2055
- hierarchy:
2056
- - name: Yaml
2057
- data_hash: yaml_data
2058
- paths:
2059
- - common.yaml
2060
- - "%{domain}.yaml"
2061
- - name: Json
2062
- data_hash: json_data
2063
- paths:
2064
- - common.json
2065
- - "%{domain}.json"
2066
- - name: Hocon
2067
- data_hash: hocon_data
2068
- paths:
2069
- - common.conf
2070
- - "%{domain}.conf"
2071
- YAML
2072
- end
2073
-
2074
- it 'finds global data and reports no deprecation warnings' do
2075
- expect(lookup('a')).to eql('value a (from global)')
2076
- expect(warnings).to be_empty
2077
- end
2078
-
2079
- it 'explain contains output from global layer' do
2080
- explanation = explain('a')
2081
- expect(explanation).to include('Global Data Provider (hiera configuration version 5)')
2082
- expect(explanation).to include('Hierarchy entry "Yaml"')
2083
- expect(explanation).to include('Hierarchy entry "Json"')
2084
- expect(explanation).to include('Hierarchy entry "Hocon"')
2085
- expect(explanation).to include('Found key: "a" value: "value a (from global)"')
2086
- end
2087
-
2088
- it 'uses the explicitly given merge to override lookup options and to merge all layers' do
2089
- expect(lookup('hash_c', 'merge' => 'deep')).to eql(
2090
- {
2091
- 'hash_ca' =>
2092
- {
2093
- 'caa' => 'value hash_c.hash_ca.caa (from environment)',
2094
- 'cab' => 'value hash_c.hash_ca.cab (from global)',
2095
- 'cac' => 'value hash_c.hash_ca.cac (from global json)',
2096
- }
2097
- })
2098
- end
2099
-
2100
- it 'provides a sensible error message when the hocon library is not loaded' do
2101
- allow(Puppet.features).to receive(:hocon?).and_return(false)
2102
-
2103
- expect { lookup('a') }.to raise_error do |e|
2104
- expect(e.message).to match(/Lookup using Hocon data_hash function is not supported without hocon library/)
2105
- end
2106
- end
2107
-
2108
- context 'with missing path declaraion' do
2109
- context 'and yaml_data function' do
2110
- let(:hiera_yaml) { <<-YAML.unindent }
2111
- version: 5
2112
- hierarchy:
2113
- - name: Yaml
2114
- data_hash: yaml_data
2115
- YAML
2116
-
2117
- it 'fails and reports the missing path' do
2118
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2119
- end
2120
- end
2121
-
2122
- context 'and json_data function' do
2123
- let(:hiera_yaml) { <<-YAML.unindent }
2124
- version: 5
2125
- hierarchy:
2126
- - name: Json
2127
- data_hash: json_data
2128
- YAML
2129
-
2130
- it 'fails and reports the missing path' do
2131
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2132
- end
2133
- end
2134
-
2135
- context 'and hocon_data function' do
2136
- let(:hiera_yaml) { <<-YAML.unindent }
2137
- version: 5
2138
- hierarchy:
2139
- - name: Hocon
2140
- data_hash: hocon_data
2141
- YAML
2142
-
2143
- it 'fails and reports the missing path' do
2144
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this data_hash function/)
2145
- end
2146
- end
2147
-
2148
- context 'and eyaml_lookup_key function', :if => Puppet.features.hiera_eyaml? do
2149
- let(:hiera_yaml) { <<-YAML.unindent }
2150
- version: 5
2151
- hierarchy:
2152
- - name: Yaml
2153
- lookup_key: eyaml_lookup_key
2154
- YAML
2155
-
2156
- it 'fails and reports the missing path' do
2157
- expect { lookup('a') }.to raise_error(/one of 'path', 'paths' 'glob', 'globs' or 'mapped_paths' must be declared in hiera.yaml when using this lookup_key function/)
2158
- end
2159
- end
2160
- end
2161
- end
2162
-
2163
- context 'with a hiera3_backend that has no paths', :if => Puppet.features.hiera? do
2164
- let(:hiera_yaml) do
2165
- <<-YAML.unindent
2166
- ---
2167
- version: 5
2168
- hierarchy:
2169
- - name: Custom
2170
- hiera3_backend: custom
2171
- YAML
2172
- end
2173
-
2174
- it 'calls the backend' do
2175
- expect(lookup('hash_c')).to eql(
2176
- { 'hash_ca' => { 'cad' => 'value hash_c.hash_ca.cad (from global custom)' }})
2177
- end
2178
- end
2179
- end
2180
-
2181
- context 'and a module' do
2182
- let(:mod_a_files) { {} }
2183
-
2184
- let(:populated_env_dir) do
2185
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
2186
- env_dir
2187
- end
2188
-
2189
- context 'that has no lookup configured' do
2190
- let(:mod_a_files) do
2191
- {
2192
- 'mod_a' => {
2193
- 'data' => {
2194
- 'common.yaml' => <<-YAML.unindent
2195
- ---
2196
- mod_a::b: value mod_a::b (from mod_a)
2197
- YAML
2198
- }
2199
- }
2200
- }
2201
- end
2202
-
2203
- it 'does not find data in the module' do
2204
- expect { lookup('mod_a::b') }.to raise_error(Puppet::DataBinding::LookupError, /did not find a value for the name 'mod_a::b'/)
2205
- end
2206
-
2207
- context 'with a Hiera v3 configuration', :if => Puppet.features.hiera? do
2208
- let(:mod_a_files) do
2209
- {
2210
- 'mod_a' => {
2211
- 'hiera.yaml' => <<-YAML.unindent
2212
- ---
2213
- :backends: yaml
2214
- YAML
2215
- }
2216
- }
2217
- end
2218
-
2219
- it 'raises a warning' do
2220
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2221
- expect(warnings).to include(/hiera.yaml version 3 found at module root was ignored/)
2222
- end
2223
- end
2224
-
2225
- context "but a metadata.json with 'module_data_provider=hiera'" do
2226
- let(:mod_a_files_1) { DeepMerge.deep_merge!(mod_a_files, 'mod_a' => { 'metadata.json' => <<-JSON.unindent }) }
2227
- {
2228
- "name": "example/mod_a",
2229
- "version": "0.0.2",
2230
- "source": "git@github.com/example/mod_a.git",
2231
- "dependencies": [],
2232
- "author": "Bob the Builder",
2233
- "license": "Apache-2.0",
2234
- "data_provider": "hiera"
2235
- }
2236
- JSON
2237
-
2238
- let(:populated_env_dir) do
2239
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_1 }))
2240
- env_dir
2241
- end
2242
-
2243
- it 'finds data in the module and reports deprecation warning for metadata.json' do
2244
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2245
- expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated. A 'hiera.yaml' file should be used instead/)
2246
- end
2247
-
2248
- context 'and a hiera.yaml file' do
2249
- let(:mod_a_files_2) { DeepMerge.deep_merge!(mod_a_files_1, 'mod_a' => { 'hiera.yaml' => <<-YAML.unindent }) }
2250
- ---
2251
- version: 4
2252
- hierarchy:
2253
- - name: common
2254
- backend: yaml
2255
- YAML
2256
-
2257
- let(:populated_env_dir) do
2258
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files_2 }))
2259
- env_dir
2260
- end
2261
-
2262
- it 'finds data in the module and reports deprecation warnings for both metadata.json and hiera.yaml' do
2263
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2264
- expect(warnings).to include(/Defining "data_provider": "hiera" in metadata.json is deprecated/)
2265
- expect(warnings).to include(/Use of 'hiera.yaml' version 4 is deprecated. It should be converted to version 5/)
2266
- end
2267
- end
2268
- end
2269
- end
2270
-
2271
- context 'using deep merge and module values that aliases environment values' do
2272
- let(:mod_a_files) do
2273
- {
2274
- 'mod_a' => {
2275
- 'data' => {
2276
- 'common.yaml' => <<-YAML.unindent,
2277
- ---
2278
- mod_a::hash:
2279
- b: value b (from module)
2280
- lookup_options:
2281
- mod_a::hash:
2282
- merge: deep
2283
- YAML
2284
- },
2285
- 'hiera.yaml' => <<-YAML.unindent,
2286
- ---
2287
- version: 5
2288
- hierarchy:
2289
- - name: "Common"
2290
- path: "common.yaml"
2291
- - name: "Other"
2292
- path: "other.yaml"
2293
- YAML
2294
- }
2295
- }
2296
- end
2297
- let(:env_data) do
2298
- {
2299
- 'common.yaml' => <<-YAML.unindent
2300
- a: value a (from environment)
2301
- mod_a::hash:
2302
- a: value mod_a::hash.a (from environment)
2303
- c: '%{alias("a")}'
2304
- YAML
2305
- }
2306
- end
2307
-
2308
- it 'continues with module lookup after alias is resolved in environment' do
2309
- expect(lookup('mod_a::hash')).to eql(
2310
- {
2311
- 'a' => 'value mod_a::hash.a (from environment)',
2312
- 'b' => 'value b (from module)',
2313
- 'c' => 'value a (from environment)'
2314
- })
2315
- end
2316
- end
2317
-
2318
- context 'using a data_hash that reads a yaml file' do
2319
- let(:defaults) {
2320
- {
2321
- 'mod_a::xd' => 'value mod_a::xd (from default)',
2322
- 'mod_a::xd_found' => 'value mod_a::xd_found (from default)',
2323
- 'scope_xd' => 'value scope_xd (from default)'
2324
- }}
2325
- let(:overrides) {
2326
- {
2327
- 'mod_a::xo' => 'value mod_a::xo (from override)',
2328
- 'scope_xo' => 'value scope_xo (from override)'
2329
- }}
2330
-
2331
- let(:scope_additions) do
2332
- {
2333
- 'scope_scalar' => 'scope scalar value',
2334
- 'scope_hash' => { 'a' => 'scope hash a', 'b' => 'scope hash b' }
2335
- }
2336
- end
2337
- let(:mod_a_files) do
2338
- {
2339
- 'mod_a' => {
2340
- 'data' => {
2341
- 'common.yaml' => <<-YAML.unindent
2342
- ---
2343
- mod_a::a: value mod_a::a (from mod_a)
2344
- mod_a::b: value mod_a::b (from mod_a)
2345
- mod_a::xo: value mod_a::xo (from mod_a)
2346
- mod_a::xd_found: value mod_a::xd_found (from mod_a)
2347
- mod_a::interpolate_xo: "-- %{lookup('mod_a::xo')} --"
2348
- mod_a::interpolate_xd: "-- %{lookup('mod_a::xd')} --"
2349
- mod_a::interpolate_scope_xo: "-- %{scope_xo} --"
2350
- mod_a::interpolate_scope_xd: "-- %{scope_xd} --"
2351
- mod_a::hash_a:
2352
- a: value mod_a::hash_a.a (from mod_a)
2353
- b: value mod_a::hash_a.b (from mod_a)
2354
- mod_a::hash_b:
2355
- a: value mod_a::hash_b.a (from mod_a)
2356
- b: value mod_a::hash_b.b (from mod_a)
2357
- mod_a::interpolated: "-- %{lookup('mod_a::a')} --"
2358
- mod_a::a_a: "-- %{lookup('mod_a::hash_a.a')} --"
2359
- mod_a::a_b: "-- %{lookup('mod_a::hash_a.b')} --"
2360
- mod_a::b_a: "-- %{lookup('mod_a::hash_b.a')} --"
2361
- mod_a::b_b: "-- %{lookup('mod_a::hash_b.b')} --"
2362
- mod_a::interpolate_array:
2363
- - "-- %{lookup('mod_a::a')} --"
2364
- - "-- %{lookup('mod_a::b')} --"
2365
- mod_a::interpolate_literal: "-- %{literal('hello')} --"
2366
- mod_a::interpolate_scope: "-- %{scope_scalar} --"
2367
- mod_a::interpolate_scope_not_found: "-- %{scope_nope} --"
2368
- mod_a::interpolate_scope_dig: "-- %{scope_hash.a} --"
2369
- mod_a::interpolate_scope_dig_not_found: "-- %{scope_hash.nope} --"
2370
- mod_a::quoted_interpolation: '-- %{lookup(''"mod_a::a.quoted.key"'')} --'
2371
- "mod_a::a.quoted.key": "value mod_a::a.quoted.key (from mod_a)"
2372
- YAML
2373
- },
2374
- 'hiera.yaml' => <<-YAML.unindent,
2375
- ---
2376
- version: 5
2377
- hierarchy:
2378
- - name: "Common"
2379
- data_hash: yaml_data
2380
- path: "common.yaml"
2381
- YAML
2382
- }
2383
- }
2384
- end
2385
-
2386
- it 'finds data in the module' do
2387
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2388
- end
2389
-
2390
- it 'environment data has higher priority than module data' do
2391
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2392
- end
2393
-
2394
- it 'environment data has higher priority than module data in interpolated module data' do
2395
- expect(lookup('mod_a::interpolated')).to eql('-- value mod_a::a (from environment) --')
2396
- end
2397
-
2398
- it 'overrides have higher priority than found data' do
2399
- expect(lookup('mod_a::xo', { 'override' => overrides })).to eql('value mod_a::xo (from override)')
2400
- end
2401
-
2402
- it 'overrides have higher priority than found data in lookup interpolations' do
2403
- expect(lookup('mod_a::interpolate_xo', { 'override' => overrides })).to eql('-- value mod_a::xo (from override) --')
2404
- end
2405
-
2406
- it 'overrides have higher priority than found data in scope interpolations' do
2407
- expect(lookup('mod_a::interpolate_scope_xo', { 'override' => overrides })).to eql('-- value scope_xo (from override) --')
2408
- end
2409
-
2410
- it 'defaults have lower priority than found data' do
2411
- expect(lookup('mod_a::xd_found', { 'default_values_hash' => defaults })).to eql('value mod_a::xd_found (from mod_a)')
2412
- end
2413
-
2414
- it 'defaults are used when data is not found' do
2415
- expect(lookup('mod_a::xd', { 'default_values_hash' => defaults })).to eql('value mod_a::xd (from default)')
2416
- end
2417
-
2418
- it 'defaults are used when data is not found in lookup interpolations' do
2419
- expect(lookup('mod_a::interpolate_xd', { 'default_values_hash' => defaults })).to eql('-- value mod_a::xd (from default) --')
2420
- end
2421
-
2422
- it 'defaults are used when data is not found in scope interpolations' do
2423
- expect(lookup('mod_a::interpolate_scope_xd', { 'default_values_hash' => defaults })).to eql('-- value scope_xd (from default) --')
2424
- end
2425
-
2426
- it 'merges hashes from environment and module unless strategy hash is used' do
2427
- expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
2428
- end
2429
-
2430
- it 'merges hashes from environment and module when merge strategy hash is used' do
2431
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql(
2432
- {'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
2433
- end
2434
-
2435
- it 'will not merge hashes from environment and module in interpolated expressions' do
2436
- expect(lookup(['mod_a::a_a', 'mod_a::a_b'])).to eql(
2437
- ['-- value mod_a::hash_a.a (from environment) --', '-- --']) # root key found in environment, no hash merge is performed
2438
- end
2439
-
2440
- it 'interpolates arrays' do
2441
- expect(lookup('mod_a::interpolate_array')).to eql(['-- value mod_a::a (from environment) --', '-- value mod_a::b (from mod_a) --'])
2442
- end
2443
-
2444
- it 'can dig into arrays using subkeys' do
2445
- expect(lookup('mod_a::interpolate_array.1')).to eql('-- value mod_a::b (from mod_a) --')
2446
- end
2447
-
2448
- it 'treats an out of range subkey as not found' do
2449
- expect(explain('mod_a::interpolate_array.2')).to match(/No such key: "2"/)
2450
- end
2451
-
2452
- it 'interpolates a literal' do
2453
- expect(lookup('mod_a::interpolate_literal')).to eql('-- hello --')
2454
- end
2455
-
2456
- it 'interpolates scalar from scope' do
2457
- expect(lookup('mod_a::interpolate_scope')).to eql('-- scope scalar value --')
2458
- end
2459
-
2460
- it 'raises an error when trying to interpolate not found in scope' do
2461
- expect { lookup('mod_a::interpolate_scope_not_found')
2462
- }.to raise_error(/Evaluation Error: Error while evaluating a Function Call, Undefined variable 'scope_nope';/)
2463
- end
2464
-
2465
- it 'interpolates dotted key from scope' do
2466
- expect(lookup('mod_a::interpolate_scope_dig')).to eql('-- scope hash a --')
2467
- end
2468
-
2469
- it 'treats interpolated dotted key but not found in scope as empty string' do
2470
- expect(lookup('mod_a::interpolate_scope_dig_not_found')).to eql('-- --')
2471
- end
2472
-
2473
- it 'can use quoted keys in interpolation' do
2474
- expect(lookup('mod_a::quoted_interpolation')).to eql('-- value mod_a::a.quoted.key (from mod_a) --') # root key found in environment, no hash merge is performed
2475
- end
2476
-
2477
- it 'merges hashes from environment and module in interpolated expressions if hash merge is specified in lookup options' do
2478
- expect(lookup(['mod_a::b_a', 'mod_a::b_b'])).to eql(
2479
- ['-- value mod_a::hash_b.a (from environment) --', '-- value mod_a::hash_b.b (from mod_a) --'])
2480
- end
2481
- end
2482
-
2483
- context 'using a lookup_key that uses a path' do
2484
- let(:mod_a_files) do
2485
- {
2486
- 'mod_a' => {
2487
- 'functions' => {
2488
- 'pp_lookup_key.pp' => <<-PUPPET.unindent
2489
- function mod_a::pp_lookup_key($key, $options, $context) {
2490
- if !$context.cache_has_key(undef) {
2491
- $context.cache_all(yaml_data($options, $context))
2492
- $context.cache(undef, true)
2493
- }
2494
- if $context.cache_has_key($key) { $context.cached_value($key) } else { $context.not_found }
2495
- }
2496
- PUPPET
2497
- },
2498
- 'hiera.yaml' => <<-YAML.unindent,
2499
- ---
2500
- version: 5
2501
- hierarchy:
2502
- - name: "Common"
2503
- lookup_key: mod_a::pp_lookup_key
2504
- path: common.yaml
2505
- YAML
2506
- 'data' => {
2507
- 'common.yaml' => <<-YAML.unindent
2508
- mod_a::b: value mod_a::b (from mod_a)
2509
- YAML
2510
- }
2511
- }
2512
- }
2513
- end
2514
-
2515
- it 'finds data in the module' do
2516
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2517
- end
2518
- end
2519
-
2520
- context 'using a lookup_key that is a puppet function' do
2521
- let(:puppet_function) { <<-PUPPET.unindent }
2522
- function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Puppet::LookupValue {
2523
- case $key {
2524
- 'mod_a::really_interpolated': { $context.interpolate("-- %{lookup('mod_a::a')} --") }
2525
- 'mod_a::recursive': { lookup($key) }
2526
- default: {
2527
- if $context.cache_has_key(mod_a::a) {
2528
- $context.explain || { 'reusing cache' }
2529
- } else {
2530
- $context.explain || { 'initializing cache' }
2531
- $context.cache_all({
2532
- mod_a::a => 'value mod_a::a (from mod_a)',
2533
- mod_a::b => 'value mod_a::b (from mod_a)',
2534
- mod_a::c => 'value mod_a::c (from mod_a)',
2535
- mod_a::hash_a => {
2536
- a => 'value mod_a::hash_a.a (from mod_a)',
2537
- b => 'value mod_a::hash_a.b (from mod_a)'
2538
- },
2539
- mod_a::hash_b => {
2540
- a => 'value mod_a::hash_b.a (from mod_a)',
2541
- b => 'value mod_a::hash_b.b (from mod_a)'
2542
- },
2543
- mod_a::interpolated => "-- %{lookup('mod_a::a')} --",
2544
- mod_a::a_a => "-- %{lookup('mod_a::hash_a.a')} --",
2545
- mod_a::a_b => "-- %{lookup('mod_a::hash_a.b')} --",
2546
- mod_a::b_a => "-- %{lookup('mod_a::hash_b.a')} --",
2547
- mod_a::b_b => "-- %{lookup('mod_a::hash_b.b')} --",
2548
- 'mod_a::a.quoted.key' => 'value mod_a::a.quoted.key (from mod_a)',
2549
- mod_a::sensitive => Sensitive('reduct me please'),
2550
- mod_a::type => Object[{name => 'FindMe', 'attributes' => {'x' => String}}],
2551
- mod_a::version => SemVer('3.4.1'),
2552
- mod_a::version_range => SemVerRange('>=3.4.1'),
2553
- mod_a::timestamp => Timestamp("1994-03-25T19:30:00"),
2554
- mod_a::timespan => Timespan("3-10:00:00")
2555
- })
2556
- }
2557
- if !$context.cache_has_key($key) {
2558
- $context.not_found
2559
- }
2560
- $context.explain || { "returning value for $key" }
2561
- $context.cached_value($key)
2562
- }
2563
- }
2564
- }
2565
- PUPPET
2566
-
2567
- let(:mod_a_files) do
2568
- {
2569
- 'mod_a' => {
2570
- 'functions' => {
2571
- 'pp_lookup_key.pp' => puppet_function
2572
- },
2573
- 'hiera.yaml' => <<-YAML.unindent,
2574
- ---
2575
- version: 5
2576
- hierarchy:
2577
- - name: "Common"
2578
- lookup_key: mod_a::pp_lookup_key
2579
- YAML
2580
- }
2581
- }
2582
- end
2583
-
2584
- it 'finds data in the module' do
2585
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2586
- end
2587
-
2588
- it 'environment data has higher priority than module data' do
2589
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2590
- end
2591
-
2592
- it 'finds quoted keys in the module' do
2593
- expect(lookup('"mod_a::a.quoted.key"')).to eql('value mod_a::a.quoted.key (from mod_a)')
2594
- end
2595
-
2596
- it 'will not resolve interpolated expressions' do
2597
- expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
2598
- end
2599
-
2600
- it 'resolves interpolated expressions using Context#interpolate' do
2601
- expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
2602
- end
2603
-
2604
- it 'will not merge hashes from environment and module unless strategy hash is used' do
2605
- expect(lookup('mod_a::hash_a')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)' })
2606
- end
2607
-
2608
- it 'merges hashes from environment and module when merge strategy hash is used' do
2609
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({ 'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)' })
2610
- end
2611
-
2612
- it 'traps recursive lookup trapped' do
2613
- expect(explain('mod_a::recursive')).to include('Recursive lookup detected')
2614
- end
2615
-
2616
- it 'private cache is persisted over multiple calls' do
2617
- collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::c'))", true)
2618
- expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::c (from mod_a)'])
2619
- expect(explanation).to match(/initializing cache.*reusing cache/m)
2620
- expect(explanation).not_to match(/initializing cache.*initializing cache/m)
2621
- end
2622
-
2623
- it 'the same key is requested only once' do
2624
- collect_notices("notice(lookup('mod_a::b')) notice(lookup('mod_a::b'))", true)
2625
- expect(notices).to eql(['value mod_a::b (from mod_a)', 'value mod_a::b (from mod_a)'])
2626
- expect(explanation).to match(/Found key: "mod_a::b".*Found key: "mod_a::b"/m)
2627
- expect(explanation).to match(/returning value for mod_a::b/m)
2628
- expect(explanation).not_to match(/returning value for mod_a::b.*returning value for mod_a::b/m)
2629
- end
2630
-
2631
- context 'and calling function via API' do
2632
- it 'finds and delivers rich data' do
2633
- collect_notices("notice('success')") do |scope|
2634
- expect(lookup_func.call(scope, 'mod_a::sensitive')).to be_a(Puppet::Pops::Types::PSensitiveType::Sensitive)
2635
- expect(lookup_func.call(scope, 'mod_a::type')).to be_a(Puppet::Pops::Types::PObjectType)
2636
- expect(lookup_func.call(scope, 'mod_a::version')).to eql(SemanticPuppet::Version.parse('3.4.1'))
2637
- expect(lookup_func.call(scope, 'mod_a::version_range')).to eql(SemanticPuppet::VersionRange.parse('>=3.4.1'))
2638
- expect(lookup_func.call(scope, 'mod_a::timestamp')).to eql(Puppet::Pops::Time::Timestamp.parse('1994-03-25T19:30:00'))
2639
- expect(lookup_func.call(scope, 'mod_a::timespan')).to eql(Puppet::Pops::Time::Timespan.parse('3-10:00:00'))
2640
- end
2641
- expect(notices).to eql(['success'])
2642
- end
2643
- end
2644
-
2645
- context 'with declared but incompatible return_type' do
2646
- let(:puppet_function) { <<-PUPPET.unindent }
2647
- function mod_a::pp_lookup_key(Puppet::LookupKey $key, Hash[String,String] $options, Puppet::LookupContext $context) >> Runtime['ruby','Symbol'] {
2648
- undef
2649
- }
2650
- PUPPET
2651
-
2652
- it 'fails and reports error' do
2653
- expect{lookup('mod_a::a')}.to raise_error(
2654
- "Return type of 'lookup_key' function named 'mod_a::pp_lookup_key' is incorrect, expects a RichData value, got Runtime")
2655
- end
2656
- end
2657
- end
2658
-
2659
- context 'using a data_dig that is a ruby function' do
2660
- let(:mod_a_files) do
2661
- {
2662
- 'mod_a' => {
2663
- 'lib' => {
2664
- 'puppet' => {
2665
- 'functions' => {
2666
- 'mod_a' => {
2667
- 'ruby_dig.rb' => <<-RUBY.unindent
2668
- Puppet::Functions.create_function(:'mod_a::ruby_dig') do
2669
- dispatch :ruby_dig do
2670
- param 'Array[String[1]]', :segments
2671
- param 'Hash[String,Any]', :options
2672
- param 'Puppet::LookupContext', :context
2673
- return_type 'Puppet::LookupValue'
2674
- end
2675
-
2676
- def ruby_dig(segments, options, context)
2677
- sub_segments = segments.dup
2678
- root_key = sub_segments.shift
2679
- case root_key
2680
- when 'mod_a::options'
2681
- hash = { 'mod_a::options' => options }
2682
- when 'mod_a::lookup'
2683
- return call_function('lookup', segments.join('.'))
2684
- else
2685
- hash = {
2686
- 'mod_a::a' => 'value mod_a::a (from mod_a)',
2687
- 'mod_a::b' => 'value mod_a::b (from mod_a)',
2688
- 'mod_a::hash_a' => {
2689
- 'a' => 'value mod_a::hash_a.a (from mod_a)',
2690
- 'b' => 'value mod_a::hash_a.b (from mod_a)'
2691
- },
2692
- 'mod_a::hash_b' => {
2693
- 'a' => 'value mod_a::hash_b.a (from mod_a)',
2694
- 'b' => 'value mod_a::hash_b.b (from mod_a)'
2695
- },
2696
- 'mod_a::interpolated' => "-- %{lookup('mod_a::a')} --",
2697
- 'mod_a::really_interpolated' => "-- %{lookup('mod_a::a')} --",
2698
- 'mod_a::a_a' => "-- %{lookup('mod_a::hash_a.a')} --",
2699
- 'mod_a::a_b' => "-- %{lookup('mod_a::hash_a.b')} --",
2700
- 'mod_a::b_a' => "-- %{lookup('mod_a::hash_b.a')} --",
2701
- 'mod_a::b_b' => "-- %{lookup('mod_a::hash_b.b')} --",
2702
- 'mod_a::bad_type' => :oops,
2703
- 'mod_a::bad_type_in_hash' => { 'a' => :oops },
2704
- }
2705
- end
2706
- context.not_found unless hash.include?(root_key)
2707
- value = sub_segments.reduce(hash[root_key]) do |memo, segment|
2708
- context.not_found unless memo.is_a?(Hash) && memo.include?(segment)
2709
- memo[segment]
2710
- end
2711
- root_key == 'mod_a::really_interpolated' ? context.interpolate(value) : value
2712
- end
2713
- end
2714
- RUBY
2715
- }
2716
- }
2717
- }
2718
- },
2719
- 'hiera.yaml' => <<-YAML.unindent,
2720
- ---
2721
- version: 5
2722
- defaults:
2723
- options:
2724
- option_b:
2725
- z: Default option value b.z
2726
-
2727
- hierarchy:
2728
- - name: "Common"
2729
- data_dig: mod_a::ruby_dig
2730
- uri: "http://www.example.com/passed/as/option"
2731
- options:
2732
- option_a: Option value a
2733
- option_b:
2734
- x: Option value b.x
2735
- y: Option value b.y
2736
- - name: "Extra"
2737
- data_dig: mod_a::ruby_dig
2738
- YAML
2739
- }
2740
- }
2741
- end
2742
-
2743
- it 'finds data in the module' do
2744
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from mod_a)')
2745
- end
2746
-
2747
- it 'environment data has higher priority than module data' do
2748
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2749
- end
2750
-
2751
- it 'will not resolve interpolated expressions' do
2752
- expect(lookup('mod_a::interpolated')).to eql("-- %{lookup('mod_a::a')} --")
2753
- end
2754
-
2755
- it 'resolves interpolated expressions using Context#interpolate' do
2756
- expect(lookup('mod_a::really_interpolated')).to eql("-- value mod_a::a (from environment) --")
2757
- end
2758
-
2759
- it 'does not accept return of runtime type from function' do
2760
- # Message is produced by the called function, not by the lookup framework
2761
- expect(explain('mod_a::bad_type')).to include("value returned from function 'ruby_dig' has wrong type")
2762
- end
2763
-
2764
- it 'does not accept return of runtime type embedded in hash from function' do
2765
- # Message is produced by the called function, not by the lookup framework
2766
- expect(explain('mod_a::bad_type_in_hash')).to include("value returned from function 'ruby_dig' has wrong type")
2767
- end
2768
-
2769
- it 'will not merge hashes from environment and module unless strategy hash is used' do
2770
- expect(lookup('mod_a::hash_a')).to eql({'a' => 'value mod_a::hash_a.a (from environment)'})
2771
- end
2772
-
2773
- it 'hierarchy entry options are passed to the function' do
2774
- expect(lookup('mod_a::options.option_b.x')).to eql('Option value b.x')
2775
- end
2776
-
2777
- it 'default options are passed to the function' do
2778
- expect(lookup('mod_a::options.option_b.z')).to eql('Default option value b.z')
2779
- end
2780
-
2781
- it 'default options are not merged with hierarchy options' do
2782
- expect(lookup('mod_a::options')).to eql(
2783
- {
2784
- 'option_a' => 'Option value a',
2785
- 'option_b' => {
2786
- 'y' => 'Option value b.y',
2787
- 'x' => 'Option value b.x'
2788
- },
2789
- 'uri' => 'http://www.example.com/passed/as/option'
2790
- })
2791
- end
2792
-
2793
- it 'hierarchy entry "uri" is passed as location option to the function' do
2794
- expect(lookup('mod_a::options.uri')).to eql('http://www.example.com/passed/as/option')
2795
- end
2796
-
2797
- it 'recursive lookup is trapped' do
2798
- expect(explain('mod_a::lookup.mod_a::lookup')).to include('Recursive lookup detected')
2799
- end
2800
-
2801
- context 'with merge strategy hash' do
2802
- it 'merges hashes from environment and module' do
2803
- expect(lookup('mod_a::hash_a', :merge => 'hash')).to eql({'a' => 'value mod_a::hash_a.a (from environment)', 'b' => 'value mod_a::hash_a.b (from mod_a)'})
2804
- end
2805
-
2806
- it 'will "undig" value from data_dig function, merge root hashes, and then dig to get values by subkey' do
2807
- expect(lookup(['mod_a::hash_a.a', 'mod_a::hash_a.b'], :merge => 'hash')).to eql(
2808
- ['value mod_a::hash_a.a (from environment)', 'value mod_a::hash_a.b (from mod_a)'])
2809
- end
2810
- end
2811
- end
2812
-
2813
- context 'that has a default_hierarchy' do
2814
- let(:mod_a_hiera_yaml) { <<-YAML.unindent }
2815
- version: 5
2816
- hierarchy:
2817
- - name: "Common"
2818
- path: common.yaml
2819
- - name: "Common 2"
2820
- path: common2.yaml
2821
-
2822
- default_hierarchy:
2823
- - name: "Default"
2824
- path: defaults.yaml
2825
- - name: "Default 2"
2826
- path: defaults2.yaml
2827
- YAML
2828
-
2829
- let(:mod_a_common) { <<-YAML.unindent }
2830
- mod_a::a: value mod_a::a (from module)
2831
- mod_a::d:
2832
- a: value mod_a::d.a (from module)
2833
- mod_a::f:
2834
- a:
2835
- a: value mod_a::f.a.a (from module)
2836
- mod_a::to_array1: 'hello'
2837
- mod_a::to_array2: 'hello'
2838
- mod_a::to_int: 'bananas'
2839
- mod_a::to_bad_type: 'pyjamas'
2840
- mod_a::undef_value: null
2841
- lookup_options:
2842
- mod_a::e:
2843
- merge: deep
2844
- mod_a::to_array1:
2845
- merge: deep
2846
- convert_to: "Array"
2847
- mod_a::to_array2:
2848
- convert_to:
2849
- - "Array"
2850
- - true
2851
- mod_a::to_int:
2852
- convert_to: "Integer"
2853
- mod_a::to_bad_type:
2854
- convert_to: "ComicSans"
2855
- mod_a::undef_value:
2856
- convert_to:
2857
- - "Array"
2858
- - true
2859
- YAML
2860
-
2861
-
2862
- let(:mod_a_common2) { <<-YAML.unindent }
2863
- mod_a::b: value mod_a::b (from module)
2864
- mod_a::d:
2865
- c: value mod_a::d.c (from module)
2866
- mod_a::f:
2867
- a:
2868
- b: value mod_a::f.a.b (from module)
2869
- YAML
2870
-
2871
- let(:mod_a_defaults) { <<-YAML.unindent }
2872
- mod_a::a: value mod_a::a (from module defaults)
2873
- mod_a::b: value mod_a::b (from module defaults)
2874
- mod_a::c: value mod_a::c (from module defaults)
2875
- mod_a::d:
2876
- b: value mod_a::d.b (from module defaults)
2877
- mod_a::e:
2878
- a:
2879
- a: value mod_a::e.a.a (from module defaults)
2880
- mod_a::g:
2881
- a:
2882
- a: value mod_a::g.a.a (from module defaults)
2883
- lookup_options:
2884
- mod_a::d:
2885
- merge: hash
2886
- mod_a::g:
2887
- merge: deep
2888
- YAML
2889
-
2890
- let(:mod_a_defaults2) { <<-YAML.unindent }
2891
- mod_a::e:
2892
- a:
2893
- b: value mod_a::e.a.b (from module defaults)
2894
- mod_a::g:
2895
- a:
2896
- b: value mod_a::g.a.b (from module defaults)
2897
- YAML
2898
-
2899
- let(:mod_a_files) do
2900
- {
2901
- 'mod_a' => {
2902
- 'data' => {
2903
- 'common.yaml' => mod_a_common,
2904
- 'common2.yaml' => mod_a_common2,
2905
- 'defaults.yaml' => mod_a_defaults,
2906
- 'defaults2.yaml' => mod_a_defaults2
2907
- },
2908
- 'hiera.yaml' => mod_a_hiera_yaml
2909
- }
2910
- }
2911
- end
2912
-
2913
- it 'the default hierarchy does not interfere with environment hierarchy' do
2914
- expect(lookup('mod_a::a')).to eql('value mod_a::a (from environment)')
2915
- end
2916
-
2917
- it 'the default hierarchy does not interfere with regular hierarchy in module' do
2918
- expect(lookup('mod_a::b')).to eql('value mod_a::b (from module)')
2919
- end
2920
-
2921
- it 'the default hierarchy is consulted when no value is found elsewhere' do
2922
- expect(lookup('mod_a::c')).to eql('value mod_a::c (from module defaults)')
2923
- end
2924
-
2925
- it 'the default hierarchy does not participate in a merge' do
2926
- expect(lookup('mod_a::d', 'merge' => 'hash')).to eql('a' => 'value mod_a::d.a (from module)', 'c' => 'value mod_a::d.c (from module)')
2927
- end
2928
-
2929
- it 'lookup_options from regular hierarchy does not effect values found in the default hierarchy' do
2930
- expect(lookup('mod_a::e')).to eql('a' => { 'a' => 'value mod_a::e.a.a (from module defaults)' })
2931
- end
2932
-
2933
- it 'lookup_options from default hierarchy affects values found in the default hierarchy' do
2934
- expect(lookup('mod_a::g')).to eql('a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
2935
- end
2936
-
2937
- it 'merge parameter does not override lookup_options defined in the default hierarchy' do
2938
- expect(lookup('mod_a::g', 'merge' => 'hash')).to eql(
2939
- 'a' => { 'a' => 'value mod_a::g.a.a (from module defaults)', 'b' => 'value mod_a::g.a.b (from module defaults)'})
2940
- end
2941
-
2942
- it 'lookup_options from default hierarchy does not effect values found in the regular hierarchy' do
2943
- expect(lookup('mod_a::d')).to eql('a' => 'value mod_a::d.a (from module)')
2944
- end
2945
-
2946
- context "and conversion via convert_to" do
2947
- it 'converts with a single data type value' do
2948
- expect(lookup('mod_a::to_array1')).to eql(['h', 'e', 'l', 'l', 'o'])
2949
- end
2950
-
2951
- it 'converts with an array of arguments to the convert_to call' do
2952
- expect(lookup('mod_a::to_array2')).to eql(['hello'])
2953
- end
2954
-
2955
- it 'converts an undef/nil value that has convert_to option' do
2956
- expect(lookup('mod_a::undef_value')).to eql([nil])
2957
- end
2958
-
2959
- it 'errors if a convert_to lookup_option cannot be performed because value does not match type' do
2960
- expect{lookup('mod_a::to_int')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_int' raised error.*The string 'bananas' cannot be converted to Integer/)
2961
- end
2962
-
2963
- it 'errors if a convert_to lookup_option cannot be performed because type does not exist' do
2964
- expect{lookup('mod_a::to_bad_type')}.to raise_error(/The convert_to lookup_option for key 'mod_a::to_bad_type' raised error.*Creation of new instance of type 'TypeReference\['ComicSans'\]' is not supported/)
2965
- end
2966
-
2967
- it 'adds explanation that conversion took place with a type' do
2968
- explanation = explain('mod_a::to_array1')
2969
- expect(explanation).to include('Applying convert_to lookup_option with arguments [Array]')
2970
- end
2971
-
2972
- it 'adds explanation that conversion took place with a type and arguments' do
2973
- explanation = explain('mod_a::to_array2')
2974
- expect(explanation).to include('Applying convert_to lookup_option with arguments [Array, true]')
2975
- end
2976
- end
2977
-
2978
- it 'the default hierarchy lookup is included in the explain output' do
2979
- explanation = explain('mod_a::c')
2980
- expect(explanation).to match(/Searching default_hierarchy of module "mod_a".+Original path: "defaults.yaml"/m)
2981
- end
2982
- end
2983
- end
2984
-
2985
- context 'and an eyaml lookup_key function', :if => Puppet.features.hiera_eyaml? do
2986
- let(:private_key_name) { 'private_key.pkcs7.pem' }
2987
- let(:public_key_name) { 'public_key.pkcs7.pem' }
2988
-
2989
- let(:private_key) do
2990
- <<-PKCS7.unindent
2991
- -----BEGIN RSA PRIVATE KEY-----
2992
- MIIEogIBAAKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6f
2993
- CR7tyOpYV6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC
2994
- 2LUuqj1IAErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQ
2995
- NlgZwm2/aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2
2996
- tPtLsHyRN39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1o
2997
- EfQFDQRKaIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABAoIBAE98pNXOe8ab93oI
2998
- mtNZYmjCbGAqprTjEoFb71A3SfYbmK2Gf65GxjUdBwx/tBYTiuekSOk+yzKcDoZk
2999
- sZnmwKpqDByzaiSmAkxunANFxdZtZvpcX9UfUX0j/t+QCROUa5gF8j6HrUiZ5nkx
3000
- sxr1PcuItekaGLJ1nDLz5JsWTQ+H4M+GXQw7/t96x8v8g9el4exTiAHGk6Fv16kD
3001
- 017T02M9qTTmV3Ab/enDIBmKVD42Ta36K/wc4l1aoUQNiRbIGVh96Cgd1CFXLF3x
3002
- CsaNbYT4SmRXaYqoj6MKq+QFEGxadFmJy48NoSd4joirIn2lUjHxJebw3lLbNLDR
3003
- uvQnQ2ECgYEA/nD94wEMr6078uMv6nKxPpNGq7fihwSKf0G/PQDqrRmjUCewuW+k
3004
- /iXMe1Y/y0PjFeNlSbUsUvKQ5xF7F/1AnpuPHIrn3cjGVLb71W+zen1m8SnhsW/f
3005
- 7dPgtcb4SCvfhmLgoov+P34YcNfGi6qgPUu6319IqoB3BIi7PvfEomkCgYEAwZ4+
3006
- V0bMjFdDn2hnYzjTNcF2aUQ1jPvtuETizGwyCbbMLl9522lrjC2DrH41vvqX35ct
3007
- CBJkhQFbtHM8Gnmozv0vxhI2jP+u14mzfePZsaXuYrEgWRj+BCsYUHodXryxnEWj
3008
- yVrTNskab1B5jFm2SCJDmKcycBOYpRBLCMx6W7MCgYBA99z7/6KboOIzzKrJdGup
3009
- jLV410UyMIikoccQ7pD9jhRTPS80yjsY4dHqlEVJw5XSWvPb9DTTITi6p44EvBep
3010
- 6BKMuTMnQELUEr0O7KypVCfa4FTOl8BX28f+4kU3OGykxc6R8qkC0VGwTohV1UWB
3011
- ITsgGhZV4uOA9uDI3T8KMQKBgEnQY2HwmuDSD/TA39GDA3qV8+ez2lqSXRGIKZLX
3012
- mMf9SaBQQ+uzKA4799wWDbVuYeIbB07xfCL83pJP8FUDlqi6+7Celu9wNp7zX1ua
3013
- Nw8z/ErhzjxJe+Xo7A8aTwIkG+5A2m1UU/up9YsEeiJYvVaIwY58B42U2vfq20BS
3014
- fD9jAoGAX2MscBzIsmN+U9R0ptL4SXcPiVnOl8mqvQWr1B4OLgxX7ghht5Fs956W
3015
- bHipxOWMFCPJA/AhNB8q1DvYiD1viZbIALSCJVUkzs4AEFIjiPsCBKxerl7jF6Xp
3016
- 1WYSaCmfvoCVEpFNt8cKp4Gq+zEBYAV4Q6TkcD2lDtEW49MuN8A=
3017
- -----END RSA PRIVATE KEY-----
3018
- PKCS7
3019
- end
3020
-
3021
- let(:public_key) do
3022
- <<-PKCS7.unindent
3023
- -----BEGIN CERTIFICATE-----
3024
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDExMzA5MTY1
3025
- MloYDzIwNjcwMTAxMDkxNjUyWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3026
- CgKCAQEAwHB3GvImq59em4LV9DMfP0Zjs21eW3Jd5I9fuY0jLJhIkH6fCR7tyOpY
3027
- V6xUj+TF8giq9WLxZI7sourMJMWjEWhVjgUr5lqp1RLv4lwfDv3Wk4XC2LUuqj1I
3028
- AErUXKeRz8i3lUSZW1Pf4CaMpnIiPdWbz6f0KkaJSFi9bqexONBx4fKQNlgZwm2/
3029
- aYjjrYng788I0QhWDKUqsQOi5mZKlHNRsDlk7J3Afhsx/jTLrCX/G8+2tPtLsHyR
3030
- N39kluM5vYHbKXDsCG/a88Z2yUE2+r4Clp0FUKffiEDBPm0/H0sQ4Q1oEfQFDQRK
3031
- aIkhpsm0nOnLYTy3/xJc5uqDNkLiawIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
3032
- MB0GA1UdDgQWBBSejWrVnw7QaBjNFCHMNFi+doSOcTAoBgNVHSMEITAfgBSejWrV
3033
- nw7QaBjNFCHMNFi+doSOcaEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAAe85
3034
- BQ1ydAHFqo0ib38VRPOwf5xPHGbYGhvQi4/sU6aTuR7pxaOJPYz05jLhS+utEmy1
3035
- sknBq60G67yhQE7IHcfwrl1arirG2WmKGvAbjeYL2K1UiU0pVD3D+Klkv/pK6jIQ
3036
- eOJRGb3qNUn0Sq9EoYIOXiGXQ641F0bZZ0+5H92kT1lmnF5oLfCb84ImD9T3snH6
3037
- pIr5RKRx/0YmJIcv3WdpoPT903rOJiRIEgIj/hDk9QZTBpm222Ul5yQQ5pBywpSp
3038
- xh0bmJKAQWhQm7QlybKfyaQmg5ot1jEzWAvD2I5FjHQxmAlchjb6RreaRhExj+JE
3039
- 5O117dMBdzDBjcNMOA==
3040
- -----END CERTIFICATE-----
3041
- PKCS7
3042
- end
3043
-
3044
- let(:keys_dir) do
3045
- keys = tmpdir('keys')
3046
- dir_contained_in(keys, {
3047
- private_key_name => private_key,
3048
- public_key_name => public_key
3049
- })
3050
- keys
3051
- end
3052
-
3053
- let(:private_key_path) { File.join(keys_dir, private_key_name) }
3054
- let(:public_key_path) { File.join(keys_dir, public_key_name) }
3055
-
3056
- let(:env_hiera_yaml) do
3057
- <<-YAML.unindent
3058
- version: 5
3059
- hierarchy:
3060
- - name: EYaml
3061
- path: common.eyaml
3062
- lookup_key: eyaml_lookup_key
3063
- options:
3064
- pkcs7_private_key: #{private_key_path}
3065
- pkcs7_public_key: #{public_key_path}
3066
- YAML
3067
- end
3068
-
3069
- let(:scope_additions) { { 'ipl_suffix' => 'aa' } }
3070
- let(:data_files) do
3071
- {
3072
- 'common.eyaml' => <<-YAML.unindent
3073
- # a: Encrypted value 'a' (from environment)
3074
- a: >
3075
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
3076
- DQYJKoZIhvcNAQEBBQAEggEAUwwNRA5ZKM87SLnjnJfzDFRQbeheSYMTOhcr
3077
- sgTPCGtzEAzvRBrkdIRAvDZVRfadV9OB+bJsYrhWIkU1bYiOn1m78ginh96M
3078
- 44RuspnIZYnL9Dhs+JyC8VvB5nlvlEph2RGt+KYg9iU4JYhwZ2+8+yxB6/UK
3079
- H5HGKDCjBbEc8o9MbCckLsciIh11hKKgT6K0yhKB/nBxxM78nrX0BxmAHX2u
3080
- bejKDRa9S/0uS7Y91nvnbIkaQpZ4KteSQ+J4/lQBMlMAeE+2F9ncM8jFKnQC
3081
- rzzdbn1O/zwsEt5J5CRP1Sc+8hM644+IqkLs+17segxArHVGOsEqyDcHbXEK
3082
- 9jspfzBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCIq/L5HeJgA9XQm67j
3083
- JHUngDDS5s52FsuSIMin7Z/pV+XuaJGFkL80ia4bXnCWilmtM8oUa/DZuBje
3084
- dCILO7I8QqU=]
3085
- hash_a:
3086
- "hash_%{ipl_suffix}":
3087
- # aaa: Encrypted value hash_a.hash_aa.aaa (from environment)
3088
- aaa: >
3089
- ENC[PKCS7,MIIBqQYJKoZIhvcNAQcDoIIBmjCCAZYCAQAxggEhMIIBHQIBADAFMAACAQEw
3090
- DQYJKoZIhvcNAQEBBQAEggEAhvGXL5RxVUs9wdqJvpCyXtfCHrm2HbG/u30L
3091
- n8EuRD9ravlsgIISAnd27JPtrxA+0rZq4EQRGz6OcovnH9vTg86/lVBhhPnz
3092
- b83ArptGJhRvTYUJ19GZI3AYjJbhWj/Jo5NL56oQJaPBccqHxMApm/U0wlus
3093
- QtASL94cLuh4toVIBQCQzD5/Bx51p2wQobm9p4WKSl1zJhDceurmoLZXqhuN
3094
- JwwEBwXopJvgid3ZDPbdX8nI6vHhb/8wDq9yb5DOsrkgqDqQgwPU9sUUioQj
3095
- Hr1pGyeOWnbEe99iEb2+m7TWsC0NN7OBo06mAgFNbBLjvn2k4PiCxrOOgJ8S
3096
- LI5eXjBsBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBCWNS6j3m/Xvrp5RFaN
3097
- ovm/gEB4oPlYJswoXuWqcEBfwZzbpy96x3b2Le/yoa72ylbPAUc5GfLENvFQ
3098
- zXpTtSmQE0fixY4JMaBTke65ZRvoiOQO]
3099
- array_a:
3100
- # - "array_a[0]"
3101
- - >
3102
- ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
3103
- DQYJKoZIhvcNAQEBBQAEggEAmXZfyfU77vVCZqHpR10qhD0Jy9DpMGBgal97
3104
- vUO2VHX7KlCgagK0kz8/uLRIthkYzcpn8ISmw/+CIAny3jOjxOsylJiujqyu
3105
- hx/JEFl8bOKOg40Bd0UuBaw/qZ+CoAtOorhiIW7x6t7DpknItC6gkH/cSJ4/
3106
- p3MdhoARRuwj2fvuaChVsD39l2rXjgJj0OJOaDXdbuisG75VRZf5l8IH6+44
3107
- Q7m6W7BU69LX+ozn+W3filQoiJ5MPf8w/KXAObMSbKYIDsrZUyIWyyNUbpW0
3108
- MieIkHj93bX3gIEcenECLdWaEzcPa7MHgl6zevQKg4H0JVmcvKYyfHYqcrVE
3109
- PqizKDA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDf259KZEay1widVSFy
3110
- I9zGgBAICjm0x2GeqoCnHdiAA+jt]
3111
- # - "array_a[1]"
3112
- - >
3113
- ENC[PKCS7,MIIBeQYJKoZIhvcNAQcDoIIBajCCAWYCAQAxggEhMIIBHQIBADAFMAACAQEw
3114
- DQYJKoZIhvcNAQEBBQAEggEATVy4hHG356INFKOswAhoravh66iJljp+Vn3o
3115
- UVD1kyRiqY5tz3UVSptzUmzD+YssX/f73AKCjUI3HrPNL7kAxsk6fWS7nDEj
3116
- AuxtCqGYeBha6oYJYziSGIHfAdY3MiJUI1C9g/OQB4TTvKdrlDArPiY8THJi
3117
- bzLLMbVQYJ6ixSldwkdKD75vtikyamx+1LSyVBSg8maVyPvLHtLZJuT71rln
3118
- WON3Ious9PIbd+izbcCzaoqh5UnTfDCjOuAYliXalBxamIIwNzSV1sdR8/qf
3119
- t22zpYK4J8lgCBV2gKfrOWSi9MAs6JhCeOb8wNLMmAUTbc0WrFJxoCwAPX0z
3120
- MAjsNjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBC4v4bNE4gFlbLmVY+9
3121
- BtSLgBBm7U0wu6d6s9wF9Ek9IHPe]
3122
- # ref_a: "A resolved = '%{hiera('a')}'"
3123
- ref_a: >
3124
- ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
3125
- DQYJKoZIhvcNAQEBBQAEggEAFSuUp+yk+oaA7b5ekT0u360CQ9Q2sIQ/bTcM
3126
- jT3XLjm8HIGYPcysOEnuo8WcAxJFY5iya4yQ7Y/UhMWXaTi7Vzv/6BmyPDwz
3127
- +7Z2Mf0r0PvS5+ylue6aem/3bXPOmXTKTf68OCehTRXlDUs8/av9gnsDzojp
3128
- yiUTBZvKxhIP2n//GyoHgyATveHT0lxPVpdMycB347DtWS7IduCxx0+KiOOw
3129
- DXYFlYbIVxVInwgERxtsfYSr+Fu0/mkjtRsQm+dPzMQOATE9Val2gGKsV6bi
3130
- kdm1OM9HrwVsFj6Lma6FYmr89Bcm/1uEc8fiOMtNK3z2+nwunWBMNCGneMYD
3131
- C5IJejBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAeiZDGQyXHkZlV5ceT
3132
- iCxpgCDDatuVvbPEEi8rKOC7xhPHZ22zLEEV//l7C9jxq+DZcA==]
3133
- YAML
3134
- }
3135
- end
3136
-
3137
- let(:env_data) { data_files }
3138
-
3139
- context 'with unencryptable eyaml' do
3140
- let(:data_files) do
3141
- {
3142
- 'common.eyaml' => <<-YAML.unindent
3143
- key_with_invalid_eyaml: ENC[PKCS7,INVALID]
3144
- YAML
3145
- }
3146
- end
3147
-
3148
- it 'fails and reports error with ENC value, key being looked up and filename' do
3149
- expect { lookup('key_with_invalid_eyaml') }.to raise_error(Puppet::DataBinding::LookupError, /hiera-eyaml backend error decrypting ENC\[PKCS7,INVALID\] when looking up key_with_invalid_eyaml in .*common\.eyaml\. Error was/)
3150
- end
3151
- end
3152
- context 'and a module using eyaml with different options' do
3153
-
3154
- let(:private_module_key) do
3155
- <<-PKCS7.unindent
3156
- -----BEGIN RSA PRIVATE KEY-----
3157
- MIIEogIBAAKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/y
3158
- YZRjQR+XovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1Q
3159
- DC1ciTpVzHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM
3160
- 8CZExa0CeIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJY
3161
- YM+SUb0XP1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJW
3162
- NjWZYs8izAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABAoIBAHIex13QOYeAlGSM
3163
- 7bpUtBMiTV6DItxvIyA5wen8ZvU+oqmSHDorp5BfB7E9Cm0qChkVSRot9fLYawtk
3164
- anoxakuRY4ZRs3AMvipfkXYT854CckTP/cykQ6soPuOU6plQIEEtKtMf3/hoTjRX
3165
- ps77J3FEtEAh6Kexg/zMPdpeS2xgULhk0P9ZQEg+JhLA5dq0p0nz3SBkuzcxei79
3166
- +Za/Tg1osD0AINOajdvPnKxvlmWJN0+LpGwVjFNhkoUXPeDyvq0z2V/Uqwz4HP2I
3167
- UGv4tz3SbzFc3Ie4lzgUZzCQgUK3u60pq1uyA6BRtxwdEmpn5v++jGXBGJZpWwcW
3168
- UNblESUCgYEA4aTH9+LHsNjLPs2FmSc7hNjwHG1rAHcDXTX2ccySjRcQvH4Z7xBL
3169
- di+SzZ2Tf8gSLycPRgRVCbrgCODpjoV2D5wWnyUHfWm4+GQxHURYa4UDx69tsSKE
3170
- OTRASJo7/Mz0M1a6YzgCzVRM/TO676ucmawzKUY5OUm1oehtODAiZOcCgYEA08GM
3171
- AMBOznys02xREJI5nLR6AveuTbIjF2efEidoxoW+1RrMOkcqaDTrJQ5PLM+oDDwD
3172
- iPzVjnroSbwJzFB71atIg7b7TwltgkXy7wNTedO2cm5u/I0q8tY2Jaa4Mz8JUnbe
3173
- yafvtS0/mY6A5k+8/2UIMFin2rqU9NC9EUPIo6sCgYBhOvAwELibq89osIbxB8bN
3174
- 5+0PUtbYzG/WqnoXb193DIlZr7zdFththPJtR4lXdo7fYqViNluuZahEKyZ5E2lc
3175
- MJZO3VXs5LGf1wyS3/B55EdMtHs/6O+w9qL8pflTZb2UobqPJoOOltTWBoR24iwI
3176
- y/r/vhLKbMini9AEdjlb4QKBgGdYsax4Lr4GCQ8ScSnmQ6ngRyAFo5MV2pyEnRTu
3177
- GOuywKUe9AeJTgAXu5+VMT0Mh9aYv5zu0Ic+IvpBhIKr0RRCCR0Hg/VaA5Et9FeE
3178
- RwxRMFz+2rn1Z72moDyV9pZEMJeHnknK5WmGEOEvtGczCWmX9Hwr+Jf+sc4dxfiU
3179
- HWsLAoGAXWSX73p/6R4eRfF5zU2UFJPvDzhmwObAuvU4zKs9x7PMxZfvyt/eBCO1
3180
- fj2+hIR72RxVuHbLApF1BT6gPVLtNdvaNuCs8YlHcnx/Oi088F0ni7fL/xYBUvaB
3181
- 7wTf188UJxP1ofVMZW00P4I9mR6BrOulv455gCwsmg2X7WtJU48=
3182
- -----END RSA PRIVATE KEY-----
3183
- PKCS7
3184
- end
3185
-
3186
- let(:public_module_key) do
3187
- <<-PKCS7.unindent
3188
- -----BEGIN CERTIFICATE-----
3189
- MIIC2TCCAcGgAwIBAgIBATANBgkqhkiG9w0BAQUFADAAMCAXDTE3MDUzMTE2Mjc0
3190
- M1oYDzIwNjcwNTE5MTYyNzQzWjAAMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3191
- CgKCAQEAuqVpctipK4OMWM+RwKcd/mR4pg6qE3+ItPVC9TlvBrmDaN/yYZRjQR+X
3192
- ovXSGuy/CneSQ9Qss0Ff3FKAmEeH0qN0V47a81hgLpjhLCX1n+Ov7r1QDC1ciTpV
3193
- zHE4krN3rJ/RmDohitIqT1IYYhdcEdaMG9E26HIzn1QIwaDiYU3mfqWM8CZExa0C
3194
- eIsEzHRLSxuMi/xX0ENImCRUzY9GH88Cu2gUhpKlbVzJmVqGPgp94pJYYM+SUb0X
3195
- P1yRySpJMnVg98oCUrQO2OoE/Gax/djAi6hrJUzejPsEKdZ1yxM6OyJWNjWZYs8i
3196
- zAxBqm7pv1hx5+X7AIPqwZTMVrB7TQIDAQABo1wwWjAPBgNVHRMBAf8EBTADAQH/
3197
- MB0GA1UdDgQWBBQkhoMgOyPzEe7tOOimNH2//PYF2TAoBgNVHSMEITAfgBQkhoMg
3198
- OyPzEe7tOOimNH2//PYF2aEEpAIwAIIBATANBgkqhkiG9w0BAQUFAAOCAQEAhRWc
3199
- Nz3PcUJllao5G/v4AyvjLgwB2JgjJgh6D3ILoOe9TrDSXD7ZV3F30vFae+Eztk86
3200
- pmM8x57E0HsuuY+Owf6/hvELtwbzf9N/lc9ySZSogGFoQeJ8rnCJAQ0FaPjqb7AN
3201
- xTaY9HTzr4dZG1f+sw32RUu2fDe7Deqgf85uMSZ1mtRTt9zvo8lMQxVA2nVOfwz2
3202
- Nxf+qSNYSCtf0/6iwfzHy0qPjaJnywgBCi3Lg2IMSqGUatxzH+9HWrBgD+ZYxmDz
3203
- 2gW+EIU1Y/We/tbjIWaR1PD+IzeRJi5fHq60RKHPSdp7TGtV48bQRvyZXC7sVCRa
3204
- yxfX1IGYhCDzbFRQNg==
3205
- -----END CERTIFICATE-----
3206
- PKCS7
3207
- end
3208
-
3209
- let(:module_keys_dir) do
3210
- keys = tmpdir('keys')
3211
- dir_contained_in(keys, {
3212
- private_key_name => private_module_key,
3213
- public_key_name => public_module_key
3214
- })
3215
- keys
3216
- end
3217
-
3218
- let(:private_module_key_path) { File.join(module_keys_dir, private_key_name) }
3219
- let(:public_module_key_path) { File.join(module_keys_dir, public_key_name) }
3220
-
3221
- let(:mod_a_files) do
3222
- {
3223
- 'mod_a' => {
3224
- 'hiera.yaml' => <<-YAML.unindent,
3225
- version: 5
3226
- hierarchy:
3227
- - name: EYaml
3228
- path: common.eyaml
3229
- lookup_key: eyaml_lookup_key
3230
- options:
3231
- pkcs7_private_key: #{private_module_key_path}
3232
- pkcs7_public_key: #{public_module_key_path}
3233
- YAML
3234
- 'data' => {
3235
- 'common.eyaml' => <<-YAML.unindent
3236
- ---
3237
- # "%{lookup('a')} (from module)"
3238
- mod_a::a: >
3239
- ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQEw
3240
- DQYJKoZIhvcNAQEBBQAEggEAC+lvda8mX6XkgCBstNw4IQUDyFcS6M0mS9gZ
3241
- ev4VBDeUK4AUNVnzzdbW0Mnj9LbqlpzFx96VGqSxsRBpe7BVD0kVo5jQsEMn
3242
- nbrWOD1lvXYrXZMXBeD9xJbMbH5EiiFhbaXcEKRAVGaLVQKjXDENDQ/On+it
3243
- 1+wmmVwJynDJR0lsCz6dcSKvw6wnxBcv32qFyePvJuIf04CHMhaS4ykedYHK
3244
- vagUn5uVXOv/8G0JPlZnQLyxjE0v0heb0Zj0mvcP2+Y5BSW50AQVrMWJNtdW
3245
- aFEg6H5hpjduQfQh3iWVuDLnWhbP0sY2Grn5dTOxQP8aTDSsiTUcSeIAmjr/
3246
- K8YRCjBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBAjL7InlBjRuohLLcBx
3247
- 686ogCDkhCan8bCE7aX2nr75QtLF3q89pFIR4/NGl5+oGEO+qQ==]
3248
- YAML
3249
- }
3250
- }
3251
- }
3252
- end
3253
-
3254
- let(:populated_env_dir) do
3255
- dir_contained_in(env_dir, DeepMerge.deep_merge!(environment_files, env_name => { 'modules' => mod_a_files }))
3256
- env_dir
3257
- end
3258
-
3259
- it 'repeatedly finds data in environment and module' do
3260
- expect(lookup(['array_a', 'mod_a::a', 'hash_a'])).to eql([
3261
- ['array_a[0]', 'array_a[1]'],
3262
- "Encrypted value 'a' (from environment) (from module)",
3263
- {'hash_aa'=>{'aaa'=>'Encrypted value hash_a.hash_aa.aaa (from environment)'}}])
3264
- end
3265
- end
3266
-
3267
- it 'finds data in the environment' do
3268
- expect(lookup('a')).to eql("Encrypted value 'a' (from environment)")
3269
- end
3270
-
3271
- it 'evaluates interpolated keys' do
3272
- expect(lookup('hash_a')).to include('hash_aa')
3273
- end
3274
-
3275
- it 'evaluates interpolations in encrypted values' do
3276
- expect(lookup('ref_a')).to eql("A resolved = 'Encrypted value 'a' (from environment)'")
3277
- end
3278
-
3279
- it 'can read encrypted values inside a hash' do
3280
- expect(lookup('hash_a.hash_aa.aaa')).to eql('Encrypted value hash_a.hash_aa.aaa (from environment)')
3281
- end
3282
-
3283
- it 'can read encrypted values inside an array' do
3284
- expect(lookup('array_a')).to eql(['array_a[0]', 'array_a[1]'])
3285
- end
3286
-
3287
- context 'declared in global scope as a Hiera v3 backend', :if => Puppet.features.hiera? do
3288
- let(:environment_files) { {} }
3289
- let(:data_file_content) { <<-YAML.unindent }
3290
- a: >
3291
- ENC[PKCS7,MIIBmQYJKoZIhvcNAQcDoIIBijCCAYYCAQAxggEhMIIBHQIBADAFMAACAQEw
3292
- DQYJKoZIhvcNAQEBBQAEggEAH457bsfL8kYw9O50roE3dcE21nCnmPnQ2XSX
3293
- LYRJ2C78LarbfFonKz0gvDW7tyhsLWASFCFaiU8T1QPBd2b3hoQK8E4B2Ual
3294
- xga/K7r9y3OSgRomTm9tpTltC6re0Ubh3Dy71H61obwxEdNVTqjPe95+m2b8
3295
- 6zWZVnzZzXXsTG1S17yJn1zaB/LXHbWNy4KyLLKCGAml+Gfl6ZMjmaplTmUA
3296
- QIC5rI8abzbPP3TDMmbLOGNkrmLqI+3uS8tSueTMoJmWaMF6c+H/cA7oRxmV
3297
- QCeEUVXjyFvCHcmbA+keS/RK9XF+vc07/XS4XkYSPs/I5hLQji1y9bkkGAs0
3298
- tehxQjBcBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBDHpA6Fcl/R16aIYcow
3299
- oiO4gDAvfFH6jLUwXkcYtagnwdmhkd9TQJtxNWcIwMpvmk036MqIoGwwhQdg
3300
- gV4beiCFtLU=]
3301
- YAML
3302
-
3303
- let(:hiera_yaml) do
3304
- <<-YAML.unindent
3305
- :backends: eyaml
3306
- :eyaml:
3307
- :datadir: #{code_dir}/hieradata
3308
- :pkcs7_private_key: #{private_key_path}
3309
- :pkcs7_public_key: #{public_key_path}
3310
- :hierarchy:
3311
- - common
3312
- YAML
3313
- end
3314
-
3315
- let(:data_files) do
3316
- {
3317
- 'common.eyaml' => data_file_content
3318
- }
3319
- end
3320
-
3321
- let(:code_dir_files) do
3322
- {
3323
- 'hiera.yaml' => hiera_yaml,
3324
- 'hieradata' => data_files
3325
- }
3326
- end
3327
-
3328
- before(:each) do
3329
- Puppet.settings[:hiera_config] = File.join(code_dir, 'hiera.yaml')
3330
- end
3331
-
3332
- it 'finds data in the global layer' do
3333
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3334
- end
3335
-
3336
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
3337
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
3338
- end
3339
-
3340
- context 'using intepolated paths to the key pair' do
3341
- let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
3342
-
3343
- let(:hiera_yaml) do
3344
- <<-YAML.unindent
3345
- :backends: eyaml
3346
- :eyaml:
3347
- :datadir: #{code_dir}/hieradata
3348
- :pkcs7_private_key: "%{priv_path}"
3349
- :pkcs7_public_key: "%{pub_path}"
3350
- :hierarchy:
3351
- - common
3352
- YAML
3353
- end
3354
-
3355
- it 'finds data in the global layer' do
3356
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3357
- end
3358
- end
3359
-
3360
- context 'using options containing intepolated paths to the key pair' do
3361
- let(:scope_additions) { { 'priv_path' => private_key_path, 'pub_path' => public_key_path } }
3362
-
3363
- let(:hiera_yaml) do
3364
- <<-YAML.unindent
3365
- version: 5
3366
- defaults:
3367
- datadir: #{code_dir}/hieradata
3368
- hierarchy:
3369
- - name: "secret data"
3370
- lookup_key: eyaml_lookup_key
3371
- path: common.eyaml
3372
- options:
3373
- pkcs7_private_key: "%{priv_path}"
3374
- pkcs7_public_key: "%{pub_path}"
3375
- YAML
3376
- end
3377
-
3378
- it 'finds data in the global layer' do
3379
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3380
- end
3381
- end
3382
-
3383
- context 'with special extension declared in options' do
3384
- let(:environment_files) { {} }
3385
- let(:hiera_yaml) do
3386
- <<-YAML.unindent
3387
- :backends: eyaml
3388
- :eyaml:
3389
- :extension: xyaml
3390
- :datadir: #{code_dir}/hieradata
3391
- :pkcs7_private_key: #{private_key_path}
3392
- :pkcs7_public_key: #{public_key_path}
3393
- :hierarchy:
3394
- - common
3395
- YAML
3396
- end
3397
-
3398
- let(:data_files) do
3399
- {
3400
- 'common.xyaml' => data_file_content
3401
- }
3402
- end
3403
-
3404
- it 'finds data in the global layer' do
3405
- expect(lookup('a')).to eql("Encrypted value 'a' (from global)")
3406
- end
3407
-
3408
- it 'delegates configured eyaml backend to eyaml_lookup_key function' do
3409
- expect(explain('a')).to match(/Hierarchy entry "eyaml"\n.*\n.*\n.*"common"\n\s*Found key: "a"/m)
3410
- end
3411
- end
3412
- end
3413
- end
3414
- end
3415
- end