puppet 6.20.0-x64-mingw32 → 7.0.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 (484) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/Gemfile +0 -2
  4. data/Gemfile.lock +18 -24
  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 +1 -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 +178 -108
  15. data/lib/puppet/application/agent.rb +0 -1
  16. data/lib/puppet/application/apply.rb +2 -3
  17. data/lib/puppet/application/device.rb +100 -105
  18. data/lib/puppet/application/filebucket.rb +13 -9
  19. data/lib/puppet/application/script.rb +0 -1
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +0 -7
  22. data/lib/puppet/configurer.rb +30 -45
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +97 -167
  25. data/lib/puppet/environments.rb +59 -58
  26. data/lib/puppet/face/facts.rb +51 -51
  27. data/lib/puppet/face/help.rb +1 -1
  28. data/lib/puppet/face/plugin.rb +5 -8
  29. data/lib/puppet/ffi/windows.rb +12 -0
  30. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  31. data/lib/puppet/ffi/windows/constants.rb +404 -0
  32. data/lib/puppet/ffi/windows/functions.rb +628 -0
  33. data/lib/puppet/ffi/windows/structs.rb +338 -0
  34. data/lib/puppet/file_serving/configuration.rb +0 -5
  35. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  36. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  37. data/lib/puppet/file_serving/mount.rb +1 -2
  38. data/lib/puppet/forge/repository.rb +0 -1
  39. data/lib/puppet/generate/models/type/type.rb +4 -1
  40. data/lib/puppet/http.rb +22 -13
  41. data/lib/puppet/http/client.rb +164 -114
  42. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  43. data/lib/puppet/http/errors.rb +16 -0
  44. data/lib/puppet/http/external_client.rb +5 -7
  45. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  46. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  47. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  48. data/lib/puppet/http/proxy.rb +137 -0
  49. data/lib/puppet/http/redirector.rb +4 -12
  50. data/lib/puppet/http/resolver.rb +5 -15
  51. data/lib/puppet/http/resolver/server_list.rb +6 -10
  52. data/lib/puppet/http/resolver/settings.rb +4 -7
  53. data/lib/puppet/http/resolver/srv.rb +7 -11
  54. data/lib/puppet/http/response.rb +36 -54
  55. data/lib/puppet/http/response_converter.rb +24 -0
  56. data/lib/puppet/http/response_net_http.rb +42 -0
  57. data/lib/puppet/http/retry_after_handler.rb +4 -13
  58. data/lib/puppet/http/service.rb +12 -26
  59. data/lib/puppet/http/service/ca.rb +11 -22
  60. data/lib/puppet/http/service/compiler.rb +22 -69
  61. data/lib/puppet/http/service/file_server.rb +18 -27
  62. data/lib/puppet/http/service/puppetserver.rb +26 -12
  63. data/lib/puppet/http/service/report.rb +8 -10
  64. data/lib/puppet/http/session.rb +11 -20
  65. data/lib/puppet/{network/http → http}/site.rb +1 -2
  66. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  67. data/lib/puppet/indirector/facts/facter.rb +24 -3
  68. data/lib/puppet/indirector/facts/rest.rb +3 -22
  69. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  70. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  71. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  72. data/lib/puppet/indirector/file_server.rb +1 -8
  73. data/lib/puppet/indirector/generic_http.rb +0 -11
  74. data/lib/puppet/indirector/node/rest.rb +2 -4
  75. data/lib/puppet/indirector/report/rest.rb +3 -8
  76. data/lib/puppet/indirector/request.rb +0 -101
  77. data/lib/puppet/indirector/rest.rb +12 -263
  78. data/lib/puppet/module_tool/applications.rb +0 -1
  79. data/lib/puppet/module_tool/applications/installer.rb +2 -48
  80. data/lib/puppet/module_tool/errors/shared.rb +2 -17
  81. data/lib/puppet/network/authconfig.rb +2 -96
  82. data/lib/puppet/network/authorization.rb +13 -35
  83. data/lib/puppet/network/http.rb +3 -3
  84. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  85. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  86. data/lib/puppet/network/http/connection.rb +247 -316
  87. data/lib/puppet/network/http/handler.rb +0 -1
  88. data/lib/puppet/network/http_pool.rb +16 -34
  89. data/lib/puppet/node.rb +1 -30
  90. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  91. data/lib/puppet/pal/pal_impl.rb +3 -1
  92. data/lib/puppet/parser/ast/leaf.rb +2 -3
  93. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  94. data/lib/puppet/parser/compiler.rb +0 -198
  95. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  96. data/lib/puppet/parser/resource.rb +0 -69
  97. data/lib/puppet/parser/templatewrapper.rb +1 -1
  98. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  99. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  100. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  101. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  102. data/lib/puppet/pops/issues.rb +0 -5
  103. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  104. data/lib/puppet/pops/model/ast.pp +0 -42
  105. data/lib/puppet/pops/model/ast.rb +0 -290
  106. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  107. data/lib/puppet/pops/model/factory.rb +0 -45
  108. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  109. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  110. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  111. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  112. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  113. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  114. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  115. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  116. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  117. data/lib/puppet/pops/types/type_parser.rb +0 -4
  118. data/lib/puppet/pops/types/types.rb +0 -1
  119. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  120. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  121. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  122. data/lib/puppet/provider.rb +0 -13
  123. data/lib/puppet/provider/nameservice.rb +0 -18
  124. data/lib/puppet/provider/package/apt.rb +0 -4
  125. data/lib/puppet/provider/package/dpkg.rb +0 -10
  126. data/lib/puppet/provider/package/gem.rb +23 -3
  127. data/lib/puppet/provider/package/pip.rb +0 -1
  128. data/lib/puppet/provider/package/pkg.rb +0 -4
  129. data/lib/puppet/provider/package/portage.rb +1 -1
  130. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  131. data/lib/puppet/provider/service/smf.rb +191 -73
  132. data/lib/puppet/provider/user/aix.rb +2 -2
  133. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  134. data/lib/puppet/reference/configuration.rb +7 -6
  135. data/lib/puppet/reference/indirection.rb +1 -1
  136. data/lib/puppet/resource.rb +1 -89
  137. data/lib/puppet/resource/catalog.rb +1 -14
  138. data/lib/puppet/resource/type.rb +3 -119
  139. data/lib/puppet/resource/type_collection.rb +3 -48
  140. data/lib/puppet/runtime.rb +1 -2
  141. data/lib/puppet/settings.rb +73 -66
  142. data/lib/puppet/settings/integer_setting.rb +17 -0
  143. data/lib/puppet/settings/port_setting.rb +15 -0
  144. data/lib/puppet/settings/priority_setting.rb +5 -4
  145. data/lib/puppet/ssl.rb +10 -6
  146. data/lib/puppet/ssl/base.rb +3 -5
  147. data/lib/puppet/ssl/certificate.rb +0 -6
  148. data/lib/puppet/ssl/certificate_request.rb +1 -12
  149. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  150. data/lib/puppet/ssl/oids.rb +3 -1
  151. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  152. data/lib/puppet/ssl/state_machine.rb +3 -1
  153. data/lib/puppet/ssl/verifier.rb +2 -0
  154. data/lib/puppet/test/test_helper.rb +1 -3
  155. data/lib/puppet/transaction.rb +1 -7
  156. data/lib/puppet/transaction/report.rb +2 -4
  157. data/lib/puppet/type.rb +0 -76
  158. data/lib/puppet/type/file.rb +5 -7
  159. data/lib/puppet/type/file/checksum.rb +1 -1
  160. data/lib/puppet/type/file/source.rb +1 -1
  161. data/lib/puppet/type/filebucket.rb +3 -3
  162. data/lib/puppet/type/package.rb +5 -13
  163. data/lib/puppet/util/autoload.rb +8 -1
  164. data/lib/puppet/util/execution.rb +0 -11
  165. data/lib/puppet/util/http_proxy.rb +2 -215
  166. data/lib/puppet/util/monkey_patches.rb +0 -46
  167. data/lib/puppet/util/posix.rb +5 -54
  168. data/lib/puppet/util/rdoc.rb +0 -7
  169. data/lib/puppet/util/retry_action.rb +1 -1
  170. data/lib/puppet/util/run_mode.rb +9 -1
  171. data/lib/puppet/util/windows.rb +3 -8
  172. data/lib/puppet/util/windows/daemon.rb +360 -0
  173. data/lib/puppet/util/windows/error.rb +1 -0
  174. data/lib/puppet/util/windows/eventlog.rb +4 -9
  175. data/lib/puppet/util/windows/file.rb +8 -242
  176. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  177. data/lib/puppet/util/windows/process.rb +4 -226
  178. data/lib/puppet/util/windows/service.rb +9 -460
  179. data/lib/puppet/util/windows/string.rb +12 -13
  180. data/lib/puppet/util/yaml.rb +0 -22
  181. data/lib/puppet/vendor/require_vendored.rb +0 -1
  182. data/lib/puppet/version.rb +1 -1
  183. data/lib/puppet/x509.rb +5 -1
  184. data/lib/puppet/x509/cert_provider.rb +29 -1
  185. data/locales/puppet.pot +587 -1312
  186. data/man/man5/puppet.conf.5 +39 -99
  187. data/man/man8/puppet-agent.8 +2 -2
  188. data/man/man8/puppet-apply.8 +2 -2
  189. data/man/man8/puppet-catalog.8 +1 -1
  190. data/man/man8/puppet-config.8 +1 -1
  191. data/man/man8/puppet-describe.8 +1 -1
  192. data/man/man8/puppet-device.8 +2 -2
  193. data/man/man8/puppet-doc.8 +1 -1
  194. data/man/man8/puppet-epp.8 +1 -1
  195. data/man/man8/puppet-facts.8 +51 -36
  196. data/man/man8/puppet-filebucket.8 +4 -4
  197. data/man/man8/puppet-generate.8 +1 -1
  198. data/man/man8/puppet-help.8 +1 -1
  199. data/man/man8/puppet-lookup.8 +1 -1
  200. data/man/man8/puppet-module.8 +1 -58
  201. data/man/man8/puppet-node.8 +1 -1
  202. data/man/man8/puppet-parser.8 +1 -1
  203. data/man/man8/puppet-plugin.8 +1 -1
  204. data/man/man8/puppet-report.8 +1 -1
  205. data/man/man8/puppet-resource.8 +1 -1
  206. data/man/man8/puppet-script.8 +2 -2
  207. data/man/man8/puppet-ssl.8 +1 -1
  208. data/man/man8/puppet.8 +2 -2
  209. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  210. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  211. data/spec/integration/application/agent_spec.rb +27 -138
  212. data/spec/integration/application/apply_spec.rb +1 -20
  213. data/spec/integration/application/filebucket_spec.rb +16 -16
  214. data/spec/integration/application/help_spec.rb +2 -0
  215. data/spec/integration/application/plugin_spec.rb +23 -1
  216. data/spec/integration/defaults_spec.rb +14 -3
  217. data/spec/integration/network/http_pool_spec.rb +3 -21
  218. data/spec/integration/parser/catalog_spec.rb +0 -38
  219. data/spec/integration/parser/node_spec.rb +0 -9
  220. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  221. data/spec/integration/resource/type_collection_spec.rb +6 -2
  222. data/spec/integration/transaction_spec.rb +9 -4
  223. data/spec/integration/type/file_spec.rb +5 -4
  224. data/spec/integration/util/windows/adsi_spec.rb +1 -3
  225. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  226. data/spec/integration/util/windows/registry_spec.rb +10 -0
  227. data/spec/integration/util/windows/security_spec.rb +1 -1
  228. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  229. data/spec/lib/puppet_spec/settings.rb +1 -0
  230. data/spec/spec_helper.rb +6 -1
  231. data/spec/unit/agent_spec.rb +6 -10
  232. data/spec/unit/application/agent_spec.rb +1 -0
  233. data/spec/unit/application/facts_spec.rb +35 -0
  234. data/spec/unit/application/filebucket_spec.rb +43 -39
  235. data/spec/unit/application/ssl_spec.rb +2 -2
  236. data/spec/unit/application_spec.rb +9 -51
  237. data/spec/unit/certificate_factory_spec.rb +1 -1
  238. data/spec/unit/configurer/downloader_spec.rb +6 -2
  239. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  240. data/spec/unit/configurer_spec.rb +12 -9
  241. data/spec/unit/confine/feature_spec.rb +1 -1
  242. data/spec/unit/confine_spec.rb +2 -8
  243. data/spec/unit/context/trusted_information_spec.rb +2 -6
  244. data/spec/unit/defaults_spec.rb +72 -42
  245. data/spec/unit/environments_spec.rb +19 -99
  246. data/spec/unit/face/facts_spec.rb +4 -0
  247. data/spec/unit/face/node_spec.rb +11 -0
  248. data/spec/unit/face/plugin_spec.rb +73 -33
  249. data/spec/unit/file_bucket/file_spec.rb +1 -1
  250. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  251. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  252. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  253. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  254. data/spec/unit/forge/module_release_spec.rb +7 -2
  255. data/spec/unit/functions/camelcase_spec.rb +1 -1
  256. data/spec/unit/functions/capitalize_spec.rb +1 -1
  257. data/spec/unit/functions/downcase_spec.rb +1 -1
  258. data/spec/unit/functions/upcase_spec.rb +1 -1
  259. data/spec/unit/http/client_spec.rb +7 -8
  260. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  261. data/spec/unit/http/external_client_spec.rb +4 -4
  262. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  263. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  264. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  265. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  266. data/spec/unit/http/resolver_spec.rb +13 -13
  267. data/spec/unit/http/service/compiler_spec.rb +0 -62
  268. data/spec/unit/http/service/file_server_spec.rb +3 -3
  269. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  270. data/spec/unit/http/service_spec.rb +0 -1
  271. data/spec/unit/http/session_spec.rb +16 -14
  272. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  273. data/spec/unit/indirector/face_spec.rb +1 -0
  274. data/spec/unit/indirector/facts/facter_spec.rb +98 -0
  275. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  276. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  277. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  278. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  279. data/spec/unit/indirector/file_server_spec.rb +1 -15
  280. data/spec/unit/indirector/indirection_spec.rb +12 -8
  281. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  282. data/spec/unit/indirector/request_spec.rb +0 -264
  283. data/spec/unit/indirector/rest_spec.rb +98 -752
  284. data/spec/unit/indirector_spec.rb +2 -2
  285. data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
  286. data/spec/unit/network/authconfig_spec.rb +2 -129
  287. data/spec/unit/network/authorization_spec.rb +2 -55
  288. data/spec/unit/network/formats_spec.rb +4 -4
  289. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  290. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  291. data/spec/unit/network/http/api_spec.rb +10 -0
  292. data/spec/unit/network/http/connection_spec.rb +19 -41
  293. data/spec/unit/network/http/handler_spec.rb +0 -1
  294. data/spec/unit/network/http_pool_spec.rb +0 -4
  295. data/spec/unit/node/environment_spec.rb +33 -21
  296. data/spec/unit/node_spec.rb +2 -54
  297. data/spec/unit/parser/compiler_spec.rb +19 -3
  298. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  299. data/spec/unit/parser/resource_spec.rb +8 -14
  300. data/spec/unit/parser/templatewrapper_spec.rb +3 -4
  301. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  302. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  303. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  304. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  305. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  306. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  307. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  308. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  309. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  310. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  311. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  312. data/spec/unit/pops/visitor_spec.rb +1 -1
  313. data/spec/unit/property_spec.rb +0 -1
  314. data/spec/unit/provider/nameservice_spec.rb +64 -122
  315. data/spec/unit/provider/package/apt_spec.rb +8 -4
  316. data/spec/unit/provider/package/base_spec.rb +5 -6
  317. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  318. data/spec/unit/provider/package/gem_spec.rb +32 -0
  319. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  320. data/spec/unit/provider/package/pip_spec.rb +11 -6
  321. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  322. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  323. data/spec/unit/provider/service/smf_spec.rb +401 -165
  324. data/spec/unit/provider/service/windows_spec.rb +0 -1
  325. data/spec/unit/provider/user/aix_spec.rb +0 -5
  326. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  327. data/spec/unit/provider/user/pw_spec.rb +0 -2
  328. data/spec/unit/provider/user/useradd_spec.rb +0 -1
  329. data/spec/unit/provider_spec.rb +8 -18
  330. data/spec/unit/resource/type_collection_spec.rb +2 -22
  331. data/spec/unit/resource/type_spec.rb +1 -1
  332. data/spec/unit/resource_spec.rb +10 -67
  333. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  334. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  335. data/spec/unit/settings/port_setting_spec.rb +31 -0
  336. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  337. data/spec/unit/settings_spec.rb +23 -13
  338. data/spec/unit/ssl/base_spec.rb +37 -3
  339. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  340. data/spec/unit/ssl/certificate_spec.rb +2 -11
  341. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  342. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  343. data/spec/unit/ssl/verifier_spec.rb +0 -21
  344. data/spec/unit/transaction/additional_resource_generator_spec.rb +7 -3
  345. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  346. data/spec/unit/transaction/report_spec.rb +0 -2
  347. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  348. data/spec/unit/transaction_spec.rb +48 -91
  349. data/spec/unit/type/file/checksum_spec.rb +6 -6
  350. data/spec/unit/type/file/content_spec.rb +2 -1
  351. data/spec/unit/type/file/ensure_spec.rb +1 -1
  352. data/spec/unit/type/file/mode_spec.rb +1 -1
  353. data/spec/unit/type/file/selinux_spec.rb +2 -0
  354. data/spec/unit/type/file/source_spec.rb +0 -1
  355. data/spec/unit/type/file_spec.rb +18 -6
  356. data/spec/unit/type/group_spec.rb +6 -13
  357. data/spec/unit/type/package_spec.rb +1 -1
  358. data/spec/unit/type/resources_spec.rb +7 -7
  359. data/spec/unit/type/service_spec.rb +1 -1
  360. data/spec/unit/type/tidy_spec.rb +1 -0
  361. data/spec/unit/type_spec.rb +22 -2
  362. data/spec/unit/util/at_fork_spec.rb +2 -2
  363. data/spec/unit/util/autoload_spec.rb +1 -5
  364. data/spec/unit/util/backups_spec.rb +2 -3
  365. data/spec/unit/util/execution_spec.rb +11 -44
  366. data/spec/unit/util/inifile_spec.rb +14 -6
  367. data/spec/unit/util/log_spec.rb +7 -8
  368. data/spec/unit/util/logging_spec.rb +3 -3
  369. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  370. data/spec/unit/util/posix_spec.rb +15 -363
  371. data/spec/unit/util/run_mode_spec.rb +21 -121
  372. data/spec/unit/util/selinux_spec.rb +52 -76
  373. data/spec/unit/util/storage_spec.rb +1 -3
  374. data/spec/unit/util/suidmanager_spec.rb +41 -44
  375. data/spec/unit/util/windows/string_spec.rb +1 -3
  376. data/spec/unit/util/yaml_spec.rb +0 -54
  377. data/spec/unit/util_spec.rb +6 -31
  378. metadata +40 -233
  379. data/conf/auth.conf +0 -150
  380. data/lib/puppet/application/cert.rb +0 -76
  381. data/lib/puppet/application/key.rb +0 -4
  382. data/lib/puppet/application/man.rb +0 -4
  383. data/lib/puppet/application/status.rb +0 -4
  384. data/lib/puppet/face/key.rb +0 -16
  385. data/lib/puppet/face/man.rb +0 -145
  386. data/lib/puppet/face/module/build.rb +0 -14
  387. data/lib/puppet/face/module/generate.rb +0 -14
  388. data/lib/puppet/face/module/search.rb +0 -103
  389. data/lib/puppet/face/status.rb +0 -51
  390. data/lib/puppet/ffi/posix.rb +0 -10
  391. data/lib/puppet/ffi/posix/constants.rb +0 -14
  392. data/lib/puppet/ffi/posix/functions.rb +0 -24
  393. data/lib/puppet/indirector/certificate/file.rb +0 -9
  394. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  395. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  396. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  397. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  398. data/lib/puppet/indirector/file_content/http.rb +0 -22
  399. data/lib/puppet/indirector/key/file.rb +0 -46
  400. data/lib/puppet/indirector/key/memory.rb +0 -7
  401. data/lib/puppet/indirector/ssl_file.rb +0 -162
  402. data/lib/puppet/indirector/status.rb +0 -3
  403. data/lib/puppet/indirector/status/local.rb +0 -12
  404. data/lib/puppet/indirector/status/rest.rb +0 -27
  405. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  406. data/lib/puppet/network/auth_config_parser.rb +0 -90
  407. data/lib/puppet/network/authstore.rb +0 -283
  408. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  409. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  410. data/lib/puppet/network/http/base_pool.rb +0 -36
  411. data/lib/puppet/network/http/compression.rb +0 -127
  412. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  413. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  414. data/lib/puppet/network/rest_controller.rb +0 -2
  415. data/lib/puppet/network/rights.rb +0 -210
  416. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  417. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  418. data/lib/puppet/parser/environment_compiler.rb +0 -202
  419. data/lib/puppet/pops/types/enumeration.rb +0 -16
  420. data/lib/puppet/resource/capability_finder.rb +0 -154
  421. data/lib/puppet/rest/errors.rb +0 -15
  422. data/lib/puppet/rest/response.rb +0 -35
  423. data/lib/puppet/rest/route.rb +0 -85
  424. data/lib/puppet/rest/routes.rb +0 -135
  425. data/lib/puppet/settings/alias_setting.rb +0 -37
  426. data/lib/puppet/ssl/host.rb +0 -505
  427. data/lib/puppet/ssl/key.rb +0 -61
  428. data/lib/puppet/ssl/validator.rb +0 -61
  429. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  430. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  431. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  432. data/lib/puppet/status.rb +0 -40
  433. data/lib/puppet/util/connection.rb +0 -88
  434. data/lib/puppet/util/fact_dif.rb +0 -62
  435. data/lib/puppet/util/ssl.rb +0 -83
  436. data/lib/puppet/util/windows/api_types.rb +0 -309
  437. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  438. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  439. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  440. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  441. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  442. data/lib/puppet/vendor/pathspec/README.md +0 -53
  443. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  444. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  445. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  446. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  447. data/man/man8/puppet-key.8 +0 -126
  448. data/man/man8/puppet-man.8 +0 -76
  449. data/man/man8/puppet-status.8 +0 -108
  450. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  451. data/spec/integration/network/authconfig_spec.rb +0 -256
  452. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  453. data/spec/unit/application/man_spec.rb +0 -52
  454. data/spec/unit/capability_spec.rb +0 -414
  455. data/spec/unit/face/key_spec.rb +0 -9
  456. data/spec/unit/face/module/search_spec.rb +0 -231
  457. data/spec/unit/face/status_spec.rb +0 -9
  458. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  459. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  460. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  461. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  462. data/spec/unit/indirector/key/file_spec.rb +0 -78
  463. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  464. data/spec/unit/indirector/status/local_spec.rb +0 -10
  465. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  466. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  467. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  468. data/spec/unit/network/authstore_spec.rb +0 -422
  469. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  470. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  471. data/spec/unit/network/http/compression_spec.rb +0 -240
  472. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  473. data/spec/unit/network/http_spec.rb +0 -9
  474. data/spec/unit/network/rights_spec.rb +0 -439
  475. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  476. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  477. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  478. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  479. data/spec/unit/rest/route_spec.rb +0 -132
  480. data/spec/unit/ssl/host_spec.rb +0 -645
  481. data/spec/unit/ssl/key_spec.rb +0 -173
  482. data/spec/unit/ssl/validator_spec.rb +0 -278
  483. data/spec/unit/status_spec.rb +0 -45
  484. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,173 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/ssl/key'
4
-
5
- describe Puppet::SSL::Key do
6
- before do
7
- @class = Puppet::SSL::Key
8
- end
9
-
10
- it "should be extended with the Indirector module" do
11
- expect(@class.singleton_class).to be_include(Puppet::Indirector)
12
- end
13
-
14
- it "should indirect key" do
15
- expect(@class.indirection.name).to eq(:key)
16
- end
17
-
18
- it "should only support the text format" do
19
- expect(@class.supported_formats).to eq([:s])
20
- end
21
-
22
- describe "when initializing" do
23
- it "should downcase its name" do
24
- expect(@class.new("MyName").name).to eq("myname")
25
- end
26
-
27
- it "should set its password file to the default password file if it is not the CA key" do
28
- Puppet[:passfile] = File.expand_path("/normal/pass")
29
-
30
- key = Puppet::SSL::Key.new("notca")
31
- expect(key.password_file).to eq(Puppet[:passfile])
32
- end
33
- end
34
-
35
- describe "when managing instances" do
36
- before do
37
- @key = @class.new("myname")
38
- end
39
-
40
- it "should have a name attribute" do
41
- expect(@key.name).to eq("myname")
42
- end
43
-
44
- it "should have a content attribute" do
45
- expect(@key).to respond_to(:content)
46
- end
47
-
48
- it "should be able to read keys from disk" do
49
- path = "/my/path"
50
- expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("my key")
51
- key = double('key')
52
- expect(OpenSSL::PKey::RSA).to receive(:new).and_return(key)
53
- expect(@key.read(path)).to equal(key)
54
- expect(@key.content).to equal(key)
55
- end
56
-
57
- it "should not try to use the provided password file if the file does not exist" do
58
- allow(Puppet::FileSystem).to receive(:exist?).and_return(false)
59
- @key.password_file = "/path/to/password"
60
-
61
- path = "/my/path"
62
-
63
- allow(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("my key")
64
- expect(OpenSSL::PKey::RSA).to receive(:new).with("my key", nil).and_return(double('key'))
65
- expect(Puppet::FileSystem).not_to receive(:read).with("/path/to/password", :encoding => Encoding::BINARY)
66
-
67
- @key.read(path)
68
- end
69
-
70
- it "should read the key with the password retrieved from the password file if one is provided" do
71
- allow(Puppet::FileSystem).to receive(:exist?).and_return(true)
72
- @key.password_file = "/path/to/password"
73
-
74
- path = "/my/path"
75
- expect(Puppet::FileSystem).to receive(:read).with(path, :encoding => Encoding::ASCII).and_return("my key")
76
- expect(Puppet::FileSystem).to receive(:read).with("/path/to/password", :encoding => Encoding::BINARY).and_return("my password")
77
-
78
- key = double('key')
79
- expect(OpenSSL::PKey::RSA).to receive(:new).with("my key", "my password").and_return(key)
80
- expect(@key.read(path)).to equal(key)
81
- expect(@key.content).to equal(key)
82
- end
83
-
84
- it "should return an empty string when converted to a string with no key" do
85
- expect(@key.to_s).to eq("")
86
- end
87
-
88
- it "should convert the key to pem format when converted to a string" do
89
- key = double('key', :to_pem => "pem")
90
- @key.content = key
91
- expect(@key.to_s).to eq("pem")
92
- end
93
-
94
- it "should have a :to_text method that it delegates to the actual key" do
95
- real_key = double('key')
96
- expect(real_key).to receive(:to_text).and_return("keytext")
97
- @key.content = real_key
98
- expect(@key.to_text).to eq("keytext")
99
- end
100
- end
101
-
102
- describe "when generating the private key" do
103
- before do
104
- @instance = @class.new("test")
105
-
106
- @key = double('key')
107
- end
108
-
109
- it "should create an instance of OpenSSL::PKey::RSA" do
110
- expect(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
111
-
112
- @instance.generate
113
- end
114
-
115
- it "should create the private key with the keylength specified in the settings" do
116
- Puppet[:keylength] = 513
117
- expect(OpenSSL::PKey::RSA).to receive(:new).with(513).and_return(@key)
118
-
119
- @instance.generate
120
- end
121
-
122
- it "should set the content to the generated key" do
123
- allow(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
124
- @instance.generate
125
- expect(@instance.content).to equal(@key)
126
- end
127
-
128
- it "should return the generated key" do
129
- allow(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
130
- expect(@instance.generate).to equal(@key)
131
- end
132
-
133
- it "should return the key in pem format" do
134
- @instance.generate
135
- expect(@instance.content).to receive(:to_pem).and_return("my normal key")
136
- expect(@instance.to_s).to eq("my normal key")
137
- end
138
-
139
- describe "with a password file set" do
140
- it "should return a nil password if the password file does not exist" do
141
- expect(Puppet::FileSystem).to receive(:exist?).with("/path/to/pass").and_return(false)
142
- expect(Puppet::FileSystem).not_to receive(:read).with("/path/to/pass", :encoding => Encoding::BINARY)
143
-
144
- @instance.password_file = "/path/to/pass"
145
-
146
- expect(@instance.password).to be_nil
147
- end
148
-
149
- it "should return the contents of the password file as its password" do
150
- expect(Puppet::FileSystem).to receive(:exist?).with("/path/to/pass").and_return(true)
151
- expect(Puppet::FileSystem).to receive(:read).with("/path/to/pass", :encoding => Encoding::BINARY).and_return("my password")
152
-
153
- @instance.password_file = "/path/to/pass"
154
-
155
- expect(@instance.password).to eq("my password")
156
- end
157
-
158
- it "should export the private key to text using the password" do
159
- @instance.password_file = "/path/to/pass"
160
- allow(@instance).to receive(:password).and_return("my password")
161
-
162
- expect(OpenSSL::PKey::RSA).to receive(:new).and_return(@key)
163
- @instance.generate
164
-
165
- cipher = double('cipher')
166
- expect(OpenSSL::Cipher::DES).to receive(:new).with(:EDE3, :CBC).and_return(cipher)
167
- expect(@key).to receive(:export).with(cipher, "my password").and_return("my encrypted key")
168
-
169
- expect(@instance.to_s).to eq("my encrypted key")
170
- end
171
- end
172
- end
173
- end
@@ -1,278 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/ssl'
3
- require 'puppet_spec/ssl'
4
-
5
- describe Puppet::SSL::Validator::DefaultValidator, unless: Puppet::Util::Platform.jruby? do
6
- include PuppetSpec::Files
7
- let(:ssl_context) do
8
- double('OpenSSL::X509::StoreContext')
9
- end
10
-
11
- before(:all) do
12
- @pki = PuppetSpec::SSL.create_chained_pki
13
- end
14
-
15
- let(:ca_path) do
16
- Puppet[:ssl_client_ca_auth] || Puppet[:localcacert]
17
- end
18
-
19
- let(:ssl_host) do
20
- double('ssl_host',
21
- :ssl_store => nil,
22
- :certificate => double('cert', :content => nil),
23
- :key => double('key', :content => nil))
24
- end
25
-
26
- subject do
27
- described_class.new(ca_path)
28
- end
29
-
30
- before :each do
31
- allow(subject).to receive(:read_file).and_return(@pki[:root_cert].to_s)
32
- end
33
-
34
- describe '#call' do
35
- before :each do
36
- allow(ssl_context).to receive(:current_cert).and_return(*cert_chain_in_callback_order)
37
- allow(ssl_context).to receive(:chain).and_return(cert_chain)
38
- end
39
-
40
- context 'When pre-verification is not OK' do
41
- context 'and the ssl_context is in an error state' do
42
- let(:root_subject) { @pki[:root_cert].subject.to_utf8 }
43
- let(:code) { OpenSSL::X509::V_ERR_INVALID_CA }
44
-
45
- it 'rejects the connection' do
46
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
47
- allow(ssl_context).to receive(:error).and_return(code)
48
-
49
- expect(subject.call(false, ssl_context)).to eq(false)
50
- end
51
-
52
- it 'makes the error available via #verify_errors' do
53
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
54
- allow(ssl_context).to receive(:error).and_return(code)
55
-
56
- subject.call(false, ssl_context)
57
- expect(subject.verify_errors).to eq(["Something went wrong for #{root_subject}"])
58
- end
59
-
60
- it 'uses a generic message if error_string is nil' do
61
- allow(ssl_context).to receive(:error_string).and_return(nil)
62
- allow(ssl_context).to receive(:error).and_return(code)
63
-
64
- subject.call(false, ssl_context)
65
- expect(subject.verify_errors).to eq(["OpenSSL error #{code} for #{root_subject}"])
66
- end
67
-
68
- it 'uses 0 for nil error codes' do
69
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
70
- allow(ssl_context).to receive(:error).and_return(nil)
71
-
72
- subject.call(false, ssl_context)
73
- expect(subject.verify_errors).to eq(["Something went wrong for #{root_subject}"])
74
- end
75
-
76
- context "when CRL is not yet valid" do
77
- before :each do
78
- allow(ssl_context).to receive(:error_string).and_return("CRL is not yet valid")
79
- allow(ssl_context).to receive(:error).and_return(OpenSSL::X509::V_ERR_CRL_NOT_YET_VALID)
80
- end
81
-
82
- it 'rejects nil CRL' do
83
- allow(ssl_context).to receive(:current_crl).and_return(nil)
84
-
85
- expect(subject.call(false, ssl_context)).to eq(false)
86
- expect(subject.verify_errors).to eq(["CRL is not yet valid"])
87
- end
88
-
89
- it 'includes the CRL issuer in the verify error message' do
90
- crl = OpenSSL::X509::CRL.new
91
- crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
92
- crl.last_update = Time.now + 24 * 60 * 60
93
- allow(ssl_context).to receive(:current_crl).and_return(crl)
94
-
95
- subject.call(false, ssl_context)
96
- expect(subject.verify_errors).to eq(["CRL is not yet valid for CN=Puppet CA: puppetmaster.example.com"])
97
- end
98
-
99
- it 'rejects CRLs whose last_update time is more than 5 minutes in the future' do
100
- crl = OpenSSL::X509::CRL.new
101
- crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
102
- crl.last_update = Time.now + 24 * 60 * 60
103
- allow(ssl_context).to receive(:current_crl).and_return(crl)
104
-
105
- expect(subject.call(false, ssl_context)).to eq(false)
106
- end
107
-
108
- it 'accepts CRLs whose last_update time is 10 seconds in the future' do
109
- crl = OpenSSL::X509::CRL.new
110
- crl.issuer = OpenSSL::X509::Name.new([['CN','Puppet CA: puppetmaster.example.com']])
111
- crl.last_update = Time.now + 10
112
- allow(ssl_context).to receive(:current_crl).and_return(crl)
113
-
114
- expect(subject.call(false, ssl_context)).to eq(true)
115
- end
116
- end
117
- end
118
- end
119
-
120
- context 'When pre-verification is OK' do
121
- context 'and the ssl_context is in an error state' do
122
- before :each do
123
- allow(ssl_context).to receive(:error_string).and_return("Something went wrong")
124
- end
125
-
126
- it 'does not make the error available via #verify_errors' do
127
- subject.call(true, ssl_context)
128
- expect(subject.verify_errors).to eq([])
129
- end
130
- end
131
-
132
- context 'and the chain is valid' do
133
- it 'is true for each CA certificate in the chain' do
134
- (cert_chain.length - 1).times do
135
- expect(subject.call(true, ssl_context)).to be_truthy
136
- end
137
- end
138
-
139
- it 'is true for the SSL certificate ending the chain' do
140
- (cert_chain.length - 1).times do
141
- subject.call(true, ssl_context)
142
- end
143
- expect(subject.call(true, ssl_context)).to be_truthy
144
- end
145
- end
146
-
147
- context 'and the chain is invalid' do
148
- before :each do
149
- allow(subject).to receive(:read_file).and_return(@pki[:unrevoked_leaf_node_cert])
150
- end
151
-
152
- it 'is true for each CA certificate in the chain' do
153
- (cert_chain.length - 1).times do
154
- expect(subject.call(true, ssl_context)).to be_truthy
155
- end
156
- end
157
-
158
- it 'is false for the SSL certificate ending the chain' do
159
- (cert_chain.length - 1).times do
160
- subject.call(true, ssl_context)
161
- end
162
- expect(subject.call(true, ssl_context)).to be_falsey
163
- end
164
- end
165
-
166
- context 'an error is raised inside of #call' do
167
- before :each do
168
- expect(ssl_context).to receive(:current_cert).and_raise(StandardError, "BOOM!")
169
- end
170
-
171
- it 'is false' do
172
- expect(subject.call(true, ssl_context)).to be_falsey
173
- end
174
-
175
- it 'makes the error available through #verify_errors' do
176
- subject.call(true, ssl_context)
177
- expect(subject.verify_errors).to eq(["BOOM!"])
178
- end
179
- end
180
- end
181
- end
182
-
183
- describe '#setup_connection' do
184
- it 'updates the connection for verification' do
185
- allow(subject).to receive(:ssl_certificates_are_present?).and_return(true)
186
- connection = double('Net::HTTP')
187
-
188
- allow(connection).to receive(:address).and_return('puppet.com')
189
- expect(connection).to receive(:cert_store=).with(ssl_host.ssl_store)
190
- expect(connection).to receive(:ca_file=).with(ca_path)
191
- expect(connection).to receive(:cert=).with(ssl_host.certificate.content)
192
- expect(connection).to receive(:key=).with(ssl_host.key.content)
193
- expect(connection).to receive(:verify_callback=).with(subject)
194
- expect(connection).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_PEER)
195
-
196
- subject.setup_connection(connection, ssl_host)
197
- end
198
-
199
- context 'when no file path is found' do
200
- it 'does not perform verification if certificate files are missing' do
201
- allow(subject).to receive(:ssl_certificates_are_present?).and_return(false)
202
- connection = double('Net::HTTP')
203
-
204
- allow(connection).to receive(:address).and_return('puppet.com')
205
- expect(connection).to receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
206
-
207
- subject.setup_connection(connection, ssl_host)
208
- end
209
- end
210
- end
211
-
212
- describe '#valid_peer?' do
213
- before :each do
214
- subject.instance_variable_set(:@peer_certs, cert_chain_in_callback_order)
215
- end
216
-
217
- context 'when the peer presents a valid chain' do
218
- before :each do
219
- allow(subject).to receive(:has_authz_peer_cert).and_return(true)
220
- end
221
-
222
- it 'is true' do
223
- expect(subject.valid_peer?).to be_truthy
224
- end
225
- end
226
-
227
- context 'when the peer presents an invalid chain' do
228
- before :each do
229
- allow(subject).to receive(:has_authz_peer_cert).and_return(false)
230
- end
231
-
232
- it 'is false' do
233
- expect(subject.valid_peer?).to be_falsey
234
- end
235
-
236
- it 'makes a helpful error message available via #verify_errors' do
237
- subject.valid_peer?
238
- expect(subject.verify_errors).to eq([<<END.chomp])
239
- The server presented a SSL certificate chain which does not include a CA listed in the ssl_client_ca_auth file. Authorized Issuers: CN=root-ca-𠜎 Peer Chain: CN=unrevoked-int-node => CN=unrevoked-int-caۿᚠ𠜎 => CN=root-ca-𠜎
240
- END
241
- end
242
- end
243
- end
244
-
245
- describe '#has_authz_peer_cert' do
246
- context 'when the Root CA is listed as authorized' do
247
- it 'returns true when the SSL cert is issued by the Master CA' do
248
- expect(subject.has_authz_peer_cert(cert_chain, [@pki[:root_cert]])).to be_truthy
249
- end
250
-
251
- it 'returns true when the SSL cert is issued by the alternate CA' do
252
- expect(subject.has_authz_peer_cert(cert_chain_alternate, [@pki[:root_cert]])).to be_truthy
253
- end
254
- end
255
-
256
- context 'when one intermediate CA is listed as authorized' do
257
- it 'returns true when the SSL cert is issued by the same intermediate CA' do
258
- expect(subject.has_authz_peer_cert(cert_chain, [@pki[:int_cert]])).to be_truthy
259
- end
260
-
261
- it 'returns false when the SSL cert is issued by a different intermediate CA' do
262
- expect(subject.has_authz_peer_cert(cert_chain_alternate, [@pki[:int_cert]])).to be_falsey
263
- end
264
- end
265
- end
266
-
267
- def cert_chain
268
- [@pki[:int_node_cert], @pki[:int_cert], @pki[:root_cert]]
269
- end
270
-
271
- def cert_chain_alternate
272
- [@pki[:unrevoked_leaf_node_cert], @pki[:leaf_cert], @pki[:revoked_int_cert], @pki[:root_cert]]
273
- end
274
-
275
- def cert_chain_in_callback_order
276
- cert_chain.reverse
277
- end
278
- end