puppet 6.19.0-x64-mingw32 → 7.3.0-x64-mingw32

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 -226
  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
@@ -38,16 +38,14 @@ describe Puppet::SSL::Certificate do
38
38
 
39
39
  describe "when determining a name from a certificate subject" do
40
40
  it "should extract only the CN and not any other components" do
41
- subject = double('sub')
42
- expect(Puppet::Util::SSL).to receive(:cn_from_subject).with(subject).and_return('host.domain.com')
43
- expect(@class.name_from_subject(subject)).to eq('host.domain.com')
41
+ name = OpenSSL::X509::Name.parse('/CN=host.domain.com/L=Portland/ST=Oregon')
42
+ expect(@class.name_from_subject(name)).to eq('host.domain.com')
44
43
  end
45
44
  end
46
45
 
47
46
  describe "when initializing wrapped class from a file with #read" do
48
47
  it "should open the file with ASCII encoding" do
49
48
  path = '/foo/bar/cert'
50
- allow(Puppet::SSL::Base).to receive(:valid_certname).and_return(true)
51
49
  expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("bar")
52
50
  @base.read(path)
53
51
  end
@@ -90,4 +88,38 @@ describe Puppet::SSL::Certificate do
90
88
  }.to raise_error(Puppet::Error, "Unknown signature algorithm 'nonsense'")
91
89
  end
92
90
  end
91
+
92
+ describe "when getting a CN from a subject" do
93
+ def parse(dn)
94
+ OpenSSL::X509::Name.parse(dn)
95
+ end
96
+
97
+ def cn_from(subject)
98
+ @class.name_from_subject(subject)
99
+ end
100
+
101
+ it "should correctly parse a subject containing only a CN" do
102
+ subj = parse('/CN=foo')
103
+ expect(cn_from(subj)).to eq('foo')
104
+ end
105
+
106
+ it "should correctly parse a subject containing other components" do
107
+ subj = parse('/CN=Root CA/OU=Server Operations/O=Example Org')
108
+ expect(cn_from(subj)).to eq('Root CA')
109
+ end
110
+
111
+ it "should correctly parse a subject containing other components with CN not first" do
112
+ subj = parse('/emailAddress=foo@bar.com/CN=foo.bar.com/O=Example Org')
113
+ expect(cn_from(subj)).to eq('foo.bar.com')
114
+ end
115
+
116
+ it "should return nil for a subject with no CN" do
117
+ subj = parse('/OU=Server Operations/O=Example Org')
118
+ expect(cn_from(subj)).to eq(nil)
119
+ end
120
+
121
+ it "should return nil for a bare string" do
122
+ expect(cn_from("/CN=foo")).to eq(nil)
123
+ end
124
+ end
93
125
  end
@@ -1,23 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  require 'puppet/ssl/certificate_request'
4
- require 'puppet/ssl/key'
5
4
 
6
5
  describe Puppet::SSL::CertificateRequest do
7
6
  let(:request) { described_class.new("myname") }
8
- let(:key) {
9
- k = Puppet::SSL::Key.new("myname")
10
- k.generate
11
- k
12
- }
13
-
14
- it "should be extended with the Indirector module" do
15
- expect(described_class.singleton_class).to be_include(Puppet::Indirector)
16
- end
17
-
18
- it "should indirect certificate_request" do
19
- expect(described_class.indirection.name).to eq(:certificate_request)
20
- end
7
+ let(:key) { OpenSSL::PKey::RSA.new(Puppet[:keylength]) }
21
8
 
22
9
  it "should use any provided name as its name" do
23
10
  expect(described_class.new("myname").name).to eq("myname")
@@ -83,14 +70,9 @@ describe Puppet::SSL::CertificateRequest do
83
70
  end
84
71
 
85
72
  describe "when generating", :unless => RUBY_PLATFORM == 'java' do
86
- it "should use the content of the provided key if the key is a Puppet::SSL::Key instance" do
73
+ it "should verify the CSR using the public key associated with the private key" do
87
74
  request.generate(key)
88
- expect(request.content.verify(key.content.public_key)).to be_truthy
89
- end
90
-
91
- it "should set the subject to [CN, name]" do
92
- request.generate(key)
93
- expect(request.content.subject).to eq OpenSSL::X509::Name.new([['CN', key.name]])
75
+ expect(request.content.verify(key.public_key)).to be_truthy
94
76
  end
95
77
 
96
78
  it "should set the version to 0" do
@@ -101,7 +83,7 @@ describe Puppet::SSL::CertificateRequest do
101
83
  it "should set the public key to the provided key's public key" do
102
84
  request.generate(key)
103
85
  # The openssl bindings do not define equality on keys so we use to_s
104
- expect(request.content.public_key.to_s).to eq(key.content.public_key.to_s)
86
+ expect(request.content.public_key.to_s).to eq(key.public_key.to_s)
105
87
  end
106
88
 
107
89
  context "without subjectAltName / dns_alt_names" do
@@ -295,20 +277,20 @@ describe Puppet::SSL::CertificateRequest do
295
277
 
296
278
  it "should sign the csr with the provided key" do
297
279
  request.generate(key)
298
- expect(request.content.verify(key.content.public_key)).to be_truthy
280
+ expect(request.content.verify(key.public_key)).to be_truthy
299
281
  end
300
282
 
301
283
  it "should verify the generated request using the public key" do
302
284
  # Stupid keys don't have a competent == method.
303
285
  expect_any_instance_of(OpenSSL::X509::Request).to receive(:verify) do |public_key|
304
- public_key.to_s == key.content.public_key.to_s
286
+ public_key.to_s == key.public_key.to_s
305
287
  end.and_return(true)
306
288
  request.generate(key)
307
289
  end
308
290
 
309
291
  it "should fail if verification fails" do
310
292
  expect_any_instance_of(OpenSSL::X509::Request).to receive(:verify) do |public_key|
311
- public_key.to_s == key.content.public_key.to_s
293
+ public_key.to_s == key.public_key.to_s
312
294
  end.and_return(false)
313
295
 
314
296
  expect do
@@ -334,8 +316,8 @@ describe Puppet::SSL::CertificateRequest do
334
316
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
335
317
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(true)
336
318
  signer = Puppet::SSL::CertificateSigner.new
337
- signer.sign(csr, key.content)
338
- expect(csr.verify(key.content)).to be_truthy
319
+ signer.sign(csr, key)
320
+ expect(csr.verify(key)).to be_truthy
339
321
  end
340
322
 
341
323
  # Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
@@ -348,8 +330,8 @@ describe Puppet::SSL::CertificateRequest do
348
330
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
349
331
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(true)
350
332
  signer = Puppet::SSL::CertificateSigner.new
351
- signer.sign(csr, key.content)
352
- expect(csr.verify(key.content)).to be_truthy
333
+ signer.sign(csr, key)
334
+ expect(csr.verify(key)).to be_truthy
353
335
  end
354
336
 
355
337
  # Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
@@ -363,8 +345,8 @@ describe Puppet::SSL::CertificateRequest do
363
345
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(false)
364
346
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(true)
365
347
  signer = Puppet::SSL::CertificateSigner.new
366
- signer.sign(csr, key.content)
367
- expect(csr.verify(key.content)).to be_truthy
348
+ signer.sign(csr, key)
349
+ expect(csr.verify(key)).to be_truthy
368
350
  end
369
351
 
370
352
  it "should use SHA224 to sign the csr when SHA256/SHA1/SHA512/SHA384 aren't available" do
@@ -375,8 +357,8 @@ describe Puppet::SSL::CertificateRequest do
375
357
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(false)
376
358
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA224").and_return(true)
377
359
  signer = Puppet::SSL::CertificateSigner.new
378
- signer.sign(csr, key.content)
379
- expect(csr.verify(key.content)).to be_truthy
360
+ signer.sign(csr, key)
361
+ expect(csr.verify(key)).to be_truthy
380
362
  end
381
363
 
382
364
  it "should raise an error if neither SHA256/SHA1/SHA512/SHA384/SHA224 are available" do
@@ -390,16 +372,4 @@ describe Puppet::SSL::CertificateRequest do
390
372
  }.to raise_error(Puppet::Error)
391
373
  end
392
374
  end
393
-
394
- it "should save the CSR" do
395
- csr = Puppet::SSL::CertificateRequest.new("me")
396
- terminus = double('terminus')
397
- allow(terminus).to receive(:validate)
398
- expect(Puppet::SSL::CertificateRequest.indirection).to receive(:prepare).and_return(terminus)
399
- expect(terminus).to receive(:save) do |request|
400
- expect(request.instance).to eq(csr)
401
- expect(request.key).to eq("me")
402
- end
403
- Puppet::SSL::CertificateRequest.indirection.save(csr)
404
- end
405
375
  end
@@ -4,7 +4,7 @@ require 'puppet/certificate_factory'
4
4
  require 'puppet/ssl/certificate'
5
5
 
6
6
  describe Puppet::SSL::Certificate do
7
- let :key do Puppet::SSL::Key.new("test.localdomain").generate end
7
+ let :key do OpenSSL::PKey::RSA.new(Puppet[:keylength]) end
8
8
 
9
9
  # Sign the provided cert so that it can be DER-decoded later
10
10
  def sign_wrapped_cert(cert)
@@ -16,14 +16,6 @@ describe Puppet::SSL::Certificate do
16
16
  @class = Puppet::SSL::Certificate
17
17
  end
18
18
 
19
- it "should be extended with the Indirector module" do
20
- expect(@class.singleton_class).to be_include(Puppet::Indirector)
21
- end
22
-
23
- it "should indirect certificate" do
24
- expect(@class.indirection.name).to eq(:certificate)
25
- end
26
-
27
19
  it "should only support the text format" do
28
20
  expect(@class.supported_formats).to eq([:s])
29
21
  end
@@ -82,8 +74,7 @@ describe Puppet::SSL::Certificate do
82
74
 
83
75
  describe "when managing instances" do
84
76
  def build_cert(opts)
85
- key = Puppet::SSL::Key.new('quux')
86
- key.generate
77
+ key = OpenSSL::PKey::RSA.new(Puppet[:keylength])
87
78
  csr = Puppet::SSL::CertificateRequest.new('quux')
88
79
  csr.generate(key, opts)
89
80
 
@@ -271,14 +271,20 @@ describe Puppet::SSL::SSLProvider do
271
271
  end
272
272
 
273
273
  # This option is only available in openssl 1.1
274
- it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
275
- ca = global_cacerts.first
276
- ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
277
-
278
- expect {
279
- subject.create_context(**config.merge(cacerts: global_cacerts))
280
- }.to raise_error(Puppet::SSL::CertVerifyError,
281
- "Invalid signature for certificate 'CN=Test CA'")
274
+ # OpenSSL 1.1.1h no longer reports expired root CAs when using "verify".
275
+ # This regression was fixed in 1.1.1i, so only skip this test if we're on
276
+ # the affected version.
277
+ # See: https://github.com/openssl/openssl/pull/13585
278
+ if Puppet::Util::Package.versioncmp(OpenSSL::OPENSSL_LIBRARY_VERSION.split[1], '1.1.1h') != 0
279
+ it 'raises if root cert signature is invalid', if: defined?(OpenSSL::X509::V_FLAG_CHECK_SS_SIGNATURE) do
280
+ ca = global_cacerts.first
281
+ ca.sign(wrong_key, OpenSSL::Digest::SHA256.new)
282
+
283
+ expect {
284
+ subject.create_context(**config.merge(cacerts: global_cacerts))
285
+ }.to raise_error(Puppet::SSL::CertVerifyError,
286
+ "Invalid signature for certificate 'CN=Test CA'")
287
+ end
282
288
  end
283
289
 
284
290
  it 'raises if intermediate CA signature is invalid' do
@@ -505,7 +505,6 @@ describe Puppet::SSL::StateMachine, unless: Puppet::Util::Platform.jruby? do
505
505
  Puppet[:certificate_revocation] = false
506
506
 
507
507
  expect(cert_provider).not_to receive(:load_crls)
508
- expect(Puppet::Rest::Routes).not_to receive(:get_crls)
509
508
 
510
509
  state.next_state
511
510
 
@@ -6,7 +6,6 @@ describe Puppet::SSL::Verifier do
6
6
  let(:host) { 'example.com' }
7
7
  let(:http) { Net::HTTP.new(host) }
8
8
  let(:verifier) { described_class.new(host, ssl_context) }
9
- let(:adapter) { Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new) }
10
9
 
11
10
  context '#reusable?' do
12
11
  it 'Verifiers with the same ssl_context are reusable' do
@@ -16,26 +15,6 @@ describe Puppet::SSL::Verifier do
16
15
  it 'Verifiers with different ssl_contexts are not reusable' do
17
16
  expect(verifier).to_not be_reusable(described_class.new(host, Puppet::SSL::SSLContext.new))
18
17
  end
19
-
20
- it 'Verifier is not reusable with VerifierAdapter' do
21
- expect(verifier).to_not be_reusable(adapter)
22
- end
23
-
24
- it 'VerifierAdapter is not reusable with Verifier' do
25
- expect(adapter).to_not be_reusable(verifier)
26
- end
27
-
28
- it 'VerifierAdapters with the same class of Validator are reusable' do
29
- expect(
30
- adapter
31
- ).to be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::DefaultValidator.new))
32
- end
33
-
34
- it 'VerifierAdapters with different classes of Validators are not reusable' do
35
- expect(
36
- adapter
37
- ).to_not be_reusable(Puppet::SSL::VerifierAdapter.new(Puppet::SSL::Validator::NoValidator.new))
38
- end
39
18
  end
40
19
 
41
20
  context '#setup_connection' do
@@ -33,10 +33,6 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
33
33
 
34
34
  newparam(:code)
35
35
 
36
- def respond_to?(method_name)
37
- method_name == self[:kind] || super
38
- end
39
-
40
36
  def eval_generate
41
37
  eval_code
42
38
  end
@@ -314,13 +310,13 @@ describe Puppet::Transaction::AdditionalResourceGenerator do
314
310
 
315
311
  it "sets resources_failed_to_generate to true if resource#eval_generate raises an exception" do
316
312
  catalog = compile_to_ral(<<-MANIFEST)
317
- notify { 'hello': }
313
+ generator { thing: }
318
314
  MANIFEST
319
315
 
320
- allow(catalog.resource("Notify[hello]")).to receive(:eval_generate).and_raise(RuntimeError)
316
+ allow(catalog.resource("Generator[thing]")).to receive(:eval_generate).and_raise(RuntimeError)
321
317
  relationship_graph = relationship_graph_for(catalog)
322
318
  generator = Puppet::Transaction::AdditionalResourceGenerator.new(catalog, relationship_graph, prioritizer)
323
- generator.eval_generate(catalog.resource("Notify[hello]"))
319
+ generator.eval_generate(catalog.resource("Generator[thing]"))
324
320
 
325
321
  expect(generator.resources_failed_to_generate).to be_truthy
326
322
  end
@@ -152,6 +152,9 @@ describe Puppet::Transaction::EventManager do
152
152
 
153
153
  @resource = Puppet::Type.type(:file).new :path => make_absolute("/my/file")
154
154
  @event = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
155
+
156
+ @resource.class.send(:define_method, :callback1) {}
157
+ @resource.class.send(:define_method, :callback2) {}
155
158
  end
156
159
 
157
160
  it "should call the required callback once for each set of associated events" do
@@ -178,7 +181,7 @@ describe Puppet::Transaction::EventManager do
178
181
 
179
182
  allow(@resource).to receive(:callback1)
180
183
 
181
- @manager.process_events(@resource) #x
184
+ @manager.process_events(@resource)
182
185
 
183
186
  expect(@transaction.resource_status(@resource).events.length).to eq(1)
184
187
  end
@@ -211,9 +214,11 @@ describe Puppet::Transaction::EventManager do
211
214
  @event2 = Puppet::Transaction::Event.new(:name => :event, :resource => @resource)
212
215
  @event2.status = "success"
213
216
  expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event, @event2])
217
+ @resource.class.send(:define_method, :callback1) {}
214
218
  end
215
219
 
216
220
  it "should call the callback" do
221
+
217
222
  expect(@resource).to receive(:callback1)
218
223
 
219
224
  @manager.process_events(@resource)
@@ -225,6 +230,7 @@ describe Puppet::Transaction::EventManager do
225
230
  allow(@event).to receive(:status).and_return("noop")
226
231
  allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
227
232
  expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
233
+ @resource.class.send(:define_method, :callback1) {}
228
234
  end
229
235
 
230
236
  it "should log" do
@@ -254,6 +260,7 @@ describe Puppet::Transaction::EventManager do
254
260
  allow(@resource).to receive(:event).and_return(Puppet::Transaction::Event.new)
255
261
  allow(@resource).to receive(:noop?).and_return(true)
256
262
  expect(@manager).to receive(:queued_events).with(@resource).and_yield(:callback1, [@event])
263
+ @resource.class.send(:define_method, :callback1) {}
257
264
  end
258
265
 
259
266
  it "should log" do
@@ -279,7 +286,7 @@ describe Puppet::Transaction::EventManager do
279
286
 
280
287
  describe "and the callback fails" do
281
288
  before do
282
- expect(@resource).to receive(:callback1).and_raise("a failure")
289
+ @resource.class.send(:define_method, :callback1) { raise "a failure" }
283
290
 
284
291
  expect(@manager).to receive(:queued_events).and_yield(:callback1, [@event])
285
292
  end
@@ -323,16 +330,12 @@ describe Puppet::Transaction::EventManager do
323
330
 
324
331
  describe "when queueing then processing events for a given resource" do
325
332
  before do
326
- @transaction = Puppet::Transaction.new(Puppet::Resource::Catalog.new, nil, nil)
327
- @manager = Puppet::Transaction::EventManager.new(@transaction)
333
+ @catalog = Puppet::Resource::Catalog.new
334
+ @target = Puppet::Type.type(:exec).new(name: 'target', path: ENV['PATH'])
335
+ @resource = Puppet::Type.type(:exec).new(name: 'resource', path: ENV['PATH'], notify: @target)
336
+ @catalog.add_resource(@resource, @target)
328
337
 
329
- @resource = Puppet::Type.type(:file).new :path => make_absolute("/my/file")
330
- @target = Puppet::Type.type(:file).new :path => make_absolute("/your/file")
331
-
332
- @graph = allow('graph')
333
- allow(@graph).to receive(:matching_edges).and_return([])
334
- allow(@graph).to receive(:matching_edges).with(anything, @resource).and_return([double('edge', :target => @target, :callback => :refresh)])
335
- allow(@manager).to receive(:relationship_graph).and_return(@graph)
338
+ @manager = Puppet::Transaction::EventManager.new(Puppet::Transaction.new(@catalog, nil, nil))
336
339
 
337
340
  @event = Puppet::Transaction::Event.new(:name => :notify, :resource => @target)
338
341
  @event2 = Puppet::Transaction::Event.new(:name => :service_start, :resource => @target, :invalidate_refreshes => true)
@@ -675,7 +675,6 @@ Version:
675
675
  report.code_id = "some code id"
676
676
  report.catalog_uuid = "some catalog uuid"
677
677
  report.cached_catalog_status = "not_used"
678
- report.master_used = "test:000"
679
678
  report.server_used = "test:000"
680
679
  report.add_resource_status(status)
681
680
  report.transaction_completed = true
@@ -694,7 +693,6 @@ Version:
694
693
  report.code_id = "some code id"
695
694
  report.catalog_uuid = "some catalog uuid"
696
695
  report.cached_catalog_status = "not_used"
697
- report.master_used = "test:000"
698
696
  report.server_used = "test:000"
699
697
  report.add_resource_status(status)
700
698
  report.transaction_completed = true
@@ -612,14 +612,14 @@ describe Puppet::Transaction::ResourceHarness do
612
612
  allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(true)
613
613
  status = @harness.evaluate(resource)
614
614
  sync_event = status.events[0]
615
- expect(sync_event.message).to match(/content changed '{md5}[0-9a-f]+' to '{md5}[0-9a-f]+' \(corrective\)/)
615
+ expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+' \(corrective\)/)
616
616
  end
617
617
 
618
618
  it "contains no modifier when intentional change" do
619
619
  allow_any_instance_of(Puppet::Transaction::Event).to receive(:corrective_change).and_return(false)
620
620
  status = @harness.evaluate(resource)
621
621
  sync_event = status.events[0]
622
- expect(sync_event.message).to match(/content changed '{md5}[0-9a-f]+' to '{md5}[0-9a-f]+'$/)
622
+ expect(sync_event.message).to match(/content changed '{sha256}[0-9a-f]+' to '{sha256}[0-9a-f]+'$/)
623
623
  end
624
624
  end
625
625
  end
@@ -5,6 +5,13 @@ require 'puppet_spec/compiler'
5
5
  require 'puppet/transaction'
6
6
  require 'fileutils'
7
7
 
8
+ Puppet::Type.newtype(:generator) do
9
+ newparam(:name) { isnamevar }
10
+
11
+ def generate
12
+ end
13
+ end
14
+
8
15
  describe Puppet::Transaction do
9
16
  include PuppetSpec::Files
10
17
  include PuppetSpec::Compiler
@@ -323,9 +330,9 @@ describe Puppet::Transaction do
323
330
  describe "when generating resources before traversal" do
324
331
  let(:catalog) { Puppet::Resource::Catalog.new }
325
332
  let(:transaction) { Puppet::Transaction.new(catalog, nil, Puppet::Graph::SequentialPrioritizer.new) }
326
- let(:generator) { Puppet::Type.type(:notify).new :title => "generator" }
333
+ let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
327
334
  let(:generated) do
328
- %w[a b c].map { |name| Puppet::Type.type(:notify).new(:name => name) }
335
+ %w[a b c].map { |name| Puppet::Type.type(:generator).new(:name => name) }
329
336
  end
330
337
 
331
338
  before :each do
@@ -598,115 +605,81 @@ describe Puppet::Transaction do
598
605
  transaction.prefetch_if_necessary(resource)
599
606
  end
600
607
 
601
- it "should not rescue SystemExit without future_features flag" do
602
- Puppet.settings[:future_features] = false
608
+ it "should not rescue SystemExit" do
603
609
  expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
604
610
  expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
605
611
  end
606
612
 
607
- it "should not rescue SystemExit with future_features flag" do
608
- Puppet.settings[:future_features] = true
609
- expect(resource.provider.class).to receive(:prefetch).and_raise(SystemExit, "SystemMessage")
610
- expect { transaction.prefetch_if_necessary(resource) }.to raise_error(SystemExit, "SystemMessage")
611
- end
612
-
613
- it "should rescue LoadError without future_features flag" do
614
- Puppet.settings[:future_features] = false
615
- expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
616
- expect { transaction.prefetch_if_necessary(resource) }.not_to raise_error
617
- end
618
-
619
- it "should rescue LoadError with future_features flag" do
620
- Puppet.settings[:future_features] = true
613
+ it "should mark resources as failed when prefetching raises LoadError" do
621
614
  expect(resource.provider.class).to receive(:prefetch).and_raise(LoadError, "LoadMessage")
622
- expect { transaction.prefetch_if_necessary(resource) }.not_to raise_error
615
+ transaction.prefetch_if_necessary(resource)
616
+ expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
623
617
  end
624
618
 
625
- describe "and prefetching fails" do
619
+ describe "and prefetching raises Puppet::Error" do
626
620
  before :each do
627
621
  expect(resource.provider.class).to receive(:prefetch).and_raise(Puppet::Error, "message")
628
622
  end
629
623
 
630
- context "without future_features flag" do
631
- before :each do
632
- Puppet.settings[:future_features] = false
633
- end
634
-
635
- it "should not rescue prefetch executions" do
636
- expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error)
637
- end
624
+ it "should rescue prefetch executions" do
625
+ transaction.prefetch_if_necessary(resource)
638
626
 
639
- it "should log the exception during prefetch" do
640
- expect(Puppet).to receive(:log_exception).with(anything, "Could not prefetch package provider 'pkgng': message")
641
- expect { transaction.prefetch_if_necessary(resource) }.to raise_error(Puppet::Error, "message")
642
- end
627
+ expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
643
628
  end
644
629
 
645
- context "with future_features flag" do
646
- before :each do
647
- Puppet.settings[:future_features] = true
648
- end
630
+ it "should mark resources as failed", :unless => RUBY_PLATFORM == 'java' do
631
+ transaction.evaluate
649
632
 
650
- it "should rescue prefetch executions" do
651
- transaction.prefetch_if_necessary(resource)
633
+ expect(transaction.resource_status(resource).failed?).to be_truthy
634
+ end
652
635
 
653
- expect(transaction.prefetched_providers[:package][:pkgng]).to be_truthy
654
- end
636
+ it "should mark a provider that has failed prefetch" do
637
+ transaction.prefetch_if_necessary(resource)
655
638
 
656
- it "should mark resources as failed", :unless => RUBY_PLATFORM == 'java' do
657
- transaction.evaluate
639
+ expect(transaction.prefetch_failed_providers[:package][:pkgng]).to be_truthy
640
+ end
658
641
 
659
- expect(transaction.resource_status(resource).failed?).to be_truthy
642
+ describe "and new resources are generated" do
643
+ let(:generator) { Puppet::Type.type(:generator).new :title => "generator" }
644
+ let(:generated) do
645
+ %w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
660
646
  end
661
647
 
662
- it "should mark a provider that has failed prefetch" do
663
- transaction.prefetch_if_necessary(resource)
664
-
665
- expect(transaction.prefetch_failed_providers[:package][:pkgng]).to be_truthy
648
+ before :each do
649
+ catalog.add_resource generator
650
+ allow(generator).to receive(:generate).and_return(generated)
651
+ allow(catalog).to receive(:container_of).and_return(generator)
666
652
  end
667
653
 
668
- describe "and new resources are generated" do
669
- let(:generator) { Puppet::Type.type(:notify).new :title => "generator" }
670
- let(:generated) do
671
- %w[a b c].map { |name| Puppet::Type.type(:package).new :title => "foo", :name => name, :provider => :apt }
672
- end
673
-
674
- before :each do
675
- catalog.add_resource generator
676
- allow(generator).to receive(:generate).and_return(generated)
677
- allow(catalog).to receive(:container_of).and_return(generator)
678
- end
654
+ it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
655
+ #Only the generator resource should be applied, all the other resources are failed, and skipped.
656
+ catalog.remove_resource resource2
657
+ expect(transaction).to receive(:apply).once
679
658
 
680
- it "should not evaluate resources with a failed provider, even if the prefetch is rescued" do
681
- #Only the generator resource should be applied, all the other resources are failed, and skipped.
682
- catalog.remove_resource resource2
683
- expect(transaction).to receive(:apply).once
684
-
685
- transaction.evaluate
686
- end
659
+ transaction.evaluate
660
+ end
687
661
 
688
- it "should not fail other resources added after the failing resource", :unless => RUBY_PLATFORM == 'java' do
689
- new_resource = Puppet::Type.type(:notify).new :name => "baz"
690
- catalog.add_resource(new_resource)
662
+ it "should not fail other resources added after the failing resource", :unless => RUBY_PLATFORM == 'java' do
663
+ new_resource = Puppet::Type.type(:notify).new :name => "baz"
664
+ catalog.add_resource(new_resource)
691
665
 
692
- transaction.evaluate
666
+ transaction.evaluate
693
667
 
694
- expect(transaction.resource_status(new_resource).failed?).to be_falsey
695
- end
668
+ expect(transaction.resource_status(new_resource).failed?).to be_falsey
669
+ end
696
670
 
697
- it "should fail other resources that require the failing resource" do
698
- new_resource = Puppet::Type.type(:notify).new(:name => "baz", :require => resource)
699
- catalog.add_resource(new_resource)
671
+ it "should fail other resources that require the failing resource" do
672
+ new_resource = Puppet::Type.type(:notify).new(:name => "baz", :require => resource)
673
+ catalog.add_resource(new_resource)
700
674
 
701
- catalog.remove_resource resource2
702
- expect(transaction).to receive(:apply).once
675
+ catalog.remove_resource resource2
676
+ expect(transaction).to receive(:apply).once
703
677
 
704
- transaction.evaluate
678
+ transaction.evaluate
705
679
 
706
- expect(transaction.resource_status(resource).failed?).to be_truthy
707
- expect(transaction.resource_status(new_resource).dependency_failed?).to be_truthy
708
- expect(transaction.skip?(new_resource)).to be_truthy
709
- end
680
+ expect(transaction.resource_status(resource).failed?).to be_truthy
681
+ expect(transaction.resource_status(new_resource).dependency_failed?).to be_truthy
682
+ expect(transaction.skip?(new_resource)).to be_truthy
710
683
  end
711
684
  end
712
685
  end
@@ -785,6 +758,9 @@ describe Puppet::Transaction do
785
758
  def self.is_selinux_enabled
786
759
  true
787
760
  end
761
+
762
+ def self.matchpathcon_fini
763
+ end
788
764
  end
789
765
  end
790
766
 
@@ -828,7 +804,6 @@ describe Puppet::Transaction do
828
804
  before do
829
805
  @resource = Puppet::Type.type(:notify).new :title => "foobar"
830
806
  @catalog.add_resource @resource
831
- allow(@transaction).to receive(:add_dynamically_generated_resources)
832
807
  end
833
808
 
834
809
  it 'should stop processing if :stop_processing? is true' do