puppet 6.21.1 → 7.4.1

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 (402) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -4
  3. data/Gemfile.lock +5 -5
  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/provider.rb +0 -13
  114. data/lib/puppet/provider/nameservice.rb +0 -18
  115. data/lib/puppet/provider/package/dpkg.rb +0 -10
  116. data/lib/puppet/provider/package/gem.rb +23 -3
  117. data/lib/puppet/provider/package/pip.rb +0 -1
  118. data/lib/puppet/provider/package/pkg.rb +0 -4
  119. data/lib/puppet/provider/package/portage.rb +1 -1
  120. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  121. data/lib/puppet/provider/service/smf.rb +191 -73
  122. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  123. data/lib/puppet/reference/configuration.rb +7 -5
  124. data/lib/puppet/reference/indirection.rb +1 -1
  125. data/lib/puppet/resource.rb +1 -89
  126. data/lib/puppet/resource/catalog.rb +1 -14
  127. data/lib/puppet/resource/type.rb +3 -119
  128. data/lib/puppet/resource/type_collection.rb +3 -48
  129. data/lib/puppet/runtime.rb +1 -2
  130. data/lib/puppet/settings.rb +45 -33
  131. data/lib/puppet/settings/integer_setting.rb +17 -0
  132. data/lib/puppet/settings/port_setting.rb +15 -0
  133. data/lib/puppet/settings/priority_setting.rb +5 -4
  134. data/lib/puppet/ssl.rb +10 -6
  135. data/lib/puppet/ssl/base.rb +3 -5
  136. data/lib/puppet/ssl/certificate.rb +0 -6
  137. data/lib/puppet/ssl/certificate_request.rb +1 -12
  138. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  139. data/lib/puppet/ssl/oids.rb +3 -1
  140. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  141. data/lib/puppet/ssl/state_machine.rb +3 -1
  142. data/lib/puppet/ssl/verifier.rb +2 -0
  143. data/lib/puppet/test/test_helper.rb +1 -3
  144. data/lib/puppet/transaction.rb +1 -7
  145. data/lib/puppet/transaction/report.rb +2 -4
  146. data/lib/puppet/type.rb +0 -76
  147. data/lib/puppet/type/file.rb +5 -7
  148. data/lib/puppet/type/file/checksum.rb +1 -1
  149. data/lib/puppet/type/file/source.rb +1 -1
  150. data/lib/puppet/type/filebucket.rb +3 -3
  151. data/lib/puppet/type/package.rb +5 -13
  152. data/lib/puppet/type/user.rb +1 -1
  153. data/lib/puppet/util/execution.rb +0 -11
  154. data/lib/puppet/util/http_proxy.rb +2 -215
  155. data/lib/puppet/util/monkey_patches.rb +0 -46
  156. data/lib/puppet/util/rdoc.rb +0 -7
  157. data/lib/puppet/util/retry_action.rb +1 -1
  158. data/lib/puppet/util/run_mode.rb +9 -1
  159. data/lib/puppet/util/windows.rb +3 -8
  160. data/lib/puppet/util/windows/daemon.rb +360 -0
  161. data/lib/puppet/util/windows/error.rb +1 -0
  162. data/lib/puppet/util/windows/eventlog.rb +4 -9
  163. data/lib/puppet/util/windows/file.rb +8 -242
  164. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  165. data/lib/puppet/util/windows/process.rb +4 -226
  166. data/lib/puppet/util/windows/service.rb +9 -460
  167. data/lib/puppet/util/windows/string.rb +12 -13
  168. data/lib/puppet/util/yaml.rb +0 -22
  169. data/lib/puppet/vendor/require_vendored.rb +0 -1
  170. data/lib/puppet/version.rb +1 -1
  171. data/lib/puppet/x509.rb +5 -1
  172. data/lib/puppet/x509/cert_provider.rb +29 -1
  173. data/locales/puppet.pot +521 -1226
  174. data/man/man5/puppet.conf.5 +34 -94
  175. data/man/man8/puppet-facts.8 +56 -35
  176. data/man/man8/puppet-filebucket.8 +3 -3
  177. data/man/man8/puppet-module.8 +0 -57
  178. data/man/man8/puppet.8 +1 -1
  179. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  180. data/spec/integration/application/agent_spec.rb +24 -11
  181. data/spec/integration/application/apply_spec.rb +1 -1
  182. data/spec/integration/application/filebucket_spec.rb +16 -16
  183. data/spec/integration/application/help_spec.rb +2 -0
  184. data/spec/integration/application/plugin_spec.rb +23 -1
  185. data/spec/integration/defaults_spec.rb +7 -3
  186. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  187. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  188. data/spec/integration/network/http_pool_spec.rb +3 -21
  189. data/spec/integration/parser/catalog_spec.rb +0 -38
  190. data/spec/integration/parser/node_spec.rb +0 -9
  191. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  192. data/spec/integration/type/file_spec.rb +5 -4
  193. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  194. data/spec/integration/util/windows/security_spec.rb +1 -1
  195. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  196. data/spec/lib/puppet_spec/settings.rb +1 -0
  197. data/spec/spec_helper.rb +2 -0
  198. data/spec/unit/agent_spec.rb +0 -2
  199. data/spec/unit/application/facts_spec.rb +86 -0
  200. data/spec/unit/application/filebucket_spec.rb +41 -39
  201. data/spec/unit/application/ssl_spec.rb +2 -2
  202. data/spec/unit/certificate_factory_spec.rb +1 -1
  203. data/spec/unit/configurer/downloader_spec.rb +6 -2
  204. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  205. data/spec/unit/configurer_spec.rb +12 -9
  206. data/spec/unit/context/trusted_information_spec.rb +2 -6
  207. data/spec/unit/defaults_spec.rb +22 -47
  208. data/spec/unit/environments_spec.rb +0 -3
  209. data/spec/unit/face/facts_spec.rb +4 -0
  210. data/spec/unit/face/node_spec.rb +14 -2
  211. data/spec/unit/face/plugin_spec.rb +73 -33
  212. data/spec/unit/file_bucket/file_spec.rb +1 -1
  213. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -18
  214. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  215. data/spec/unit/functions/camelcase_spec.rb +1 -1
  216. data/spec/unit/functions/capitalize_spec.rb +1 -1
  217. data/spec/unit/functions/downcase_spec.rb +1 -1
  218. data/spec/unit/functions/upcase_spec.rb +1 -1
  219. data/spec/unit/http/client_spec.rb +7 -8
  220. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  221. data/spec/unit/http/external_client_spec.rb +4 -4
  222. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  223. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  224. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  225. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  226. data/spec/unit/http/resolver_spec.rb +13 -13
  227. data/spec/unit/http/service/compiler_spec.rb +0 -62
  228. data/spec/unit/http/service/file_server_spec.rb +3 -3
  229. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  230. data/spec/unit/http/service_spec.rb +0 -1
  231. data/spec/unit/http/session_spec.rb +16 -14
  232. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  233. data/spec/unit/indirector/facts/facter_spec.rb +113 -0
  234. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  235. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  236. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  237. data/spec/unit/indirector/file_server_spec.rb +1 -15
  238. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  239. data/spec/unit/indirector/request_spec.rb +0 -264
  240. data/spec/unit/indirector/rest_spec.rb +98 -752
  241. data/spec/unit/network/authconfig_spec.rb +2 -129
  242. data/spec/unit/network/authorization_spec.rb +2 -55
  243. data/spec/unit/network/formats_spec.rb +45 -4
  244. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -92
  245. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  246. data/spec/unit/network/http/api_spec.rb +10 -0
  247. data/spec/unit/network/http/connection_spec.rb +19 -41
  248. data/spec/unit/network/http/handler_spec.rb +0 -1
  249. data/spec/unit/network/http_pool_spec.rb +0 -4
  250. data/spec/unit/node/environment_spec.rb +33 -21
  251. data/spec/unit/node_spec.rb +2 -54
  252. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  253. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  254. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  255. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  256. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  257. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  258. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  259. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  260. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  261. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  262. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  263. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  264. data/spec/unit/pops/visitor_spec.rb +1 -1
  265. data/spec/unit/provider/nameservice_spec.rb +0 -57
  266. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  267. data/spec/unit/provider/package/gem_spec.rb +32 -0
  268. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  269. data/spec/unit/provider/service/smf_spec.rb +401 -165
  270. data/spec/unit/provider/service/windows_spec.rb +0 -1
  271. data/spec/unit/provider_spec.rb +0 -12
  272. data/spec/unit/resource/type_collection_spec.rb +2 -22
  273. data/spec/unit/resource_spec.rb +0 -56
  274. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  275. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  276. data/spec/unit/settings/port_setting_spec.rb +31 -0
  277. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  278. data/spec/unit/settings_spec.rb +17 -0
  279. data/spec/unit/ssl/base_spec.rb +36 -3
  280. data/spec/unit/ssl/certificate_request_spec.rb +19 -55
  281. data/spec/unit/ssl/certificate_spec.rb +2 -11
  282. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  283. data/spec/unit/ssl/verifier_spec.rb +0 -21
  284. data/spec/unit/transaction/report_spec.rb +0 -2
  285. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  286. data/spec/unit/transaction_spec.rb +45 -79
  287. data/spec/unit/type/file/checksum_spec.rb +6 -6
  288. data/spec/unit/type/file/content_spec.rb +1 -1
  289. data/spec/unit/type/file/ensure_spec.rb +1 -1
  290. data/spec/unit/type/file/mode_spec.rb +1 -1
  291. data/spec/unit/type/file/source_spec.rb +0 -1
  292. data/spec/unit/type/file_spec.rb +12 -6
  293. data/spec/unit/type/package_spec.rb +1 -1
  294. data/spec/unit/type_spec.rb +20 -0
  295. data/spec/unit/util/backups_spec.rb +0 -2
  296. data/spec/unit/util/execution_spec.rb +0 -29
  297. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  298. data/spec/unit/util/run_mode_spec.rb +21 -121
  299. data/spec/unit/util/windows/string_spec.rb +1 -3
  300. data/spec/unit/util/yaml_spec.rb +0 -54
  301. data/spec/unit/util_spec.rb +0 -18
  302. metadata +47 -162
  303. data/conf/auth.conf +0 -150
  304. data/lib/puppet/application/cert.rb +0 -76
  305. data/lib/puppet/application/key.rb +0 -4
  306. data/lib/puppet/application/man.rb +0 -4
  307. data/lib/puppet/application/status.rb +0 -4
  308. data/lib/puppet/face/key.rb +0 -16
  309. data/lib/puppet/face/man.rb +0 -145
  310. data/lib/puppet/face/module/build.rb +0 -14
  311. data/lib/puppet/face/module/generate.rb +0 -14
  312. data/lib/puppet/face/module/search.rb +0 -103
  313. data/lib/puppet/face/status.rb +0 -51
  314. data/lib/puppet/indirector/certificate/file.rb +0 -9
  315. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  316. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  317. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  318. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  319. data/lib/puppet/indirector/file_content/http.rb +0 -22
  320. data/lib/puppet/indirector/key/file.rb +0 -46
  321. data/lib/puppet/indirector/key/memory.rb +0 -7
  322. data/lib/puppet/indirector/ssl_file.rb +0 -162
  323. data/lib/puppet/indirector/status.rb +0 -3
  324. data/lib/puppet/indirector/status/local.rb +0 -12
  325. data/lib/puppet/indirector/status/rest.rb +0 -27
  326. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  327. data/lib/puppet/network/auth_config_parser.rb +0 -90
  328. data/lib/puppet/network/authstore.rb +0 -283
  329. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  330. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  331. data/lib/puppet/network/http/base_pool.rb +0 -36
  332. data/lib/puppet/network/http/compression.rb +0 -127
  333. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  334. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  335. data/lib/puppet/network/rest_controller.rb +0 -2
  336. data/lib/puppet/network/rights.rb +0 -210
  337. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  338. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  339. data/lib/puppet/parser/environment_compiler.rb +0 -202
  340. data/lib/puppet/pops/types/enumeration.rb +0 -16
  341. data/lib/puppet/resource/capability_finder.rb +0 -154
  342. data/lib/puppet/rest/errors.rb +0 -15
  343. data/lib/puppet/rest/response.rb +0 -35
  344. data/lib/puppet/rest/route.rb +0 -85
  345. data/lib/puppet/rest/routes.rb +0 -135
  346. data/lib/puppet/ssl/host.rb +0 -505
  347. data/lib/puppet/ssl/key.rb +0 -61
  348. data/lib/puppet/ssl/validator.rb +0 -61
  349. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  350. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  351. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  352. data/lib/puppet/status.rb +0 -40
  353. data/lib/puppet/util/connection.rb +0 -88
  354. data/lib/puppet/util/fact_dif.rb +0 -62
  355. data/lib/puppet/util/ssl.rb +0 -83
  356. data/lib/puppet/util/windows/api_types.rb +0 -309
  357. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  358. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  359. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  360. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  361. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  362. data/lib/puppet/vendor/pathspec/README.md +0 -53
  363. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  364. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  365. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  366. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  367. data/man/man8/puppet-key.8 +0 -126
  368. data/man/man8/puppet-man.8 +0 -76
  369. data/man/man8/puppet-status.8 +0 -108
  370. data/spec/integration/network/authconfig_spec.rb +0 -256
  371. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  372. data/spec/unit/application/man_spec.rb +0 -52
  373. data/spec/unit/capability_spec.rb +0 -414
  374. data/spec/unit/face/key_spec.rb +0 -9
  375. data/spec/unit/face/module/search_spec.rb +0 -231
  376. data/spec/unit/face/status_spec.rb +0 -9
  377. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  378. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  379. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  380. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  381. data/spec/unit/indirector/key/file_spec.rb +0 -78
  382. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  383. data/spec/unit/indirector/status/local_spec.rb +0 -10
  384. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  385. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  386. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  387. data/spec/unit/network/authstore_spec.rb +0 -422
  388. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  389. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  390. data/spec/unit/network/http/compression_spec.rb +0 -240
  391. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  392. data/spec/unit/network/http_spec.rb +0 -9
  393. data/spec/unit/network/rights_spec.rb +0 -439
  394. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  395. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  396. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  397. data/spec/unit/rest/route_spec.rb +0 -132
  398. data/spec/unit/ssl/host_spec.rb +0 -645
  399. data/spec/unit/ssl/key_spec.rb +0 -173
  400. data/spec/unit/ssl/validator_spec.rb +0 -278
  401. data/spec/unit/status_spec.rb +0 -45
  402. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -26,7 +26,7 @@ describe Puppet::FileBucket::File, :uses_checksums => true do
26
26
  end
27
27
 
28
28
  it "should require contents to be a string" do
29
- expect { Puppet::FileBucket::File.new(5) }.to raise_error(ArgumentError, /contents must be a String or Pathname, got a (?:Fixnum|Integer)$/)
29
+ expect { Puppet::FileBucket::File.new(5) }.to raise_error(ArgumentError, /contents must be a String or Pathname, got a Integer$/)
30
30
  end
31
31
 
32
32
  it "should complain about options other than :bucket_path" do
@@ -49,7 +49,7 @@ describe Puppet::FileServing::Configuration::Parser do
49
49
  expect { @parser.parse }.to raise_error(ArgumentError)
50
50
  end
51
51
 
52
- it "should fail if the value for path/allow/deny starts with an equals sign" do
52
+ it "should fail if the value for path starts with an equals sign" do
53
53
  write_config_file "[one]\npath = /testing"
54
54
  expect { @parser.parse }.to raise_error(ArgumentError)
55
55
  end
@@ -97,34 +97,38 @@ describe Puppet::FileServing::Configuration::Parser do
97
97
  end
98
98
 
99
99
  [:allow,:deny].each { |acl_type|
100
- it "should support inline comments in #{acl_type}" do
100
+ it "should ignore inline comments in #{acl_type}" do
101
101
  write_config_file "[one]\n#{acl_type} something \# will it work?\n"
102
102
 
103
- expect(@mount).to receive(:info)
104
- expect(@mount).to receive(acl_type).with("something")
105
- @parser.parse
103
+ expect(@parser.parse).to eq('one' => @mount)
106
104
  end
107
105
 
108
- it "should tell the mount to #{acl_type} from ACLs with varying spacing around commas" do
106
+ it "should ignore #{acl_type} from ACLs with varying spacing around commas" do
109
107
  write_config_file "[one]\n#{acl_type} someone,sometwo, somethree , somefour ,somefive\n"
110
108
 
111
- expect(@mount).to receive(:info).exactly(5).times
112
- expect(@mount).to receive(acl_type).exactly(5).times.with(eq('someone').or eq('sometwo').or eq('somethree').or eq('somefour').or eq('somefive'))
113
- @parser.parse
109
+ expect(@parser.parse).to eq('one' => @mount)
114
110
  end
115
111
 
116
- # each ip, with glob in the various octet positions
117
- ['100','4','42','*'].permutation.map {|permutes| permutes.join('.') }.each { |ip_pattern|
118
- it "should tell the mount to #{acl_type} from ACLs with glob at #{ip_pattern}" do
119
- write_config_file "[one]\n#{acl_type} #{ip_pattern}\n"
112
+ it "should log an error and print the location of the #{acl_type} rule" do
113
+ write_config_file(<<~CONFIG)
114
+ [one]
115
+ #{acl_type} one
116
+ CONFIG
117
+
118
+ expect(Puppet).to receive(:err).with(/Entry '#{acl_type} one' is unsupported and will be ignored at \(file: .*, line: 2\)/)
120
119
 
121
- expect(@mount).to receive(:info)
122
- expect(@mount).to receive(acl_type).with(ip_pattern)
123
- @parser.parse
124
- end
125
- }
120
+ @parser.parse
121
+ end
126
122
  }
127
123
 
124
+ it "should not generate an error when parsing 'allow *'" do
125
+ write_config_file "[one]\nallow *\n"
126
+
127
+ expect(Puppet).to receive(:err).never
128
+
129
+ @parser.parse
130
+ end
131
+
128
132
  it "should return comprehensible error message, if failed on invalid attribute" do
129
133
  write_config_file "[one]\ndo something\n"
130
134
 
@@ -90,17 +90,14 @@ describe Puppet::FileServing::Configuration do
90
90
 
91
91
  it "should allow all access to modules, plugins, and tasks if no fileserver.conf exists" do
92
92
  expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
93
- modules = double('modules', :empty? => true)
93
+ modules = double('modules')
94
94
  allow(Puppet::FileServing::Mount::Modules).to receive(:new).and_return(modules)
95
- expect(modules).to receive(:allow).with('*')
96
95
 
97
- plugins = double('plugins', :empty? => true)
96
+ plugins = double('plugins')
98
97
  allow(Puppet::FileServing::Mount::Plugins).to receive(:new).and_return(plugins)
99
- expect(plugins).to receive(:allow).with('*')
100
98
 
101
- tasks = double('tasks', :empty? => true)
99
+ tasks = double('tasks')
102
100
  allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
103
- expect(tasks).to receive(:allow).with('*')
104
101
 
105
102
  Puppet::FileServing::Configuration.configuration
106
103
  end
@@ -108,17 +105,14 @@ describe Puppet::FileServing::Configuration do
108
105
  it "should not allow access from all to modules, plugins, and tasks if the fileserver.conf provided some rules" do
109
106
  expect(Puppet::FileSystem).to receive(:exist?).and_return(false) # the file doesn't exist
110
107
 
111
- modules = double('modules', :empty? => false)
108
+ modules = double('modules')
112
109
  allow(Puppet::FileServing::Mount::Modules).to receive(:new).and_return(modules)
113
- expect(modules).not_to receive(:allow).with('*')
114
110
 
115
- plugins = double('plugins', :empty? => false)
111
+ plugins = double('plugins')
116
112
  allow(Puppet::FileServing::Mount::Plugins).to receive(:new).and_return(plugins)
117
- expect(plugins).not_to receive(:allow).with('*')
118
113
 
119
- tasks = double('tasks', :empty? => false)
114
+ tasks = double('tasks')
120
115
  allow(Puppet::FileServing::Mount::Tasks).to receive(:new).and_return(tasks)
121
- expect(tasks).not_to receive(:allow).with('*')
122
116
 
123
117
  Puppet::FileServing::Configuration.configuration
124
118
  end
@@ -15,7 +15,7 @@ describe 'the camelcase function' do
15
15
  expect(compile_to_catalog("notify { String(42.camelcase == 42): }")).to have_resource('Notify[true]')
16
16
  end
17
17
 
18
- it 'performs capitalize of international UTF-8 characters', :if => RUBY_VERSION >= "2.4" do
18
+ it 'performs camelcase of international UTF-8 characters' do
19
19
  expect(compile_to_catalog("notify { 'åäö_äö'.camelcase: }")).to have_resource('Notify[ÅäöÄö]')
20
20
  end
21
21
 
@@ -15,7 +15,7 @@ describe 'the capitalize function' do
15
15
  expect(compile_to_catalog("notify { String(42.capitalize == 42): }")).to have_resource('Notify[true]')
16
16
  end
17
17
 
18
- it 'performs capitalize of international UTF-8 characters', :if => RUBY_VERSION >= "2.4" do
18
+ it 'performs capitalize of international UTF-8 characters' do
19
19
  expect(compile_to_catalog("notify { 'åäö'.capitalize: }")).to have_resource('Notify[Åäö]')
20
20
  end
21
21
 
@@ -15,7 +15,7 @@ describe 'the downcase function' do
15
15
  expect(compile_to_catalog("notify { String(42.downcase == 42): }")).to have_resource('Notify[true]')
16
16
  end
17
17
 
18
- it 'performs capitalize of international UTF-8 characters', :if => RUBY_VERSION >= "2.4" do
18
+ it 'performs downcase of international UTF-8 characters' do
19
19
  expect(compile_to_catalog("notify { 'ÅÄÖ'.downcase: }")).to have_resource('Notify[åäö]')
20
20
  end
21
21
 
@@ -15,7 +15,7 @@ describe 'the upcase function' do
15
15
  expect(compile_to_catalog("notify { String(42.upcase == 42): }")).to have_resource('Notify[true]')
16
16
  end
17
17
 
18
- it 'performs capitalize of international UTF-8 characters', :if => RUBY_VERSION >= "2.4" do
18
+ it 'performs upcase of international UTF-8 characters' do
19
19
  expect(compile_to_catalog("notify { 'åäö'.upcase: }")).to have_resource('Notify[ÅÄÖ]')
20
20
  end
21
21
 
@@ -154,7 +154,7 @@ describe Puppet::HTTP::Client do
154
154
  stub_request(:get, uri)
155
155
 
156
156
  response = client.get(uri)
157
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
157
+ expect(response).to be_a(Puppet::HTTP::Response)
158
158
  expect(response).to be_success
159
159
  expect(response.code).to eq(200)
160
160
  end
@@ -224,7 +224,7 @@ describe Puppet::HTTP::Client do
224
224
  stub_request(:head, uri)
225
225
 
226
226
  response = client.head(uri)
227
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
227
+ expect(response).to be_a(Puppet::HTTP::Response)
228
228
  expect(response).to be_success
229
229
  expect(response.code).to eq(200)
230
230
  end
@@ -284,7 +284,7 @@ describe Puppet::HTTP::Client do
284
284
  stub_request(:put, uri)
285
285
 
286
286
  response = client.put(uri, "", headers: {'Content-Type' => 'text/plain'})
287
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
287
+ expect(response).to be_a(Puppet::HTTP::Response)
288
288
  expect(response).to be_success
289
289
  expect(response.code).to eq(200)
290
290
  end
@@ -353,7 +353,7 @@ describe Puppet::HTTP::Client do
353
353
  stub_request(:post, uri)
354
354
 
355
355
  response = client.post(uri, "", headers: {'Content-Type' => 'text/plain'})
356
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
356
+ expect(response).to be_a(Puppet::HTTP::Response)
357
357
  expect(response).to be_success
358
358
  expect(response.code).to eq(200)
359
359
  end
@@ -435,7 +435,7 @@ describe Puppet::HTTP::Client do
435
435
  stub_request(:delete, uri)
436
436
 
437
437
  response = client.delete(uri)
438
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
438
+ expect(response).to be_a(Puppet::HTTP::Response)
439
439
  expect(response).to be_success
440
440
  expect(response.code).to eq(200)
441
441
  end
@@ -771,7 +771,7 @@ describe Puppet::HTTP::Client do
771
771
  it "should close the connection before sleeping" do
772
772
  retry_after('42')
773
773
 
774
- site = Puppet::Network::HTTP::Site.from_uri(uri)
774
+ site = Puppet::HTTP::Site.from_uri(uri)
775
775
 
776
776
  http1 = Net::HTTP.new(site.host, site.port)
777
777
  http1.use_ssl = true
@@ -781,8 +781,7 @@ describe Puppet::HTTP::Client do
781
781
  http2.use_ssl = true
782
782
  allow(http2).to receive(:started?).and_return(true)
783
783
 
784
-
785
- pool = Puppet::Network::HTTP::Pool.new(15)
784
+ pool = Puppet::HTTP::Pool.new(15)
786
785
  client = Puppet::HTTP::Client.new(pool: pool)
787
786
 
788
787
  # The "with_connection" method is required to yield started connections
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'puppet/network/resolver'
2
+ require 'puppet/http'
3
3
 
4
- describe Puppet::Network::Resolver do
4
+ describe Puppet::HTTP::DNS do
5
5
  before do
6
6
  @dns_mock_object = double('dns')
7
7
  allow(Resolv::DNS).to receive(:new).and_return(@dns_mock_object)
@@ -26,7 +26,7 @@ describe Puppet::Network::Resolver do
26
26
  end
27
27
  end
28
28
 
29
- let(:resolver) { Puppet::Network::Resolver.new }
29
+ let(:resolver) { described_class.new }
30
30
 
31
31
  describe 'when the domain is not known' do
32
32
  before :each do
@@ -9,7 +9,7 @@ class Puppet::HTTP::TestExternal
9
9
  @host = host
10
10
  @port = port
11
11
  @options = options
12
- @factory = Puppet::Network::HTTP::Factory.new
12
+ @factory = Puppet::HTTP::Factory.new
13
13
  end
14
14
 
15
15
  def get(path, headers = {}, options = {})
@@ -27,7 +27,7 @@ class Puppet::HTTP::TestExternal
27
27
  request.basic_auth(options[:basic_auth][:user], options[:basic_auth][:password])
28
28
  end
29
29
 
30
- site = Puppet::Network::HTTP::Site.new(@options[:use_ssl] ? 'https' : 'http', @host, @port)
30
+ site = Puppet::HTTP::Site.new(@options[:use_ssl] ? 'https' : 'http', @host, @port)
31
31
  http = @factory.create_connection(site)
32
32
  http.start
33
33
  begin
@@ -61,7 +61,7 @@ describe Puppet::HTTP::ExternalClient do
61
61
  stub_request(:get, uri)
62
62
 
63
63
  response = client.get(uri)
64
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
64
+ expect(response).to be_a(Puppet::HTTP::Response)
65
65
  expect(response).to be_success
66
66
  expect(response.code).to eq(200)
67
67
  end
@@ -113,7 +113,7 @@ describe Puppet::HTTP::ExternalClient do
113
113
  stub_request(:post, uri)
114
114
 
115
115
  response = client.post(uri, "", headers: {'Content-Type' => 'text/plain'})
116
- expect(response).to be_an_instance_of(Puppet::HTTP::Response)
116
+ expect(response).to be_a(Puppet::HTTP::Response)
117
117
  expect(response).to be_success
118
118
  expect(response.code).to eq(200)
119
119
  end
@@ -1,22 +1,16 @@
1
1
  require 'spec_helper'
2
- require 'puppet/network/http'
3
- require 'puppet/util/http_proxy'
2
+ require 'puppet/http'
4
3
 
5
- describe Puppet::Network::HTTP::Factory do
4
+ describe Puppet::HTTP::Factory do
6
5
  before(:all) do
7
6
  ENV['http_proxy'] = nil
8
7
  ENV['HTTP_PROXY'] = nil
9
8
  end
10
- before :each do
11
- Puppet::SSL::Key.indirection.terminus_class = :memory
12
- Puppet::SSL::CertificateRequest.indirection.terminus_class = :memory
13
- end
14
9
 
15
- let(:site) { Puppet::Network::HTTP::Site.new('https', 'www.example.com', 443) }
10
+ let(:site) { Puppet::HTTP::Site.new('https', 'www.example.com', 443) }
16
11
 
17
12
  def create_connection(site)
18
- factory = Puppet::Network::HTTP::Factory.new
19
-
13
+ factory = described_class.new
20
14
  factory.create_connection(site)
21
15
  end
22
16
 
@@ -124,7 +118,7 @@ describe Puppet::Network::HTTP::Factory do
124
118
  expect(conn.keep_alive_timeout).to eq(2147483647)
125
119
  end
126
120
 
127
- it "disables ruby's max retry on 2.5 and up", if: RUBY_VERSION.to_f >= 2.5 do
121
+ it "disables ruby's max retry" do
128
122
  conn = create_connection(site)
129
123
 
130
124
  expect(conn.max_retries).to eq(0)
@@ -1,15 +1,15 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'puppet/network/http'
3
+ require 'puppet/http'
4
4
 
5
- describe Puppet::Network::HTTP::Session do
5
+ describe Puppet::HTTP::PoolEntry do
6
6
  let(:connection) { double('connection') }
7
7
  let(:verifier) { double('verifier') }
8
8
 
9
9
  def create_session(connection, expiration_time = nil)
10
10
  expiration_time ||= Time.now + 60 * 60
11
11
 
12
- Puppet::Network::HTTP::Session.new(connection, verifier, expiration_time)
12
+ described_class.new(connection, verifier, expiration_time)
13
13
  end
14
14
 
15
15
  it 'provides access to its connection' do
@@ -4,18 +4,13 @@ require 'openssl'
4
4
  require 'puppet/network/http'
5
5
  require 'puppet/network/http_pool'
6
6
 
7
- describe Puppet::Network::HTTP::Pool do
8
- before :each do
9
- Puppet::SSL::Key.indirection.terminus_class = :memory
10
- Puppet::SSL::CertificateRequest.indirection.terminus_class = :memory
11
- end
12
-
7
+ describe Puppet::HTTP::Pool do
13
8
  let(:site) do
14
- Puppet::Network::HTTP::Site.new('https', 'rubygems.org', 443)
9
+ Puppet::HTTP::Site.new('https', 'rubygems.org', 443)
15
10
  end
16
11
 
17
12
  let(:different_site) do
18
- Puppet::Network::HTTP::Site.new('https', 'github.com', 443)
13
+ Puppet::HTTP::Site.new('https', 'github.com', 443)
19
14
  end
20
15
 
21
16
  let(:ssl_context) { Puppet::SSL::SSLContext.new }
@@ -26,11 +21,11 @@ describe Puppet::Network::HTTP::Pool do
26
21
  end
27
22
 
28
23
  def create_pool
29
- Puppet::Network::HTTP::Pool.new(15)
24
+ Puppet::HTTP::Pool.new(15)
30
25
  end
31
26
 
32
27
  def create_pool_with_connections(site, *connections)
33
- pool = Puppet::Network::HTTP::Pool.new(15)
28
+ pool = Puppet::HTTP::Pool.new(15)
34
29
  connections.each do |conn|
35
30
  pool.release(site, verifier, conn)
36
31
  end
@@ -38,7 +33,7 @@ describe Puppet::Network::HTTP::Pool do
38
33
  end
39
34
 
40
35
  def create_pool_with_http_connections(site, *connections)
41
- pool = Puppet::Network::HTTP::Pool.new(15)
36
+ pool = Puppet::HTTP::Pool.new(15)
42
37
  connections.each do |conn|
43
38
  pool.release(site, nil, conn)
44
39
  end
@@ -48,7 +43,7 @@ describe Puppet::Network::HTTP::Pool do
48
43
  def create_pool_with_expired_connections(site, *connections)
49
44
  # setting keepalive timeout to -1 ensures any newly added
50
45
  # connections have already expired
51
- pool = Puppet::Network::HTTP::Pool.new(-1)
46
+ pool = Puppet::HTTP::Pool.new(-1)
52
47
  connections.each do |conn|
53
48
  pool.release(site, verifier, conn)
54
49
  end
@@ -230,11 +225,11 @@ describe Puppet::Network::HTTP::Pool do
230
225
  end
231
226
 
232
227
  it 'returns a new HTTP connection if the cached connection is HTTPS' do
233
- https_site = Puppet::Network::HTTP::Site.new('https', 'www.example.com', 443)
228
+ https_site = Puppet::HTTP::Site.new('https', 'www.example.com', 443)
234
229
  old_conn = create_connection(https_site)
235
230
  pool = create_pool_with_connections(https_site, old_conn)
236
231
 
237
- http_site = Puppet::Network::HTTP::Site.new('http', 'www.example.com', 443)
232
+ http_site = Puppet::HTTP::Site.new('http', 'www.example.com', 443)
238
233
  new_conn = create_http_connection(http_site)
239
234
  allow(pool.factory).to receive(:create_connection).with(http_site).and_return(new_conn)
240
235
 
@@ -242,11 +237,11 @@ describe Puppet::Network::HTTP::Pool do
242
237
  end
243
238
 
244
239
  it 'returns a new HTTPS connection if the cached connection is HTTP' do
245
- http_site = Puppet::Network::HTTP::Site.new('http', 'www.example.com', 443)
240
+ http_site = Puppet::HTTP::Site.new('http', 'www.example.com', 443)
246
241
  old_conn = create_http_connection(http_site)
247
242
  pool = create_pool_with_http_connections(http_site, old_conn)
248
243
 
249
- https_site = Puppet::Network::HTTP::Site.new('https', 'www.example.com', 443)
244
+ https_site = Puppet::HTTP::Site.new('https', 'www.example.com', 443)
250
245
  new_conn = create_connection(https_site)
251
246
  allow(pool.factory).to receive(:create_connection).with(https_site).and_return(new_conn)
252
247
 
@@ -279,7 +274,7 @@ describe Puppet::Network::HTTP::Pool do
279
274
  end
280
275
 
281
276
  it 'returns a cached connection if both connections are http' do
282
- http_site = Puppet::Network::HTTP::Site.new('http', 'www.example.com', 80)
277
+ http_site = Puppet::HTTP::Site.new('http', 'www.example.com', 80)
283
278
  old_conn = create_http_connection(http_site)
284
279
  pool = create_pool_with_http_connections(http_site, old_conn)
285
280
 
@@ -1,10 +1,8 @@
1
1
  require 'uri'
2
2
  require 'spec_helper'
3
- require 'puppet/util/http_proxy'
4
-
5
- describe Puppet::Util::HttpProxy do
6
- include Puppet::Network::HTTP::Compression.module
3
+ require 'puppet/http'
7
4
 
5
+ describe Puppet::HTTP::Proxy do
8
6
  before(:all) do
9
7
  ENV['http_proxy'] = nil
10
8
  ENV['HTTP_PROXY'] = nil
@@ -346,69 +344,4 @@ describe Puppet::Util::HttpProxy do
346
344
  end
347
345
  end
348
346
  end
349
-
350
- describe '.request_with_redirects' do
351
- let(:dest) { URI.parse('http://mydomain.com/some/path') }
352
-
353
- it 'generates accept and accept-encoding headers' do
354
- stub_request(:head, dest)
355
-
356
- headers = {
357
- 'Accept' => '*/*',
358
- 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
359
- 'User-Agent' => /Puppet/
360
- }
361
- stub_request(:get, dest).with(headers: headers)
362
-
363
- subject.request_with_redirects(dest, :get, 0)
364
- end
365
-
366
- it 'can return a compressed response body' do
367
- stub_request(:head, dest)
368
-
369
- compressed_body = [
370
- 0x1f, 0x8b, 0x08, 0x08, 0xe9, 0x08, 0x7a, 0x5a, 0x00, 0x03,
371
- 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x00, 0xcb, 0xc8, 0xe4, 0x02,
372
- 0x00, 0x7a, 0x7a, 0x6f, 0xed, 0x03, 0x00, 0x00, 0x00
373
- ].pack('C*')
374
-
375
- stub_request(:get, dest).to_return(status: 200, body: compressed_body, headers: { 'Content-Encoding' => 'gzip' })
376
-
377
- expect(
378
- uncompress_body(subject.request_with_redirects(dest, :get, 0))
379
- ).to eq("hi\n")
380
- end
381
-
382
- it 'generates accept and accept-encoding headers when a block is provided' do
383
- stub_request(:head, dest)
384
-
385
- headers = {
386
- 'Accept' => '*/*',
387
- 'Accept-Encoding' => 'gzip;q=1.0,deflate;q=0.6,identity;q=0.3',
388
- 'User-Agent' => /Puppet/
389
- }
390
- stub_request(:get, dest).with(headers: headers)
391
-
392
- subject.request_with_redirects(dest, :get, 0) do
393
- # unused
394
- end
395
- end
396
-
397
- it 'only makes a single HEAD request' do
398
- stub_request(:head, dest)
399
-
400
- subject.request_with_redirects(dest, :head, 0)
401
- end
402
-
403
- it 'preserves query parameters' do
404
- url = URI.parse('http://mydomain.com/some/path?foo=bar')
405
-
406
- stub_request(:head, url)
407
- stub_request(:get, url)
408
-
409
- subject.request_with_redirects(url, :get, 0) do
410
- # unused
411
- end
412
- end
413
- end
414
347
  end