puppet 6.20.0 → 7.4.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 (430) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -4
  3. data/Gemfile.lock +13 -13
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -2
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +2 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +13 -9
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +27 -29
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +57 -162
  20. data/lib/puppet/environments.rb +8 -23
  21. data/lib/puppet/face/facts.rb +73 -49
  22. data/lib/puppet/face/help.rb +1 -1
  23. data/lib/puppet/face/node/clean.rb +8 -0
  24. data/lib/puppet/face/plugin.rb +5 -8
  25. data/lib/puppet/ffi/windows.rb +12 -0
  26. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  27. data/lib/puppet/ffi/windows/constants.rb +404 -0
  28. data/lib/puppet/ffi/windows/functions.rb +628 -0
  29. data/lib/puppet/ffi/windows/structs.rb +338 -0
  30. data/lib/puppet/file_serving/configuration.rb +0 -5
  31. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount.rb +1 -2
  34. data/lib/puppet/forge/repository.rb +0 -1
  35. data/lib/puppet/generate/models/type/type.rb +4 -1
  36. data/lib/puppet/http.rb +22 -13
  37. data/lib/puppet/http/client.rb +164 -114
  38. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  39. data/lib/puppet/http/errors.rb +16 -0
  40. data/lib/puppet/http/external_client.rb +5 -7
  41. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  42. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  43. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  44. data/lib/puppet/http/proxy.rb +137 -0
  45. data/lib/puppet/http/redirector.rb +4 -12
  46. data/lib/puppet/http/resolver.rb +5 -15
  47. data/lib/puppet/http/resolver/server_list.rb +6 -10
  48. data/lib/puppet/http/resolver/settings.rb +4 -7
  49. data/lib/puppet/http/resolver/srv.rb +7 -11
  50. data/lib/puppet/http/response.rb +36 -54
  51. data/lib/puppet/http/response_converter.rb +24 -0
  52. data/lib/puppet/http/response_net_http.rb +42 -0
  53. data/lib/puppet/http/retry_after_handler.rb +4 -13
  54. data/lib/puppet/http/service.rb +12 -26
  55. data/lib/puppet/http/service/ca.rb +11 -22
  56. data/lib/puppet/http/service/compiler.rb +22 -69
  57. data/lib/puppet/http/service/file_server.rb +18 -27
  58. data/lib/puppet/http/service/puppetserver.rb +26 -12
  59. data/lib/puppet/http/service/report.rb +8 -10
  60. data/lib/puppet/http/session.rb +11 -20
  61. data/lib/puppet/{network/http → http}/site.rb +1 -2
  62. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  63. data/lib/puppet/indirector/facts/facter.rb +25 -3
  64. data/lib/puppet/indirector/facts/rest.rb +3 -22
  65. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  66. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  67. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  68. data/lib/puppet/indirector/file_server.rb +1 -8
  69. data/lib/puppet/indirector/generic_http.rb +0 -11
  70. data/lib/puppet/indirector/node/rest.rb +2 -4
  71. data/lib/puppet/indirector/report/rest.rb +3 -8
  72. data/lib/puppet/indirector/request.rb +0 -101
  73. data/lib/puppet/indirector/rest.rb +12 -263
  74. data/lib/puppet/module_tool/applications.rb +0 -1
  75. data/lib/puppet/network/authconfig.rb +2 -96
  76. data/lib/puppet/network/authorization.rb +13 -35
  77. data/lib/puppet/network/formats.rb +67 -0
  78. data/lib/puppet/network/http.rb +3 -3
  79. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  80. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  81. data/lib/puppet/network/http/connection.rb +247 -316
  82. data/lib/puppet/network/http/handler.rb +0 -1
  83. data/lib/puppet/network/http_pool.rb +16 -34
  84. data/lib/puppet/node.rb +1 -30
  85. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  86. data/lib/puppet/pal/pal_impl.rb +3 -1
  87. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  88. data/lib/puppet/parser/compiler.rb +0 -198
  89. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  90. data/lib/puppet/parser/resource.rb +0 -69
  91. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  92. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  93. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  94. data/lib/puppet/pops/issues.rb +0 -5
  95. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  96. data/lib/puppet/pops/model/ast.pp +0 -42
  97. data/lib/puppet/pops/model/ast.rb +0 -290
  98. data/lib/puppet/pops/model/factory.rb +0 -45
  99. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  100. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  101. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  102. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  103. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  104. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  105. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  106. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  107. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  108. data/lib/puppet/pops/types/type_parser.rb +0 -4
  109. data/lib/puppet/pops/types/types.rb +0 -1
  110. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  111. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  112. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  113. data/lib/puppet/property/list.rb +1 -1
  114. data/lib/puppet/provider.rb +0 -13
  115. data/lib/puppet/provider/group/groupadd.rb +13 -8
  116. data/lib/puppet/provider/nameservice.rb +0 -18
  117. data/lib/puppet/provider/package/apt.rb +30 -2
  118. data/lib/puppet/provider/package/aptitude.rb +6 -0
  119. data/lib/puppet/provider/package/dpkg.rb +0 -10
  120. data/lib/puppet/provider/package/gem.rb +23 -3
  121. data/lib/puppet/provider/package/pip.rb +0 -1
  122. data/lib/puppet/provider/package/pkg.rb +0 -4
  123. data/lib/puppet/provider/package/portage.rb +1 -1
  124. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  125. data/lib/puppet/provider/service/debian.rb +2 -0
  126. data/lib/puppet/provider/service/smf.rb +191 -73
  127. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  128. data/lib/puppet/provider/user/useradd.rb +55 -8
  129. data/lib/puppet/reference/configuration.rb +7 -5
  130. data/lib/puppet/reference/indirection.rb +1 -1
  131. data/lib/puppet/resource.rb +1 -89
  132. data/lib/puppet/resource/catalog.rb +1 -14
  133. data/lib/puppet/resource/type.rb +3 -119
  134. data/lib/puppet/resource/type_collection.rb +3 -48
  135. data/lib/puppet/runtime.rb +1 -2
  136. data/lib/puppet/settings.rb +45 -33
  137. data/lib/puppet/settings/integer_setting.rb +17 -0
  138. data/lib/puppet/settings/port_setting.rb +15 -0
  139. data/lib/puppet/settings/priority_setting.rb +5 -4
  140. data/lib/puppet/ssl.rb +10 -6
  141. data/lib/puppet/ssl/base.rb +3 -5
  142. data/lib/puppet/ssl/certificate.rb +0 -6
  143. data/lib/puppet/ssl/certificate_request.rb +1 -12
  144. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  145. data/lib/puppet/ssl/oids.rb +3 -1
  146. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  147. data/lib/puppet/ssl/state_machine.rb +3 -1
  148. data/lib/puppet/ssl/verifier.rb +2 -0
  149. data/lib/puppet/test/test_helper.rb +1 -3
  150. data/lib/puppet/transaction.rb +1 -7
  151. data/lib/puppet/transaction/report.rb +2 -4
  152. data/lib/puppet/type.rb +0 -76
  153. data/lib/puppet/type/file.rb +5 -7
  154. data/lib/puppet/type/file/checksum.rb +1 -1
  155. data/lib/puppet/type/file/source.rb +1 -1
  156. data/lib/puppet/type/filebucket.rb +3 -3
  157. data/lib/puppet/type/package.rb +8 -16
  158. data/lib/puppet/type/user.rb +1 -1
  159. data/lib/puppet/util/execution.rb +0 -11
  160. data/lib/puppet/util/http_proxy.rb +2 -215
  161. data/lib/puppet/util/monkey_patches.rb +0 -46
  162. data/lib/puppet/util/rdoc.rb +0 -7
  163. data/lib/puppet/util/retry_action.rb +1 -1
  164. data/lib/puppet/util/run_mode.rb +9 -1
  165. data/lib/puppet/util/windows.rb +3 -8
  166. data/lib/puppet/util/windows/daemon.rb +360 -0
  167. data/lib/puppet/util/windows/error.rb +1 -0
  168. data/lib/puppet/util/windows/eventlog.rb +4 -9
  169. data/lib/puppet/util/windows/file.rb +8 -242
  170. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  171. data/lib/puppet/util/windows/process.rb +4 -226
  172. data/lib/puppet/util/windows/service.rb +9 -460
  173. data/lib/puppet/util/windows/string.rb +12 -13
  174. data/lib/puppet/util/yaml.rb +0 -22
  175. data/lib/puppet/vendor/require_vendored.rb +0 -1
  176. data/lib/puppet/version.rb +1 -1
  177. data/lib/puppet/x509.rb +5 -1
  178. data/lib/puppet/x509/cert_provider.rb +29 -1
  179. data/locales/puppet.pot +521 -1226
  180. data/man/man5/puppet.conf.5 +35 -95
  181. data/man/man8/puppet-agent.8 +1 -1
  182. data/man/man8/puppet-apply.8 +1 -1
  183. data/man/man8/puppet-catalog.8 +1 -1
  184. data/man/man8/puppet-config.8 +1 -1
  185. data/man/man8/puppet-describe.8 +1 -1
  186. data/man/man8/puppet-device.8 +1 -1
  187. data/man/man8/puppet-doc.8 +1 -1
  188. data/man/man8/puppet-epp.8 +1 -1
  189. data/man/man8/puppet-facts.8 +57 -36
  190. data/man/man8/puppet-filebucket.8 +4 -4
  191. data/man/man8/puppet-generate.8 +1 -1
  192. data/man/man8/puppet-help.8 +1 -1
  193. data/man/man8/puppet-lookup.8 +1 -1
  194. data/man/man8/puppet-module.8 +1 -58
  195. data/man/man8/puppet-node.8 +1 -1
  196. data/man/man8/puppet-parser.8 +1 -1
  197. data/man/man8/puppet-plugin.8 +1 -1
  198. data/man/man8/puppet-report.8 +1 -1
  199. data/man/man8/puppet-resource.8 +1 -1
  200. data/man/man8/puppet-script.8 +1 -1
  201. data/man/man8/puppet-ssl.8 +1 -1
  202. data/man/man8/puppet.8 +2 -2
  203. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  204. data/spec/integration/application/agent_spec.rb +57 -11
  205. data/spec/integration/application/apply_spec.rb +1 -1
  206. data/spec/integration/application/filebucket_spec.rb +16 -16
  207. data/spec/integration/application/help_spec.rb +2 -0
  208. data/spec/integration/application/plugin_spec.rb +23 -1
  209. data/spec/integration/defaults_spec.rb +7 -3
  210. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  211. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  212. data/spec/integration/network/http_pool_spec.rb +3 -21
  213. data/spec/integration/parser/catalog_spec.rb +0 -38
  214. data/spec/integration/parser/node_spec.rb +0 -9
  215. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  216. data/spec/integration/type/file_spec.rb +5 -4
  217. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  218. data/spec/integration/util/windows/security_spec.rb +1 -1
  219. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  220. data/spec/lib/puppet_spec/settings.rb +1 -0
  221. data/spec/spec_helper.rb +2 -0
  222. data/spec/unit/agent_spec.rb +0 -2
  223. data/spec/unit/application/facts_spec.rb +86 -0
  224. data/spec/unit/application/filebucket_spec.rb +41 -39
  225. data/spec/unit/application/ssl_spec.rb +2 -2
  226. data/spec/unit/certificate_factory_spec.rb +1 -1
  227. data/spec/unit/configurer/downloader_spec.rb +6 -2
  228. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  229. data/spec/unit/configurer_spec.rb +12 -9
  230. data/spec/unit/context/trusted_information_spec.rb +2 -6
  231. data/spec/unit/defaults_spec.rb +22 -47
  232. data/spec/unit/environments_spec.rb +0 -3
  233. data/spec/unit/face/facts_spec.rb +4 -0
  234. data/spec/unit/face/node_spec.rb +14 -2
  235. data/spec/unit/face/plugin_spec.rb +73 -33
  236. data/spec/unit/file_bucket/file_spec.rb +1 -1
  237. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -18
  238. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  239. data/spec/unit/functions/camelcase_spec.rb +1 -1
  240. data/spec/unit/functions/capitalize_spec.rb +1 -1
  241. data/spec/unit/functions/downcase_spec.rb +1 -1
  242. data/spec/unit/functions/upcase_spec.rb +1 -1
  243. data/spec/unit/http/client_spec.rb +7 -8
  244. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  245. data/spec/unit/http/external_client_spec.rb +4 -4
  246. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  247. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  248. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  249. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  250. data/spec/unit/http/resolver_spec.rb +13 -13
  251. data/spec/unit/http/service/compiler_spec.rb +0 -62
  252. data/spec/unit/http/service/file_server_spec.rb +3 -3
  253. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  254. data/spec/unit/http/service_spec.rb +0 -1
  255. data/spec/unit/http/session_spec.rb +16 -14
  256. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  257. data/spec/unit/indirector/facts/facter_spec.rb +113 -0
  258. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  259. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  260. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  261. data/spec/unit/indirector/file_server_spec.rb +1 -15
  262. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  263. data/spec/unit/indirector/request_spec.rb +0 -264
  264. data/spec/unit/indirector/rest_spec.rb +98 -752
  265. data/spec/unit/network/authconfig_spec.rb +2 -129
  266. data/spec/unit/network/authorization_spec.rb +2 -55
  267. data/spec/unit/network/formats_spec.rb +45 -4
  268. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -92
  269. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  270. data/spec/unit/network/http/api_spec.rb +10 -0
  271. data/spec/unit/network/http/connection_spec.rb +19 -41
  272. data/spec/unit/network/http/handler_spec.rb +0 -1
  273. data/spec/unit/network/http_pool_spec.rb +0 -4
  274. data/spec/unit/node/environment_spec.rb +33 -21
  275. data/spec/unit/node_spec.rb +2 -54
  276. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  277. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  278. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  279. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  280. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  281. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  282. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  283. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  284. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  285. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  286. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  287. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  288. data/spec/unit/pops/visitor_spec.rb +1 -1
  289. data/spec/unit/provider/group/groupadd_spec.rb +5 -2
  290. data/spec/unit/provider/nameservice_spec.rb +0 -57
  291. data/spec/unit/provider/package/apt_spec.rb +24 -15
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  293. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  294. data/spec/unit/provider/package/gem_spec.rb +32 -0
  295. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  296. data/spec/unit/provider/service/smf_spec.rb +401 -165
  297. data/spec/unit/provider/service/windows_spec.rb +0 -1
  298. data/spec/unit/provider/user/useradd_spec.rb +55 -3
  299. data/spec/unit/provider_spec.rb +0 -12
  300. data/spec/unit/resource/type_collection_spec.rb +2 -22
  301. data/spec/unit/resource_spec.rb +0 -56
  302. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  303. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  304. data/spec/unit/settings/port_setting_spec.rb +31 -0
  305. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  306. data/spec/unit/settings_spec.rb +17 -0
  307. data/spec/unit/ssl/base_spec.rb +36 -3
  308. data/spec/unit/ssl/certificate_request_spec.rb +19 -55
  309. data/spec/unit/ssl/certificate_spec.rb +2 -11
  310. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  311. data/spec/unit/ssl/verifier_spec.rb +0 -21
  312. data/spec/unit/transaction/report_spec.rb +0 -2
  313. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  314. data/spec/unit/transaction_spec.rb +45 -79
  315. data/spec/unit/type/file/checksum_spec.rb +6 -6
  316. data/spec/unit/type/file/content_spec.rb +1 -1
  317. data/spec/unit/type/file/ensure_spec.rb +1 -1
  318. data/spec/unit/type/file/mode_spec.rb +1 -1
  319. data/spec/unit/type/file/source_spec.rb +0 -1
  320. data/spec/unit/type/file_spec.rb +12 -6
  321. data/spec/unit/type/package_spec.rb +1 -1
  322. data/spec/unit/type_spec.rb +20 -0
  323. data/spec/unit/util/backups_spec.rb +0 -2
  324. data/spec/unit/util/execution_spec.rb +0 -29
  325. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  326. data/spec/unit/util/run_mode_spec.rb +21 -121
  327. data/spec/unit/util/windows/string_spec.rb +1 -3
  328. data/spec/unit/util/yaml_spec.rb +0 -54
  329. data/spec/unit/util_spec.rb +0 -18
  330. metadata +48 -163
  331. data/conf/auth.conf +0 -150
  332. data/lib/puppet/application/cert.rb +0 -76
  333. data/lib/puppet/application/key.rb +0 -4
  334. data/lib/puppet/application/man.rb +0 -4
  335. data/lib/puppet/application/status.rb +0 -4
  336. data/lib/puppet/face/key.rb +0 -16
  337. data/lib/puppet/face/man.rb +0 -145
  338. data/lib/puppet/face/module/build.rb +0 -14
  339. data/lib/puppet/face/module/generate.rb +0 -14
  340. data/lib/puppet/face/module/search.rb +0 -103
  341. data/lib/puppet/face/status.rb +0 -51
  342. data/lib/puppet/indirector/certificate/file.rb +0 -9
  343. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  344. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  345. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  346. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  347. data/lib/puppet/indirector/file_content/http.rb +0 -22
  348. data/lib/puppet/indirector/key/file.rb +0 -46
  349. data/lib/puppet/indirector/key/memory.rb +0 -7
  350. data/lib/puppet/indirector/ssl_file.rb +0 -162
  351. data/lib/puppet/indirector/status.rb +0 -3
  352. data/lib/puppet/indirector/status/local.rb +0 -12
  353. data/lib/puppet/indirector/status/rest.rb +0 -27
  354. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  355. data/lib/puppet/network/auth_config_parser.rb +0 -90
  356. data/lib/puppet/network/authstore.rb +0 -283
  357. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  358. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  359. data/lib/puppet/network/http/base_pool.rb +0 -36
  360. data/lib/puppet/network/http/compression.rb +0 -127
  361. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  362. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  363. data/lib/puppet/network/rest_controller.rb +0 -2
  364. data/lib/puppet/network/rights.rb +0 -210
  365. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  366. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  367. data/lib/puppet/parser/environment_compiler.rb +0 -202
  368. data/lib/puppet/pops/types/enumeration.rb +0 -16
  369. data/lib/puppet/resource/capability_finder.rb +0 -154
  370. data/lib/puppet/rest/errors.rb +0 -15
  371. data/lib/puppet/rest/response.rb +0 -35
  372. data/lib/puppet/rest/route.rb +0 -85
  373. data/lib/puppet/rest/routes.rb +0 -135
  374. data/lib/puppet/ssl/host.rb +0 -505
  375. data/lib/puppet/ssl/key.rb +0 -61
  376. data/lib/puppet/ssl/validator.rb +0 -61
  377. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  378. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  379. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  380. data/lib/puppet/status.rb +0 -40
  381. data/lib/puppet/util/connection.rb +0 -88
  382. data/lib/puppet/util/fact_dif.rb +0 -62
  383. data/lib/puppet/util/ssl.rb +0 -83
  384. data/lib/puppet/util/windows/api_types.rb +0 -309
  385. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  386. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  387. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  388. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  389. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  390. data/lib/puppet/vendor/pathspec/README.md +0 -53
  391. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  392. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  393. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  394. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  395. data/man/man8/puppet-key.8 +0 -126
  396. data/man/man8/puppet-man.8 +0 -76
  397. data/man/man8/puppet-status.8 +0 -108
  398. data/spec/integration/network/authconfig_spec.rb +0 -256
  399. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  400. data/spec/unit/application/man_spec.rb +0 -52
  401. data/spec/unit/capability_spec.rb +0 -414
  402. data/spec/unit/face/key_spec.rb +0 -9
  403. data/spec/unit/face/module/search_spec.rb +0 -231
  404. data/spec/unit/face/status_spec.rb +0 -9
  405. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  406. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  407. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  408. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  409. data/spec/unit/indirector/key/file_spec.rb +0 -78
  410. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  411. data/spec/unit/indirector/status/local_spec.rb +0 -10
  412. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  413. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  414. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  415. data/spec/unit/network/authstore_spec.rb +0 -422
  416. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  417. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  418. data/spec/unit/network/http/compression_spec.rb +0 -240
  419. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  420. data/spec/unit/network/http_spec.rb +0 -9
  421. data/spec/unit/network/rights_spec.rb +0 -439
  422. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  423. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  424. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  425. data/spec/unit/rest/route_spec.rb +0 -132
  426. data/spec/unit/ssl/host_spec.rb +0 -645
  427. data/spec/unit/ssl/key_spec.rb +0 -173
  428. data/spec/unit/ssl/validator_spec.rb +0 -278
  429. data/spec/unit/status_spec.rb +0 -45
  430. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -822,7 +822,7 @@ describe "Puppet::Util::Windows::Security", :if => Puppet::Util::Platform.window
822
822
  end
823
823
 
824
824
  describe "locked files" do
825
- let (:explorer) { File.join(Dir::WINDOWS, "explorer.exe") }
825
+ let (:explorer) { File.join(ENV['SystemRoot'], "explorer.exe") }
826
826
 
827
827
  it "should get the owner" do
828
828
  expect(winsec.get_owner(explorer)).to match(/^S-1-5-/)
@@ -103,7 +103,7 @@ class PuppetSpec::Puppetserver
103
103
  end
104
104
 
105
105
  def register_mounts(mounts: {})
106
- register_mount('/status/v1/simple/master', proc { |req, res| }, nil)
106
+ register_mount('/status/v1/simple/server', proc { |req, res| }, nil)
107
107
  register_mount('/puppet/v3/node', mounts[:node], NodeServlet)
108
108
  register_mount('/puppet/v3/catalog', mounts[:catalog], CatalogServlet)
109
109
  register_mount('/puppet/v3/file_metadatas', mounts[:file_metadatas], FileMetadatasServlet)
@@ -11,6 +11,7 @@ module PuppetSpec::Settings
11
11
  :confdir => { :type => :directory, :default => "test", :desc => "confdir" },
12
12
  :codedir => { :type => :directory, :default => "test", :desc => "codedir" },
13
13
  :vardir => { :type => :directory, :default => "test", :desc => "vardir" },
14
+ :publicdir => { :type => :directory, :default => "test", :desc => "publicdir" },
14
15
  :rundir => { :type => :directory, :default => "test", :desc => "rundir" },
15
16
  }.freeze
16
17
 
data/spec/spec_helper.rb CHANGED
@@ -145,6 +145,7 @@ RSpec.configure do |config|
145
145
 
146
146
  base = PuppetSpec::Files.tmpdir('tmp_settings')
147
147
  Puppet[:vardir] = File.join(base, 'var')
148
+ Puppet[:publicdir] = File.join(base, 'public')
148
149
  Puppet[:confdir] = File.join(base, 'etc')
149
150
  Puppet[:codedir] = File.join(base, 'code')
150
151
  Puppet[:logdir] = "$vardir/log"
@@ -152,6 +153,7 @@ RSpec.configure do |config|
152
153
  Puppet[:hiera_config] = File.join(base, 'hiera')
153
154
 
154
155
  FileUtils.mkdir_p Puppet[:statedir]
156
+ FileUtils.mkdir_p Puppet[:publicdir]
155
157
 
156
158
  Puppet::Test::TestHelper.before_each_test()
157
159
  end
@@ -24,8 +24,6 @@ end
24
24
 
25
25
  describe Puppet::Agent do
26
26
  before do
27
- allow(Puppet::Status.indirection).to receive(:find).and_return(Puppet::Status.new("version" => Puppet.version))
28
-
29
27
  @agent = Puppet::Agent.new(AgentTestClient, false)
30
28
 
31
29
  # make Puppet::Application safe for stubbing; restore in an :after block; silence warnings for this.
@@ -50,4 +50,90 @@ describe Puppet::Application::Facts do
50
50
  }.to exit_with(0)
51
51
  .and output(expected).to_stdout
52
52
  end
53
+
54
+ context 'when show action is called' do
55
+ let(:expected) { <<~END }
56
+ {
57
+ "filesystems": "apfs,autofs,devfs",
58
+ "macaddress": "64:52:11:22:03:25"
59
+ }
60
+ END
61
+
62
+ before :each do
63
+ Puppet::Node::Facts.indirection.terminus_class = :facter
64
+ allow(Facter).to receive(:resolve).and_return(values)
65
+ app.command_line.args = %w{show}
66
+ end
67
+
68
+ it 'correctly displays facts with default formatting' do
69
+ expect {
70
+ app.run
71
+ }.to exit_with(0)
72
+ .and output(expected).to_stdout
73
+ end
74
+
75
+ it 'displays a single fact value' do
76
+ app.command_line.args << 'filesystems' << '--value-only'
77
+ expect {
78
+ app.run
79
+ }.to exit_with(0)
80
+ .and output("apfs,autofs,devfs\n").to_stdout
81
+ end
82
+
83
+ it "warns and ignores value-only when multiple fact names are specified" do
84
+ app.command_line.args << 'filesystems' << 'macaddress' << '--value-only'
85
+ expect {
86
+ app.run
87
+ }.to exit_with(0)
88
+ .and output(expected).to_stdout
89
+ .and output(/it can only be used when querying for a single fact/).to_stderr
90
+ end
91
+
92
+ {
93
+ "type_hash" => [{'a' => 2}, "{\n \"a\": 2\n}"],
94
+ "type_array" => [[], "[\n\n]"],
95
+ "type_string" => ["str", "str"],
96
+ "type_int" => [1, "1"],
97
+ "type_float" => [1.0, "1.0"],
98
+ "type_true" => [true, "true"],
99
+ "type_false" => [false, "false"],
100
+ "type_nil" => [nil, ""],
101
+ "type_sym" => [:sym, "sym"]
102
+ }.each_pair do |name, values|
103
+ it "renders '#{name}' as '#{values.last}'" do
104
+ fact_value = values.first
105
+ fact_output = values.last
106
+
107
+ allow(Facter).to receive(:resolve).and_return({name => fact_value})
108
+
109
+ app.command_line.args << name << '--value-only'
110
+ expect {
111
+ app.run
112
+ }.to exit_with(0)
113
+ .and output("#{fact_output}\n").to_stdout
114
+ end
115
+ end
116
+ end
117
+
118
+ context 'when default action is called' do
119
+ let(:expected) { <<~END }
120
+ ---
121
+ filesystems: apfs,autofs,devfs
122
+ macaddress: 64:52:11:22:03:25
123
+ END
124
+
125
+ before :each do
126
+ Puppet::Node::Facts.indirection.terminus_class = :facter
127
+ allow(Facter).to receive(:resolve).and_return(values)
128
+ app.command_line.args = %w{--render-as yaml}
129
+ end
130
+
131
+ it 'calls show action' do
132
+ expect {
133
+ app.run
134
+ }.to exit_with(0)
135
+ .and output(expected).to_stdout
136
+ expect(app.action.name).to eq(:show)
137
+ end
138
+ end
53
139
  end
@@ -114,15 +114,15 @@ describe Puppet::Application::Filebucket do
114
114
  end
115
115
 
116
116
  it "should default to the first good server_list entry if server_list is set" do
117
- stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 200)
117
+ stub_request(:get, "https://foo:8140/status/v1/simple/server").to_return(status: 200)
118
118
  Puppet[:server_list] = "foo,bar,baz"
119
119
  expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "foo"))
120
120
  @filebucket.setup
121
121
  end
122
122
 
123
123
  it "should walk server_list until it finds a good entry" do
124
- stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 502)
125
- stub_request(:get, "https://bar:8140/status/v1/simple/master").to_return(status: 200)
124
+ stub_request(:get, "https://foo:8140/status/v1/simple/server").to_return(status: 502)
125
+ stub_request(:get, "https://bar:8140/status/v1/simple/server").to_return(status: 200)
126
126
  Puppet[:server_list] = "foo,bar,baz"
127
127
  expect(Puppet::FileBucket::Dipper).to receive(:new).with(hash_including(Server: "bar"))
128
128
  @filebucket.setup
@@ -130,6 +130,8 @@ describe Puppet::Application::Filebucket do
130
130
 
131
131
  # FileBucket catches any exceptions raised, logs them, then just exits
132
132
  it "raises an error if there are no functional servers in server_list" do
133
+ stub_request(:get, "https://foo:8140/status/v1/simple/server").to_return(status: 404)
134
+ stub_request(:get, "https://bar:8140/status/v1/simple/server").to_return(status: 404)
133
135
  stub_request(:get, "https://foo:8140/status/v1/simple/master").to_return(status: 404)
134
136
  stub_request(:get, "https://bar:8140/status/v1/simple/master").to_return(status: 404)
135
137
  Puppet[:server] = 'horacio'
@@ -145,7 +147,7 @@ describe Puppet::Application::Filebucket do
145
147
  end
146
148
 
147
149
  it "should take both the server and port specified in server_list" do
148
- stub_request(:get, "https://foo:632/status/v1/simple/master").to_return(status: 200)
150
+ stub_request(:get, "https://foo:632/status/v1/simple/server").to_return(status: 200)
149
151
  Puppet[:server_list] = "foo:632,bar:6215,baz:351"
150
152
  expect(Puppet::FileBucket::Dipper).to receive(:new).with({ :Server => "foo", :Port => 632 })
151
153
  @filebucket.setup
@@ -185,11 +187,11 @@ describe Puppet::Application::Filebucket do
185
187
  @filebucket.get
186
188
  end
187
189
 
188
- it "should call the client getfile method with the given md5" do
189
- md5="DEADBEEF"
190
- allow(@filebucket).to receive(:args).and_return([md5])
190
+ it "should call the client getfile method with the given digest" do
191
+ digest = 'DEADBEEF'
192
+ allow(@filebucket).to receive(:args).and_return([digest])
191
193
 
192
- expect(@client).to receive(:getfile).with(md5)
194
+ expect(@client).to receive(:getfile).with(digest)
193
195
 
194
196
  @filebucket.get
195
197
  end
@@ -223,12 +225,12 @@ describe Puppet::Application::Filebucket do
223
225
  end
224
226
 
225
227
  describe "the command restore" do
226
- it "should call the client getfile method with the given md5" do
227
- md5="DEADBEEF"
228
- file="testfile"
229
- allow(@filebucket).to receive(:args).and_return([file, md5])
228
+ it "should call the client getfile method with the given digest" do
229
+ digest = 'DEADBEEF'
230
+ file = 'testfile'
231
+ allow(@filebucket).to receive(:args).and_return([file, digest])
230
232
 
231
- expect(@client).to receive(:restore).with(file,md5)
233
+ expect(@client).to receive(:restore).with(file, digest)
232
234
 
233
235
  @filebucket.restore
234
236
  end
@@ -236,55 +238,55 @@ describe Puppet::Application::Filebucket do
236
238
 
237
239
  describe "the command diff" do
238
240
  it "should call the client diff method with 2 given checksums" do
239
- md5a="DEADBEEF"
240
- md5b="BEEF"
241
+ digest_a = 'DEADBEEF'
242
+ digest_b = 'BEEF'
241
243
  allow(Puppet::FileSystem).to receive(:exist?).and_return(false)
242
- allow(@filebucket).to receive(:args).and_return([md5a, md5b])
244
+ allow(@filebucket).to receive(:args).and_return([digest_a, digest_b])
243
245
 
244
- expect(@client).to receive(:diff).with(md5a,md5b, nil, nil)
246
+ expect(@client).to receive(:diff).with(digest_a, digest_b, nil, nil)
245
247
 
246
248
  @filebucket.diff
247
249
  end
248
250
 
249
- it "should call the clien diff with a path if the second argument is a file" do
250
- md5a="DEADBEEF"
251
- md5b="BEEF"
252
- allow(Puppet::FileSystem).to receive(:exist?).with(md5a).and_return(false)
253
- allow(Puppet::FileSystem).to receive(:exist?).with(md5b).and_return(true)
254
- allow(@filebucket).to receive(:args).and_return([md5a, md5b])
251
+ it "should call the client diff with a path if the second argument is a file" do
252
+ digest_a = 'DEADBEEF'
253
+ digest_b = 'BEEF'
254
+ allow(Puppet::FileSystem).to receive(:exist?).with(digest_a).and_return(false)
255
+ allow(Puppet::FileSystem).to receive(:exist?).with(digest_b).and_return(true)
256
+ allow(@filebucket).to receive(:args).and_return([digest_a, digest_b])
255
257
 
256
- expect(@client).to receive(:diff).with(md5a, nil, nil, md5b)
258
+ expect(@client).to receive(:diff).with(digest_a, nil, nil, digest_b)
257
259
 
258
260
  @filebucket.diff
259
261
  end
260
262
 
261
- it "should call the clien diff with a path if the first argument is a file" do
262
- md5a="DEADBEEF"
263
- md5b="BEEF"
264
- allow(Puppet::FileSystem).to receive(:exist?).with(md5a).and_return(true)
265
- allow(Puppet::FileSystem).to receive(:exist?).with(md5b).and_return(false)
266
- allow(@filebucket).to receive(:args).and_return([md5a, md5b])
263
+ it "should call the client diff with a path if the first argument is a file" do
264
+ digest_a = 'DEADBEEF'
265
+ digest_b = 'BEEF'
266
+ allow(Puppet::FileSystem).to receive(:exist?).with(digest_a).and_return(true)
267
+ allow(Puppet::FileSystem).to receive(:exist?).with(digest_b).and_return(false)
268
+ allow(@filebucket).to receive(:args).and_return([digest_a, digest_b])
267
269
 
268
- expect(@client).to receive(:diff).with(nil, md5b, md5a, nil)
270
+ expect(@client).to receive(:diff).with(nil, digest_b, digest_a, nil)
269
271
 
270
272
  @filebucket.diff
271
273
  end
272
274
 
273
275
  it "should call the clien diff with paths if the both arguments are files" do
274
- md5a="DEADBEEF"
275
- md5b="BEEF"
276
- allow(Puppet::FileSystem).to receive(:exist?).with(md5a).and_return(true)
277
- allow(Puppet::FileSystem).to receive(:exist?).with(md5b).and_return(true)
278
- allow(@filebucket).to receive(:args).and_return([md5a, md5b])
276
+ digest_a = 'DEADBEEF'
277
+ digest_b = 'BEEF'
278
+ allow(Puppet::FileSystem).to receive(:exist?).with(digest_a).and_return(true)
279
+ allow(Puppet::FileSystem).to receive(:exist?).with(digest_b).and_return(true)
280
+ allow(@filebucket).to receive(:args).and_return([digest_a, digest_b])
279
281
 
280
- expect(@client).to receive(:diff).with(nil, nil, md5a, md5b)
282
+ expect(@client).to receive(:diff).with(nil, nil, digest_a, digest_b)
281
283
 
282
284
  @filebucket.diff
283
285
  end
284
286
 
285
287
  it "should fail if only one checksum is given" do
286
- md5a="DEADBEEF"
287
- allow(@filebucket).to receive(:args).and_return([md5a])
288
+ digest_a = 'DEADBEEF'
289
+ allow(@filebucket).to receive(:args).and_return([digest_a])
288
290
 
289
291
  expect { @filebucket.diff }.to raise_error Puppet::Error
290
292
  end
@@ -92,7 +92,7 @@ describe Puppet::Application::Ssl, unless: Puppet::Util::Platform.jruby? do
92
92
  end
93
93
 
94
94
  context 'when submitting a CSR' do
95
- let(:csr_path) { File.join(Puppet[:requestdir], "#{name}.pem") }
95
+ let(:csr_path) { Puppet[:hostcsr] }
96
96
 
97
97
  before do
98
98
  ssl.command_line.args << 'submit_request'
@@ -318,7 +318,7 @@ describe Puppet::Application::Ssl, unless: Puppet::Util::Platform.jruby? do
318
318
  end
319
319
 
320
320
  it 'deletes the request' do
321
- path = File.join(Puppet[:requestdir], "#{Puppet[:certname]}.pem")
321
+ path = Puppet[:hostcsr]
322
322
  File.write(path, @host[:csr].to_pem)
323
323
 
324
324
  expects_command_to_pass(%r{Removed certificate request #{path}})
@@ -7,7 +7,7 @@ describe Puppet::CertificateFactory, :unless => RUBY_PLATFORM == 'java' do
7
7
  let :serial do OpenSSL::BN.new('12') end
8
8
  let :name do "example.local" end
9
9
  let :x509_name do OpenSSL::X509::Name.new([['CN', name]]) end
10
- let :key do Puppet::SSL::Key.new(name).generate end
10
+ let :key do OpenSSL::PKey::RSA.new(Puppet[:keylength]) end
11
11
  let :csr do
12
12
  csr = Puppet::SSL::CertificateRequest.new(name)
13
13
  csr.generate(key)
@@ -189,6 +189,8 @@ describe Puppet::Configurer::Downloader do
189
189
  end
190
190
 
191
191
  it "should return all changed file paths" do
192
+ Puppet[:ignore_plugin_errors] = true
193
+
192
194
  trans = double('transaction')
193
195
 
194
196
  catalog = double('catalog')
@@ -204,6 +206,8 @@ describe Puppet::Configurer::Downloader do
204
206
  end
205
207
 
206
208
  it "should yield the resources if a block is given" do
209
+ Puppet[:ignore_plugin_errors] = true
210
+
207
211
  trans = double('transaction')
208
212
 
209
213
  catalog = double('catalog')
@@ -221,6 +225,8 @@ describe Puppet::Configurer::Downloader do
221
225
  end
222
226
 
223
227
  it "should catch and log exceptions" do
228
+ Puppet[:ignore_plugin_errors] = true
229
+
224
230
  expect(Puppet).to receive(:log_exception)
225
231
  # The downloader creates a new catalog for each apply, and really the only object
226
232
  # that it is possible to stub for the purpose of generating a puppet error
@@ -230,8 +236,6 @@ describe Puppet::Configurer::Downloader do
230
236
  end
231
237
 
232
238
  it "raises an exception if catalog application fails" do
233
- Puppet[:ignore_plugin_errors] = false
234
-
235
239
  expect(@dler.file).to receive(:retrieve).and_raise(Puppet::Error, "testing")
236
240
 
237
241
  expect {
@@ -19,30 +19,68 @@ describe Puppet::Configurer::PluginHandler do
19
19
  end
20
20
  end
21
21
 
22
- it "downloads plugins, facts, and locales" do
23
- times_called = 0
24
- allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) { times_called += 1 }.and_return([])
22
+ context "when i18n is enabled" do
23
+ before :each do
24
+ Puppet[:disable_i18n] = false
25
+ end
25
26
 
26
- pluginhandler.download_plugins(environment)
27
- expect(times_called).to eq(3)
28
- end
27
+ it "downloads plugins, facts, and locales" do
28
+ times_called = 0
29
+ allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) { times_called += 1 }.and_return([])
29
30
 
30
- it "returns downloaded plugin, fact, and locale filenames" do
31
- times_called = 0
32
- allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
33
- times_called += 1
31
+ pluginhandler.download_plugins(environment)
32
+ expect(times_called).to eq(3)
33
+ end
34
34
 
35
- if times_called == 1
36
- %w[/a]
37
- elsif times_called == 2
38
- %w[/b]
39
- else
40
- %w[/c]
35
+ it "returns downloaded plugin, fact, and locale filenames" do
36
+ times_called = 0
37
+ allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
38
+ times_called += 1
39
+
40
+ if times_called == 1
41
+ %w[/a]
42
+ elsif times_called == 2
43
+ %w[/b]
44
+ else
45
+ %w[/c]
46
+ end
41
47
  end
48
+
49
+ expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b /c])
50
+ expect(times_called).to eq(3)
51
+ end
52
+ end
53
+
54
+ context "when i18n is disabled" do
55
+ before :each do
56
+ Puppet[:disable_i18n] = true
57
+ end
58
+
59
+ it "downloads plugins, facts, but no locales" do
60
+ times_called = 0
61
+ allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) { times_called += 1 }.and_return([])
62
+
63
+ pluginhandler.download_plugins(environment)
64
+ expect(times_called).to eq(2)
42
65
  end
43
66
 
44
- expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b /c])
45
- expect(times_called).to eq(3)
67
+ it "returns downloaded plugin, fact, and locale filenames" do
68
+ times_called = 0
69
+ allow_any_instance_of(Puppet::Configurer::Downloader).to receive(:evaluate) do
70
+ times_called += 1
71
+
72
+ if times_called == 1
73
+ %w[/a]
74
+ elsif times_called == 2
75
+ %w[/b]
76
+ else
77
+ %w[/c]
78
+ end
79
+ end
80
+
81
+ expect(pluginhandler.download_plugins(environment)).to match_array(%w[/a /b])
82
+ expect(times_called).to eq(2)
83
+ end
46
84
  end
47
85
  end
48
86