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
@@ -1,135 +1,8 @@
1
1
  require 'spec_helper'
2
-
3
2
  require 'puppet/network/authconfig'
4
3
 
5
- describe Puppet::Network::DefaultAuthProvider do
6
- before :each do
7
- allow(Puppet::FileSystem).to receive(:stat).and_return(double('stat', :ctime => :now))
8
- allow(Time).to receive(:now).and_return(Time.now)
9
- end
10
-
11
- describe "when initializing" do
12
- it "inserts default ACLs after setting initial rights" do
13
- expect_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
14
- Puppet::Network::DefaultAuthProvider.new
15
- end
16
- end
17
-
18
- describe "when defining an acl with mk_acl" do
19
- before :each do
20
- allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
21
- @authprovider = Puppet::Network::DefaultAuthProvider.new
22
- end
23
-
24
- it "should create a new right for each default acl" do
25
- @authprovider.mk_acl(:acl => '/')
26
- expect(@authprovider.rights['/']).to be
27
- end
28
-
29
- it "allows everyone for each default right" do
30
- @authprovider.mk_acl(:acl => '/')
31
- expect(@authprovider.rights['/']).to be_globalallow
32
- end
33
-
34
- it "accepts an argument to restrict the method" do
35
- @authprovider.mk_acl(:acl => '/', :method => :find)
36
- expect(@authprovider.rights['/'].methods).to eq([:find])
37
- end
38
-
39
- it "creates rights with authentication set to true by default" do
40
- @authprovider.mk_acl(:acl => '/')
41
- expect(@authprovider.rights['/'].authentication).to be_truthy
42
- end
43
-
44
- it "accepts an argument to set the authentication requirement" do
45
- @authprovider.mk_acl(:acl => '/', :authenticated => :any)
46
- expect(@authprovider.rights['/'].authentication).to be_falsey
47
- end
48
- end
49
-
50
- describe "when adding default ACLs" do
51
- before :each do
52
- allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
53
- @authprovider = Puppet::Network::DefaultAuthProvider.new
54
- allow_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl).and_call_original
55
- end
56
-
57
- Puppet::Network::DefaultAuthProvider::default_acl.each do |acl|
58
- it "should create a default right for #{acl[:acl]}" do
59
- allow(@authprovider).to receive(:mk_acl)
60
- expect(@authprovider).to receive(:mk_acl).with(acl)
61
- @authprovider.insert_default_acl
62
- end
63
- end
64
-
65
- it "should log at info loglevel" do
66
- expect(Puppet).to receive(:info).at_least(:once)
67
- @authprovider.insert_default_acl
68
- end
69
-
70
- it "creates an empty catch-all rule for '/' for any authentication request state" do
71
- allow(@authprovider).to receive(:mk_acl)
72
-
73
- @authprovider.insert_default_acl
74
- expect(@authprovider.rights['/']).to be_empty
75
- expect(@authprovider.rights['/'].authentication).to be_falsey
76
- end
77
-
78
- it '(CVE-2013-2275) allows report submission only for the node matching the certname by default' do
79
- acl = {
80
- :acl => "~ ^#{Puppet::Network::HTTP::MASTER_URL_PREFIX}\/v3\/report\/([^\/]+)$",
81
- :method => :save,
82
- :allow => '$1',
83
- :authenticated => true
84
- }
85
- allow(@authprovider).to receive(:mk_acl)
86
- expect(@authprovider).to receive(:mk_acl).with(acl)
87
- @authprovider.insert_default_acl
88
- end
89
- end
90
-
91
- describe "when checking authorization" do
92
- it "should ask for authorization to the ACL subsystem" do
93
- params = {
94
- :ip => "127.0.0.1",
95
- :node => "me",
96
- :environment => :env,
97
- :authenticated => true
98
- }
99
-
100
- expect_any_instance_of(Puppet::Network::Rights).to receive(:is_request_forbidden_and_why?).with(:save, "/path/to/resource", params)
101
-
102
- described_class.new.check_authorization(:save, "/path/to/resource", params)
103
- end
104
- end
105
- end
106
-
107
4
  describe Puppet::Network::AuthConfig do
108
- after :each do
109
- Puppet::Network::AuthConfig.authprovider_class = nil
110
- end
111
-
112
- class TestAuthProvider
113
- def initialize(rights=nil); end
114
- def check_authorization(method, path, params); end
115
- end
116
-
117
- it "instantiates authprovider_class with rights" do
118
- Puppet::Network::AuthConfig.authprovider_class = TestAuthProvider
119
- rights = Puppet::Network::Rights.new
120
- expect(TestAuthProvider).to receive(:new).with(rights)
121
- described_class.new(rights)
122
- end
123
-
124
- it "delegates authorization check to authprovider_class" do
125
- Puppet::Network::AuthConfig.authprovider_class = TestAuthProvider
126
- expect_any_instance_of(TestAuthProvider).to receive(:check_authorization).with(:save, '/path/to/resource', {})
127
- described_class.new.check_authorization(:save, '/path/to/resource', {})
128
- end
129
-
130
- it "uses DefaultAuthProvider by default" do
131
- Puppet::Network::AuthConfig.authprovider_class = nil
132
- expect_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:check_authorization).with(:save, '/path/to/resource', {})
133
- described_class.new.check_authorization(:save, '/path/to/resource', {})
5
+ it "accepts an auth provider class" do
6
+ Puppet::Network::AuthConfig.authprovider_class = Object
134
7
  end
135
8
  end
@@ -1,61 +1,8 @@
1
1
  require 'spec_helper'
2
- require 'puppet/network/http'
3
- require 'puppet/network/http/api/indirected_routes'
4
2
  require 'puppet/network/authorization'
5
3
 
6
4
  describe Puppet::Network::Authorization do
7
- class AuthTest
8
- include Puppet::Network::Authorization
9
- end
10
-
11
- subject { AuthTest.new }
12
-
13
- context "when creating an authconfig object" do
14
- before :each do
15
- # Other tests may have created an authconfig, so we have to undo that.
16
- @orig_auth_config = Puppet::Network::AuthConfigLoader.instance_variable_get(:@auth_config)
17
- @orig_auth_config_file = Puppet::Network::AuthConfigLoader.instance_variable_get(:@auth_config_file)
18
-
19
- Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config, nil)
20
- Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config_file, nil)
21
- end
22
-
23
- after :each do
24
- Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config, @orig_auth_config)
25
- Puppet::Network::AuthConfigLoader.instance_variable_set(:@auth_config_file, @orig_auth_config_file)
26
- end
27
-
28
- it "creates default ACL entries if no file has been read" do
29
- expect(Puppet::Network::AuthConfigParser).to receive(:new_from_file).and_raise(Errno::ENOENT)
30
- expect_any_instance_of(Puppet::Network::DefaultAuthProvider).to receive(:insert_default_acl)
31
-
32
- subject.authconfig
33
- end
34
- end
35
-
36
- class TestAuthConfig
37
- def check_authorization(method, path, params); end
38
- end
39
-
40
- class TestAuthConfigLoader
41
- def self.authconfig
42
- TestAuthConfig.new
43
- end
44
- end
45
-
46
- context "when checking authorization" do
47
- after :each do
48
- Puppet::Network::Authorization.authconfigloader_class = nil
49
- end
50
-
51
- it "delegates to the authconfig object" do
52
- Puppet::Network::Authorization.authconfigloader_class =
53
- TestAuthConfigLoader
54
- expect_any_instance_of(TestAuthConfig).to receive(:check_authorization).with(
55
- :save, '/mypath', {:param1 => "value1"}).and_return("yay, it worked!")
56
- expect(subject.check_authorization(
57
- :save, '/mypath',
58
- {:param1 => "value1"})).to eq("yay, it worked!")
59
- end
5
+ it "accepts an auth config loader class" do
6
+ Puppet::Network::Authorization.authconfigloader_class = Object
60
7
  end
61
8
  end
@@ -161,19 +161,19 @@ describe "Puppet Network Format" do
161
161
  end
162
162
 
163
163
  it 'raises when interning an instance of an unacceptable indirected type' do
164
- obj = Puppet::SSL::Key.new('foo')
164
+ obj = :something
165
165
 
166
166
  expect {
167
167
  yaml.intern(obj.class, YAML.dump(obj))
168
- }.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class: Puppet::SSL::Key/)
168
+ }.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class: Symbol/)
169
169
  end
170
170
 
171
171
  it 'raises when interning multple instances of an unacceptable indirected type' do
172
- obj = Puppet::SSL::Key.new('foo')
172
+ obj = :something
173
173
 
174
174
  expect {
175
175
  yaml.intern_multiple(obj.class, YAML.dump([obj]))
176
- }.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class: Puppet::SSL::Key/)
176
+ }.to raise_error(Puppet::Network::FormatHandler::FormatError, /Tried to load unspecified class: Symbol/)
177
177
  end
178
178
  end
179
179
 
@@ -534,4 +534,45 @@ EOT
534
534
  end
535
535
  end
536
536
  end
537
+
538
+ describe ":flat format" do
539
+ let(:flat) { Puppet::Network::FormatHandler.format(:flat) }
540
+
541
+ it "should include a flat format" do
542
+ expect(flat).to be_an_instance_of Puppet::Network::Format
543
+ end
544
+
545
+ [:intern, :intern_multiple].each do |method|
546
+ it "should not implement #{method}" do
547
+ expect { flat.send(method, String, 'blah') }.to raise_error NotImplementedError
548
+ end
549
+ end
550
+
551
+ context "when rendering arrays" do
552
+ {
553
+ [] => "",
554
+ [1, 2] => "0=1\n1=2\n",
555
+ ["one"] => "0=one\n",
556
+ [{"one" => 1}, {"two" => 2}] => "0.one=1\n1.two=2\n",
557
+ [['something', 'for'], ['the', 'test']] => "0=[\"something\", \"for\"]\n1=[\"the\", \"test\"]\n"
558
+ }.each_pair do |input, output|
559
+ it "should render #{input.inspect} as one item per line" do
560
+ expect(flat.render(input)).to eq(output)
561
+ end
562
+ end
563
+ end
564
+
565
+ context "when rendering hashes" do
566
+ {
567
+ {} => "",
568
+ {1 => 2} => "1=2\n",
569
+ {"one" => "two"} => "one=two\n",
570
+ {[1,2] => 3, [2,3] => 5, [3,4] => 7} => "[1, 2]=3\n[2, 3]=5\n[3, 4]=7\n",
571
+ }.each_pair do |input, output|
572
+ it "should render #{input.inspect}" do
573
+ expect(flat.render(input)).to eq(output)
574
+ end
575
+ end
576
+ end
577
+ end
537
578
  end
@@ -58,7 +58,7 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
58
58
  }.to raise_error(bad_request_error)
59
59
  end
60
60
 
61
- it "should not pass a buck_path parameter through (See Bugs #13553, #13518, #13511)" do
61
+ it "should not pass a bucket_path parameter through (See Bugs #13553, #13518, #13511)" do
62
62
  expect(handler.uri2indirection("GET", "#{master_url_prefix}/node/bar",
63
63
  { :environment => "env",
64
64
  :bucket_path => "/malicious/path" })[3]).not_to include({ :bucket_path => "/malicious/path" })
@@ -118,10 +118,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
118
118
  expect(handler.uri2indirection("PUT", "#{master_url_prefix}/facts/puppet.node.test", params)[0].name).to eq(:facts)
119
119
  end
120
120
 
121
- it "should change indirection name to 'status' if the http method is a GET and the indirection name is statuses" do
122
- expect(handler.uri2indirection("GET", "#{master_url_prefix}/statuses/bar", params)[0].name).to eq(:status)
123
- end
124
-
125
121
  it "should change indirection name to 'node' if the http method is a GET and the indirection name is nodes" do
126
122
  expect(handler.uri2indirection("GET", "#{master_url_prefix}/nodes/bar", params)[0].name).to eq(:node)
127
123
  end
@@ -145,96 +141,9 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
145
141
  _, _, key, _ = handler.uri2indirection("GET", "#{master_url_prefix}/node/#{escaped}", params)
146
142
  expect(key).to eq(escaped)
147
143
  end
148
-
149
- it "should not unescape the URI passed through in a call to check_authorization" do
150
- key_escaped = Puppet::Util.uri_encode("foo bar")
151
- uri_escaped = "#{master_url_prefix}/node/#{key_escaped}"
152
- expect(handler).to receive(:check_authorization).with(anything, uri_escaped, anything)
153
- handler.uri2indirection("GET", uri_escaped, params)
154
- end
155
-
156
- it "when the environment is unknown should remove :environment from params passed to check_authorization and therefore fail" do
157
- expect(handler).to receive(:check_authorization).with(anything,
158
- anything,
159
- excluding(:environment))
160
- expect { handler.uri2indirection("GET",
161
- "#{master_url_prefix}/node/bar",
162
- {:environment => 'bogus'})
163
- }.to raise_error(not_found_error)
164
- end
165
-
166
- it "should not URI unescape the indirection key as passed through to a call to check_authorization" do
167
- expect(handler).to receive(:check_authorization).with(anything, anything, hash_including(environment: be_a(Puppet::Node::Environment).and(have_attributes(name: :env))))
168
-
169
- handler.uri2indirection("GET", "#{master_url_prefix}/node/bar", params)
170
- end
171
-
172
- end
173
-
174
- describe "when converting a request into a URI" do
175
- let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
176
- let(:request) { Puppet::Indirector::Request.new(:foo, :find, "with spaces", nil, :foo => :bar, :environment => environment) }
177
-
178
- it "should include the environment in the query string of the URI" do
179
- expect(handler.class.request_to_uri(request)).to eq("#{master_url_prefix}/foo/with%20spaces?environment=myenv&foo=bar")
180
- end
181
-
182
- it "should include the correct url prefix if it is a ca request" do
183
- allow(request).to receive(:indirection_name).and_return("certificate")
184
- expect(handler.class.request_to_uri(request)).to eq("#{ca_url_prefix}/certificate/with%20spaces?environment=myenv&foo=bar")
185
- end
186
-
187
- it "should pluralize the indirection name if the method is 'search'" do
188
- allow(request).to receive(:method).and_return(:search)
189
- expect(handler.class.request_to_uri(request).split("/")[3]).to eq("foos")
190
- end
191
-
192
- it "should add the query string to the URI" do
193
- expect(request).to receive(:query_string).and_return("query")
194
- expect(handler.class.request_to_uri(request)).to match(/\&query$/)
195
- end
196
- end
197
-
198
- describe "when converting a request into a URI with body" do
199
- let(:environment) { Puppet::Node::Environment.create(:myenv, []) }
200
- let(:request) { Puppet::Indirector::Request.new(:foo, :find, "with spaces", nil, :foo => :bar, :environment => environment) }
201
-
202
- it "should use the indirection as the first field of the URI" do
203
- expect(handler.class.request_to_uri_and_body(request).first.split("/")[3]).to eq("foo")
204
- end
205
-
206
- it "should use the escaped key as the remainder of the URI" do
207
- escaped = Puppet::Util.uri_encode("with spaces")
208
- expect(handler.class.request_to_uri_and_body(request).first.split("/")[4].sub(/\?.+/, '')).to eq(escaped)
209
- end
210
-
211
- it "should include the correct url prefix if it is a master request" do
212
- expect(handler.class.request_to_uri_and_body(request).first).to eq("#{master_url_prefix}/foo/with%20spaces")
213
- end
214
-
215
- it "should include the correct url prefix if it is a ca request" do
216
- allow(request).to receive(:indirection_name).and_return("certificate")
217
- expect(handler.class.request_to_uri_and_body(request).first).to eq("#{ca_url_prefix}/certificate/with%20spaces")
218
- end
219
-
220
- it "should return the URI and body separately" do
221
- expect(handler.class.request_to_uri_and_body(request)).to eq(["#{master_url_prefix}/foo/with%20spaces", "environment=myenv&foo=bar"])
222
- end
223
144
  end
224
145
 
225
146
  describe "when processing a request" do
226
- it "should raise not_authorized_error when authorization fails" do
227
- data = Puppet::IndirectorTesting.new("my data")
228
- indirection.save(data, "my data")
229
- request = a_request_that_heads(data)
230
-
231
- expect(handler).to receive(:check_authorization).and_raise(Puppet::Network::AuthorizationError.new("forbidden"))
232
-
233
- expect {
234
- handler.call(request, response)
235
- }.to raise_error(not_authorized_error)
236
- end
237
-
238
147
  it "should raise not_found_error if the indirection does not support remote requests" do
239
148
  request = a_request_that_heads(Puppet::IndirectorTesting.new("my data"))
240
149
 
@@ -15,15 +15,18 @@ describe Puppet::Network::HTTP::API::Master::V3 do
15
15
  chain(Puppet::Network::HTTP::API::Master::V3.routes)
16
16
  }
17
17
 
18
- it "mounts the environments endpoint" do
19
- request = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_url_prefix}/environments")
20
- master_routes.process(request, response)
21
-
22
- expect(response.code).to eq(200)
18
+ # simulate puppetserver registering its authconfigloader class
19
+ around :each do |example|
20
+ Puppet::Network::Authorization.authconfigloader_class = Object
21
+ begin
22
+ example.run
23
+ ensure
24
+ Puppet::Network::Authorization.authconfigloader_class = nil
25
+ end
23
26
  end
24
27
 
25
- it "mounts the environment endpoint" do
26
- request = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_url_prefix}/environment/production")
28
+ it "mounts the environments endpoint" do
29
+ request = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_url_prefix}/environments")
27
30
  master_routes.process(request, response)
28
31
 
29
32
  expect(response.code).to eq(200)
@@ -54,4 +57,22 @@ describe Puppet::Network::HTTP::API::Master::V3 do
54
57
  master_routes.process(request, response)
55
58
  }.to raise_error(not_found_error)
56
59
  end
60
+
61
+ it "checks authorization for indirected routes" do
62
+ Puppet::Network::Authorization.authconfigloader_class = nil
63
+
64
+ request = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_url_prefix}/catalog/foo")
65
+ expect {
66
+ master_routes.process(request, response)
67
+ }.to raise_error(Puppet::Network::HTTP::Error::HTTPNotAuthorizedError, %r{Not Authorized: Forbidden request: /puppet/v3/catalog/foo \(method GET\)})
68
+ end
69
+
70
+ it "checks authorization for environments" do
71
+ Puppet::Network::Authorization.authconfigloader_class = nil
72
+
73
+ request = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_url_prefix}/environments")
74
+ expect {
75
+ master_routes.process(request, response)
76
+ }.to raise_error(Puppet::Network::HTTP::Error::HTTPNotAuthorizedError, %r{Not Authorized: Forbidden request: /puppet/v3/environments \(method GET\)})
77
+ end
57
78
  end
@@ -70,6 +70,16 @@ describe Puppet::Network::HTTP::API do
70
70
  end
71
71
 
72
72
  describe "when processing master routes" do
73
+ # simulate puppetserver registering its authconfigloader class
74
+ around :each do |example|
75
+ Puppet::Network::Authorization.authconfigloader_class = Object
76
+ begin
77
+ example.run
78
+ ensure
79
+ Puppet::Network::Authorization.authconfigloader_class = nil
80
+ end
81
+ end
82
+
73
83
  it "responds to v3 indirector requests" do
74
84
  req = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_prefix}/v3/node/foo",
75
85
  :params => {:environment => "production"},