puppet 6.19.0 → 7.3.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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +33 -28
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +2 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +182 -104
  15. data/lib/puppet/application/agent.rb +1 -0
  16. data/lib/puppet/application/apply.rb +3 -2
  17. data/lib/puppet/application/device.rb +101 -104
  18. data/lib/puppet/application/filebucket.rb +15 -11
  19. data/lib/puppet/application/script.rb +1 -0
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +7 -0
  22. data/lib/puppet/configurer.rb +44 -36
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +71 -170
  25. data/lib/puppet/environments.rb +44 -75
  26. data/lib/puppet/face/config.rb +10 -0
  27. data/lib/puppet/face/epp.rb +12 -2
  28. data/lib/puppet/face/facts.rb +80 -6
  29. data/lib/puppet/face/help.rb +1 -1
  30. data/lib/puppet/face/node/clean.rb +8 -0
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/ffi/windows.rb +12 -0
  36. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  37. data/lib/puppet/ffi/windows/constants.rb +404 -0
  38. data/lib/puppet/ffi/windows/functions.rb +628 -0
  39. data/lib/puppet/ffi/windows/structs.rb +338 -0
  40. data/lib/puppet/file_serving/configuration.rb +0 -5
  41. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  42. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  43. data/lib/puppet/file_serving/mount.rb +1 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/epp.rb +1 -0
  46. data/lib/puppet/functions/inline_epp.rb +1 -0
  47. data/lib/puppet/generate/models/type/type.rb +4 -1
  48. data/lib/puppet/http.rb +22 -13
  49. data/lib/puppet/http/client.rb +164 -114
  50. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  51. data/lib/puppet/http/errors.rb +16 -0
  52. data/lib/puppet/http/external_client.rb +5 -7
  53. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  54. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  55. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  56. data/lib/puppet/http/proxy.rb +137 -0
  57. data/lib/puppet/http/redirector.rb +4 -12
  58. data/lib/puppet/http/resolver.rb +5 -15
  59. data/lib/puppet/http/resolver/server_list.rb +6 -10
  60. data/lib/puppet/http/resolver/settings.rb +4 -7
  61. data/lib/puppet/http/resolver/srv.rb +7 -11
  62. data/lib/puppet/http/response.rb +36 -54
  63. data/lib/puppet/http/response_converter.rb +24 -0
  64. data/lib/puppet/http/response_net_http.rb +42 -0
  65. data/lib/puppet/http/retry_after_handler.rb +4 -13
  66. data/lib/puppet/http/service.rb +12 -26
  67. data/lib/puppet/http/service/ca.rb +11 -22
  68. data/lib/puppet/http/service/compiler.rb +22 -69
  69. data/lib/puppet/http/service/file_server.rb +18 -27
  70. data/lib/puppet/http/service/puppetserver.rb +26 -12
  71. data/lib/puppet/http/service/report.rb +8 -10
  72. data/lib/puppet/http/session.rb +11 -20
  73. data/lib/puppet/{network/http → http}/site.rb +1 -2
  74. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  75. data/lib/puppet/indirector/fact_search.rb +60 -0
  76. data/lib/puppet/indirector/facts/facter.rb +24 -3
  77. data/lib/puppet/indirector/facts/json.rb +27 -0
  78. data/lib/puppet/indirector/facts/rest.rb +3 -22
  79. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  80. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  81. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  82. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  83. data/lib/puppet/indirector/file_server.rb +1 -8
  84. data/lib/puppet/indirector/generic_http.rb +0 -11
  85. data/lib/puppet/indirector/json.rb +5 -1
  86. data/lib/puppet/indirector/node/json.rb +8 -0
  87. data/lib/puppet/indirector/node/rest.rb +2 -4
  88. data/lib/puppet/indirector/report/json.rb +34 -0
  89. data/lib/puppet/indirector/report/rest.rb +3 -8
  90. data/lib/puppet/indirector/request.rb +0 -101
  91. data/lib/puppet/indirector/rest.rb +12 -263
  92. data/lib/puppet/module_tool/applications.rb +0 -1
  93. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  94. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  95. data/lib/puppet/network/authconfig.rb +2 -96
  96. data/lib/puppet/network/authorization.rb +13 -35
  97. data/lib/puppet/network/formats.rb +69 -1
  98. data/lib/puppet/network/http.rb +3 -3
  99. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  100. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  101. data/lib/puppet/network/http/connection.rb +247 -316
  102. data/lib/puppet/network/http/handler.rb +0 -1
  103. data/lib/puppet/network/http_pool.rb +16 -34
  104. data/lib/puppet/node.rb +1 -30
  105. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  106. data/lib/puppet/pal/pal_impl.rb +73 -18
  107. data/lib/puppet/parser/ast/leaf.rb +3 -2
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  109. data/lib/puppet/parser/compiler.rb +0 -198
  110. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  111. data/lib/puppet/parser/resource.rb +0 -69
  112. data/lib/puppet/parser/templatewrapper.rb +1 -1
  113. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  117. data/lib/puppet/pops/issues.rb +0 -5
  118. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  119. data/lib/puppet/pops/model/ast.pp +0 -42
  120. data/lib/puppet/pops/model/ast.rb +0 -290
  121. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  122. data/lib/puppet/pops/model/factory.rb +0 -45
  123. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  124. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  125. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  126. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  127. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  128. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  129. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  130. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  131. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  132. data/lib/puppet/pops/types/type_parser.rb +0 -4
  133. data/lib/puppet/pops/types/types.rb +0 -1
  134. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  135. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  137. data/lib/puppet/provider.rb +0 -13
  138. data/lib/puppet/provider/nameservice.rb +0 -18
  139. data/lib/puppet/provider/package/apt.rb +4 -0
  140. data/lib/puppet/provider/package/dpkg.rb +0 -10
  141. data/lib/puppet/provider/package/gem.rb +23 -3
  142. data/lib/puppet/provider/package/pip.rb +0 -1
  143. data/lib/puppet/provider/package/pkg.rb +0 -4
  144. data/lib/puppet/provider/package/portage.rb +1 -1
  145. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  146. data/lib/puppet/provider/service/smf.rb +191 -73
  147. data/lib/puppet/provider/user/aix.rb +2 -2
  148. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  149. data/lib/puppet/reference/configuration.rb +8 -5
  150. data/lib/puppet/reference/indirection.rb +1 -1
  151. data/lib/puppet/resource.rb +1 -89
  152. data/lib/puppet/resource/catalog.rb +1 -14
  153. data/lib/puppet/resource/type.rb +3 -119
  154. data/lib/puppet/resource/type_collection.rb +3 -48
  155. data/lib/puppet/runtime.rb +1 -2
  156. data/lib/puppet/settings.rb +88 -48
  157. data/lib/puppet/settings/alias_setting.rb +37 -0
  158. data/lib/puppet/settings/base_setting.rb +26 -2
  159. data/lib/puppet/settings/integer_setting.rb +17 -0
  160. data/lib/puppet/settings/port_setting.rb +15 -0
  161. data/lib/puppet/settings/priority_setting.rb +5 -4
  162. data/lib/puppet/ssl.rb +10 -6
  163. data/lib/puppet/ssl/base.rb +3 -5
  164. data/lib/puppet/ssl/certificate.rb +0 -6
  165. data/lib/puppet/ssl/certificate_request.rb +1 -12
  166. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  167. data/lib/puppet/ssl/oids.rb +3 -1
  168. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  169. data/lib/puppet/ssl/state_machine.rb +3 -1
  170. data/lib/puppet/ssl/verifier.rb +2 -0
  171. data/lib/puppet/test/test_helper.rb +1 -3
  172. data/lib/puppet/transaction.rb +1 -7
  173. data/lib/puppet/transaction/report.rb +2 -4
  174. data/lib/puppet/type.rb +0 -76
  175. data/lib/puppet/type/file.rb +5 -7
  176. data/lib/puppet/type/file/checksum.rb +1 -1
  177. data/lib/puppet/type/file/source.rb +1 -1
  178. data/lib/puppet/type/filebucket.rb +3 -3
  179. data/lib/puppet/type/package.rb +5 -13
  180. data/lib/puppet/type/user.rb +1 -1
  181. data/lib/puppet/util/autoload.rb +1 -8
  182. data/lib/puppet/util/execution.rb +0 -11
  183. data/lib/puppet/util/http_proxy.rb +2 -215
  184. data/lib/puppet/util/monkey_patches.rb +0 -46
  185. data/lib/puppet/util/posix.rb +54 -5
  186. data/lib/puppet/util/rdoc.rb +0 -7
  187. data/lib/puppet/util/retry_action.rb +1 -1
  188. data/lib/puppet/util/rubygems.rb +5 -1
  189. data/lib/puppet/util/run_mode.rb +9 -1
  190. data/lib/puppet/util/windows.rb +3 -8
  191. data/lib/puppet/util/windows/daemon.rb +360 -0
  192. data/lib/puppet/util/windows/error.rb +1 -0
  193. data/lib/puppet/util/windows/eventlog.rb +4 -9
  194. data/lib/puppet/util/windows/file.rb +8 -242
  195. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  196. data/lib/puppet/util/windows/process.rb +4 -226
  197. data/lib/puppet/util/windows/service.rb +9 -460
  198. data/lib/puppet/util/windows/string.rb +12 -13
  199. data/lib/puppet/util/yaml.rb +0 -22
  200. data/lib/puppet/vendor/require_vendored.rb +0 -1
  201. data/lib/puppet/version.rb +1 -1
  202. data/lib/puppet/x509.rb +5 -1
  203. data/lib/puppet/x509/cert_provider.rb +29 -1
  204. data/locales/puppet.pot +629 -1314
  205. data/man/man5/puppet.conf.5 +39 -99
  206. data/man/man8/puppet-agent.8 +2 -2
  207. data/man/man8/puppet-apply.8 +2 -2
  208. data/man/man8/puppet-catalog.8 +1 -1
  209. data/man/man8/puppet-config.8 +1 -1
  210. data/man/man8/puppet-describe.8 +1 -1
  211. data/man/man8/puppet-device.8 +2 -2
  212. data/man/man8/puppet-doc.8 +1 -1
  213. data/man/man8/puppet-epp.8 +1 -1
  214. data/man/man8/puppet-facts.8 +58 -9
  215. data/man/man8/puppet-filebucket.8 +6 -6
  216. data/man/man8/puppet-generate.8 +1 -1
  217. data/man/man8/puppet-help.8 +1 -1
  218. data/man/man8/puppet-lookup.8 +1 -1
  219. data/man/man8/puppet-module.8 +1 -58
  220. data/man/man8/puppet-node.8 +4 -1
  221. data/man/man8/puppet-parser.8 +1 -1
  222. data/man/man8/puppet-plugin.8 +1 -1
  223. data/man/man8/puppet-report.8 +4 -1
  224. data/man/man8/puppet-resource.8 +1 -1
  225. data/man/man8/puppet-script.8 +2 -2
  226. data/man/man8/puppet-ssl.8 +1 -1
  227. data/man/man8/puppet.8 +2 -2
  228. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  229. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  230. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  231. data/spec/integration/application/agent_spec.rb +151 -14
  232. data/spec/integration/application/apply_spec.rb +20 -1
  233. data/spec/integration/application/filebucket_spec.rb +16 -16
  234. data/spec/integration/application/help_spec.rb +2 -0
  235. data/spec/integration/application/plugin_spec.rb +23 -1
  236. data/spec/integration/defaults_spec.rb +7 -10
  237. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  238. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  239. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  240. data/spec/integration/network/http_pool_spec.rb +3 -21
  241. data/spec/integration/parser/catalog_spec.rb +0 -38
  242. data/spec/integration/parser/node_spec.rb +0 -9
  243. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  244. data/spec/integration/resource/type_collection_spec.rb +2 -6
  245. data/spec/integration/transaction_spec.rb +4 -9
  246. data/spec/integration/type/file_spec.rb +5 -4
  247. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  248. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  249. data/spec/integration/util/windows/registry_spec.rb +0 -10
  250. data/spec/integration/util/windows/security_spec.rb +1 -1
  251. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  252. data/spec/lib/puppet_spec/settings.rb +7 -1
  253. data/spec/spec_helper.rb +3 -4
  254. data/spec/unit/agent_spec.rb +8 -8
  255. data/spec/unit/application/agent_spec.rb +0 -1
  256. data/spec/unit/application/config_spec.rb +224 -4
  257. data/spec/unit/application/facts_spec.rb +35 -0
  258. data/spec/unit/application/filebucket_spec.rb +41 -41
  259. data/spec/unit/application/ssl_spec.rb +2 -2
  260. data/spec/unit/application_spec.rb +51 -9
  261. data/spec/unit/certificate_factory_spec.rb +1 -1
  262. data/spec/unit/configurer/downloader_spec.rb +6 -2
  263. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  264. data/spec/unit/configurer_spec.rb +12 -9
  265. data/spec/unit/confine/feature_spec.rb +1 -1
  266. data/spec/unit/confine_spec.rb +8 -2
  267. data/spec/unit/context/trusted_information_spec.rb +2 -6
  268. data/spec/unit/defaults_spec.rb +26 -32
  269. data/spec/unit/environments_spec.rb +96 -22
  270. data/spec/unit/face/config_spec.rb +27 -32
  271. data/spec/unit/face/facts_spec.rb +4 -0
  272. data/spec/unit/face/node_spec.rb +14 -13
  273. data/spec/unit/face/plugin_spec.rb +73 -33
  274. data/spec/unit/file_bucket/file_spec.rb +1 -1
  275. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
  276. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  277. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  278. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  279. data/spec/unit/forge/module_release_spec.rb +2 -7
  280. data/spec/unit/functions/camelcase_spec.rb +1 -1
  281. data/spec/unit/functions/capitalize_spec.rb +1 -1
  282. data/spec/unit/functions/downcase_spec.rb +1 -1
  283. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  284. data/spec/unit/functions/upcase_spec.rb +1 -1
  285. data/spec/unit/http/client_spec.rb +7 -8
  286. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  287. data/spec/unit/http/external_client_spec.rb +4 -4
  288. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  289. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  290. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  291. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  292. data/spec/unit/http/resolver_spec.rb +13 -13
  293. data/spec/unit/http/service/compiler_spec.rb +49 -62
  294. data/spec/unit/http/service/file_server_spec.rb +3 -3
  295. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  296. data/spec/unit/http/service_spec.rb +1 -2
  297. data/spec/unit/http/session_spec.rb +16 -14
  298. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  299. data/spec/unit/indirector/face_spec.rb +0 -1
  300. data/spec/unit/indirector/facts/facter_spec.rb +104 -1
  301. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  302. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  303. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  304. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  306. data/spec/unit/indirector/file_server_spec.rb +1 -15
  307. data/spec/unit/indirector/indirection_spec.rb +8 -12
  308. data/spec/unit/indirector/node/json_spec.rb +33 -0
  309. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  310. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  311. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  312. data/spec/unit/indirector/request_spec.rb +0 -264
  313. data/spec/unit/indirector/rest_spec.rb +98 -752
  314. data/spec/unit/indirector_spec.rb +2 -2
  315. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  316. data/spec/unit/network/authconfig_spec.rb +2 -132
  317. data/spec/unit/network/authorization_spec.rb +2 -55
  318. data/spec/unit/network/formats_spec.rb +45 -4
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
  320. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  321. data/spec/unit/network/http/api_spec.rb +10 -0
  322. data/spec/unit/network/http/connection_spec.rb +19 -41
  323. data/spec/unit/network/http/handler_spec.rb +0 -6
  324. data/spec/unit/network/http_pool_spec.rb +0 -4
  325. data/spec/unit/node/environment_spec.rb +33 -21
  326. data/spec/unit/node_spec.rb +2 -54
  327. data/spec/unit/parser/compiler_spec.rb +3 -19
  328. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  329. data/spec/unit/parser/resource_spec.rb +14 -8
  330. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  331. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  332. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  333. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  334. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  335. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  336. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  337. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  338. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  339. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  340. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  341. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  342. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  343. data/spec/unit/pops/visitor_spec.rb +1 -1
  344. data/spec/unit/property_spec.rb +1 -0
  345. data/spec/unit/provider/nameservice_spec.rb +66 -122
  346. data/spec/unit/provider/package/apt_spec.rb +4 -8
  347. data/spec/unit/provider/package/base_spec.rb +6 -5
  348. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  349. data/spec/unit/provider/package/gem_spec.rb +32 -0
  350. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  351. data/spec/unit/provider/package/pip_spec.rb +6 -11
  352. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  353. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  354. data/spec/unit/provider/service/smf_spec.rb +401 -165
  355. data/spec/unit/provider/service/windows_spec.rb +0 -1
  356. data/spec/unit/provider/user/aix_spec.rb +5 -0
  357. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  358. data/spec/unit/provider/user/pw_spec.rb +2 -0
  359. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  360. data/spec/unit/provider_spec.rb +6 -20
  361. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  362. data/spec/unit/resource/type_collection_spec.rb +2 -22
  363. data/spec/unit/resource/type_spec.rb +1 -1
  364. data/spec/unit/resource_spec.rb +11 -66
  365. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  366. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  367. data/spec/unit/settings/port_setting_spec.rb +31 -0
  368. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  369. data/spec/unit/settings_spec.rb +560 -228
  370. data/spec/unit/ssl/base_spec.rb +36 -4
  371. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  372. data/spec/unit/ssl/certificate_spec.rb +2 -11
  373. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  374. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  375. data/spec/unit/ssl/verifier_spec.rb +0 -21
  376. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  377. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  378. data/spec/unit/transaction/report_spec.rb +0 -2
  379. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  380. data/spec/unit/transaction_spec.rb +57 -82
  381. data/spec/unit/type/file/checksum_spec.rb +6 -6
  382. data/spec/unit/type/file/content_spec.rb +1 -2
  383. data/spec/unit/type/file/ensure_spec.rb +1 -1
  384. data/spec/unit/type/file/mode_spec.rb +1 -1
  385. data/spec/unit/type/file/selinux_spec.rb +0 -2
  386. data/spec/unit/type/file/source_spec.rb +0 -1
  387. data/spec/unit/type/file_spec.rb +12 -12
  388. data/spec/unit/type/group_spec.rb +13 -6
  389. data/spec/unit/type/package_spec.rb +1 -1
  390. data/spec/unit/type/resources_spec.rb +7 -7
  391. data/spec/unit/type/service_spec.rb +1 -1
  392. data/spec/unit/type/tidy_spec.rb +0 -1
  393. data/spec/unit/type_spec.rb +22 -2
  394. data/spec/unit/util/at_fork_spec.rb +2 -2
  395. data/spec/unit/util/autoload_spec.rb +5 -1
  396. data/spec/unit/util/backups_spec.rb +1 -4
  397. data/spec/unit/util/execution_spec.rb +15 -40
  398. data/spec/unit/util/inifile_spec.rb +6 -14
  399. data/spec/unit/util/log_spec.rb +8 -7
  400. data/spec/unit/util/logging_spec.rb +3 -3
  401. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  402. data/spec/unit/util/posix_spec.rb +363 -15
  403. data/spec/unit/util/rubygems_spec.rb +2 -2
  404. data/spec/unit/util/run_mode_spec.rb +21 -121
  405. data/spec/unit/util/selinux_spec.rb +76 -52
  406. data/spec/unit/util/storage_spec.rb +3 -1
  407. data/spec/unit/util/suidmanager_spec.rb +44 -41
  408. data/spec/unit/util/windows/string_spec.rb +1 -3
  409. data/spec/unit/util/yaml_spec.rb +0 -54
  410. data/spec/unit/util_spec.rb +13 -24
  411. metadata +66 -170
  412. data/conf/auth.conf +0 -150
  413. data/lib/puppet/application/cert.rb +0 -76
  414. data/lib/puppet/application/key.rb +0 -4
  415. data/lib/puppet/application/man.rb +0 -4
  416. data/lib/puppet/application/status.rb +0 -4
  417. data/lib/puppet/face/key.rb +0 -16
  418. data/lib/puppet/face/man.rb +0 -145
  419. data/lib/puppet/face/module/build.rb +0 -14
  420. data/lib/puppet/face/module/generate.rb +0 -14
  421. data/lib/puppet/face/module/search.rb +0 -103
  422. data/lib/puppet/face/status.rb +0 -51
  423. data/lib/puppet/indirector/certificate/file.rb +0 -9
  424. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  425. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  426. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  427. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  428. data/lib/puppet/indirector/file_content/http.rb +0 -22
  429. data/lib/puppet/indirector/key/file.rb +0 -46
  430. data/lib/puppet/indirector/key/memory.rb +0 -7
  431. data/lib/puppet/indirector/ssl_file.rb +0 -162
  432. data/lib/puppet/indirector/status.rb +0 -3
  433. data/lib/puppet/indirector/status/local.rb +0 -12
  434. data/lib/puppet/indirector/status/rest.rb +0 -27
  435. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  436. data/lib/puppet/network/auth_config_parser.rb +0 -90
  437. data/lib/puppet/network/authstore.rb +0 -283
  438. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  439. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  440. data/lib/puppet/network/http/base_pool.rb +0 -36
  441. data/lib/puppet/network/http/compression.rb +0 -127
  442. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  443. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  444. data/lib/puppet/network/rest_controller.rb +0 -2
  445. data/lib/puppet/network/rights.rb +0 -210
  446. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  447. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  448. data/lib/puppet/parser/environment_compiler.rb +0 -202
  449. data/lib/puppet/pops/types/enumeration.rb +0 -16
  450. data/lib/puppet/resource/capability_finder.rb +0 -154
  451. data/lib/puppet/rest/errors.rb +0 -15
  452. data/lib/puppet/rest/response.rb +0 -35
  453. data/lib/puppet/rest/route.rb +0 -85
  454. data/lib/puppet/rest/routes.rb +0 -135
  455. data/lib/puppet/ssl/host.rb +0 -505
  456. data/lib/puppet/ssl/key.rb +0 -61
  457. data/lib/puppet/ssl/validator.rb +0 -61
  458. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  459. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  460. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  461. data/lib/puppet/status.rb +0 -40
  462. data/lib/puppet/util/connection.rb +0 -88
  463. data/lib/puppet/util/ssl.rb +0 -83
  464. data/lib/puppet/util/windows/api_types.rb +0 -309
  465. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  466. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  467. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  468. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  469. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  470. data/lib/puppet/vendor/pathspec/README.md +0 -53
  471. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  472. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  473. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  474. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  475. data/man/man8/puppet-key.8 +0 -126
  476. data/man/man8/puppet-man.8 +0 -76
  477. data/man/man8/puppet-status.8 +0 -108
  478. data/spec/integration/application/config_spec.rb +0 -74
  479. data/spec/integration/network/authconfig_spec.rb +0 -256
  480. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  481. data/spec/unit/application/man_spec.rb +0 -52
  482. data/spec/unit/capability_spec.rb +0 -414
  483. data/spec/unit/face/catalog_spec.rb +0 -6
  484. data/spec/unit/face/key_spec.rb +0 -9
  485. data/spec/unit/face/module/search_spec.rb +0 -231
  486. data/spec/unit/face/module_spec.rb +0 -3
  487. data/spec/unit/face/status_spec.rb +0 -9
  488. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  489. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  490. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  491. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  492. data/spec/unit/indirector/key/file_spec.rb +0 -79
  493. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  494. data/spec/unit/indirector/status/local_spec.rb +0 -10
  495. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  496. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  497. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  498. data/spec/unit/network/authstore_spec.rb +0 -422
  499. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  500. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  501. data/spec/unit/network/http/compression_spec.rb +0 -240
  502. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  503. data/spec/unit/network/http_spec.rb +0 -9
  504. data/spec/unit/network/rights_spec.rb +0 -439
  505. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  506. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  507. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  508. data/spec/unit/rest/route_spec.rb +0 -132
  509. data/spec/unit/ssl/host_spec.rb +0 -650
  510. data/spec/unit/ssl/key_spec.rb +0 -173
  511. data/spec/unit/ssl/validator_spec.rb +0 -278
  512. data/spec/unit/status_spec.rb +0 -45
  513. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -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
@@ -28,7 +28,7 @@ describe Puppet::HTTP::Resolver do
28
28
  end
29
29
 
30
30
  it 'returns a service based on the current server_list setting' do
31
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 200)
31
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: 200)
32
32
 
33
33
  service = subject.resolve(session, :ca)
34
34
  expect(service).to be_an_instance_of(Puppet::HTTP::Service::Ca)
@@ -36,7 +36,7 @@ describe Puppet::HTTP::Resolver do
36
36
  end
37
37
 
38
38
  it 'returns a service based on the current server_list setting if the server returns any success codes' do
39
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 202)
39
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: 202)
40
40
 
41
41
  service = subject.resolve(session, :ca)
42
42
  expect(service).to be_an_instance_of(Puppet::HTTP::Service::Ca)
@@ -46,24 +46,24 @@ describe Puppet::HTTP::Resolver do
46
46
  it 'includes extra http headers' do
47
47
  Puppet[:http_extra_headers] = 'region:us-west'
48
48
 
49
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master")
49
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server")
50
50
  .with(headers: {'Region' => 'us-west'})
51
51
 
52
52
  subject.resolve(session, :ca)
53
53
  end
54
54
 
55
55
  it 'uses the provided ssl context during resolution' do
56
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 200)
56
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: 200)
57
57
 
58
58
  other_ctx = Puppet::SSL::SSLContext.new
59
- expect(client).to receive(:connect).with(URI("https://ca.example.com:8141/status/v1/simple/master"), options: {ssl_context: other_ctx}).and_call_original
59
+ expect(client).to receive(:connect).with(URI("https://ca.example.com:8141/status/v1/simple/server"), options: {ssl_context: other_ctx}).and_call_original
60
60
 
61
61
  subject.resolve(session, :ca, ssl_context: other_ctx)
62
62
  end
63
63
 
64
64
  it 'logs unsuccessful HTTP 500 responses' do
65
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: [500, 'Internal Server Error'])
66
- stub_request(:get, "https://apple.example.com:8142/status/v1/simple/master").to_return(status: 200)
65
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: [500, 'Internal Server Error'])
66
+ stub_request(:get, "https://apple.example.com:8142/status/v1/simple/server").to_return(status: 200)
67
67
 
68
68
  subject.resolve(session, :ca)
69
69
 
@@ -71,8 +71,8 @@ describe Puppet::HTTP::Resolver do
71
71
  end
72
72
 
73
73
  it 'cancels resolution if no servers in server_list are accessible' do
74
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 503)
75
- stub_request(:get, "https://apple.example.com:8142/status/v1/simple/master").to_return(status: 503)
74
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: 503)
75
+ stub_request(:get, "https://apple.example.com:8142/status/v1/simple/server").to_return(status: 503)
76
76
 
77
77
  canceled = false
78
78
  canceled_handler = lambda { |cancel| canceled = cancel }
@@ -82,8 +82,8 @@ describe Puppet::HTTP::Resolver do
82
82
  end
83
83
 
84
84
  it 'cycles through server_list until a valid server is found' do
85
- stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 503)
86
- stub_request(:get, "https://apple.example.com:8142/status/v1/simple/master").to_return(status: 200)
85
+ stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: 503)
86
+ stub_request(:get, "https://apple.example.com:8142/status/v1/simple/server").to_return(status: 200)
87
87
 
88
88
  service = subject.resolve(session, :ca)
89
89
  expect(service).to be_an_instance_of(Puppet::HTTP::Service::Ca)
@@ -91,8 +91,8 @@ describe Puppet::HTTP::Resolver do
91
91
  end
92
92
 
93
93
  it 'resolves once per session' do
94
- failed = stub_request(:get, "https://ca.example.com:8141/status/v1/simple/master").to_return(status: 503)
95
- passed = stub_request(:get, "https://apple.example.com:8142/status/v1/simple/master").to_return(status: 200)
94
+ failed = stub_request(:get, "https://ca.example.com:8141/status/v1/simple/server").to_return(status: 503)
95
+ passed = stub_request(:get, "https://apple.example.com:8142/status/v1/simple/server").to_return(status: 200)
96
96
 
97
97
  service = subject.resolve(session, :puppet)
98
98
  expect(service).to be_a(Puppet::HTTP::Service::Compiler)
@@ -11,7 +11,6 @@ describe Puppet::HTTP::Service::Compiler do
11
11
  let(:node) { Puppet::Node.new(certname) }
12
12
  let(:facts) { Puppet::Node::Facts.new(certname) }
13
13
  let(:catalog) { Puppet::Resource::Catalog.new(certname) }
14
- let(:status) { Puppet::Status.new }
15
14
  let(:formatter) { Puppet::Network::FormatHandler.format(:json) }
16
15
 
17
16
  before :each do
@@ -131,6 +130,26 @@ describe Puppet::HTTP::Service::Compiler do
131
130
  subject.post_catalog(certname, environment: 'production', facts: facts, checksum_type: %w[sha256 sha384])
132
131
  end
133
132
 
133
+ it 'does not accept msgpack by default' do
134
+ stub_request(:post, uri)
135
+ .with(headers: {'Accept' => 'application/vnd.puppet.rich+json, application/json, text/pson'})
136
+ .to_return(**catalog_response)
137
+
138
+ allow(Puppet.features).to receive(:msgpack?).and_return(false)
139
+
140
+ subject.post_catalog(certname, environment: environment, facts: facts)
141
+ end
142
+
143
+ it 'accepts msgpack & rich_json_msgpack if the gem is present' do
144
+ stub_request(:post, uri)
145
+ .with(headers: {'Accept' => 'application/vnd.puppet.rich+json, application/json, application/vnd.puppet.rich+msgpack, application/x-msgpack, text/pson'})
146
+ .to_return(**catalog_response)
147
+
148
+ allow(Puppet.features).to receive(:msgpack?).and_return(true)
149
+
150
+ subject.post_catalog(certname, environment: environment, facts: facts)
151
+ end
152
+
134
153
  it 'returns a deserialized catalog' do
135
154
  stub_request(:post, uri)
136
155
  .to_return(**catalog_response)
@@ -140,6 +159,35 @@ describe Puppet::HTTP::Service::Compiler do
140
159
  expect(cat.name).to eq(certname)
141
160
  end
142
161
 
162
+ it 'deserializes the catalog from msgpack', if: Puppet.features.msgpack? do
163
+ body = catalog.to_msgpack
164
+ formatter = Puppet::Network::FormatHandler.format(:msgpack)
165
+ catalog_response = { body: body, headers: {'Content-Type' => formatter.mime }}
166
+
167
+ stub_request(:post, uri)
168
+ .to_return(**catalog_response)
169
+
170
+ _, cat = subject.post_catalog(certname, environment: 'production', facts: facts)
171
+ expect(cat).to be_a(Puppet::Resource::Catalog)
172
+ expect(cat.name).to eq(certname)
173
+ end
174
+
175
+ it 'deserializes the catalog from rich msgpack', if: Puppet.features.msgpack? do
176
+ body = Puppet.override(rich_data: true) do
177
+ catalog.to_msgpack
178
+ end
179
+
180
+ formatter = Puppet::Network::FormatHandler.format(:rich_data_msgpack)
181
+ catalog_response = { body: body, headers: {'Content-Type' => formatter.mime }}
182
+
183
+ stub_request(:post, uri)
184
+ .to_return(**catalog_response)
185
+
186
+ _, cat = subject.post_catalog(certname, environment: 'production', facts: facts)
187
+ expect(cat).to be_a(Puppet::Resource::Catalog)
188
+ expect(cat.name).to eq(certname)
189
+ end
190
+
143
191
  it 'returns the request response' do
144
192
  stub_request(:post, uri)
145
193
  .to_return(**catalog_response)
@@ -417,67 +465,6 @@ describe Puppet::HTTP::Service::Compiler do
417
465
  end
418
466
  end
419
467
 
420
- context 'when getting status' do
421
- let(:uri) { %r{/puppet/v3/status/ziggy} }
422
- let(:status_response) { { body: formatter.render(status), headers: {'Content-Type' => formatter.mime } } }
423
-
424
- it 'always sends production' do
425
- stub_request(:get, uri)
426
- .with(query: hash_including("environment" => "production"))
427
- .to_return(**status_response)
428
-
429
- subject.get_status(certname)
430
- end
431
-
432
- it 'returns a deserialized status' do
433
- stub_request(:get, uri)
434
- .to_return(**status_response)
435
-
436
- _, s = subject.get_status(certname)
437
- expect(s).to be_a(Puppet::Status)
438
- expect(s.status).to eq("is_alive" => true)
439
- end
440
-
441
- it 'returns the request response' do
442
- stub_request(:get, uri)
443
- .to_return(**status_response)
444
-
445
- resp, _ = subject.get_status(certname)
446
- expect(resp).to be_a(Puppet::HTTP::Response)
447
- end
448
-
449
- it 'raises a response error if unsuccessful' do
450
- stub_request(:get, uri)
451
- .to_return(status: [500, "Server Error"])
452
-
453
- expect {
454
- subject.get_status(certname)
455
- }.to raise_error do |err|
456
- expect(err).to be_an_instance_of(Puppet::HTTP::ResponseError)
457
- expect(err.message).to eq('Server Error')
458
- expect(err.response.code).to eq(500)
459
- end
460
- end
461
-
462
- it 'raises a protocol error if the content-type header is missing' do
463
- stub_request(:get, uri)
464
- .to_return(body: "content-type is missing")
465
-
466
- expect {
467
- subject.get_status(certname)
468
- }.to raise_error(Puppet::HTTP::ProtocolError, /No content type in http response; cannot parse/)
469
- end
470
-
471
- it 'raises a serialization error if the content is invalid' do
472
- stub_request(:get, uri)
473
- .to_return(body: "this isn't valid JSON", headers: {'Content-Type' => 'application/json'})
474
-
475
- expect {
476
- subject.get_status(certname)
477
- }.to raise_error(Puppet::HTTP::SerializationError, /Failed to deserialize Puppet::Status from json/)
478
- end
479
- end
480
-
481
468
  context 'filebucket' do
482
469
  let(:filebucket_file) { Puppet::FileBucket::File.new('file to store') }
483
470
  let(:formatter) { Puppet::Network::FormatHandler.format(:binary) }