puppet 7.27.0-x64-mingw32 → 7.29.0-x64-mingw32

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