puppet 6.22.1-universal-darwin → 6.25.1-universal-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +5 -5
  3. data/Gemfile +2 -2
  4. data/Gemfile.lock +20 -20
  5. data/README.md +4 -4
  6. data/{ext → examples/enc}/regexp_nodes/classes/databases +0 -0
  7. data/{ext → examples/enc}/regexp_nodes/classes/webservers +0 -0
  8. data/{ext → examples/enc}/regexp_nodes/environment/development +0 -0
  9. data/{ext → examples/enc}/regexp_nodes/parameters/service/prod +0 -0
  10. data/{ext → examples/enc}/regexp_nodes/parameters/service/qa +0 -0
  11. data/{ext → examples/enc}/regexp_nodes/parameters/service/sandbox +0 -0
  12. data/{ext → examples/enc}/regexp_nodes/regexp_nodes.rb +0 -0
  13. data/{ext → examples}/nagios/check_puppet.rb +2 -2
  14. data/ext/README.md +13 -0
  15. data/ext/osx/puppet.plist +2 -0
  16. data/ext/project_data.yaml +1 -0
  17. data/lib/puppet/application/agent.rb +16 -5
  18. data/lib/puppet/application/apply.rb +22 -3
  19. data/lib/puppet/application/device.rb +2 -1
  20. data/lib/puppet/application/filebucket.rb +1 -0
  21. data/lib/puppet/application/resource.rb +32 -16
  22. data/lib/puppet/application/script.rb +2 -1
  23. data/lib/puppet/application/ssl.rb +1 -0
  24. data/lib/puppet/concurrent/thread_local_singleton.rb +1 -0
  25. data/lib/puppet/configurer/downloader.rb +2 -1
  26. data/lib/puppet/configurer.rb +144 -56
  27. data/lib/puppet/confine/variable.rb +1 -1
  28. data/lib/puppet/defaults.rb +47 -33
  29. data/lib/puppet/environments.rb +75 -25
  30. data/lib/puppet/face/facts.rb +1 -1
  31. data/lib/puppet/face/help/action.erb +1 -0
  32. data/lib/puppet/face/help/face.erb +1 -0
  33. data/lib/puppet/face/node/clean.rb +11 -0
  34. data/lib/puppet/facter_impl.rb +96 -0
  35. data/lib/puppet/file_serving/configuration/parser.rb +2 -0
  36. data/lib/puppet/file_serving/configuration.rb +3 -0
  37. data/lib/puppet/file_serving/fileset.rb +14 -2
  38. data/lib/puppet/file_serving/mount/file.rb +4 -4
  39. data/lib/puppet/file_serving/mount/scripts.rb +24 -0
  40. data/lib/puppet/file_system/file_impl.rb +3 -1
  41. data/lib/puppet/file_system/windows.rb +2 -2
  42. data/lib/puppet/forge.rb +4 -4
  43. data/lib/puppet/functions/all.rb +1 -1
  44. data/lib/puppet/functions/camelcase.rb +1 -1
  45. data/lib/puppet/functions/capitalize.rb +2 -2
  46. data/lib/puppet/functions/downcase.rb +2 -2
  47. data/lib/puppet/functions/empty.rb +8 -0
  48. data/lib/puppet/functions/find_template.rb +2 -2
  49. data/lib/puppet/functions/get.rb +5 -5
  50. data/lib/puppet/functions/group_by.rb +13 -5
  51. data/lib/puppet/functions/lest.rb +1 -1
  52. data/lib/puppet/functions/new.rb +100 -100
  53. data/lib/puppet/functions/partition.rb +4 -4
  54. data/lib/puppet/functions/require.rb +5 -5
  55. data/lib/puppet/functions/sort.rb +3 -3
  56. data/lib/puppet/functions/strftime.rb +1 -0
  57. data/lib/puppet/functions/tree_each.rb +7 -9
  58. data/lib/puppet/functions/type.rb +4 -4
  59. data/lib/puppet/functions/unwrap.rb +17 -2
  60. data/lib/puppet/functions/upcase.rb +2 -2
  61. data/lib/puppet/http/client.rb +1 -1
  62. data/lib/puppet/http/redirector.rb +5 -0
  63. data/lib/puppet/http/resolver/server_list.rb +15 -4
  64. data/lib/puppet/http/service/compiler.rb +75 -1
  65. data/lib/puppet/http/service/file_server.rb +2 -1
  66. data/lib/puppet/indirector/catalog/compiler.rb +25 -6
  67. data/lib/puppet/indirector/catalog/rest.rb +1 -0
  68. data/lib/puppet/indirector/facts/facter.rb +6 -6
  69. data/lib/puppet/indirector/file_metadata/rest.rb +1 -0
  70. data/lib/puppet/indirector/indirection.rb +1 -1
  71. data/lib/puppet/indirector/resource/ral.rb +6 -1
  72. data/lib/puppet/indirector/terminus.rb +4 -0
  73. data/lib/puppet/interface/documentation.rb +1 -0
  74. data/lib/puppet/module/plan.rb +0 -1
  75. data/lib/puppet/module/task.rb +1 -1
  76. data/lib/puppet/module.rb +1 -0
  77. data/lib/puppet/module_tool/applications/installer.rb +12 -4
  78. data/lib/puppet/module_tool/applications/uninstaller.rb +1 -1
  79. data/lib/puppet/module_tool/applications/upgrader.rb +1 -1
  80. data/lib/puppet/module_tool/errors/shared.rb +17 -0
  81. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  82. data/lib/puppet/node/environment.rb +10 -11
  83. data/lib/puppet/pal/pal_impl.rb +1 -1
  84. data/lib/puppet/parser/functions/fqdn_rand.rb +14 -6
  85. data/lib/puppet/parser/resource.rb +1 -1
  86. data/lib/puppet/parser/scope.rb +1 -0
  87. data/lib/puppet/parser/templatewrapper.rb +1 -0
  88. data/lib/puppet/pops/evaluator/closure.rb +7 -5
  89. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +1 -0
  90. data/lib/puppet/pops/lookup/lookup_adapter.rb +3 -2
  91. data/lib/puppet/pops/model/ast.rb +1 -0
  92. data/lib/puppet/pops/model/factory.rb +2 -1
  93. data/lib/puppet/pops/parser/eparser.rb +201 -201
  94. data/lib/puppet/pops/parser/lexer2.rb +92 -91
  95. data/lib/puppet/pops/parser/slurp_support.rb +1 -0
  96. data/lib/puppet/pops/serialization/to_data_converter.rb +18 -6
  97. data/lib/puppet/pops/serialization/to_stringified_converter.rb +1 -1
  98. data/lib/puppet/pops/types/p_sem_ver_type.rb +8 -2
  99. data/lib/puppet/pops/types/p_sensitive_type.rb +10 -0
  100. data/lib/puppet/pops/types/type_formatter.rb +4 -3
  101. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  102. data/lib/puppet/pops/types/types.rb +1 -1
  103. data/lib/puppet/provider/aix_object.rb +1 -1
  104. data/lib/puppet/provider/exec/posix.rb +16 -4
  105. data/lib/puppet/provider/group/groupadd.rb +5 -2
  106. data/lib/puppet/provider/package/nim.rb +11 -6
  107. data/lib/puppet/provider/package/pip.rb +15 -3
  108. data/lib/puppet/provider/package/pkg.rb +19 -2
  109. data/lib/puppet/provider/package/puppetserver_gem.rb +1 -1
  110. data/lib/puppet/provider/package/yum.rb +1 -1
  111. data/lib/puppet/provider/parsedfile.rb +3 -0
  112. data/lib/puppet/provider/service/base.rb +1 -1
  113. data/lib/puppet/provider/service/init.rb +5 -5
  114. data/lib/puppet/provider/service/launchd.rb +2 -2
  115. data/lib/puppet/provider/service/redhat.rb +1 -1
  116. data/lib/puppet/provider/service/smf.rb +3 -3
  117. data/lib/puppet/provider/service/systemd.rb +15 -5
  118. data/lib/puppet/provider/service/upstart.rb +5 -5
  119. data/lib/puppet/provider/service/windows.rb +38 -0
  120. data/lib/puppet/provider/user/aix.rb +44 -1
  121. data/lib/puppet/provider/user/directoryservice.rb +26 -13
  122. data/lib/puppet/provider/user/useradd.rb +72 -16
  123. data/lib/puppet/provider.rb +1 -1
  124. data/lib/puppet/reference/configuration.rb +1 -1
  125. data/lib/puppet/reference/providers.rb +2 -2
  126. data/lib/puppet/resource/catalog.rb +1 -1
  127. data/lib/puppet/resource/type_collection.rb +1 -0
  128. data/lib/puppet/resource.rb +38 -5
  129. data/lib/puppet/runtime.rb +11 -1
  130. data/lib/puppet/settings.rb +32 -9
  131. data/lib/puppet/test/test_helper.rb +4 -1
  132. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  133. data/lib/puppet/transaction/persistence.rb +11 -1
  134. data/lib/puppet/transaction/report.rb +15 -1
  135. data/lib/puppet/type/exec.rb +35 -5
  136. data/lib/puppet/type/file/mode.rb +6 -0
  137. data/lib/puppet/type/file/selcontext.rb +1 -1
  138. data/lib/puppet/type/file.rb +25 -7
  139. data/lib/puppet/type/filebucket.rb +3 -3
  140. data/lib/puppet/type/group.rb +0 -1
  141. data/lib/puppet/type/resources.rb +1 -1
  142. data/lib/puppet/type/service.rb +26 -41
  143. data/lib/puppet/type/tidy.rb +22 -3
  144. data/lib/puppet/type/user.rb +38 -21
  145. data/lib/puppet/type.rb +1 -1
  146. data/lib/puppet/util/command_line.rb +1 -1
  147. data/lib/puppet/util/filetype.rb +2 -2
  148. data/lib/puppet/util/json.rb +3 -0
  149. data/lib/puppet/util/log.rb +1 -2
  150. data/lib/puppet/util/logging.rb +1 -25
  151. data/lib/puppet/util/pidlock.rb +1 -1
  152. data/lib/puppet/util/rdoc/parser/puppet_parser_core.rb +1 -1
  153. data/lib/puppet/util/selinux.rb +30 -4
  154. data/lib/puppet/util/suidmanager.rb +1 -2
  155. data/lib/puppet/util/symbolic_file_mode.rb +29 -17
  156. data/lib/puppet/util/tagging.rb +1 -0
  157. data/lib/puppet/util/windows/service.rb +0 -5
  158. data/lib/puppet/util/windows/sid.rb +3 -1
  159. data/lib/puppet/util/windows/user.rb +0 -2
  160. data/lib/puppet/util/windows.rb +3 -0
  161. data/lib/puppet/util.rb +4 -3
  162. data/lib/puppet/version.rb +1 -1
  163. data/lib/puppet.rb +5 -9
  164. data/locales/puppet.pot +408 -364
  165. data/man/man5/puppet.conf.5 +303 -275
  166. data/man/man8/puppet-agent.8 +4 -1
  167. data/man/man8/puppet-apply.8 +1 -1
  168. data/man/man8/puppet-catalog.8 +9 -9
  169. data/man/man8/puppet-config.8 +1 -1
  170. data/man/man8/puppet-describe.8 +1 -1
  171. data/man/man8/puppet-device.8 +1 -1
  172. data/man/man8/puppet-doc.8 +1 -1
  173. data/man/man8/puppet-epp.8 +1 -1
  174. data/man/man8/puppet-facts.8 +8 -8
  175. data/man/man8/puppet-filebucket.8 +1 -1
  176. data/man/man8/puppet-generate.8 +1 -1
  177. data/man/man8/puppet-help.8 +1 -1
  178. data/man/man8/puppet-key.8 +7 -7
  179. data/man/man8/puppet-lookup.8 +1 -1
  180. data/man/man8/puppet-man.8 +1 -1
  181. data/man/man8/puppet-module.8 +3 -3
  182. data/man/man8/puppet-node.8 +5 -5
  183. data/man/man8/puppet-parser.8 +1 -1
  184. data/man/man8/puppet-plugin.8 +1 -1
  185. data/man/man8/puppet-report.8 +5 -5
  186. data/man/man8/puppet-resource.8 +1 -1
  187. data/man/man8/puppet-script.8 +1 -1
  188. data/man/man8/puppet-ssl.8 +1 -1
  189. data/man/man8/puppet-status.8 +4 -4
  190. data/man/man8/puppet.8 +2 -2
  191. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +2 -1
  192. data/spec/fixtures/integration/application/agent/lib/facter/agent_spec_role.rb +3 -0
  193. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Gemfile +4 -0
  194. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/Rakefile +3 -0
  195. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/lib/puppet/functions/l10n.rb +8 -0
  196. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/config.yaml +25 -0
  197. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/ja/puppet-l10n.po +19 -0
  198. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/locales/puppet-l10n.pot +20 -0
  199. data/spec/fixtures/integration/l10n/envs/prod/modules/demo/metadata.json +8 -0
  200. data/spec/fixtures/ssl/127.0.0.1-key.pem +107 -57
  201. data/spec/fixtures/ssl/127.0.0.1.pem +52 -31
  202. data/spec/fixtures/ssl/bad-basic-constraints.pem +57 -35
  203. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +57 -35
  204. data/spec/fixtures/ssl/ca.pem +57 -35
  205. data/spec/fixtures/ssl/crl.pem +28 -18
  206. data/spec/fixtures/ssl/ec-key.pem +11 -11
  207. data/spec/fixtures/ssl/ec.pem +33 -24
  208. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  209. data/spec/fixtures/ssl/encrypted-key.pem +108 -58
  210. data/spec/fixtures/ssl/intermediate-agent-crl.pem +28 -19
  211. data/spec/fixtures/ssl/intermediate-agent.pem +57 -36
  212. data/spec/fixtures/ssl/intermediate-crl.pem +31 -21
  213. data/spec/fixtures/ssl/intermediate.pem +57 -36
  214. data/spec/fixtures/ssl/oid-key.pem +117 -0
  215. data/spec/fixtures/ssl/oid.pem +69 -0
  216. data/spec/fixtures/ssl/pluto-key.pem +107 -57
  217. data/spec/fixtures/ssl/pluto.pem +52 -30
  218. data/spec/fixtures/ssl/request-key.pem +107 -57
  219. data/spec/fixtures/ssl/request.pem +47 -26
  220. data/spec/fixtures/ssl/revoked-key.pem +107 -57
  221. data/spec/fixtures/ssl/revoked.pem +52 -30
  222. data/spec/fixtures/ssl/signed-key.pem +107 -57
  223. data/spec/fixtures/ssl/signed.pem +52 -30
  224. data/spec/fixtures/ssl/tampered-cert.pem +52 -30
  225. data/spec/fixtures/ssl/tampered-csr.pem +47 -26
  226. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +5 -0
  227. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +107 -57
  228. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +50 -29
  229. data/spec/fixtures/ssl/unknown-ca-key.pem +107 -57
  230. data/spec/fixtures/ssl/unknown-ca.pem +55 -33
  231. data/spec/integration/application/agent_spec.rb +141 -37
  232. data/spec/integration/application/filebucket_spec.rb +16 -0
  233. data/spec/integration/application/module_spec.rb +21 -0
  234. data/spec/integration/application/resource_spec.rb +64 -0
  235. data/spec/integration/application/ssl_spec.rb +20 -0
  236. data/spec/integration/configurer_spec.rb +18 -2
  237. data/spec/integration/environments/settings_interpolation_spec.rb +0 -4
  238. data/spec/integration/indirector/facts/facter_spec.rb +93 -39
  239. data/spec/integration/l10n/compiler_spec.rb +37 -0
  240. data/spec/integration/parser/pcore_resource_spec.rb +10 -0
  241. data/spec/integration/transaction/report_spec.rb +1 -1
  242. data/spec/integration/type/exec_spec.rb +70 -45
  243. data/spec/integration/type/file_spec.rb +2 -2
  244. data/spec/integration/type/package_spec.rb +6 -6
  245. data/spec/integration/util/rdoc/parser_spec.rb +1 -1
  246. data/spec/integration/util/windows/process_spec.rb +1 -9
  247. data/spec/lib/puppet/test_ca.rb +7 -2
  248. data/spec/lib/puppet_spec/modules.rb +13 -2
  249. data/spec/lib/puppet_spec/puppetserver.rb +15 -0
  250. data/spec/lib/puppet_spec/settings.rb +1 -0
  251. data/spec/shared_behaviours/documentation_on_faces.rb +0 -2
  252. data/spec/shared_contexts/l10n.rb +27 -0
  253. data/spec/spec_helper.rb +1 -10
  254. data/spec/unit/application/agent_spec.rb +7 -2
  255. data/spec/unit/application/apply_spec.rb +76 -56
  256. data/spec/unit/application/resource_spec.rb +29 -0
  257. data/spec/unit/configurer/downloader_spec.rb +6 -0
  258. data/spec/unit/configurer_spec.rb +256 -57
  259. data/spec/unit/defaults_spec.rb +1 -0
  260. data/spec/unit/environments_spec.rb +184 -0
  261. data/spec/unit/facter_impl_spec.rb +31 -0
  262. data/spec/unit/file_bucket/dipper_spec.rb +2 -2
  263. data/spec/unit/file_serving/configuration/parser_spec.rb +23 -0
  264. data/spec/unit/file_serving/configuration_spec.rb +14 -4
  265. data/spec/unit/file_serving/fileset_spec.rb +60 -0
  266. data/spec/unit/file_serving/mount/scripts_spec.rb +69 -0
  267. data/spec/unit/file_system_spec.rb +13 -0
  268. data/spec/unit/functions/assert_type_spec.rb +1 -1
  269. data/spec/unit/functions/empty_spec.rb +10 -0
  270. data/spec/unit/functions/logging_spec.rb +1 -0
  271. data/spec/unit/functions/lookup_spec.rb +64 -0
  272. data/spec/unit/functions/unwrap_spec.rb +8 -0
  273. data/spec/unit/functions4_spec.rb +2 -2
  274. data/spec/unit/gettext/config_spec.rb +12 -0
  275. data/spec/unit/http/client_spec.rb +58 -1
  276. data/spec/unit/http/service/compiler_spec.rb +131 -0
  277. data/spec/unit/indirector/catalog/compiler_spec.rb +101 -10
  278. data/spec/unit/indirector/catalog/rest_spec.rb +8 -0
  279. data/spec/unit/indirector/indirection_spec.rb +10 -3
  280. data/spec/unit/indirector/resource/ral_spec.rb +40 -75
  281. data/spec/unit/interface/action_spec.rb +0 -9
  282. data/spec/unit/module_spec.rb +15 -1
  283. data/spec/unit/module_tool/applications/installer_spec.rb +51 -12
  284. data/spec/unit/network/authstore_spec.rb +0 -15
  285. data/spec/unit/network/formats_spec.rb +6 -0
  286. data/spec/unit/parser/functions/fqdn_rand_spec.rb +15 -1
  287. data/spec/unit/parser/templatewrapper_spec.rb +12 -2
  288. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -11
  289. data/spec/unit/pops/serialization/to_from_hr_spec.rb +58 -0
  290. data/spec/unit/pops/serialization/to_stringified_spec.rb +5 -0
  291. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +18 -0
  292. data/spec/unit/pops/types/p_sensitive_type_spec.rb +18 -0
  293. data/spec/unit/pops/types/type_calculator_spec.rb +6 -0
  294. data/spec/unit/provider/package/gem_spec.rb +1 -1
  295. data/spec/unit/provider/package/nim_spec.rb +42 -0
  296. data/spec/unit/provider/package/pip2_spec.rb +1 -1
  297. data/spec/unit/provider/package/pip3_spec.rb +1 -1
  298. data/spec/unit/provider/package/pip_spec.rb +38 -1
  299. data/spec/unit/provider/package/pkg_spec.rb +29 -4
  300. data/spec/unit/provider/package/puppet_gem_spec.rb +1 -1
  301. data/spec/unit/provider/package/puppetserver_gem_spec.rb +1 -1
  302. data/spec/unit/provider/parsedfile_spec.rb +10 -0
  303. data/spec/unit/provider/service/init_spec.rb +1 -0
  304. data/spec/unit/provider/service/launchd_spec.rb +11 -0
  305. data/spec/unit/provider/service/openwrt_spec.rb +3 -1
  306. data/spec/unit/provider/service/systemd_spec.rb +43 -9
  307. data/spec/unit/provider/service/windows_spec.rb +202 -0
  308. data/spec/unit/provider/user/aix_spec.rb +100 -0
  309. data/spec/unit/provider/user/directoryservice_spec.rb +68 -36
  310. data/spec/unit/provider/user/useradd_spec.rb +43 -2
  311. data/spec/unit/provider_spec.rb +4 -4
  312. data/spec/unit/puppet_spec.rb +12 -4
  313. data/spec/unit/resource/catalog_spec.rb +14 -1
  314. data/spec/unit/resource_spec.rb +58 -2
  315. data/spec/unit/settings_spec.rb +97 -56
  316. data/spec/unit/ssl/certificate_request_spec.rb +8 -14
  317. data/spec/unit/ssl/state_machine_spec.rb +19 -5
  318. data/spec/unit/transaction/additional_resource_generator_spec.rb +0 -2
  319. data/spec/unit/transaction_spec.rb +18 -20
  320. data/spec/unit/type/exec_spec.rb +76 -29
  321. data/spec/unit/type/file/selinux_spec.rb +3 -3
  322. data/spec/unit/type/file/source_spec.rb +4 -4
  323. data/spec/unit/type/service_spec.rb +86 -188
  324. data/spec/unit/type/tidy_spec.rb +24 -7
  325. data/spec/unit/type/user_spec.rb +45 -0
  326. data/spec/unit/type_spec.rb +2 -2
  327. data/spec/unit/util/logging_spec.rb +2 -0
  328. data/spec/unit/util/selinux_spec.rb +87 -16
  329. data/spec/unit/util/windows/sid_spec.rb +39 -4
  330. data/tasks/generate_cert_fixtures.rake +12 -3
  331. data/tasks/parallel.rake +3 -3
  332. metadata +49 -95
  333. data/ext/README.environment +0 -8
  334. data/ext/dbfix.sql +0 -132
  335. data/ext/debian/README.Debian +0 -8
  336. data/ext/debian/README.source +0 -2
  337. data/ext/debian/TODO.Debian +0 -1
  338. data/ext/debian/changelog.erb +0 -1122
  339. data/ext/debian/compat +0 -1
  340. data/ext/debian/control +0 -144
  341. data/ext/debian/copyright +0 -339
  342. data/ext/debian/docs +0 -1
  343. data/ext/debian/fileserver.conf +0 -41
  344. data/ext/debian/puppet-common.dirs +0 -13
  345. data/ext/debian/puppet-common.install +0 -3
  346. data/ext/debian/puppet-common.lintian-overrides +0 -5
  347. data/ext/debian/puppet-common.manpages +0 -28
  348. data/ext/debian/puppet-common.postinst +0 -35
  349. data/ext/debian/puppet-common.postrm +0 -33
  350. data/ext/debian/puppet-el.dirs +0 -1
  351. data/ext/debian/puppet-el.emacsen-install +0 -25
  352. data/ext/debian/puppet-el.emacsen-remove +0 -11
  353. data/ext/debian/puppet-el.emacsen-startup +0 -9
  354. data/ext/debian/puppet-el.install +0 -1
  355. data/ext/debian/puppet-testsuite.install +0 -2
  356. data/ext/debian/puppet-testsuite.lintian-overrides +0 -4
  357. data/ext/debian/puppet.lintian-overrides +0 -3
  358. data/ext/debian/puppet.logrotate +0 -20
  359. data/ext/debian/puppet.postinst +0 -20
  360. data/ext/debian/puppet.postrm +0 -20
  361. data/ext/debian/puppet.preinst +0 -20
  362. data/ext/debian/puppetmaster-common.install +0 -2
  363. data/ext/debian/puppetmaster-common.manpages +0 -2
  364. data/ext/debian/puppetmaster-common.postinst +0 -6
  365. data/ext/debian/puppetmaster-passenger.dirs +0 -4
  366. data/ext/debian/puppetmaster-passenger.postinst +0 -162
  367. data/ext/debian/puppetmaster-passenger.postrm +0 -61
  368. data/ext/debian/puppetmaster.README.debian +0 -17
  369. data/ext/debian/puppetmaster.default +0 -14
  370. data/ext/debian/puppetmaster.init +0 -137
  371. data/ext/debian/puppetmaster.lintian-overrides +0 -3
  372. data/ext/debian/puppetmaster.postinst +0 -20
  373. data/ext/debian/puppetmaster.postrm +0 -5
  374. data/ext/debian/puppetmaster.preinst +0 -22
  375. data/ext/debian/rules +0 -132
  376. data/ext/debian/source/format +0 -1
  377. data/ext/debian/source/options +0 -1
  378. data/ext/debian/vim-puppet.README.Debian +0 -13
  379. data/ext/debian/vim-puppet.dirs +0 -5
  380. data/ext/debian/vim-puppet.yaml +0 -7
  381. data/ext/debian/watch +0 -2
  382. data/ext/freebsd/puppetd +0 -26
  383. data/ext/freebsd/puppetmasterd +0 -26
  384. data/ext/gentoo/conf.d/puppet +0 -5
  385. data/ext/gentoo/conf.d/puppetmaster +0 -12
  386. data/ext/gentoo/init.d/puppet +0 -38
  387. data/ext/gentoo/init.d/puppetmaster +0 -51
  388. data/ext/gentoo/puppet/fileserver.conf +0 -41
  389. data/ext/ips/puppet-agent +0 -44
  390. data/ext/ips/puppet-master +0 -44
  391. data/ext/ips/puppet.p5m.erb +0 -12
  392. data/ext/ips/puppetagent.xml +0 -42
  393. data/ext/ips/puppetmaster.xml +0 -42
  394. data/ext/ips/rules +0 -19
  395. data/ext/ips/transforms +0 -34
  396. data/ext/ldap/puppet.schema +0 -24
  397. data/ext/logcheck/puppet +0 -23
  398. data/ext/osx/file_mapping.yaml +0 -33
  399. data/ext/osx/postflight.erb +0 -109
  400. data/ext/osx/preflight.erb +0 -52
  401. data/ext/osx/prototype.plist.erb +0 -38
  402. data/ext/redhat/fileserver.conf +0 -41
  403. data/ext/redhat/logrotate +0 -21
  404. data/ext/redhat/puppet.spec.erb +0 -842
  405. data/ext/redhat/server.init +0 -128
  406. data/ext/redhat/server.sysconfig +0 -13
  407. data/ext/solaris/pkginfo +0 -6
  408. data/ext/solaris/smf/puppetd.xml +0 -77
  409. data/ext/solaris/smf/puppetmasterd.xml +0 -77
  410. data/ext/solaris/smf/svc-puppetd +0 -71
  411. data/ext/solaris/smf/svc-puppetmasterd +0 -67
  412. data/ext/suse/puppet.spec +0 -310
  413. data/ext/suse/server.init +0 -173
  414. data/ext/yaml_nodes.rb +0 -105
  415. data/spec/unit/indirector/store_configs_spec.rb +0 -7
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Puppet::FacterImpl' do
4
+ subject(:facter_impl) { Puppet::FacterImpl.new }
5
+
6
+ it { is_expected.to respond_to(:value) }
7
+ it { is_expected.to respond_to(:add) }
8
+
9
+ describe '.value' do
10
+ let(:method_name) { :value }
11
+
12
+ before { allow(Facter).to receive(method_name) }
13
+
14
+ it 'delegates to Facter API' do
15
+ facter_impl.value('test_fact')
16
+ expect(Facter).to have_received(method_name).with('test_fact')
17
+ end
18
+ end
19
+
20
+ describe '.add' do
21
+ let(:block) { Proc.new { setcode 'test' } }
22
+ let(:method_name) { :add }
23
+
24
+ before { allow(Facter).to receive(method_name) }
25
+
26
+ it 'delegates to Facter API' do
27
+ facter_impl.add('test_fact', &block)
28
+ expect(Facter).to have_received(method_name).with('test_fact', &block)
29
+ end
30
+ end
31
+ end
@@ -104,8 +104,8 @@ describe Puppet::FileBucket::Dipper, :uses_checksums => true do
104
104
  # Diff without the context
105
105
  # Lines we need to see match 'Content' instead of trimming diff output filter out
106
106
  # surrounding noise...or hard code the check values
107
- if Facter.value(:osfamily) == 'Solaris' &&
108
- Puppet::Util::Package.versioncmp(Facter.value(:operatingsystemrelease), '11.0') >= 0
107
+ if Puppet.runtime[:facter].value(:osfamily) == 'Solaris' &&
108
+ Puppet::Util::Package.versioncmp(Puppet.runtime[:facter].value(:operatingsystemrelease), '11.0') >= 0
109
109
  # Use gdiff on Solaris
110
110
  diff12 = Puppet::Util::Execution.execute("gdiff -uN #{file1} #{file2}| grep Content")
111
111
  diff21 = Puppet::Util::Execution.execute("gdiff -uN #{file2} #{file1}| grep Content")
@@ -155,6 +155,29 @@ describe Puppet::FileServing::Configuration::Parser do
155
155
  end
156
156
  end
157
157
 
158
+ describe Puppet::FileServing::Configuration::Parser, " when parsing the scripts mount" do
159
+ include FSConfigurationParserTesting
160
+
161
+ before do
162
+ @mount = double('scriptsmount', :name => "scripts", :validate => true)
163
+ end
164
+
165
+ it "should create an instance of the Scripts Mount class" do
166
+ write_config_file "[scripts]\n"
167
+
168
+ expect(Puppet::FileServing::Mount::Scripts).to receive(:new).with("scripts").and_return(@mount)
169
+ @parser.parse
170
+ end
171
+
172
+ it "should warn if a path is set" do
173
+ write_config_file "[scripts]\npath /some/path\n"
174
+ expect(Puppet::FileServing::Mount::Scripts).to receive(:new).with("scripts").and_return(@mount)
175
+
176
+ expect(Puppet).to receive(:warning)
177
+ @parser.parse
178
+ end
179
+ end
180
+
158
181
  describe Puppet::FileServing::Configuration::Parser, " when parsing the plugins mount" do
159
182
  include FSConfigurationParserTesting
160
183
 
@@ -80,15 +80,16 @@ describe Puppet::FileServing::Configuration do
80
80
  expect(config.mounted?("one")).to be_truthy
81
81
  end
82
82
 
83
- it "should add modules, plugins, and tasks mounts even if the file does not exist" do
83
+ it "should add modules, plugins, scripts, and tasks mounts even if the file does not exist" do
84
84
  expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
85
85
  config = Puppet::FileServing::Configuration.configuration
86
86
  expect(config.mounted?("modules")).to be_truthy
87
87
  expect(config.mounted?("plugins")).to be_truthy
88
+ expect(config.mounted?("scripts")).to be_truthy
88
89
  expect(config.mounted?("tasks")).to be_truthy
89
90
  end
90
91
 
91
- it "should allow all access to modules, plugins, and tasks if no fileserver.conf exists" do
92
+ it "should allow all access to modules, plugins, scripts, and tasks if no fileserver.conf exists" do
92
93
  expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
93
94
  modules = double('modules', :empty? => true)
94
95
  allow(Puppet::FileServing::Mount::Modules).to receive(:new).and_return(modules)
@@ -98,6 +99,10 @@ describe Puppet::FileServing::Configuration do
98
99
  allow(Puppet::FileServing::Mount::Plugins).to receive(:new).and_return(plugins)
99
100
  expect(plugins).to receive(:allow).with('*')
100
101
 
102
+ scripts = double('scripts', :empty? => true)
103
+ allow(Puppet::FileServing::Mount::Scripts).to receive(:new).and_return(scripts)
104
+ expect(scripts).to receive(:allow).with('*')
105
+
101
106
  tasks = double('tasks', :empty? => true)
102
107
  allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
103
108
  expect(tasks).to receive(:allow).with('*')
@@ -105,7 +110,7 @@ describe Puppet::FileServing::Configuration do
105
110
  Puppet::FileServing::Configuration.configuration
106
111
  end
107
112
 
108
- it "should not allow access from all to modules, plugins, and tasks if the fileserver.conf provided some rules" do
113
+ it "should not allow access from all to modules, plugins, scripts, and tasks if the fileserver.conf provided some rules" do
109
114
  expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
110
115
 
111
116
  modules = double('modules', :empty? => false)
@@ -116,6 +121,10 @@ describe Puppet::FileServing::Configuration do
116
121
  allow(Puppet::FileServing::Mount::Plugins).to receive(:new).and_return(plugins)
117
122
  expect(plugins).not_to receive(:allow).with('*')
118
123
 
124
+ scripts = double('scripts', :empty? => false)
125
+ allow(Puppet::FileServing::Mount::Scripts).to receive(:new).and_return(scripts)
126
+ expect(scripts).not_to receive(:allow).with('*')
127
+
119
128
  tasks = double('tasks', :empty? => false)
120
129
  allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
121
130
  expect(tasks).not_to receive(:allow).with('*')
@@ -123,12 +132,13 @@ describe Puppet::FileServing::Configuration do
123
132
  Puppet::FileServing::Configuration.configuration
124
133
  end
125
134
 
126
- it "should add modules, plugins, and tasks mounts even if they are not returned by the parser" do
135
+ it "should add modules, plugins, scripts, and tasks mounts even if they are not returned by the parser" do
127
136
  expect(@parser).to receive(:parse).and_return("one" => double("mount"))
128
137
  expect(Puppet::FileSystem).to receive(:exist?).and_return(true) # the file doesn't exist
129
138
  config = Puppet::FileServing::Configuration.configuration
130
139
  expect(config.mounted?("modules")).to be_truthy
131
140
  expect(config.mounted?("plugins")).to be_truthy
141
+ expect(config.mounted?("scripts")).to be_truthy
132
142
  expect(config.mounted?("tasks")).to be_truthy
133
143
  end
134
144
  end
@@ -46,6 +46,13 @@ describe Puppet::FileServing::Fileset do
46
46
  expect(set.recurselimit).to eq(3)
47
47
  end
48
48
 
49
+ it "accepts a 'max_files' option" do
50
+ expect(Puppet::FileSystem).to receive(:lstat).with(somefile).and_return(double('stat'))
51
+ set = Puppet::FileServing::Fileset.new(somefile, :recurselimit => 3, :max_files => 100)
52
+ expect(set.recurselimit).to eq(3)
53
+ expect(set.max_files).to eq(100)
54
+ end
55
+
49
56
  it "accepts an 'ignore' option" do
50
57
  expect(Puppet::FileSystem).to receive(:lstat).with(somefile).and_return(double('stat'))
51
58
  set = Puppet::FileServing::Fileset.new(somefile, :ignore => ".svn")
@@ -160,6 +167,29 @@ describe Puppet::FileServing::Fileset do
160
167
  end
161
168
  end
162
169
 
170
+ def mock_big_dir_structure(path, stat_method = :lstat)
171
+ allow(Puppet::FileSystem).to receive(stat_method).with(path).and_return(@dirstat)
172
+
173
+ # Keep track of the files we're stubbing.
174
+ @files = %w{.}
175
+
176
+ top_names = (1..10).map {|i| "dir_#{i}" }
177
+ sub_names = (1..100).map {|i| "file__#{i}" }
178
+
179
+ allow(Dir).to receive(:entries).with(path, encoding: Encoding::UTF_8).and_return(top_names)
180
+ top_names.each do |subdir|
181
+ @files << subdir # relative path
182
+ subpath = File.join(path, subdir)
183
+ allow(Puppet::FileSystem).to receive(stat_method).with(subpath).and_return(@dirstat)
184
+ allow(Dir).to receive(:entries).with(subpath, encoding: Encoding::UTF_8).and_return(sub_names)
185
+ sub_names.each do |file|
186
+ @files << File.join(subdir, file) # relative path
187
+ subfile_path = File.join(subpath, file)
188
+ allow(Puppet::FileSystem).to receive(stat_method).with(subfile_path).and_return(@filestat)
189
+ end
190
+ end
191
+ end
192
+
163
193
  def setup_mocks_for_dir(mock_dir, base_path)
164
194
  path = File.join(base_path, mock_dir.name)
165
195
  allow(Puppet::FileSystem).to receive(:lstat).with(path).and_return(MockStat.new(path, true))
@@ -258,6 +288,36 @@ describe Puppet::FileServing::Fileset do
258
288
  expect(@fileset.files.find { |file| file.include?("0") }).to be_nil
259
289
  end
260
290
 
291
+ it "raises exception if number of files is greater than :max_files" do
292
+ mock_dir_structure(@path)
293
+ @fileset.recurse = true
294
+ @fileset.max_files = 22
295
+ expect { @fileset.files }.to raise_error(Puppet::Error, "The directory '#{@path}' contains 28 entries, which exceeds the limit of 22 specified by the max_files parameter for this resource. The limit may be increased, but be aware that large number of file resources can result in excessive resource consumption and degraded performance. Consider using an alternate method to manage large directory trees")
296
+ end
297
+
298
+ it "logs a warning if number of files is greater than soft max_files limit of 1000" do
299
+ mock_big_dir_structure(@path)
300
+ @fileset.recurse = true
301
+ expect(Puppet).to receive(:warning).with("The directory '#{@path}' contains 1010 entries, which exceeds the default soft limit 1000 and may cause excessive resource consumption and degraded performance. To remove this warning set a value for `max_files` parameter or consider using an alternate method to manage large directory trees")
302
+ expect { @fileset.files }.to_not raise_error
303
+ end
304
+
305
+ it "does not emit a warning if max_files is -1" do
306
+ mock_big_dir_structure(@path)
307
+ @fileset.recurse = true
308
+ @fileset.max_files = -1
309
+ expect(Puppet).to receive(:warning).never
310
+ @fileset.files
311
+ end
312
+
313
+ it "does not emit a warning if max_files is `-1`(string)" do
314
+ mock_big_dir_structure(@path)
315
+ @fileset.recurse = true
316
+ @fileset.max_files = '-1'
317
+ expect(Puppet).to receive(:warning).never
318
+ @fileset.files
319
+ end
320
+
261
321
  it "ignores files that match a pattern given as a boolean" do
262
322
  mock_dir_structure(@path)
263
323
  @fileset.recurse = true
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+ require 'puppet/file_serving/mount/scripts'
3
+
4
+ describe Puppet::FileServing::Mount::Scripts do
5
+ before do
6
+ @mount = Puppet::FileServing::Mount::Scripts.new("scripts")
7
+
8
+ @environment = double('environment', :module => nil)
9
+ @request = double('request', :environment => @environment)
10
+ end
11
+
12
+ describe "when finding files" do
13
+ it "should fail if no module is specified" do
14
+ expect { @mount.find("", @request) }.to raise_error(/No module specified/)
15
+ end
16
+
17
+ it "should use the provided environment to find the module" do
18
+ expect(@environment).to receive(:module)
19
+
20
+ @mount.find("foo", @request)
21
+ end
22
+
23
+ it "should treat the first field of the relative path as the module name" do
24
+ expect(@environment).to receive(:module).with("foo")
25
+ @mount.find("foo/bar/baz", @request)
26
+ end
27
+
28
+ it "should return nil if the specified module does not exist" do
29
+ expect(@environment).to receive(:module).with("foo")
30
+ @mount.find("foo/bar/baz", @request)
31
+ end
32
+
33
+ it "should return the file path from the module" do
34
+ mod = double('module')
35
+ expect(mod).to receive(:script).with("bar/baz").and_return("eh")
36
+ expect(@environment).to receive(:module).with("foo").and_return(mod)
37
+ expect(@mount.find("foo/bar/baz", @request)).to eq("eh")
38
+ end
39
+ end
40
+
41
+ describe "when searching for files" do
42
+ it "should fail if no module is specified" do
43
+ expect { @mount.search("", @request) }.to raise_error(/No module specified/)
44
+ end
45
+
46
+ it "should use the node's environment to search the module" do
47
+ expect(@environment).to receive(:module)
48
+
49
+ @mount.search("foo", @request)
50
+ end
51
+
52
+ it "should treat the first field of the relative path as the module name" do
53
+ expect(@environment).to receive(:module).with("foo")
54
+ @mount.search("foo/bar/baz", @request)
55
+ end
56
+
57
+ it "should return nil if the specified module does not exist" do
58
+ expect(@environment).to receive(:module).with("foo").and_return(nil)
59
+ @mount.search("foo/bar/baz", @request)
60
+ end
61
+
62
+ it "should return the script path as an array from the module" do
63
+ mod = double('module')
64
+ expect(mod).to receive(:script).with("bar/baz").and_return("eh")
65
+ expect(@environment).to receive(:module).with("foo").and_return(mod)
66
+ expect(@mount.search("foo/bar/baz", @request)).to eq(["eh"])
67
+ end
68
+ end
69
+ end
@@ -290,6 +290,19 @@ describe "Puppet::FileSystem" do
290
290
  expect(Puppet::FileSystem.read_preserve_line_endings(file)).to eq("file content \r\nsecond line \n")
291
291
  end
292
292
  end
293
+
294
+ it "should ignore leading BOM" do
295
+ with_file_content("\uFEFFfile content \n") do |file|
296
+ expect(Puppet::FileSystem.read_preserve_line_endings(file)).to eq("file content \n")
297
+ end
298
+ end
299
+
300
+ it "should not warn about misusage of BOM with non-UTF encoding" do
301
+ allow(Encoding).to receive(:default_external).and_return(Encoding::US_ASCII)
302
+ with_file_content("file content \n") do |file|
303
+ expect{ Puppet::FileSystem.read_preserve_line_endings(file) }.not_to output(/BOM with non-UTF encoding US-ASCII is nonsense/).to_stderr
304
+ end
305
+ end
293
306
  end
294
307
 
295
308
  context "read without an encoding specified" do
@@ -28,7 +28,7 @@ describe 'the assert_type function' do
28
28
  it 'checks that first argument is a type' do
29
29
  expect do
30
30
  func.call({}, 10, 10)
31
- end.to raise_error(ArgumentError, "'assert_type' expects one of:
31
+ end.to raise_error(ArgumentError, "The function 'assert_type' was called with arguments it does not accept. It expects one of:
32
32
  (Type type, Any value, Callable[Type, Type] block?)
33
33
  rejected: parameter 'type' expects a Type value, got Integer
34
34
  (String type_string, Any value, Callable[Type, Type] block?)
@@ -56,6 +56,16 @@ describe 'the empty function' do
56
56
  end
57
57
  end
58
58
 
59
+ context 'for a sensitive string it' do
60
+ it 'returns true when empty' do
61
+ expect(compile_to_catalog("notify { String(empty(Sensitive(''))): }")).to have_resource('Notify[true]')
62
+ end
63
+
64
+ it 'returns false when not empty' do
65
+ expect(compile_to_catalog("notify { String(empty(Sensitive(' '))): }")).to have_resource('Notify[false]')
66
+ end
67
+ end
68
+
59
69
  context 'for a binary it' do
60
70
  it 'returns true when empty' do
61
71
  expect(compile_to_catalog("notify { String(empty(Binary(''))): }")).to have_resource('Notify[true]')
@@ -6,6 +6,7 @@ describe 'the log function' do
6
6
 
7
7
  def collect_logs(code)
8
8
  Puppet[:code] = code
9
+ Puppet[:environment_timeout] = 10
9
10
  node = Puppet::Node.new('logtest')
10
11
  compiler = Puppet::Parser::Compiler.new(node)
11
12
  node.environment.check_for_reparse
@@ -870,6 +870,46 @@ describe "The lookup function" do
870
870
  end
871
871
  end
872
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
+
873
913
  context 'with lookup_options configured using patterns' do
874
914
  let(:mod_common) {
875
915
  <<-YAML.unindent
@@ -1019,6 +1059,30 @@ describe "The lookup function" do
1019
1059
  })
1020
1060
  end
1021
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
+
1022
1086
  context 'and patterns in module are not limited to module keys' do
1023
1087
  let(:mod_common) {
1024
1088
  <<-YAML.unindent
@@ -15,6 +15,14 @@ describe 'the unwrap function' do
15
15
  expect(eval_and_collect_notices(code)).to eq(['unwrapped value is 12345'])
16
16
  end
17
17
 
18
+ it 'just returns a non-sensitive value' do
19
+ code = <<-CODE
20
+ $non_sensitive = "12345"
21
+ notice("value is still ${non_sensitive.unwrap}")
22
+ CODE
23
+ expect(eval_and_collect_notices(code)).to eq(['value is still 12345'])
24
+ end
25
+
18
26
  it 'unwraps a sensitive value when given a code block' do
19
27
  code = <<-CODE
20
28
  $sensitive = Sensitive.new("12345")
@@ -160,7 +160,7 @@ describe 'the 4x function api' do
160
160
  expect(func.is_a?(Puppet::Functions::Function)).to be_truthy
161
161
  expect do
162
162
  func.call({}, 3, 10, 3, "4")
163
- end.to raise_error(ArgumentError, "'min' expects one of:
163
+ end.to raise_error(ArgumentError, "The function 'min' was called with arguments it does not accept. It expects one of:
164
164
  (Numeric x, Numeric y, Numeric a?, Numeric b?, Numeric c*)
165
165
  rejected: parameter 'b' expects a Numeric value, got String
166
166
  (String x, String y, String a+)
@@ -231,7 +231,7 @@ describe 'the 4x function api' do
231
231
  expect(func.is_a?(Puppet::Functions::Function)).to be_truthy
232
232
  expect do
233
233
  func.call({}, 10, '20')
234
- end.to raise_error(ArgumentError, "'min' expects one of:
234
+ end.to raise_error(ArgumentError, "The function 'min' was called with arguments it does not accept. It expects one of:
235
235
  (Numeric a, Numeric b)
236
236
  rejected: parameter 'b' expects a Numeric value, got String
237
237
  (String s1, String s2)
@@ -27,6 +27,18 @@ describe Puppet::GettextConfig do
27
27
  Puppet::GettextConfig.delete_all_text_domains
28
28
  end
29
29
 
30
+ # These tests assume gettext is enabled, but it will be disabled when the
31
+ # first time the `Puppet[:disable_i18n]` setting is resolved
32
+ around(:each) do |example|
33
+ disabled = Puppet::GettextConfig.instance_variable_get(:@gettext_disabled)
34
+ Puppet::GettextConfig.instance_variable_set(:@gettext_disabled, false)
35
+ begin
36
+ example.run
37
+ ensure
38
+ Puppet::GettextConfig.instance_variable_set(:@gettext_disabled, disabled)
39
+ end
40
+ end
41
+
30
42
  describe 'setting and getting the locale' do
31
43
  it 'should return "en" when gettext is unavailable' do
32
44
  allow(Puppet::GettextConfig).to receive(:gettext_loaded?).and_return(false)
@@ -597,11 +597,68 @@ describe Puppet::HTTP::Client do
597
597
  expect(response).to be_success
598
598
  end
599
599
 
600
- it "preserves basic authorization" do
600
+ it "does not preserve basic authorization when redirecting to different hosts" do
601
+ stub_request(:get, start_url).with(basic_auth: credentials).to_return(redirect_to(url: other_host))
602
+ stub_request(:get, other_host).to_return(status: 200)
603
+
604
+ client.get(start_url, options: {basic_auth: {user: 'user', password: 'pass'}})
605
+ expect(a_request(:get, other_host).
606
+ with{ |req| !req.headers.key?('Authorization')}).to have_been_made
607
+ end
608
+
609
+ it "does preserve basic authorization when redirecting to the same hosts" do
610
+ stub_request(:get, start_url).with(basic_auth: credentials).to_return(redirect_to(url: bar_url))
611
+ stub_request(:get, bar_url).with(basic_auth: credentials).to_return(status: 200)
612
+
613
+ client.get(start_url, options: {basic_auth: {user: 'user', password: 'pass'}})
614
+ expect(a_request(:get, bar_url).
615
+ with{ |req| req.headers.key?('Authorization')}).to have_been_made
616
+ end
617
+
618
+ it "does not preserve cookie header when redirecting to different hosts" do
619
+ headers = { 'Cookie' => 'TEST_COOKIE'}
620
+
621
+ stub_request(:get, start_url).with(headers: headers).to_return(redirect_to(url: other_host))
622
+ stub_request(:get, other_host).to_return(status: 200)
623
+
624
+ client.get(start_url, headers: headers)
625
+ expect(a_request(:get, other_host).
626
+ with{ |req| !req.headers.key?('Cookie')}).to have_been_made
627
+ end
628
+
629
+ it "does preserve cookie header when redirecting to the same hosts" do
630
+ headers = { 'Cookie' => 'TEST_COOKIE'}
631
+
632
+ stub_request(:get, start_url).with(headers: headers).to_return(redirect_to(url: bar_url))
633
+ stub_request(:get, bar_url).with(headers: headers).to_return(status: 200)
634
+
635
+ client.get(start_url, headers: headers)
636
+ expect(a_request(:get, bar_url).
637
+ with{ |req| req.headers.key?('Cookie')}).to have_been_made
638
+ end
639
+
640
+ it "does preserves cookie header and basic authentication when Puppet[:location_trusted] is true redirecting to different hosts" do
641
+ headers = { 'cookie' => 'TEST_COOKIE'}
642
+ Puppet[:location_trusted] = true
643
+
644
+ stub_request(:get, start_url).with(headers: headers, basic_auth: credentials).to_return(redirect_to(url: other_host))
645
+ stub_request(:get, other_host).with(headers: headers, basic_auth: credentials).to_return(status: 200)
646
+
647
+ client.get(start_url, headers: headers, options: {basic_auth: {user: 'user', password: 'pass'}})
648
+ expect(a_request(:get, other_host).
649
+ with{ |req| req.headers.key?('Authorization') && req.headers.key?('Cookie')}).to have_been_made
650
+ end
651
+
652
+ it "treats hosts as case-insensitive" do
653
+ start_url = URI("https://www.EXAmple.com:8140/Start")
654
+ bar_url = "https://www.example.com:8140/bar"
655
+
601
656
  stub_request(:get, start_url).with(basic_auth: credentials).to_return(redirect_to(url: bar_url))
602
657
  stub_request(:get, bar_url).with(basic_auth: credentials).to_return(status: 200)
603
658
 
604
659
  client.get(start_url, options: {basic_auth: {user: 'user', password: 'pass'}})
660
+ expect(a_request(:get, bar_url).
661
+ with{ |req| req.headers.key?('Authorization')}).to have_been_made
605
662
  end
606
663
 
607
664
  it "redirects given a relative location" do