puppet 6.20.0-x86-mingw32 → 7.4.0-x86-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 (430) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -4
  3. data/Gemfile.lock +13 -13
  4. data/README.md +1 -1
  5. data/conf/fileserver.conf +5 -10
  6. data/ext/build_defaults.yaml +1 -2
  7. data/ext/osx/file_mapping.yaml +0 -5
  8. data/ext/project_data.yaml +2 -14
  9. data/ext/redhat/puppet.spec.erb +0 -1
  10. data/ext/windows/service/daemon.rb +6 -5
  11. data/install.rb +21 -17
  12. data/lib/puppet.rb +11 -20
  13. data/lib/puppet/application.rb +172 -98
  14. data/lib/puppet/application/device.rb +100 -104
  15. data/lib/puppet/application/filebucket.rb +13 -9
  16. data/lib/puppet/application/ssl.rb +1 -1
  17. data/lib/puppet/configurer.rb +27 -29
  18. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  19. data/lib/puppet/defaults.rb +57 -162
  20. data/lib/puppet/environments.rb +8 -23
  21. data/lib/puppet/face/facts.rb +73 -49
  22. data/lib/puppet/face/help.rb +1 -1
  23. data/lib/puppet/face/node/clean.rb +8 -0
  24. data/lib/puppet/face/plugin.rb +5 -8
  25. data/lib/puppet/ffi/windows.rb +12 -0
  26. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  27. data/lib/puppet/ffi/windows/constants.rb +404 -0
  28. data/lib/puppet/ffi/windows/functions.rb +628 -0
  29. data/lib/puppet/ffi/windows/structs.rb +338 -0
  30. data/lib/puppet/file_serving/configuration.rb +0 -5
  31. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  32. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  33. data/lib/puppet/file_serving/mount.rb +1 -2
  34. data/lib/puppet/forge/repository.rb +0 -1
  35. data/lib/puppet/generate/models/type/type.rb +4 -1
  36. data/lib/puppet/http.rb +22 -13
  37. data/lib/puppet/http/client.rb +164 -114
  38. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  39. data/lib/puppet/http/errors.rb +16 -0
  40. data/lib/puppet/http/external_client.rb +5 -7
  41. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  42. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  43. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  44. data/lib/puppet/http/proxy.rb +137 -0
  45. data/lib/puppet/http/redirector.rb +4 -12
  46. data/lib/puppet/http/resolver.rb +5 -15
  47. data/lib/puppet/http/resolver/server_list.rb +6 -10
  48. data/lib/puppet/http/resolver/settings.rb +4 -7
  49. data/lib/puppet/http/resolver/srv.rb +7 -11
  50. data/lib/puppet/http/response.rb +36 -54
  51. data/lib/puppet/http/response_converter.rb +24 -0
  52. data/lib/puppet/http/response_net_http.rb +42 -0
  53. data/lib/puppet/http/retry_after_handler.rb +4 -13
  54. data/lib/puppet/http/service.rb +12 -26
  55. data/lib/puppet/http/service/ca.rb +11 -22
  56. data/lib/puppet/http/service/compiler.rb +22 -69
  57. data/lib/puppet/http/service/file_server.rb +18 -27
  58. data/lib/puppet/http/service/puppetserver.rb +26 -12
  59. data/lib/puppet/http/service/report.rb +8 -10
  60. data/lib/puppet/http/session.rb +11 -20
  61. data/lib/puppet/{network/http → http}/site.rb +1 -2
  62. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  63. data/lib/puppet/indirector/facts/facter.rb +25 -3
  64. data/lib/puppet/indirector/facts/rest.rb +3 -22
  65. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  66. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  67. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  68. data/lib/puppet/indirector/file_server.rb +1 -8
  69. data/lib/puppet/indirector/generic_http.rb +0 -11
  70. data/lib/puppet/indirector/node/rest.rb +2 -4
  71. data/lib/puppet/indirector/report/rest.rb +3 -8
  72. data/lib/puppet/indirector/request.rb +0 -101
  73. data/lib/puppet/indirector/rest.rb +12 -263
  74. data/lib/puppet/module_tool/applications.rb +0 -1
  75. data/lib/puppet/network/authconfig.rb +2 -96
  76. data/lib/puppet/network/authorization.rb +13 -35
  77. data/lib/puppet/network/formats.rb +67 -0
  78. data/lib/puppet/network/http.rb +3 -3
  79. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  80. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  81. data/lib/puppet/network/http/connection.rb +247 -316
  82. data/lib/puppet/network/http/handler.rb +0 -1
  83. data/lib/puppet/network/http_pool.rb +16 -34
  84. data/lib/puppet/node.rb +1 -30
  85. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  86. data/lib/puppet/pal/pal_impl.rb +3 -1
  87. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  88. data/lib/puppet/parser/compiler.rb +0 -198
  89. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  90. data/lib/puppet/parser/resource.rb +0 -69
  91. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  92. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  93. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  94. data/lib/puppet/pops/issues.rb +0 -5
  95. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  96. data/lib/puppet/pops/model/ast.pp +0 -42
  97. data/lib/puppet/pops/model/ast.rb +0 -290
  98. data/lib/puppet/pops/model/factory.rb +0 -45
  99. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  100. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  101. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  102. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  103. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  104. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  105. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  106. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  107. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  108. data/lib/puppet/pops/types/type_parser.rb +0 -4
  109. data/lib/puppet/pops/types/types.rb +0 -1
  110. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  111. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  112. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  113. data/lib/puppet/property/list.rb +1 -1
  114. data/lib/puppet/provider.rb +0 -13
  115. data/lib/puppet/provider/group/groupadd.rb +13 -8
  116. data/lib/puppet/provider/nameservice.rb +0 -18
  117. data/lib/puppet/provider/package/apt.rb +30 -2
  118. data/lib/puppet/provider/package/aptitude.rb +6 -0
  119. data/lib/puppet/provider/package/dpkg.rb +0 -10
  120. data/lib/puppet/provider/package/gem.rb +23 -3
  121. data/lib/puppet/provider/package/pip.rb +0 -1
  122. data/lib/puppet/provider/package/pkg.rb +0 -4
  123. data/lib/puppet/provider/package/portage.rb +1 -1
  124. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  125. data/lib/puppet/provider/service/debian.rb +2 -0
  126. data/lib/puppet/provider/service/smf.rb +191 -73
  127. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  128. data/lib/puppet/provider/user/useradd.rb +55 -8
  129. data/lib/puppet/reference/configuration.rb +7 -5
  130. data/lib/puppet/reference/indirection.rb +1 -1
  131. data/lib/puppet/resource.rb +1 -89
  132. data/lib/puppet/resource/catalog.rb +1 -14
  133. data/lib/puppet/resource/type.rb +3 -119
  134. data/lib/puppet/resource/type_collection.rb +3 -48
  135. data/lib/puppet/runtime.rb +1 -2
  136. data/lib/puppet/settings.rb +45 -33
  137. data/lib/puppet/settings/integer_setting.rb +17 -0
  138. data/lib/puppet/settings/port_setting.rb +15 -0
  139. data/lib/puppet/settings/priority_setting.rb +5 -4
  140. data/lib/puppet/ssl.rb +10 -6
  141. data/lib/puppet/ssl/base.rb +3 -5
  142. data/lib/puppet/ssl/certificate.rb +0 -6
  143. data/lib/puppet/ssl/certificate_request.rb +1 -12
  144. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  145. data/lib/puppet/ssl/oids.rb +3 -1
  146. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  147. data/lib/puppet/ssl/state_machine.rb +3 -1
  148. data/lib/puppet/ssl/verifier.rb +2 -0
  149. data/lib/puppet/test/test_helper.rb +1 -3
  150. data/lib/puppet/transaction.rb +1 -7
  151. data/lib/puppet/transaction/report.rb +2 -4
  152. data/lib/puppet/type.rb +0 -76
  153. data/lib/puppet/type/file.rb +5 -7
  154. data/lib/puppet/type/file/checksum.rb +1 -1
  155. data/lib/puppet/type/file/source.rb +1 -1
  156. data/lib/puppet/type/filebucket.rb +3 -3
  157. data/lib/puppet/type/package.rb +8 -16
  158. data/lib/puppet/type/user.rb +1 -1
  159. data/lib/puppet/util/execution.rb +0 -11
  160. data/lib/puppet/util/http_proxy.rb +2 -215
  161. data/lib/puppet/util/monkey_patches.rb +0 -46
  162. data/lib/puppet/util/rdoc.rb +0 -7
  163. data/lib/puppet/util/retry_action.rb +1 -1
  164. data/lib/puppet/util/run_mode.rb +9 -1
  165. data/lib/puppet/util/windows.rb +3 -8
  166. data/lib/puppet/util/windows/daemon.rb +360 -0
  167. data/lib/puppet/util/windows/error.rb +1 -0
  168. data/lib/puppet/util/windows/eventlog.rb +4 -9
  169. data/lib/puppet/util/windows/file.rb +8 -242
  170. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  171. data/lib/puppet/util/windows/process.rb +4 -226
  172. data/lib/puppet/util/windows/service.rb +9 -460
  173. data/lib/puppet/util/windows/string.rb +12 -13
  174. data/lib/puppet/util/yaml.rb +0 -22
  175. data/lib/puppet/vendor/require_vendored.rb +0 -1
  176. data/lib/puppet/version.rb +1 -1
  177. data/lib/puppet/x509.rb +5 -1
  178. data/lib/puppet/x509/cert_provider.rb +29 -1
  179. data/locales/puppet.pot +521 -1226
  180. data/man/man5/puppet.conf.5 +35 -95
  181. data/man/man8/puppet-agent.8 +1 -1
  182. data/man/man8/puppet-apply.8 +1 -1
  183. data/man/man8/puppet-catalog.8 +1 -1
  184. data/man/man8/puppet-config.8 +1 -1
  185. data/man/man8/puppet-describe.8 +1 -1
  186. data/man/man8/puppet-device.8 +1 -1
  187. data/man/man8/puppet-doc.8 +1 -1
  188. data/man/man8/puppet-epp.8 +1 -1
  189. data/man/man8/puppet-facts.8 +57 -36
  190. data/man/man8/puppet-filebucket.8 +4 -4
  191. data/man/man8/puppet-generate.8 +1 -1
  192. data/man/man8/puppet-help.8 +1 -1
  193. data/man/man8/puppet-lookup.8 +1 -1
  194. data/man/man8/puppet-module.8 +1 -58
  195. data/man/man8/puppet-node.8 +1 -1
  196. data/man/man8/puppet-parser.8 +1 -1
  197. data/man/man8/puppet-plugin.8 +1 -1
  198. data/man/man8/puppet-report.8 +1 -1
  199. data/man/man8/puppet-resource.8 +1 -1
  200. data/man/man8/puppet-script.8 +1 -1
  201. data/man/man8/puppet-ssl.8 +1 -1
  202. data/man/man8/puppet.8 +2 -2
  203. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  204. data/spec/integration/application/agent_spec.rb +57 -11
  205. data/spec/integration/application/apply_spec.rb +1 -1
  206. data/spec/integration/application/filebucket_spec.rb +16 -16
  207. data/spec/integration/application/help_spec.rb +2 -0
  208. data/spec/integration/application/plugin_spec.rb +23 -1
  209. data/spec/integration/defaults_spec.rb +7 -3
  210. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  211. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  212. data/spec/integration/network/http_pool_spec.rb +3 -21
  213. data/spec/integration/parser/catalog_spec.rb +0 -38
  214. data/spec/integration/parser/node_spec.rb +0 -9
  215. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  216. data/spec/integration/type/file_spec.rb +5 -4
  217. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  218. data/spec/integration/util/windows/security_spec.rb +1 -1
  219. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  220. data/spec/lib/puppet_spec/settings.rb +1 -0
  221. data/spec/spec_helper.rb +2 -0
  222. data/spec/unit/agent_spec.rb +0 -2
  223. data/spec/unit/application/facts_spec.rb +86 -0
  224. data/spec/unit/application/filebucket_spec.rb +41 -39
  225. data/spec/unit/application/ssl_spec.rb +2 -2
  226. data/spec/unit/certificate_factory_spec.rb +1 -1
  227. data/spec/unit/configurer/downloader_spec.rb +6 -2
  228. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  229. data/spec/unit/configurer_spec.rb +12 -9
  230. data/spec/unit/context/trusted_information_spec.rb +2 -6
  231. data/spec/unit/defaults_spec.rb +22 -47
  232. data/spec/unit/environments_spec.rb +0 -3
  233. data/spec/unit/face/facts_spec.rb +4 -0
  234. data/spec/unit/face/node_spec.rb +14 -2
  235. data/spec/unit/face/plugin_spec.rb +73 -33
  236. data/spec/unit/file_bucket/file_spec.rb +1 -1
  237. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -18
  238. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  239. data/spec/unit/functions/camelcase_spec.rb +1 -1
  240. data/spec/unit/functions/capitalize_spec.rb +1 -1
  241. data/spec/unit/functions/downcase_spec.rb +1 -1
  242. data/spec/unit/functions/upcase_spec.rb +1 -1
  243. data/spec/unit/http/client_spec.rb +7 -8
  244. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  245. data/spec/unit/http/external_client_spec.rb +4 -4
  246. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  247. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  248. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  249. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  250. data/spec/unit/http/resolver_spec.rb +13 -13
  251. data/spec/unit/http/service/compiler_spec.rb +0 -62
  252. data/spec/unit/http/service/file_server_spec.rb +3 -3
  253. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  254. data/spec/unit/http/service_spec.rb +0 -1
  255. data/spec/unit/http/session_spec.rb +16 -14
  256. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  257. data/spec/unit/indirector/facts/facter_spec.rb +113 -0
  258. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  259. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  260. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  261. data/spec/unit/indirector/file_server_spec.rb +1 -15
  262. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  263. data/spec/unit/indirector/request_spec.rb +0 -264
  264. data/spec/unit/indirector/rest_spec.rb +98 -752
  265. data/spec/unit/network/authconfig_spec.rb +2 -129
  266. data/spec/unit/network/authorization_spec.rb +2 -55
  267. data/spec/unit/network/formats_spec.rb +45 -4
  268. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -92
  269. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  270. data/spec/unit/network/http/api_spec.rb +10 -0
  271. data/spec/unit/network/http/connection_spec.rb +19 -41
  272. data/spec/unit/network/http/handler_spec.rb +0 -1
  273. data/spec/unit/network/http_pool_spec.rb +0 -4
  274. data/spec/unit/node/environment_spec.rb +33 -21
  275. data/spec/unit/node_spec.rb +2 -54
  276. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  277. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  278. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  279. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  280. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  281. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  282. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  283. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  284. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  285. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  286. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  287. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  288. data/spec/unit/pops/visitor_spec.rb +1 -1
  289. data/spec/unit/provider/group/groupadd_spec.rb +5 -2
  290. data/spec/unit/provider/nameservice_spec.rb +0 -57
  291. data/spec/unit/provider/package/apt_spec.rb +24 -15
  292. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  293. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  294. data/spec/unit/provider/package/gem_spec.rb +32 -0
  295. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  296. data/spec/unit/provider/service/smf_spec.rb +401 -165
  297. data/spec/unit/provider/service/windows_spec.rb +0 -1
  298. data/spec/unit/provider/user/useradd_spec.rb +55 -3
  299. data/spec/unit/provider_spec.rb +0 -12
  300. data/spec/unit/resource/type_collection_spec.rb +2 -22
  301. data/spec/unit/resource_spec.rb +0 -56
  302. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  303. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  304. data/spec/unit/settings/port_setting_spec.rb +31 -0
  305. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  306. data/spec/unit/settings_spec.rb +17 -0
  307. data/spec/unit/ssl/base_spec.rb +36 -3
  308. data/spec/unit/ssl/certificate_request_spec.rb +19 -55
  309. data/spec/unit/ssl/certificate_spec.rb +2 -11
  310. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  311. data/spec/unit/ssl/verifier_spec.rb +0 -21
  312. data/spec/unit/transaction/report_spec.rb +0 -2
  313. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  314. data/spec/unit/transaction_spec.rb +45 -79
  315. data/spec/unit/type/file/checksum_spec.rb +6 -6
  316. data/spec/unit/type/file/content_spec.rb +1 -1
  317. data/spec/unit/type/file/ensure_spec.rb +1 -1
  318. data/spec/unit/type/file/mode_spec.rb +1 -1
  319. data/spec/unit/type/file/source_spec.rb +0 -1
  320. data/spec/unit/type/file_spec.rb +12 -6
  321. data/spec/unit/type/package_spec.rb +1 -1
  322. data/spec/unit/type_spec.rb +20 -0
  323. data/spec/unit/util/backups_spec.rb +0 -2
  324. data/spec/unit/util/execution_spec.rb +0 -29
  325. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  326. data/spec/unit/util/run_mode_spec.rb +21 -121
  327. data/spec/unit/util/windows/string_spec.rb +1 -3
  328. data/spec/unit/util/yaml_spec.rb +0 -54
  329. data/spec/unit/util_spec.rb +0 -18
  330. metadata +48 -219
  331. data/conf/auth.conf +0 -150
  332. data/lib/puppet/application/cert.rb +0 -76
  333. data/lib/puppet/application/key.rb +0 -4
  334. data/lib/puppet/application/man.rb +0 -4
  335. data/lib/puppet/application/status.rb +0 -4
  336. data/lib/puppet/face/key.rb +0 -16
  337. data/lib/puppet/face/man.rb +0 -145
  338. data/lib/puppet/face/module/build.rb +0 -14
  339. data/lib/puppet/face/module/generate.rb +0 -14
  340. data/lib/puppet/face/module/search.rb +0 -103
  341. data/lib/puppet/face/status.rb +0 -51
  342. data/lib/puppet/indirector/certificate/file.rb +0 -9
  343. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  344. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  345. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  346. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  347. data/lib/puppet/indirector/file_content/http.rb +0 -22
  348. data/lib/puppet/indirector/key/file.rb +0 -46
  349. data/lib/puppet/indirector/key/memory.rb +0 -7
  350. data/lib/puppet/indirector/ssl_file.rb +0 -162
  351. data/lib/puppet/indirector/status.rb +0 -3
  352. data/lib/puppet/indirector/status/local.rb +0 -12
  353. data/lib/puppet/indirector/status/rest.rb +0 -27
  354. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  355. data/lib/puppet/network/auth_config_parser.rb +0 -90
  356. data/lib/puppet/network/authstore.rb +0 -283
  357. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  358. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  359. data/lib/puppet/network/http/base_pool.rb +0 -36
  360. data/lib/puppet/network/http/compression.rb +0 -127
  361. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  362. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  363. data/lib/puppet/network/rest_controller.rb +0 -2
  364. data/lib/puppet/network/rights.rb +0 -210
  365. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  366. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  367. data/lib/puppet/parser/environment_compiler.rb +0 -202
  368. data/lib/puppet/pops/types/enumeration.rb +0 -16
  369. data/lib/puppet/resource/capability_finder.rb +0 -154
  370. data/lib/puppet/rest/errors.rb +0 -15
  371. data/lib/puppet/rest/response.rb +0 -35
  372. data/lib/puppet/rest/route.rb +0 -85
  373. data/lib/puppet/rest/routes.rb +0 -135
  374. data/lib/puppet/ssl/host.rb +0 -505
  375. data/lib/puppet/ssl/key.rb +0 -61
  376. data/lib/puppet/ssl/validator.rb +0 -61
  377. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  378. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  379. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  380. data/lib/puppet/status.rb +0 -40
  381. data/lib/puppet/util/connection.rb +0 -88
  382. data/lib/puppet/util/fact_dif.rb +0 -62
  383. data/lib/puppet/util/ssl.rb +0 -83
  384. data/lib/puppet/util/windows/api_types.rb +0 -309
  385. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  386. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  387. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  388. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  389. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  390. data/lib/puppet/vendor/pathspec/README.md +0 -53
  391. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  392. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  393. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  394. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  395. data/man/man8/puppet-key.8 +0 -126
  396. data/man/man8/puppet-man.8 +0 -76
  397. data/man/man8/puppet-status.8 +0 -108
  398. data/spec/integration/network/authconfig_spec.rb +0 -256
  399. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  400. data/spec/unit/application/man_spec.rb +0 -52
  401. data/spec/unit/capability_spec.rb +0 -414
  402. data/spec/unit/face/key_spec.rb +0 -9
  403. data/spec/unit/face/module/search_spec.rb +0 -231
  404. data/spec/unit/face/status_spec.rb +0 -9
  405. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  406. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  407. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  408. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  409. data/spec/unit/indirector/key/file_spec.rb +0 -78
  410. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  411. data/spec/unit/indirector/status/local_spec.rb +0 -10
  412. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  413. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  414. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  415. data/spec/unit/network/authstore_spec.rb +0 -422
  416. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  417. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  418. data/spec/unit/network/http/compression_spec.rb +0 -240
  419. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  420. data/spec/unit/network/http_spec.rb +0 -9
  421. data/spec/unit/network/rights_spec.rb +0 -439
  422. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  423. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  424. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  425. data/spec/unit/rest/route_spec.rb +0 -132
  426. data/spec/unit/ssl/host_spec.rb +0 -645
  427. data/spec/unit/ssl/key_spec.rb +0 -173
  428. data/spec/unit/ssl/validator_spec.rb +0 -278
  429. data/spec/unit/status_spec.rb +0 -45
  430. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'win32/service' if Puppet::Util::Platform.windows?
3
2
 
4
3
  describe 'Puppet::Type::Service::Provider::Windows',
5
4
  :if => Puppet::Util::Platform.windows? && !Puppet::Util::Platform.jruby? do
@@ -152,6 +152,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
152
152
 
153
153
  it "should not use -G for luseradd and should call usermod with -G after luseradd when groups property is set" do
154
154
  resource[:groups] = ['group1', 'group2']
155
+ allow(provider).to receive(:localgroups)
155
156
  expect(provider).to receive(:execute).with(include('/usr/sbin/luseradd').and(excluding('-G')), hash_including(custom_environment: hash_including('LIBUSER_CONF')))
156
157
  expect(provider).to receive(:execute).with(include('/usr/sbin/usermod').and(include('-G')), hash_including(custom_environment: hash_including('LIBUSER_CONF')))
157
158
  provider.create
@@ -337,7 +338,8 @@ describe Puppet::Type.type(:user).provider(:useradd) do
337
338
 
338
339
  it "should return the local comment string when forcelocal is true" do
339
340
  resource[:forcelocal] = true
340
- allow(File).to receive(:read).with('/etc/passwd').and_return(content)
341
+ allow(Puppet::FileSystem).to receive(:exist?).with('/etc/passwd').and_return(true)
342
+ allow(Puppet::FileSystem).to receive(:each_line).with('/etc/passwd').and_yield(content)
341
343
  expect(provider.comment).to eq('local comment')
342
344
  end
343
345
 
@@ -349,8 +351,58 @@ describe Puppet::Type.type(:user).provider(:useradd) do
349
351
  end
350
352
  end
351
353
 
354
+ describe "#gid" do
355
+ before { described_class.has_feature :manages_local_users_and_groups }
356
+
357
+ let(:content) { "myuser:x:x:999:x:x:x" }
358
+
359
+ it "should return the local GID when forcelocal is true" do
360
+ resource[:forcelocal] = true
361
+ allow(Puppet::FileSystem).to receive(:exist?).with('/etc/passwd').and_return(true)
362
+ allow(Puppet::FileSystem).to receive(:each_line).with('/etc/passwd').and_yield(content)
363
+ expect(provider.gid).to eq('999')
364
+ end
365
+
366
+ it "should fall back to nameservice GID when forcelocal is false" do
367
+ resource[:forcelocal] = false
368
+ allow(provider).to receive(:get).with(:gid).and_return('1234')
369
+ expect(provider).not_to receive(:localgid)
370
+ expect(provider.gid).to eq('1234')
371
+ end
372
+ end
373
+
374
+ describe "#groups" do
375
+ before { described_class.has_feature :manages_local_users_and_groups }
376
+
377
+ let(:content) do
378
+ <<~EOF
379
+ group1:x:0:myuser
380
+ group2:x:999:
381
+ group3:x:998:myuser
382
+ EOF
383
+ end
384
+
385
+ it "should return the local groups string when forcelocal is true" do
386
+ resource[:forcelocal] = true
387
+ group1, group2, group3 = content.split
388
+ allow(Puppet::FileSystem).to receive(:exist?).with('/etc/group').and_return(true)
389
+ allow(Puppet::FileSystem).to receive(:each_line).with('/etc/group').and_yield(group1).and_yield(group2).and_yield(group3)
390
+ expect(provider.groups).to eq(['group1', 'group3'])
391
+ end
392
+
393
+ it "should fall back to nameservice groups when forcelocal is false" do
394
+ resource[:forcelocal] = false
395
+ allow(Puppet::Util::POSIX).to receive(:groups_of).with('myuser').and_return(['remote groups'])
396
+ expect(provider).not_to receive(:localgroups)
397
+ expect(provider.groups).to eq('remote groups')
398
+ end
399
+ end
400
+
352
401
  describe "#finduser" do
353
- before { allow(File).to receive(:read).with('/etc/passwd').and_return(content) }
402
+ before do
403
+ allow(Puppet::FileSystem).to receive(:exist?).with('/etc/passwd').and_return(true)
404
+ allow(Puppet::FileSystem).to receive(:each_line).with('/etc/passwd').and_yield(content)
405
+ end
354
406
 
355
407
  let(:content) { "sample_account:sample_password:sample_uid:sample_gid:sample_gecos:sample_directory:sample_shell" }
356
408
  let(:output) do
@@ -376,7 +428,7 @@ describe Puppet::Type.type(:user).provider(:useradd) do
376
428
  end
377
429
 
378
430
  it "reads the user file only once per resource" do
379
- expect(File).to receive(:read).with('/etc/passwd').once
431
+ expect(Puppet::FileSystem).to receive(:each_line).with('/etc/passwd').once
380
432
  5.times { provider.finduser(:account, 'sample_account') }
381
433
  end
382
434
  end
@@ -668,18 +668,6 @@ describe Puppet::Provider do
668
668
 
669
669
  expect { |b| provider.execpipe("a_command", true, &b) }.to yield_with_args('some output')
670
670
  end
671
-
672
- it "delegates instance execfail to Puppet::Util::Execution" do
673
- expect(Puppet::Util::Execution).to receive(:execfail).with("a_command", "an exception to raise")
674
-
675
- provider.new.execfail("a_command", "an exception to raise")
676
- end
677
-
678
- it "delegates class execfail to Puppet::Util::Execution" do
679
- expect(Puppet::Util::Execution).to receive(:execfail).with("a_command", "an exception to raise")
680
-
681
- provider.execfail("a_command", "an exception to raise")
682
- end
683
671
  end
684
672
 
685
673
  context "mk_resource_methods" do
@@ -75,18 +75,16 @@ describe Puppet::Resource::TypeCollection do
75
75
  end.to raise_error(Puppet::ParseError, /cannot be redefined/)
76
76
  end
77
77
 
78
- it "should remove all nodes, classes, definitions, and applications when cleared" do
78
+ it "should remove all nodes, classes and definitions when cleared" do
79
79
  loader = Puppet::Resource::TypeCollection.new(environment)
80
80
  loader.add Puppet::Resource::Type.new(:hostclass, "class")
81
81
  loader.add Puppet::Resource::Type.new(:definition, "define")
82
82
  loader.add Puppet::Resource::Type.new(:node, "node")
83
- loader.add Puppet::Resource::Type.new(:application, "application")
84
83
 
85
84
  loader.clear
86
85
  expect(loader.hostclass("class")).to be_nil
87
86
  expect(loader.definition("define")).to be_nil
88
87
  expect(loader.node("node")).to be_nil
89
- expect(loader.node("application")).to be_nil
90
88
  end
91
89
 
92
90
  describe "when looking up names" do
@@ -155,7 +153,7 @@ describe Puppet::Resource::TypeCollection do
155
153
  end
156
154
  end
157
155
 
158
- KINDS = %w{hostclass node definition application}
156
+ KINDS = %w{hostclass node definition}
159
157
  KINDS.each do |data|
160
158
  describe "behavior of add for #{data}" do
161
159
 
@@ -178,24 +176,6 @@ describe Puppet::Resource::TypeCollection do
178
176
  it "should return nil when asked for a #{data} that has not been added" do
179
177
  expect(Puppet::Resource::TypeCollection.new(environment).send(data, "foo")).to be_nil
180
178
  end
181
-
182
- if data != "node"
183
- it "should fail if an application with the same name is added" do
184
- loader = Puppet::Resource::TypeCollection.new(environment)
185
- instance = Puppet::Resource::Type.new(data, "foo")
186
- application = Puppet::Resource::Type.new(:application, "foo")
187
- loader.add(instance)
188
- expect { loader.add(application) }.to raise_error(Puppet::ParseError, /redefine/)
189
- end
190
-
191
- it "should fail if there is an application with the same name" do
192
- loader = Puppet::Resource::TypeCollection.new(environment)
193
- application = Puppet::Resource::Type.new(:application, "foo")
194
- instance = Puppet::Resource::Type.new(data, "foo")
195
- loader.add(instance)
196
- expect { loader.add(application) }.to raise_error(Puppet::ParseError, /redefine/)
197
- end
198
- end
199
179
  end
200
180
  end
201
181
 
@@ -286,39 +286,6 @@ describe Puppet::Resource do
286
286
  Puppet::Parser::AST::Leaf.new(value: value)
287
287
  end
288
288
 
289
- it "should fail when asked to set default values and it is not a parser resource" do
290
- environment.known_resource_types.add(
291
- Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_leaf("default")})
292
- )
293
- resource = Puppet::Resource.new("default_param", "name", :environment => environment)
294
- expect { resource.set_default_parameters(scope) }.to raise_error(Puppet::DevError)
295
- end
296
-
297
- it "should evaluate and set any default values when no value is provided" do
298
- environment.known_resource_types.add(
299
- Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_leaf("a_default_value")})
300
- )
301
- resource = Puppet::Parser::Resource.new("default_param", "name", :scope => scope)
302
- resource.set_default_parameters(scope)
303
- expect(resource["a"]).to eq("a_default_value")
304
- end
305
-
306
- it "should skip attributes with no default value" do
307
- environment.known_resource_types.add(
308
- Puppet::Resource::Type.new(:definition, "no_default_param", :arguments => {"a" => ast_leaf("a_default_value")})
309
- )
310
- resource = Puppet::Parser::Resource.new("no_default_param", "name", :scope => scope)
311
- expect { resource.set_default_parameters(scope) }.not_to raise_error
312
- end
313
-
314
- it "should return the list of default parameters set" do
315
- environment.known_resource_types.add(
316
- Puppet::Resource::Type.new(:definition, "default_param", :arguments => {"a" => ast_leaf("a_default_value")})
317
- )
318
- resource = Puppet::Parser::Resource.new("default_param", "name", :scope => scope)
319
- expect(resource.set_default_parameters(scope)).to eq(["a"])
320
- end
321
-
322
289
  describe "when the resource type is :hostclass" do
323
290
  let(:environment_name) { "testing env" }
324
291
  let(:fact_values) { { 'a' => 1 } }
@@ -402,7 +369,6 @@ describe Puppet::Resource do
402
369
 
403
370
  it "should use the value provided" do
404
371
  expect(Puppet::DataBinding.indirection).not_to receive(:find)
405
- expect(resource.set_default_parameters(scope)).to eq([])
406
372
  expect(resource[:port]).to eq('8080')
407
373
  end
408
374
 
@@ -444,28 +410,6 @@ describe Puppet::Resource do
444
410
  end
445
411
  end
446
412
 
447
- describe "when validating all required parameters are present" do
448
- it "should be able to validate that all required parameters are present" do
449
- environment.known_resource_types.add(
450
- Puppet::Resource::Type.new(:definition, "required_param", :arguments => {"a" => nil})
451
- )
452
- expect { Puppet::Resource.new("required_param", "name", :environment => environment).validate_complete }.to raise_error(Puppet::ParseError)
453
- end
454
-
455
- it "should not fail when all required parameters are present" do
456
- environment.known_resource_types.add(
457
- Puppet::Resource::Type.new(:definition, "no_required_param")
458
- )
459
- resource = Puppet::Resource.new("no_required_param", "name", :environment => environment)
460
- resource["a"] = "meh"
461
- expect { resource.validate_complete }.not_to raise_error
462
- end
463
-
464
- it "should not validate against builtin types" do
465
- expect { Puppet::Resource.new("file", "/bar").validate_complete }.not_to raise_error
466
- end
467
- end
468
-
469
413
  describe "when referring to a resource with name canonicalization" do
470
414
  it "should canonicalize its own name" do
471
415
  res = Puppet::Resource.new("file", "/path/")
@@ -46,18 +46,16 @@ describe Puppet::Settings::HttpExtraHeadersSetting do
46
46
  end
47
47
 
48
48
  describe 'raises an error when' do
49
-
50
- # Ruby 2.3 reports the class of these objects as Fixnum, whereas later ruby versions report them as Integer
51
49
  it 'is given an unexpected object type' do
52
50
  expect {
53
51
  subject.munge(65)
54
- }.to raise_error(ArgumentError, /^Expected an Array, String, or Hash, got a (Integer|Fixnum)/)
52
+ }.to raise_error(ArgumentError, /^Expected an Array, String, or Hash, got a Integer/)
55
53
  end
56
54
 
57
55
  it 'is given an array of unexpected object types' do
58
56
  expect {
59
57
  subject.munge([65, 82])
60
- }.to raise_error(ArgumentError, /^Expected an Array or String, got a (Integer|Fixnum)/)
58
+ }.to raise_error(ArgumentError, /^Expected an Array or String, got a Integer/)
61
59
  end
62
60
  end
63
61
  end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet/settings'
4
+ require 'puppet/settings/integer_setting'
5
+
6
+ describe Puppet::Settings::IntegerSetting do
7
+ let(:setting) { described_class.new(:settings => double('settings'), :desc => "test") }
8
+
9
+ it "is of type :integer" do
10
+ expect(setting.type).to eq(:integer)
11
+ end
12
+
13
+ describe "when munging the setting" do
14
+ it "returns the same value if given a positive integer" do
15
+ expect(setting.munge(5)).to eq(5)
16
+ end
17
+
18
+ it "returns the same value if given a negative integer" do
19
+ expect(setting.munge(-25)).to eq(-25)
20
+ end
21
+
22
+ it "returns an integer if given a valid integer as string" do
23
+ expect(setting.munge('12')).to eq(12)
24
+ end
25
+
26
+ it "returns an integer if given a valid negative integer as string" do
27
+ expect(setting.munge('-12')).to eq(-12)
28
+ end
29
+
30
+ it "returns an integer if given a valid positive integer as string" do
31
+ expect(setting.munge('+12')).to eq(12)
32
+ end
33
+
34
+ it "raises if given an invalid value" do
35
+ expect { setting.munge('a5') }.to raise_error(Puppet::Settings::ValidationError)
36
+ end
37
+
38
+ it "raises if given nil" do
39
+ expect { setting.munge(nil) }.to raise_error(Puppet::Settings::ValidationError)
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ require 'puppet/settings'
4
+ require 'puppet/settings/port_setting'
5
+
6
+ describe Puppet::Settings::PortSetting do
7
+ let(:setting) { described_class.new(:settings => double('settings'), :desc => "test") }
8
+
9
+ it "is of type :port" do
10
+ expect(setting.type).to eq(:port)
11
+ end
12
+
13
+ describe "when munging the setting" do
14
+ it "returns the same value if given a valid port as integer" do
15
+ expect(setting.munge(5)).to eq(5)
16
+ end
17
+
18
+ it "returns an integer if given valid port as string" do
19
+ expect(setting.munge('12')).to eq(12)
20
+ end
21
+
22
+ it "raises if given a negative port number" do
23
+ expect { setting.munge('-5') }.to raise_error(Puppet::Settings::ValidationError)
24
+ end
25
+
26
+ it "raises if the port number is too high" do
27
+ expect { setting.munge(65536) }.to raise_error(Puppet::Settings::ValidationError)
28
+ end
29
+
30
+ end
31
+ end
@@ -52,10 +52,10 @@ describe Puppet::Settings::PrioritySetting do
52
52
  describe "on a Windows-like platform it", :if => Puppet::Util::Platform.windows? do
53
53
  it "parses high, normal, low, and idle priorities" do
54
54
  {
55
- 'high' => Puppet::Util::Windows::Process::HIGH_PRIORITY_CLASS,
56
- 'normal' => Puppet::Util::Windows::Process::NORMAL_PRIORITY_CLASS,
57
- 'low' => Puppet::Util::Windows::Process::BELOW_NORMAL_PRIORITY_CLASS,
58
- 'idle' => Puppet::Util::Windows::Process::IDLE_PRIORITY_CLASS
55
+ 'high' => Puppet::FFI::Windows::Constants::HIGH_PRIORITY_CLASS,
56
+ 'normal' => Puppet::FFI::Windows::Constants::NORMAL_PRIORITY_CLASS,
57
+ 'low' => Puppet::FFI::Windows::Constants::BELOW_NORMAL_PRIORITY_CLASS,
58
+ 'idle' => Puppet::FFI::Windows::Constants::IDLE_PRIORITY_CLASS
59
59
  }.each do |value, converted_value|
60
60
  expect(setting.munge(value)).to eq(converted_value)
61
61
  end
@@ -1991,6 +1991,23 @@ describe Puppet::Settings do
1991
1991
  end
1992
1992
  end
1993
1993
 
1994
+ describe 'when settings_catalog is disabled' do
1995
+ let(:settings) { Puppet::Settings.new }
1996
+ before do
1997
+ allow(Puppet).to receive(:[]).with(:settings_catalog).and_return(false)
1998
+ end
1999
+
2000
+ it 'does not compile and apply settings catalog' do
2001
+ expect(settings).not_to receive(:to_catalog)
2002
+ settings.use(:main)
2003
+ end
2004
+
2005
+ it 'logs a message that settings catalog is skipped' do
2006
+ expect(Puppet).to receive(:debug).with('Skipping settings catalog for sections main')
2007
+ settings.use(:main)
2008
+ end
2009
+ end
2010
+
1994
2011
  describe "when dealing with printing configs" do
1995
2012
  before do
1996
2013
  @settings = Puppet::Settings.new
@@ -38,9 +38,8 @@ 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
 
@@ -89,4 +88,38 @@ describe Puppet::SSL::Certificate do
89
88
  }.to raise_error(Puppet::Error, "Unknown signature algorithm 'nonsense'")
90
89
  end
91
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
92
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,37 +316,31 @@ 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
- # Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
342
- # So commenting it out till it is sorted out
343
- # The problem seems to be with the ability to sign a CSR when using either of
344
- # these hash algorithms
345
- pending "should use SHA512 to sign the csr when SHA256 and SHA1 aren't available" do
323
+ it "should use SHA512 to sign the csr when SHA256 and SHA1 aren't available" do
324
+ key = OpenSSL::PKey::RSA.new(2048)
346
325
  csr = OpenSSL::X509::Request.new
347
326
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
348
327
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
349
328
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(true)
350
329
  signer = Puppet::SSL::CertificateSigner.new
351
- signer.sign(csr, key.content)
352
- expect(csr.verify(key.content)).to be_truthy
330
+ signer.sign(csr, key)
331
+ expect(csr.verify(key)).to be_truthy
353
332
  end
354
333
 
355
- # Attempts to use SHA512 and SHA384 for signing certificates don't seem to work
356
- # So commenting it out till it is sorted out
357
- # The problem seems to be with the ability to sign a CSR when using either of
358
- # these hash algorithms
359
- pending "should use SHA384 to sign the csr when SHA256/SHA1/SHA512 aren't available" do
334
+ it "should use SHA384 to sign the csr when SHA256/SHA1/SHA512 aren't available" do
335
+ key = OpenSSL::PKey::RSA.new(2048)
360
336
  csr = OpenSSL::X509::Request.new
361
337
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA256").and_return(false)
362
338
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA1").and_return(false)
363
339
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA512").and_return(false)
364
340
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(true)
365
341
  signer = Puppet::SSL::CertificateSigner.new
366
- signer.sign(csr, key.content)
367
- expect(csr.verify(key.content)).to be_truthy
342
+ signer.sign(csr, key)
343
+ expect(csr.verify(key)).to be_truthy
368
344
  end
369
345
 
370
346
  it "should use SHA224 to sign the csr when SHA256/SHA1/SHA512/SHA384 aren't available" do
@@ -375,8 +351,8 @@ describe Puppet::SSL::CertificateRequest do
375
351
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA384").and_return(false)
376
352
  expect(OpenSSL::Digest).to receive(:const_defined?).with("SHA224").and_return(true)
377
353
  signer = Puppet::SSL::CertificateSigner.new
378
- signer.sign(csr, key.content)
379
- expect(csr.verify(key.content)).to be_truthy
354
+ signer.sign(csr, key)
355
+ expect(csr.verify(key)).to be_truthy
380
356
  end
381
357
 
382
358
  it "should raise an error if neither SHA256/SHA1/SHA512/SHA384/SHA224 are available" do
@@ -390,16 +366,4 @@ describe Puppet::SSL::CertificateRequest do
390
366
  }.to raise_error(Puppet::Error)
391
367
  end
392
368
  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
369
  end