puppet 6.13.0 → 6.18.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (461) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -7
  3. data/CONTRIBUTING.md +7 -13
  4. data/Gemfile +4 -2
  5. data/Gemfile.lock +36 -32
  6. data/README.md +17 -24
  7. data/ext/windows/service/daemon.rb +3 -3
  8. data/lib/puppet.rb +33 -9
  9. data/lib/puppet/agent.rb +20 -14
  10. data/lib/puppet/application/agent.rb +26 -17
  11. data/lib/puppet/application/apply.rb +18 -20
  12. data/lib/puppet/application/describe.rb +7 -5
  13. data/lib/puppet/application/device.rb +2 -2
  14. data/lib/puppet/application/filebucket.rb +19 -15
  15. data/lib/puppet/application/lookup.rb +16 -4
  16. data/lib/puppet/application/plugin.rb +1 -0
  17. data/lib/puppet/application/ssl.rb +4 -4
  18. data/lib/puppet/configurer.rb +58 -57
  19. data/lib/puppet/configurer/downloader.rb +31 -10
  20. data/lib/puppet/configurer/plugin_handler.rb +10 -1
  21. data/lib/puppet/confine.rb +2 -2
  22. data/lib/puppet/confine/any.rb +1 -1
  23. data/lib/puppet/context/trusted_information.rb +14 -8
  24. data/lib/puppet/daemon.rb +13 -27
  25. data/lib/puppet/defaults.rb +92 -12
  26. data/lib/puppet/environments.rb +4 -5
  27. data/lib/puppet/face/facts.rb +1 -1
  28. data/lib/puppet/face/help.rb +29 -3
  29. data/lib/puppet/face/module/search.rb +5 -0
  30. data/lib/puppet/face/plugin.rb +2 -2
  31. data/lib/puppet/feature/base.rb +1 -1
  32. data/lib/puppet/file_serving/http_metadata.rb +14 -2
  33. data/lib/puppet/file_serving/metadata.rb +4 -1
  34. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  35. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  36. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  37. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  38. data/lib/puppet/file_system/file_impl.rb +17 -13
  39. data/lib/puppet/file_system/uniquefile.rb +12 -16
  40. data/lib/puppet/forge.rb +1 -1
  41. data/lib/puppet/forge/cache.rb +1 -1
  42. data/lib/puppet/forge/repository.rb +4 -7
  43. data/lib/puppet/functions/call.rb +1 -1
  44. data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
  45. data/lib/puppet/functions/filter.rb +1 -0
  46. data/lib/puppet/functions/lstrip.rb +4 -4
  47. data/lib/puppet/functions/reduce.rb +2 -4
  48. data/lib/puppet/functions/reverse_each.rb +1 -1
  49. data/lib/puppet/functions/rstrip.rb +4 -4
  50. data/lib/puppet/functions/step.rb +1 -1
  51. data/lib/puppet/functions/strip.rb +4 -4
  52. data/lib/puppet/gettext/config.rb +5 -5
  53. data/lib/puppet/gettext/module_translations.rb +4 -4
  54. data/lib/puppet/http.rb +3 -0
  55. data/lib/puppet/http/client.rb +263 -73
  56. data/lib/puppet/http/external_client.rb +90 -0
  57. data/lib/puppet/http/redirector.rb +43 -7
  58. data/lib/puppet/http/resolver.rb +46 -3
  59. data/lib/puppet/http/resolver/server_list.rb +76 -16
  60. data/lib/puppet/http/resolver/settings.rb +23 -3
  61. data/lib/puppet/http/resolver/srv.rb +29 -3
  62. data/lib/puppet/http/response.rb +87 -1
  63. data/lib/puppet/http/retry_after_handler.rb +39 -0
  64. data/lib/puppet/http/service.rb +97 -12
  65. data/lib/puppet/http/service/ca.rb +76 -14
  66. data/lib/puppet/http/service/compiler.rb +249 -16
  67. data/lib/puppet/http/service/file_server.rb +141 -20
  68. data/lib/puppet/http/service/report.rb +47 -17
  69. data/lib/puppet/http/session.rb +96 -7
  70. data/lib/puppet/indirector.rb +1 -1
  71. data/lib/puppet/indirector/catalog/rest.rb +34 -0
  72. data/lib/puppet/indirector/exec.rb +1 -1
  73. data/lib/puppet/indirector/facts/facter.rb +3 -3
  74. data/lib/puppet/indirector/facts/rest.rb +42 -0
  75. data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
  76. data/lib/puppet/indirector/file_content/http.rb +5 -0
  77. data/lib/puppet/indirector/file_content/rest.rb +30 -0
  78. data/lib/puppet/indirector/file_metadata/http.rb +28 -8
  79. data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
  80. data/lib/puppet/indirector/hiera.rb +4 -0
  81. data/lib/puppet/indirector/indirection.rb +1 -1
  82. data/lib/puppet/indirector/node/rest.rb +24 -0
  83. data/lib/puppet/indirector/report/processor.rb +2 -2
  84. data/lib/puppet/indirector/report/rest.rb +19 -0
  85. data/lib/puppet/indirector/report/yaml.rb +23 -0
  86. data/lib/puppet/indirector/request.rb +1 -1
  87. data/lib/puppet/indirector/rest.rb +12 -0
  88. data/lib/puppet/indirector/status/rest.rb +18 -0
  89. data/lib/puppet/loaders.rb +6 -0
  90. data/lib/puppet/metatype/manager.rb +80 -80
  91. data/lib/puppet/module.rb +1 -2
  92. data/lib/puppet/network/format_support.rb +2 -2
  93. data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
  94. data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
  95. data/lib/puppet/network/http/base_pool.rb +7 -2
  96. data/lib/puppet/network/http/compression.rb +7 -0
  97. data/lib/puppet/network/http/connection.rb +2 -0
  98. data/lib/puppet/network/http/connection_adapter.rb +184 -0
  99. data/lib/puppet/network/http/nocache_pool.rb +1 -0
  100. data/lib/puppet/network/http/pool.rb +8 -5
  101. data/lib/puppet/network/http/route.rb +2 -2
  102. data/lib/puppet/network/http_pool.rb +2 -1
  103. data/lib/puppet/node/environment.rb +22 -5
  104. data/lib/puppet/pal/catalog_compiler.rb +5 -0
  105. data/lib/puppet/pal/pal_impl.rb +30 -31
  106. data/lib/puppet/parameter.rb +1 -1
  107. data/lib/puppet/parser/ast/leaf.rb +5 -5
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
  109. data/lib/puppet/parser/compiler.rb +43 -33
  110. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
  111. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
  112. data/lib/puppet/parser/environment_compiler.rb +4 -1
  113. data/lib/puppet/parser/functions.rb +18 -9
  114. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  115. data/lib/puppet/parser/functions/filter.rb +1 -0
  116. data/lib/puppet/parser/resource.rb +3 -2
  117. data/lib/puppet/parser/resource/param.rb +6 -0
  118. data/lib/puppet/parser/type_loader.rb +2 -2
  119. data/lib/puppet/pops/adaptable.rb +7 -13
  120. data/lib/puppet/pops/adapters.rb +8 -4
  121. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
  122. data/lib/puppet/pops/issues.rb +5 -0
  123. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  124. data/lib/puppet/pops/loaders.rb +24 -15
  125. data/lib/puppet/pops/lookup/context.rb +1 -1
  126. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  127. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
  128. data/lib/puppet/pops/types/iterable.rb +34 -8
  129. data/lib/puppet/pops/validation/checker4_0.rb +29 -15
  130. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
  131. data/lib/puppet/provider/file/windows.rb +1 -1
  132. data/lib/puppet/provider/group/groupadd.rb +9 -4
  133. data/lib/puppet/provider/group/windows_adsi.rb +3 -3
  134. data/lib/puppet/provider/package/aix.rb +17 -2
  135. data/lib/puppet/provider/package/apt.rb +98 -1
  136. data/lib/puppet/provider/package/aptitude.rb +1 -1
  137. data/lib/puppet/provider/package/dnfmodule.rb +61 -14
  138. data/lib/puppet/provider/package/gem.rb +45 -9
  139. data/lib/puppet/provider/package/pacman.rb +2 -5
  140. data/lib/puppet/provider/package/pip.rb +143 -48
  141. data/lib/puppet/provider/package/pip3.rb +0 -2
  142. data/lib/puppet/provider/package/pkgdmg.rb +1 -1
  143. data/lib/puppet/provider/package/pkgng.rb +16 -4
  144. data/lib/puppet/provider/package/portage.rb +2 -2
  145. data/lib/puppet/provider/package/puppet_gem.rb +11 -2
  146. data/lib/puppet/provider/package/rpm.rb +6 -213
  147. data/lib/puppet/provider/package/yum.rb +100 -20
  148. data/lib/puppet/provider/package/zypper.rb +62 -1
  149. data/lib/puppet/provider/service/systemd.rb +22 -4
  150. data/lib/puppet/provider/service/windows.rb +23 -7
  151. data/lib/puppet/provider/user/aix.rb +1 -1
  152. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  153. data/lib/puppet/provider/user/useradd.rb +16 -5
  154. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  155. data/lib/puppet/reports/http.rb +15 -9
  156. data/lib/puppet/resource.rb +2 -1
  157. data/lib/puppet/resource/type.rb +8 -0
  158. data/lib/puppet/resource/type_collection.rb +20 -16
  159. data/lib/puppet/runtime.rb +31 -1
  160. data/lib/puppet/settings.rb +3 -1
  161. data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
  162. data/lib/puppet/ssl.rb +1 -0
  163. data/lib/puppet/ssl/host.rb +4 -4
  164. data/lib/puppet/ssl/oids.rb +1 -0
  165. data/lib/puppet/ssl/ssl_context.rb +2 -2
  166. data/lib/puppet/ssl/ssl_provider.rb +20 -1
  167. data/lib/puppet/ssl/state_machine.rb +81 -35
  168. data/lib/puppet/ssl/validator/default_validator.rb +1 -1
  169. data/lib/puppet/ssl/verifier_adapter.rb +9 -1
  170. data/lib/puppet/test/test_helper.rb +21 -14
  171. data/lib/puppet/transaction.rb +2 -2
  172. data/lib/puppet/transaction/persistence.rb +1 -1
  173. data/lib/puppet/transaction/report.rb +3 -3
  174. data/lib/puppet/trusted_external.rb +29 -1
  175. data/lib/puppet/type.rb +21 -8
  176. data/lib/puppet/type/file.rb +51 -13
  177. data/lib/puppet/type/file/checksum.rb +4 -4
  178. data/lib/puppet/type/file/source.rb +75 -64
  179. data/lib/puppet/type/notify.rb +2 -2
  180. data/lib/puppet/type/package.rb +41 -3
  181. data/lib/puppet/type/service.rb +59 -8
  182. data/lib/puppet/type/user.rb +19 -29
  183. data/lib/puppet/util.rb +41 -3
  184. data/lib/puppet/util/at_fork.rb +1 -1
  185. data/lib/puppet/util/autoload.rb +13 -25
  186. data/lib/puppet/util/character_encoding.rb +9 -5
  187. data/lib/puppet/util/checksums.rb +19 -4
  188. data/lib/puppet/util/execution.rb +2 -2
  189. data/lib/puppet/util/fileparsing.rb +2 -2
  190. data/lib/puppet/util/instance_loader.rb +14 -10
  191. data/lib/puppet/util/log/destinations.rb +1 -10
  192. data/lib/puppet/util/package/version/debian.rb +175 -0
  193. data/lib/puppet/util/package/version/gem.rb +15 -0
  194. data/lib/puppet/util/package/version/pip.rb +167 -0
  195. data/lib/puppet/util/package/version/range.rb +53 -0
  196. data/lib/puppet/util/package/version/range/eq.rb +14 -0
  197. data/lib/puppet/util/package/version/range/gt.rb +14 -0
  198. data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
  199. data/lib/puppet/util/package/version/range/lt.rb +14 -0
  200. data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
  201. data/lib/puppet/util/package/version/range/min_max.rb +21 -0
  202. data/lib/puppet/util/package/version/range/simple.rb +11 -0
  203. data/lib/puppet/util/package/version/rpm.rb +73 -0
  204. data/lib/puppet/util/pidlock.rb +13 -7
  205. data/lib/puppet/util/platform.rb +5 -0
  206. data/lib/puppet/util/provider_features.rb +1 -1
  207. data/lib/puppet/util/reference.rb +1 -1
  208. data/lib/puppet/util/rpm_compare.rb +193 -0
  209. data/lib/puppet/util/windows.rb +1 -0
  210. data/lib/puppet/util/windows/adsi.rb +2 -2
  211. data/lib/puppet/util/windows/api_types.rb +60 -33
  212. data/lib/puppet/util/windows/eventlog.rb +1 -6
  213. data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
  214. data/lib/puppet/util/windows/principal.rb +8 -6
  215. data/lib/puppet/util/windows/process.rb +15 -14
  216. data/lib/puppet/util/windows/registry.rb +11 -11
  217. data/lib/puppet/util/windows/security.rb +5 -4
  218. data/lib/puppet/util/windows/service.rb +43 -26
  219. data/lib/puppet/util/windows/sid.rb +3 -3
  220. data/lib/puppet/util/windows/user.rb +242 -8
  221. data/lib/puppet/version.rb +1 -1
  222. data/locales/puppet.pot +641 -511
  223. data/man/man5/puppet.conf.5 +75 -10
  224. data/man/man8/puppet-agent.8 +7 -7
  225. data/man/man8/puppet-apply.8 +1 -1
  226. data/man/man8/puppet-catalog.8 +1 -1
  227. data/man/man8/puppet-config.8 +1 -1
  228. data/man/man8/puppet-describe.8 +1 -1
  229. data/man/man8/puppet-device.8 +2 -2
  230. data/man/man8/puppet-doc.8 +1 -1
  231. data/man/man8/puppet-epp.8 +1 -1
  232. data/man/man8/puppet-facts.8 +1 -1
  233. data/man/man8/puppet-filebucket.8 +17 -2
  234. data/man/man8/puppet-generate.8 +1 -1
  235. data/man/man8/puppet-help.8 +6 -3
  236. data/man/man8/puppet-key.8 +1 -1
  237. data/man/man8/puppet-lookup.8 +2 -2
  238. data/man/man8/puppet-man.8 +1 -1
  239. data/man/man8/puppet-module.8 +4 -1
  240. data/man/man8/puppet-node.8 +1 -1
  241. data/man/man8/puppet-parser.8 +1 -1
  242. data/man/man8/puppet-plugin.8 +1 -1
  243. data/man/man8/puppet-report.8 +1 -1
  244. data/man/man8/puppet-resource.8 +1 -1
  245. data/man/man8/puppet-script.8 +1 -1
  246. data/man/man8/puppet-ssl.8 +2 -2
  247. data/man/man8/puppet-status.8 +1 -1
  248. data/man/man8/puppet.8 +2 -2
  249. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  250. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  251. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
  252. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
  253. data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
  254. data/spec/fixtures/ssl/unknown-ca.pem +59 -0
  255. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  256. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  257. data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
  258. data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
  259. data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
  260. data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
  261. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
  262. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
  263. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
  264. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
  265. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
  266. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
  267. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
  268. data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
  269. data/spec/integration/application/agent_spec.rb +475 -0
  270. data/spec/integration/application/apply_spec.rb +279 -150
  271. data/spec/integration/application/config_spec.rb +74 -0
  272. data/spec/integration/application/doc_spec.rb +16 -6
  273. data/spec/integration/application/filebucket_spec.rb +239 -0
  274. data/spec/integration/application/help_spec.rb +42 -0
  275. data/spec/integration/application/lookup_spec.rb +13 -0
  276. data/spec/integration/application/module_spec.rb +68 -0
  277. data/spec/integration/application/plugin_spec.rb +123 -0
  278. data/spec/integration/data_binding_spec.rb +82 -0
  279. data/spec/integration/defaults_spec.rb +1 -2
  280. data/spec/integration/directory_environments_spec.rb +17 -17
  281. data/spec/integration/http/client_spec.rb +47 -37
  282. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  283. data/spec/integration/indirector/report/yaml.rb +83 -0
  284. data/spec/integration/network/http_pool_spec.rb +93 -20
  285. data/spec/integration/node/environment_spec.rb +15 -0
  286. data/spec/integration/parser/compiler_spec.rb +11 -0
  287. data/spec/integration/type/file_spec.rb +1 -1
  288. data/spec/integration/util/execution_spec.rb +22 -0
  289. data/spec/integration/util/windows/adsi_spec.rb +6 -1
  290. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
  291. data/spec/integration/util/windows/process_spec.rb +26 -32
  292. data/spec/integration/util/windows/registry_spec.rb +7 -7
  293. data/spec/integration/util/windows/user_spec.rb +47 -5
  294. data/spec/integration/util_spec.rb +7 -33
  295. data/spec/lib/puppet/test_ca.rb +2 -2
  296. data/spec/lib/puppet_spec/https.rb +16 -7
  297. data/spec/lib/puppet_spec/matchers.rb +0 -80
  298. data/spec/lib/puppet_spec/puppetserver.rb +127 -0
  299. data/spec/shared_contexts/https.rb +29 -0
  300. data/spec/unit/agent_spec.rb +80 -26
  301. data/spec/unit/application/agent_spec.rb +12 -9
  302. data/spec/unit/application/describe_spec.rb +88 -50
  303. data/spec/unit/application/device_spec.rb +2 -2
  304. data/spec/unit/application/face_base_spec.rb +6 -4
  305. data/spec/unit/application/facts_spec.rb +39 -10
  306. data/spec/unit/application/filebucket_spec.rb +22 -2
  307. data/spec/unit/application/man_spec.rb +52 -0
  308. data/spec/unit/application/resource_spec.rb +3 -1
  309. data/spec/unit/application/ssl_spec.rb +15 -2
  310. data/spec/unit/configurer/downloader_spec.rb +10 -0
  311. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  312. data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
  313. data/spec/unit/configurer_spec.rb +64 -46
  314. data/spec/unit/confine_spec.rb +2 -1
  315. data/spec/unit/context/trusted_information_spec.rb +25 -2
  316. data/spec/unit/daemon_spec.rb +5 -64
  317. data/spec/unit/defaults_spec.rb +24 -1
  318. data/spec/unit/environments_spec.rb +8 -0
  319. data/spec/unit/face/config_spec.rb +3 -1
  320. data/spec/unit/face/module/search_spec.rb +17 -0
  321. data/spec/unit/face/plugin_spec.rb +12 -10
  322. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  323. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  324. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  325. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  326. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  327. data/spec/unit/file_system/uniquefile_spec.rb +29 -0
  328. data/spec/unit/file_system_spec.rb +10 -0
  329. data/spec/unit/functions/lookup_spec.rb +13 -0
  330. data/spec/unit/http/client_spec.rb +321 -36
  331. data/spec/unit/http/external_client_spec.rb +201 -0
  332. data/spec/unit/http/resolver_spec.rb +34 -3
  333. data/spec/unit/http/response_spec.rb +75 -0
  334. data/spec/unit/http/service/ca_spec.rb +53 -12
  335. data/spec/unit/http/service/compiler_spec.rb +332 -28
  336. data/spec/unit/http/service/file_server_spec.rb +100 -12
  337. data/spec/unit/http/service/report_spec.rb +19 -9
  338. data/spec/unit/http/service_spec.rb +94 -6
  339. data/spec/unit/http/session_spec.rb +159 -8
  340. data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
  341. data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
  342. data/spec/unit/indirector/facts/rest_spec.rb +79 -24
  343. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
  344. data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
  345. data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
  346. data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
  347. data/spec/unit/indirector/node/rest_spec.rb +57 -2
  348. data/spec/unit/indirector/report/rest_spec.rb +58 -51
  349. data/spec/unit/indirector/request_spec.rb +1 -1
  350. data/spec/unit/indirector/resource/ral_spec.rb +7 -8
  351. data/spec/unit/indirector/rest_spec.rb +13 -0
  352. data/spec/unit/indirector/status/rest_spec.rb +43 -2
  353. data/spec/unit/interface_spec.rb +3 -3
  354. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  355. data/spec/unit/network/format_support_spec.rb +3 -2
  356. data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
  357. data/spec/unit/network/http/connection_spec.rb +552 -190
  358. data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
  359. data/spec/unit/network/http/pool_spec.rb +59 -13
  360. data/spec/unit/network/http_pool_spec.rb +63 -57
  361. data/spec/unit/network/http_spec.rb +1 -1
  362. data/spec/unit/node/environment_spec.rb +33 -0
  363. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  364. data/spec/unit/parser/environment_compiler_spec.rb +7 -0
  365. data/spec/unit/parser/scope_spec.rb +1 -1
  366. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
  367. data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
  368. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  369. data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
  370. data/spec/unit/provider/group/groupadd_spec.rb +22 -8
  371. data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
  372. data/spec/unit/provider/package/aix_spec.rb +29 -0
  373. data/spec/unit/provider/package/apt_spec.rb +107 -0
  374. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  375. data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
  376. data/spec/unit/provider/package/gem_spec.rb +40 -0
  377. data/spec/unit/provider/package/pacman_spec.rb +6 -21
  378. data/spec/unit/provider/package/pip_spec.rb +68 -19
  379. data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
  380. data/spec/unit/provider/package/pkgng_spec.rb +38 -0
  381. data/spec/unit/provider/package/portage_spec.rb +5 -0
  382. data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
  383. data/spec/unit/provider/package/rpm_spec.rb +0 -212
  384. data/spec/unit/provider/package/yum_spec.rb +243 -1
  385. data/spec/unit/provider/package/zypper_spec.rb +98 -0
  386. data/spec/unit/provider/service/init_spec.rb +42 -0
  387. data/spec/unit/provider/service/openbsd_spec.rb +9 -0
  388. data/spec/unit/provider/service/openwrt_spec.rb +1 -0
  389. data/spec/unit/provider/service/redhat_spec.rb +9 -0
  390. data/spec/unit/provider/service/systemd_spec.rb +93 -18
  391. data/spec/unit/provider/service/windows_spec.rb +50 -14
  392. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  393. data/spec/unit/provider/user/useradd_spec.rb +30 -16
  394. data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
  395. data/spec/unit/puppet_pal_2pec.rb +11 -0
  396. data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
  397. data/spec/unit/puppet_spec.rb +33 -0
  398. data/spec/unit/reports/http_spec.rb +70 -52
  399. data/spec/unit/reports/store_spec.rb +17 -13
  400. data/spec/unit/resource_spec.rb +3 -3
  401. data/spec/unit/settings/autosign_setting_spec.rb +1 -1
  402. data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
  403. data/spec/unit/ssl/host_spec.rb +4 -2
  404. data/spec/unit/ssl/oids_spec.rb +1 -0
  405. data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
  406. data/spec/unit/ssl/state_machine_spec.rb +99 -13
  407. data/spec/unit/test/test_helper_spec.rb +17 -0
  408. data/spec/unit/transaction/persistence_spec.rb +15 -0
  409. data/spec/unit/transaction/report_spec.rb +5 -1
  410. data/spec/unit/transaction_spec.rb +0 -2
  411. data/spec/unit/type/file/ensure_spec.rb +1 -2
  412. data/spec/unit/type/file/source_spec.rb +89 -38
  413. data/spec/unit/type/file_spec.rb +122 -96
  414. data/spec/unit/type/service_spec.rb +218 -8
  415. data/spec/unit/type/user_spec.rb +32 -3
  416. data/spec/unit/type_spec.rb +50 -0
  417. data/spec/unit/util/at_fork_spec.rb +3 -2
  418. data/spec/unit/util/autoload_spec.rb +2 -1
  419. data/spec/unit/util/character_encoding_spec.rb +4 -4
  420. data/spec/unit/util/checksums_spec.rb +16 -0
  421. data/spec/unit/util/command_line_spec.rb +11 -6
  422. data/spec/unit/util/log/destinations_spec.rb +1 -29
  423. data/spec/unit/util/package/version/debian_spec.rb +83 -0
  424. data/spec/unit/util/package/version/pip_spec.rb +464 -0
  425. data/spec/unit/util/package/version/range_spec.rb +175 -0
  426. data/spec/unit/util/package/version/rpm_spec.rb +121 -0
  427. data/spec/unit/util/pidlock_spec.rb +102 -54
  428. data/spec/unit/util/rpm_compare_spec.rb +196 -0
  429. data/spec/unit/util/windows/adsi_spec.rb +4 -4
  430. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  431. data/spec/unit/util/windows/service_spec.rb +4 -4
  432. data/spec/unit/util/windows/sid_spec.rb +2 -2
  433. data/spec/unit/util_spec.rb +3 -3
  434. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  435. data/tasks/generate_cert_fixtures.rake +15 -1
  436. data/tasks/manpages.rake +5 -35
  437. metadata +84 -52
  438. data/COMMITTERS.md +0 -244
  439. data/spec/integration/faces/config_spec.rb +0 -91
  440. data/spec/integration/faces/documentation_spec.rb +0 -57
  441. data/spec/integration/faces/plugin_spec.rb +0 -61
  442. data/spec/integration/file_bucket/file_spec.rb +0 -50
  443. data/spec/integration/file_serving/content_spec.rb +0 -7
  444. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  445. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  446. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  447. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  448. data/spec/integration/module_tool/forge_spec.rb +0 -64
  449. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  450. data/spec/integration/provider/service/init_spec.rb +0 -48
  451. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  452. data/spec/integration/provider/service/windows_spec.rb +0 -50
  453. data/spec/integration/reference/providers_spec.rb +0 -21
  454. data/spec/integration/reports_spec.rb +0 -13
  455. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  456. data/spec/integration/ssl/host_spec.rb +0 -72
  457. data/spec/integration/ssl/key_spec.rb +0 -99
  458. data/spec/integration/test/test_helper_spec.rb +0 -31
  459. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  460. data/spec/unit/face/man_spec.rb +0 -25
  461. data/spec/unit/man_spec.rb +0 -31
@@ -54,10 +54,11 @@ describe Puppet::Confine do
54
54
  end
55
55
 
56
56
  it "should log failing confines with the label and message" do
57
+ Puppet[:log_level] = 'debug'
57
58
  allow(@confine).to receive(:pass?).and_return(false)
58
59
  expect(@confine).to receive(:message).and_return("My message")
59
60
  expect(@confine).to receive(:label).and_return("Mylabel")
60
- expect(Puppet).to receive(:debug).with("Mylabel: My message")
61
+ expect(Puppet).to receive(:debug) { |&b| expect(b.call).to eq("Mylabel: My message") }
61
62
  @confine.valid?
62
63
  end
63
64
  end
@@ -41,8 +41,12 @@ describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java'
41
41
  }
42
42
 
43
43
  def allow_external_trusted_data(certname, data)
44
- Puppet[:trusted_external_command] = '/usr/bin/generate_data.sh'
45
- allow(Puppet::Util::Execution).to receive(:execute).with(['/usr/bin/generate_data.sh', certname], anything).and_return(JSON.dump(data))
44
+ command = 'generate_data.sh'
45
+ Puppet[:trusted_external_command] = command
46
+ # The expand_path bit is necessary b/c :trusted_external_command is a
47
+ # file_or_directory setting, and file_or_directory settings automatically
48
+ # expand the given path.
49
+ allow(Puppet::Util::Execution).to receive(:execute).with([File.expand_path(command), certname], anything).and_return(JSON.dump(data))
46
50
  end
47
51
 
48
52
  it "defaults external to an empty hash" do
@@ -90,6 +94,25 @@ describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java'
90
94
 
91
95
  expect(trusted.external).to eq(external_data)
92
96
  end
97
+
98
+ it 'does not run the trusted external command when creating a trusted context' do
99
+ Puppet[:trusted_external_command] = '/usr/bin/generate_data.sh'
100
+
101
+ expect(Puppet::Util::Execution).to receive(:execute).never
102
+ Puppet::Context::TrustedInformation.remote(true, 'cert name', cert)
103
+ end
104
+
105
+ it 'only runs the trusted external command the first time it is invoked' do
106
+ command = 'generate_data.sh'
107
+ Puppet[:trusted_external_command] = command
108
+
109
+ # See allow_external_trusted_data to understand why expand_path is necessary
110
+ expect(Puppet::Util::Execution).to receive(:execute).with([File.expand_path(command), 'cert name'], anything).and_return(JSON.dump(external_data)).once
111
+
112
+ trusted = Puppet::Context::TrustedInformation.remote(true, 'cert name', cert)
113
+ trusted.external
114
+ trusted.external
115
+ end
93
116
  end
94
117
 
95
118
  context "when local" do
@@ -32,13 +32,17 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
32
32
  let(:pidfile) { double("PidFile", :lock => true, :unlock => true, :file_path => 'fake.pid') }
33
33
  let(:scheduler) { RecordingScheduler.new }
34
34
 
35
- let(:daemon) { Puppet::Daemon.new(pidfile, scheduler) }
35
+ let(:daemon) { Puppet::Daemon.new(agent, pidfile, scheduler) }
36
36
 
37
37
  before(:each) do
38
38
  allow(Signal).to receive(:trap)
39
39
  allow(daemon).to receive(:close_streams).and_return(nil)
40
40
  end
41
41
 
42
+ it "should fail when no agent is provided" do
43
+ expect { Puppet::Daemon.new(nil, pidfile, scheduler) }.to raise_error(Puppet::DevError)
44
+ end
45
+
42
46
  it "should reopen the Log logs when told to reopen logs" do
43
47
  expect(Puppet::Util::Log).to receive(:reopen)
44
48
  daemon.reopen_logs
@@ -72,65 +76,21 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
72
76
  allow(daemon).to receive(:set_signal_traps)
73
77
  end
74
78
 
75
- it "should fail if it has neither agent nor server" do
76
- expect { daemon.start }.to raise_error(Puppet::DevError)
77
- end
78
-
79
79
  it "should create its pidfile" do
80
80
  expect(pidfile).to receive(:lock).and_return(true)
81
-
82
- daemon.agent = agent
83
81
  daemon.start
84
82
  end
85
83
 
86
84
  it "should fail if it cannot lock" do
87
85
  expect(pidfile).to receive(:lock).and_return(false)
88
- daemon.agent = agent
89
-
90
86
  expect { daemon.start }.to raise_error(RuntimeError, "Could not create PID file: #{pidfile.file_path}")
91
87
  end
92
88
 
93
- it "should start its server if one is configured" do
94
- daemon.server = server
95
-
96
- expect(server).to receive(:start)
97
-
98
- daemon.start
99
- end
100
-
101
89
  it "disables the reparse of configs if the filetimeout is 0" do
102
90
  Puppet[:filetimeout] = 0
103
- daemon.agent = agent
104
-
105
91
  daemon.start
106
-
107
92
  expect(scheduler.jobs[0]).not_to be_enabled
108
93
  end
109
-
110
- it "disables the agent run when there is no agent" do
111
- Puppet[:filetimeout] = 0
112
- daemon.server = server
113
-
114
- daemon.start
115
-
116
- expect(scheduler.jobs[1]).not_to be_enabled
117
- end
118
-
119
- it "waits for the server to shutdown when there is one" do
120
- daemon.server = server
121
-
122
- expect(server).to receive(:wait_for_shutdown)
123
-
124
- daemon.start
125
- end
126
-
127
- it "waits for the server to shutdown when there is one" do
128
- daemon.server = server
129
-
130
- expect(server).to receive(:wait_for_shutdown)
131
-
132
- daemon.start
133
- end
134
94
  end
135
95
 
136
96
  describe "when stopping" do
@@ -146,14 +106,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
146
106
  without_warnings { Puppet::Application = Puppet::Application.superclass }
147
107
  end
148
108
 
149
- it "should stop its server if one is configured" do
150
- expect(server).to receive(:stop)
151
-
152
- daemon.server = server
153
-
154
- expect { daemon.stop }.to exit_with 0
155
- end
156
-
157
109
  it 'should request a stop from Puppet::Application' do
158
110
  expect(Puppet::Application).to receive(:stop!)
159
111
  expect { daemon.stop }.to exit_with 0
@@ -161,7 +113,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
161
113
 
162
114
  it "should remove its pidfile" do
163
115
  expect(pidfile).to receive(:unlock)
164
-
165
116
  expect { daemon.stop }.to exit_with 0
166
117
  end
167
118
 
@@ -188,8 +139,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
188
139
  expect(agent).to receive(:run).with({:splay => false}).and_raise(Puppet::LockError, 'Failed to aquire lock')
189
140
  expect(Puppet).to receive(:notice).with('Not triggering already-running agent')
190
141
 
191
- daemon.agent = agent
192
-
193
142
  daemon.reload
194
143
  end
195
144
 
@@ -197,8 +146,6 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
197
146
  expect(agent).to receive(:run).with({:splay => false})
198
147
  expect(Puppet).not_to receive(:notice).with('Not triggering already-running agent')
199
148
 
200
- daemon.agent = agent
201
-
202
149
  daemon.reload
203
150
  end
204
151
  end
@@ -220,15 +167,11 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
220
167
 
221
168
  it "should reexec itself if no agent is available" do
222
169
  expect(daemon).to receive(:reexec)
223
-
224
170
  daemon.restart
225
171
  end
226
172
 
227
173
  it "should reexec itself if the agent is not running" do
228
- expect(agent).to receive(:running?).and_return(false)
229
- daemon.agent = agent
230
174
  expect(daemon).to receive(:reexec)
231
-
232
175
  daemon.restart
233
176
  end
234
177
  end
@@ -247,14 +190,12 @@ describe Puppet::Daemon, :unless => Puppet::Util::Platform.windows? do
247
190
  it "should shut down without exiting" do
248
191
  daemon.argv = %w{foo}
249
192
  expect(daemon).to receive(:stop).with(:exit => false)
250
-
251
193
  daemon.reexec
252
194
  end
253
195
 
254
196
  it "should call 'exec' with the original executable and arguments" do
255
197
  daemon.argv = %w{foo}
256
198
  expect(daemon).to receive(:exec).with($0 + " foo")
257
-
258
199
  daemon.reexec
259
200
  end
260
201
  end
@@ -188,8 +188,31 @@ describe "Defaults" do
188
188
  end
189
189
 
190
190
  it "raises an exception if facter-ng could not be loaded" do
191
- allow(Puppet).to receive(:require).with('facter-ng').and_return(false)
191
+ allow_any_instance_of(Puppet::Settings::BooleanSetting).to receive(:require).with('facter-ng').and_raise(LoadError)
192
+
192
193
  expect{ Puppet.settings[:facterng] = true }.to raise_exception ArgumentError, 'facter-ng could not be loaded'
193
194
  end
195
+
196
+ context 'set logger' do
197
+ before do
198
+ @original_facter = Object.const_get(:Facter)
199
+
200
+ Object.send(:remove_const, :Facter)
201
+ Object.const_set(:Facter, Module.new)
202
+
203
+ allow_any_instance_of(Puppet::Settings::BooleanSetting).to receive(:require).with('facter-ng').and_return(true)
204
+ allow(Facter).to receive(:respond_to?).and_return(false)
205
+ end
206
+
207
+ after do
208
+ Object.const_set(:Facter, @original_facter)
209
+ end
210
+
211
+ it 'calls setup_facter_logging!' do
212
+ allow(Puppet::Util::Logging).to receive(:setup_facter_logging!).and_return(true)
213
+ Puppet.settings[:facterng] = true
214
+ expect(Puppet::Util::Logging).to have_received(:setup_facter_logging!).once
215
+ end
216
+ end
194
217
  end
195
218
  end
@@ -35,6 +35,7 @@ describe Puppet::Environments do
35
35
  FS::MemoryFile.a_directory("modules"),
36
36
  FS::MemoryFile.a_directory("manifests"),
37
37
  ]),
38
+ FS::MemoryFile.a_missing_file("missing")
38
39
  ])
39
40
  end
40
41
 
@@ -90,6 +91,13 @@ describe Puppet::Environments do
90
91
  end
91
92
  end
92
93
 
94
+ it "proceeds with non-existant env dir" do
95
+ loader_from(:filesystem => [directory_tree],
96
+ :directory => directory_tree.children.last) do |loader|
97
+ expect(loader.list).to eq([])
98
+ end
99
+ end
100
+
93
101
  it "gets a particular environment" do
94
102
  loader_from(:filesystem => [directory_tree],
95
103
  :directory => directory_tree.children.first) do |loader|
@@ -234,7 +234,9 @@ trace = true
234
234
  allow(Puppet::Settings::IniFile::Manipulator).to receive(:new).and_return(manipulator)
235
235
 
236
236
  expect(manipulator).to receive(:delete).with('main', 'setting').and_return(' setting=value')
237
- expect { subject.delete('setting', {:section => 'main'}) }.to have_printed("Deleted setting from 'main': 'setting=value'")
237
+ expect {
238
+ subject.delete('setting', {:section => 'main'})
239
+ }.to output("Deleted setting from 'main': 'setting=value'\n").to_stdout
238
240
  end
239
241
 
240
242
  it 'prints a warning when a setting is not found to delete' do
@@ -211,4 +211,21 @@ describe "puppet module search" do
211
211
  end
212
212
  end
213
213
  end
214
+
215
+ it "should include a deprecation warning" do
216
+ stub_request(:get, "https://forgeapi.puppet.com/v3/modules?query=puppetlabs-apache").to_return(status: 200, body: [answers: [], result: :success])
217
+
218
+ subject.search("puppetlabs-apache")
219
+
220
+ expect(@logs).to include(an_object_having_attributes(level: :warning, message: /This action has been deprecated. Please use the Puppet Forge to search for modules./))
221
+ end
222
+
223
+ it "omits the warning when deprecations are disabled" do
224
+ stub_request(:get, "https://forgeapi.puppet.com/v3/modules?query=puppetlabs-apache").to_return(status: 200, body: [answers: [], result: :success])
225
+
226
+ Puppet[:disable_warnings] = 'deprecations'
227
+ subject.search("puppetlabs-apache")
228
+
229
+ expect(@logs).not_to include(an_object_having_attributes(level: :warning))
230
+ end
214
231
  end
@@ -10,9 +10,10 @@ describe Puppet::Face[:plugin, :current] do
10
10
  end
11
11
 
12
12
  context "download" do
13
- before :each do
14
- #Server_agent version needs to be at 5.3.4 in order to mount locales
15
- Puppet.push_context({:server_agent_version => "5.3.4"})
13
+ around do |example|
14
+ Puppet.override(server_agent_version: "5.3.4") do
15
+ example.run
16
+ end
16
17
  end
17
18
 
18
19
  it "downloads plugins, external facts, and locales" do
@@ -61,9 +62,10 @@ describe Puppet::Face[:plugin, :current] do
61
62
  end
62
63
 
63
64
  context "download when server_agent_version is 5.3.3" do
64
- before :each do
65
- #Server_agent version needs to be at 5.3.4 in order to mount locales
66
- Puppet.push_context({:server_agent_version => "5.3.3"})
65
+ around do |example|
66
+ Puppet.override(server_agent_version: "5.3.3") do
67
+ example.run
68
+ end
67
69
  end
68
70
 
69
71
  it "downloads plugins, and external facts, but not locales" do
@@ -87,10 +89,10 @@ describe Puppet::Face[:plugin, :current] do
87
89
  end
88
90
 
89
91
  context "download when server_agent_version is blank" do
90
- before :each do
91
- #Server_agent version needs to be at 5.3.4 in order to mount locales
92
- #A blank version will default to 0.0
93
- Puppet.push_context({:server_agent_version => ""})
92
+ around do |example|
93
+ Puppet.override(server_agent_version: "") do
94
+ example.run
95
+ end
94
96
  end
95
97
 
96
98
  it "downloads plugins, and external facts, but not locales" do
@@ -30,11 +30,6 @@ describe Puppet::FileServing::HttpMetadata do
30
30
  end
31
31
 
32
32
  context "with no Last-Modified or Content-MD5 header from the server" do
33
- before do
34
- allow(http_response).to receive(:[]).with('last-modified').and_return(nil)
35
- allow(http_response).to receive(:[]).with('content-md5').and_return(nil)
36
- end
37
-
38
33
  it "should use :mtime as the checksum type, based on current time" do
39
34
  # Stringifying Time.now does some rounding; do so here so we don't end up with a time
40
35
  # that's greater than the stringified version returned by collect.
@@ -51,13 +46,9 @@ describe Puppet::FileServing::HttpMetadata do
51
46
  context "with a Last-Modified header from the server" do
52
47
  let(:time) { Time.now.utc }
53
48
 
54
- before do
55
- allow(http_response).to receive(:[]).with('content-md5').and_return(nil)
56
- end
57
-
58
49
  it "should use :mtime as the checksum type, based on Last-Modified" do
59
50
  # HTTP uses "GMT" not "UTC"
60
- allow(http_response).to receive(:[]).with('last-modified').and_return(time.strftime("%a, %d %b %Y %T GMT"))
51
+ http_response.add_field('last-modified', time.strftime("%a, %d %b %Y %T GMT"))
61
52
  metadata = described_class.new(http_response)
62
53
  metadata.collect
63
54
  expect( metadata.checksum_type ).to eq :mtime
@@ -70,16 +61,48 @@ describe Puppet::FileServing::HttpMetadata do
70
61
  let(:base64) { Digest::MD5.new.base64digest input }
71
62
  let(:hex) { Digest::MD5.new.hexdigest input }
72
63
 
73
- before do
74
- allow(http_response).to receive(:[]).with('last-modified').and_return(nil)
75
- allow(http_response).to receive(:[]).with('content-md5').and_return(base64)
64
+ it "should use the md5 checksum" do
65
+ http_response.add_field('content-md5', base64)
66
+ metadata = described_class.new(http_response)
67
+ metadata.collect
68
+ expect( metadata.checksum_type ).to eq :md5
69
+ expect( metadata.checksum ).to eq "{md5}#{hex}"
76
70
  end
71
+ end
72
+
73
+ context "with X-Checksum-Md5" do
74
+ let(:md5) { "c58989e9740a748de4f5054286faf99b" }
77
75
 
78
76
  it "should use the md5 checksum" do
77
+ http_response.add_field('X-Checksum-Md5', md5)
79
78
  metadata = described_class.new(http_response)
80
79
  metadata.collect
81
80
  expect( metadata.checksum_type ).to eq :md5
82
- expect( metadata.checksum ).to eq "{md5}#{hex}"
81
+ expect( metadata.checksum ).to eq "{md5}#{md5}"
82
+ end
83
+ end
84
+
85
+ context "with X-Checksum-Sha1" do
86
+ let(:sha1) { "01e4d15746f4274b84d740a93e04b9fd2882e3ea" }
87
+
88
+ it "should use the SHA1 checksum" do
89
+ http_response.add_field('X-Checksum-Sha1', sha1)
90
+ metadata = described_class.new(http_response)
91
+ metadata.collect
92
+ expect( metadata.checksum_type ).to eq :sha1
93
+ expect( metadata.checksum ).to eq "{sha1}#{sha1}"
94
+ end
95
+ end
96
+
97
+ context "with X-Checksum-Sha256" do
98
+ let(:sha256) { "a3eda98259c30e1e75039c2123670c18105e1c46efb672e42ca0e4cbe77b002a" }
99
+
100
+ it "should use the SHA256 checksum" do
101
+ http_response.add_field('X-Checksum-Sha256', sha256)
102
+ metadata = described_class.new(http_response)
103
+ metadata.collect
104
+ expect( metadata.checksum_type ).to eq :sha256
105
+ expect( metadata.checksum ).to eq "{sha256}#{sha256}"
83
106
  end
84
107
  end
85
108
  end
@@ -52,13 +52,13 @@ describe Puppet::FileServing::Mount::Locales do
52
52
  expect(@mount.search("foo/bar", @request)).to eq(["/"])
53
53
  end
54
54
 
55
- it "should return nil if no modules can be found that have locales and modulepath is invalid" do
55
+ it "should return the default search module path if no modules can be found that have locales and modulepath is invalid" do
56
56
  mod = double('module')
57
57
  allow(mod).to receive(:locales?).and_return(false)
58
58
 
59
59
  allow(@environment).to receive(:modules).and_return([])
60
60
  allow(@environment).to receive(:modulepath).and_return([])
61
- expect(@mount.search("foo/bar", @request)).to be_nil
61
+ expect(@mount.search("foo/bar", @request)).to eq([Puppet[:codedir]])
62
62
  end
63
63
 
64
64
  it "should return the locale paths for each module that has locales" do
@@ -52,13 +52,13 @@ describe Puppet::FileServing::Mount::PluginFacts do
52
52
  expect(@mount.search("foo/bar", @request)).to eq(["/"])
53
53
  end
54
54
 
55
- it "should return nil if no modules can be found that have plugins and modulepath is invalid" do
55
+ it "should return the default search module path if no modules can be found that have plugins and modulepath is invalid" do
56
56
  mod = double('module')
57
57
  allow(mod).to receive(:pluginfacts?).and_return(false)
58
58
 
59
59
  allow(@environment).to receive(:modules).and_return([])
60
60
  allow(@environment).to receive(:modulepath).and_return([])
61
- expect(@mount.search("foo/bar", @request)).to be_nil
61
+ expect(@mount.search("foo/bar", @request)).to eq([Puppet[:codedir]])
62
62
  end
63
63
 
64
64
  it "should return the plugin paths for each module that has plugins" do