puppet 6.19.0 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of puppet might be problematic. Click here for more details.

Files changed (513) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +2 -16
  3. data/Gemfile +3 -4
  4. data/Gemfile.lock +33 -28
  5. data/README.md +1 -1
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +2 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/application.rb +182 -104
  15. data/lib/puppet/application/agent.rb +1 -0
  16. data/lib/puppet/application/apply.rb +3 -2
  17. data/lib/puppet/application/device.rb +101 -104
  18. data/lib/puppet/application/filebucket.rb +15 -11
  19. data/lib/puppet/application/script.rb +1 -0
  20. data/lib/puppet/application/ssl.rb +1 -1
  21. data/lib/puppet/application_support.rb +7 -0
  22. data/lib/puppet/configurer.rb +44 -36
  23. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  24. data/lib/puppet/defaults.rb +71 -170
  25. data/lib/puppet/environments.rb +44 -75
  26. data/lib/puppet/face/config.rb +10 -0
  27. data/lib/puppet/face/epp.rb +12 -2
  28. data/lib/puppet/face/facts.rb +80 -6
  29. data/lib/puppet/face/help.rb +1 -1
  30. data/lib/puppet/face/node/clean.rb +8 -0
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/posix.rb +10 -0
  33. data/lib/puppet/ffi/posix/constants.rb +14 -0
  34. data/lib/puppet/ffi/posix/functions.rb +24 -0
  35. data/lib/puppet/ffi/windows.rb +12 -0
  36. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  37. data/lib/puppet/ffi/windows/constants.rb +404 -0
  38. data/lib/puppet/ffi/windows/functions.rb +628 -0
  39. data/lib/puppet/ffi/windows/structs.rb +338 -0
  40. data/lib/puppet/file_serving/configuration.rb +0 -5
  41. data/lib/puppet/file_serving/configuration/parser.rb +6 -32
  42. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  43. data/lib/puppet/file_serving/mount.rb +1 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/epp.rb +1 -0
  46. data/lib/puppet/functions/inline_epp.rb +1 -0
  47. data/lib/puppet/generate/models/type/type.rb +4 -1
  48. data/lib/puppet/http.rb +22 -13
  49. data/lib/puppet/http/client.rb +164 -114
  50. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  51. data/lib/puppet/http/errors.rb +16 -0
  52. data/lib/puppet/http/external_client.rb +5 -7
  53. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  54. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  55. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  56. data/lib/puppet/http/proxy.rb +137 -0
  57. data/lib/puppet/http/redirector.rb +4 -12
  58. data/lib/puppet/http/resolver.rb +5 -15
  59. data/lib/puppet/http/resolver/server_list.rb +6 -10
  60. data/lib/puppet/http/resolver/settings.rb +4 -7
  61. data/lib/puppet/http/resolver/srv.rb +7 -11
  62. data/lib/puppet/http/response.rb +36 -54
  63. data/lib/puppet/http/response_converter.rb +24 -0
  64. data/lib/puppet/http/response_net_http.rb +42 -0
  65. data/lib/puppet/http/retry_after_handler.rb +4 -13
  66. data/lib/puppet/http/service.rb +12 -26
  67. data/lib/puppet/http/service/ca.rb +11 -22
  68. data/lib/puppet/http/service/compiler.rb +22 -69
  69. data/lib/puppet/http/service/file_server.rb +18 -27
  70. data/lib/puppet/http/service/puppetserver.rb +26 -12
  71. data/lib/puppet/http/service/report.rb +8 -10
  72. data/lib/puppet/http/session.rb +11 -20
  73. data/lib/puppet/{network/http → http}/site.rb +1 -2
  74. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  75. data/lib/puppet/indirector/fact_search.rb +60 -0
  76. data/lib/puppet/indirector/facts/facter.rb +24 -3
  77. data/lib/puppet/indirector/facts/json.rb +27 -0
  78. data/lib/puppet/indirector/facts/rest.rb +3 -22
  79. data/lib/puppet/indirector/facts/yaml.rb +3 -58
  80. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  81. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  82. data/lib/puppet/indirector/file_metadata/rest.rb +3 -9
  83. data/lib/puppet/indirector/file_server.rb +1 -8
  84. data/lib/puppet/indirector/generic_http.rb +0 -11
  85. data/lib/puppet/indirector/json.rb +5 -1
  86. data/lib/puppet/indirector/node/json.rb +8 -0
  87. data/lib/puppet/indirector/node/rest.rb +2 -4
  88. data/lib/puppet/indirector/report/json.rb +34 -0
  89. data/lib/puppet/indirector/report/rest.rb +3 -8
  90. data/lib/puppet/indirector/request.rb +0 -101
  91. data/lib/puppet/indirector/rest.rb +12 -263
  92. data/lib/puppet/module_tool/applications.rb +0 -1
  93. data/lib/puppet/module_tool/applications/installer.rb +48 -2
  94. data/lib/puppet/module_tool/errors/shared.rb +17 -2
  95. data/lib/puppet/network/authconfig.rb +2 -96
  96. data/lib/puppet/network/authorization.rb +13 -35
  97. data/lib/puppet/network/formats.rb +69 -1
  98. data/lib/puppet/network/http.rb +3 -3
  99. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  100. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  101. data/lib/puppet/network/http/connection.rb +247 -316
  102. data/lib/puppet/network/http/handler.rb +0 -1
  103. data/lib/puppet/network/http_pool.rb +16 -34
  104. data/lib/puppet/node.rb +1 -30
  105. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  106. data/lib/puppet/pal/pal_impl.rb +73 -18
  107. data/lib/puppet/parser/ast/leaf.rb +3 -2
  108. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  109. data/lib/puppet/parser/compiler.rb +0 -198
  110. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  111. data/lib/puppet/parser/resource.rb +0 -69
  112. data/lib/puppet/parser/templatewrapper.rb +1 -1
  113. data/lib/puppet/pops/evaluator/deferred_resolver.rb +5 -3
  114. data/lib/puppet/pops/evaluator/evaluator_impl.rb +22 -8
  115. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  116. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  117. data/lib/puppet/pops/issues.rb +0 -5
  118. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  119. data/lib/puppet/pops/model/ast.pp +0 -42
  120. data/lib/puppet/pops/model/ast.rb +0 -290
  121. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  122. data/lib/puppet/pops/model/factory.rb +0 -45
  123. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  124. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  125. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  126. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  127. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  128. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  129. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  130. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  131. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  132. data/lib/puppet/pops/types/type_parser.rb +0 -4
  133. data/lib/puppet/pops/types/types.rb +0 -1
  134. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  135. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  136. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  137. data/lib/puppet/provider.rb +0 -13
  138. data/lib/puppet/provider/nameservice.rb +0 -18
  139. data/lib/puppet/provider/package/apt.rb +4 -0
  140. data/lib/puppet/provider/package/dpkg.rb +0 -10
  141. data/lib/puppet/provider/package/gem.rb +23 -3
  142. data/lib/puppet/provider/package/pip.rb +0 -1
  143. data/lib/puppet/provider/package/pkg.rb +0 -4
  144. data/lib/puppet/provider/package/portage.rb +1 -1
  145. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  146. data/lib/puppet/provider/service/smf.rb +191 -73
  147. data/lib/puppet/provider/user/aix.rb +2 -2
  148. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  149. data/lib/puppet/reference/configuration.rb +8 -5
  150. data/lib/puppet/reference/indirection.rb +1 -1
  151. data/lib/puppet/resource.rb +1 -89
  152. data/lib/puppet/resource/catalog.rb +1 -14
  153. data/lib/puppet/resource/type.rb +3 -119
  154. data/lib/puppet/resource/type_collection.rb +3 -48
  155. data/lib/puppet/runtime.rb +1 -2
  156. data/lib/puppet/settings.rb +88 -48
  157. data/lib/puppet/settings/alias_setting.rb +37 -0
  158. data/lib/puppet/settings/base_setting.rb +26 -2
  159. data/lib/puppet/settings/integer_setting.rb +17 -0
  160. data/lib/puppet/settings/port_setting.rb +15 -0
  161. data/lib/puppet/settings/priority_setting.rb +5 -4
  162. data/lib/puppet/ssl.rb +10 -6
  163. data/lib/puppet/ssl/base.rb +3 -5
  164. data/lib/puppet/ssl/certificate.rb +0 -6
  165. data/lib/puppet/ssl/certificate_request.rb +1 -12
  166. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  167. data/lib/puppet/ssl/oids.rb +3 -1
  168. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  169. data/lib/puppet/ssl/state_machine.rb +3 -1
  170. data/lib/puppet/ssl/verifier.rb +2 -0
  171. data/lib/puppet/test/test_helper.rb +1 -3
  172. data/lib/puppet/transaction.rb +1 -7
  173. data/lib/puppet/transaction/report.rb +2 -4
  174. data/lib/puppet/type.rb +0 -76
  175. data/lib/puppet/type/file.rb +5 -7
  176. data/lib/puppet/type/file/checksum.rb +1 -1
  177. data/lib/puppet/type/file/source.rb +1 -1
  178. data/lib/puppet/type/filebucket.rb +3 -3
  179. data/lib/puppet/type/package.rb +5 -13
  180. data/lib/puppet/type/user.rb +1 -1
  181. data/lib/puppet/util/autoload.rb +1 -8
  182. data/lib/puppet/util/execution.rb +0 -11
  183. data/lib/puppet/util/http_proxy.rb +2 -215
  184. data/lib/puppet/util/monkey_patches.rb +0 -46
  185. data/lib/puppet/util/posix.rb +54 -5
  186. data/lib/puppet/util/rdoc.rb +0 -7
  187. data/lib/puppet/util/retry_action.rb +1 -1
  188. data/lib/puppet/util/rubygems.rb +5 -1
  189. data/lib/puppet/util/run_mode.rb +9 -1
  190. data/lib/puppet/util/windows.rb +3 -8
  191. data/lib/puppet/util/windows/daemon.rb +360 -0
  192. data/lib/puppet/util/windows/error.rb +1 -0
  193. data/lib/puppet/util/windows/eventlog.rb +4 -9
  194. data/lib/puppet/util/windows/file.rb +8 -242
  195. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  196. data/lib/puppet/util/windows/process.rb +4 -226
  197. data/lib/puppet/util/windows/service.rb +9 -460
  198. data/lib/puppet/util/windows/string.rb +12 -13
  199. data/lib/puppet/util/yaml.rb +0 -22
  200. data/lib/puppet/vendor/require_vendored.rb +0 -1
  201. data/lib/puppet/version.rb +1 -1
  202. data/lib/puppet/x509.rb +5 -1
  203. data/lib/puppet/x509/cert_provider.rb +29 -1
  204. data/locales/puppet.pot +629 -1314
  205. data/man/man5/puppet.conf.5 +39 -99
  206. data/man/man8/puppet-agent.8 +2 -2
  207. data/man/man8/puppet-apply.8 +2 -2
  208. data/man/man8/puppet-catalog.8 +1 -1
  209. data/man/man8/puppet-config.8 +1 -1
  210. data/man/man8/puppet-describe.8 +1 -1
  211. data/man/man8/puppet-device.8 +2 -2
  212. data/man/man8/puppet-doc.8 +1 -1
  213. data/man/man8/puppet-epp.8 +1 -1
  214. data/man/man8/puppet-facts.8 +58 -9
  215. data/man/man8/puppet-filebucket.8 +6 -6
  216. data/man/man8/puppet-generate.8 +1 -1
  217. data/man/man8/puppet-help.8 +1 -1
  218. data/man/man8/puppet-lookup.8 +1 -1
  219. data/man/man8/puppet-module.8 +1 -58
  220. data/man/man8/puppet-node.8 +4 -1
  221. data/man/man8/puppet-parser.8 +1 -1
  222. data/man/man8/puppet-plugin.8 +1 -1
  223. data/man/man8/puppet-report.8 +4 -1
  224. data/man/man8/puppet-resource.8 +1 -1
  225. data/man/man8/puppet-script.8 +2 -2
  226. data/man/man8/puppet-ssl.8 +1 -1
  227. data/man/man8/puppet.8 +2 -2
  228. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +91 -0
  229. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  230. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +4 -0
  231. data/spec/integration/application/agent_spec.rb +151 -14
  232. data/spec/integration/application/apply_spec.rb +20 -1
  233. data/spec/integration/application/filebucket_spec.rb +16 -16
  234. data/spec/integration/application/help_spec.rb +2 -0
  235. data/spec/integration/application/plugin_spec.rb +23 -1
  236. data/spec/integration/defaults_spec.rb +7 -10
  237. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  238. data/spec/integration/indirector/file_content/file_server_spec.rb +0 -2
  239. data/spec/integration/indirector/file_metadata/file_server_spec.rb +0 -2
  240. data/spec/integration/network/http_pool_spec.rb +3 -21
  241. data/spec/integration/parser/catalog_spec.rb +0 -38
  242. data/spec/integration/parser/node_spec.rb +0 -9
  243. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  244. data/spec/integration/resource/type_collection_spec.rb +2 -6
  245. data/spec/integration/transaction_spec.rb +4 -9
  246. data/spec/integration/type/file_spec.rb +5 -4
  247. data/spec/integration/util/windows/adsi_spec.rb +3 -1
  248. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  249. data/spec/integration/util/windows/registry_spec.rb +0 -10
  250. data/spec/integration/util/windows/security_spec.rb +1 -1
  251. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  252. data/spec/lib/puppet_spec/settings.rb +7 -1
  253. data/spec/spec_helper.rb +3 -4
  254. data/spec/unit/agent_spec.rb +8 -8
  255. data/spec/unit/application/agent_spec.rb +0 -1
  256. data/spec/unit/application/config_spec.rb +224 -4
  257. data/spec/unit/application/facts_spec.rb +35 -0
  258. data/spec/unit/application/filebucket_spec.rb +41 -41
  259. data/spec/unit/application/ssl_spec.rb +2 -2
  260. data/spec/unit/application_spec.rb +51 -9
  261. data/spec/unit/certificate_factory_spec.rb +1 -1
  262. data/spec/unit/configurer/downloader_spec.rb +6 -2
  263. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  264. data/spec/unit/configurer_spec.rb +12 -9
  265. data/spec/unit/confine/feature_spec.rb +1 -1
  266. data/spec/unit/confine_spec.rb +8 -2
  267. data/spec/unit/context/trusted_information_spec.rb +2 -6
  268. data/spec/unit/defaults_spec.rb +26 -32
  269. data/spec/unit/environments_spec.rb +96 -22
  270. data/spec/unit/face/config_spec.rb +27 -32
  271. data/spec/unit/face/facts_spec.rb +4 -0
  272. data/spec/unit/face/node_spec.rb +14 -13
  273. data/spec/unit/face/plugin_spec.rb +73 -33
  274. data/spec/unit/file_bucket/file_spec.rb +1 -1
  275. data/spec/unit/file_serving/configuration/parser_spec.rb +22 -19
  276. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  277. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  278. data/spec/unit/file_serving/terminus_helper_spec.rb +11 -4
  279. data/spec/unit/forge/module_release_spec.rb +2 -7
  280. data/spec/unit/functions/camelcase_spec.rb +1 -1
  281. data/spec/unit/functions/capitalize_spec.rb +1 -1
  282. data/spec/unit/functions/downcase_spec.rb +1 -1
  283. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  284. data/spec/unit/functions/upcase_spec.rb +1 -1
  285. data/spec/unit/http/client_spec.rb +7 -8
  286. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  287. data/spec/unit/http/external_client_spec.rb +4 -4
  288. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  289. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  290. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  291. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  292. data/spec/unit/http/resolver_spec.rb +13 -13
  293. data/spec/unit/http/service/compiler_spec.rb +49 -62
  294. data/spec/unit/http/service/file_server_spec.rb +3 -3
  295. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  296. data/spec/unit/http/service_spec.rb +1 -2
  297. data/spec/unit/http/session_spec.rb +16 -14
  298. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  299. data/spec/unit/indirector/face_spec.rb +0 -1
  300. data/spec/unit/indirector/facts/facter_spec.rb +104 -1
  301. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  302. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  303. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +26 -8
  304. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  305. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  306. data/spec/unit/indirector/file_server_spec.rb +1 -15
  307. data/spec/unit/indirector/indirection_spec.rb +8 -12
  308. data/spec/unit/indirector/node/json_spec.rb +33 -0
  309. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  310. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  311. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  312. data/spec/unit/indirector/request_spec.rb +0 -264
  313. data/spec/unit/indirector/rest_spec.rb +98 -752
  314. data/spec/unit/indirector_spec.rb +2 -2
  315. data/spec/unit/module_tool/applications/installer_spec.rb +66 -0
  316. data/spec/unit/network/authconfig_spec.rb +2 -132
  317. data/spec/unit/network/authorization_spec.rb +2 -55
  318. data/spec/unit/network/formats_spec.rb +45 -4
  319. data/spec/unit/network/http/api/indirected_routes_spec.rb +1 -101
  320. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  321. data/spec/unit/network/http/api_spec.rb +10 -0
  322. data/spec/unit/network/http/connection_spec.rb +19 -41
  323. data/spec/unit/network/http/handler_spec.rb +0 -6
  324. data/spec/unit/network/http_pool_spec.rb +0 -4
  325. data/spec/unit/node/environment_spec.rb +33 -21
  326. data/spec/unit/node_spec.rb +2 -54
  327. data/spec/unit/parser/compiler_spec.rb +3 -19
  328. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  329. data/spec/unit/parser/resource_spec.rb +14 -8
  330. data/spec/unit/parser/templatewrapper_spec.rb +4 -3
  331. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +20 -0
  332. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  333. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  334. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  335. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  336. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  337. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  338. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  339. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  340. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  341. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  342. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  343. data/spec/unit/pops/visitor_spec.rb +1 -1
  344. data/spec/unit/property_spec.rb +1 -0
  345. data/spec/unit/provider/nameservice_spec.rb +66 -122
  346. data/spec/unit/provider/package/apt_spec.rb +4 -8
  347. data/spec/unit/provider/package/base_spec.rb +6 -5
  348. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  349. data/spec/unit/provider/package/gem_spec.rb +32 -0
  350. data/spec/unit/provider/package/pacman_spec.rb +18 -12
  351. data/spec/unit/provider/package/pip_spec.rb +6 -11
  352. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -4
  353. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  354. data/spec/unit/provider/service/smf_spec.rb +401 -165
  355. data/spec/unit/provider/service/windows_spec.rb +0 -1
  356. data/spec/unit/provider/user/aix_spec.rb +5 -0
  357. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  358. data/spec/unit/provider/user/pw_spec.rb +2 -0
  359. data/spec/unit/provider/user/useradd_spec.rb +1 -0
  360. data/spec/unit/provider_spec.rb +6 -20
  361. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  362. data/spec/unit/resource/type_collection_spec.rb +2 -22
  363. data/spec/unit/resource/type_spec.rb +1 -1
  364. data/spec/unit/resource_spec.rb +11 -66
  365. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  366. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  367. data/spec/unit/settings/port_setting_spec.rb +31 -0
  368. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  369. data/spec/unit/settings_spec.rb +560 -228
  370. data/spec/unit/ssl/base_spec.rb +36 -4
  371. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  372. data/spec/unit/ssl/certificate_spec.rb +2 -11
  373. data/spec/unit/ssl/ssl_provider_spec.rb +14 -8
  374. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  375. data/spec/unit/ssl/verifier_spec.rb +0 -21
  376. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -7
  377. data/spec/unit/transaction/event_manager_spec.rb +14 -11
  378. data/spec/unit/transaction/report_spec.rb +0 -2
  379. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  380. data/spec/unit/transaction_spec.rb +57 -82
  381. data/spec/unit/type/file/checksum_spec.rb +6 -6
  382. data/spec/unit/type/file/content_spec.rb +1 -2
  383. data/spec/unit/type/file/ensure_spec.rb +1 -1
  384. data/spec/unit/type/file/mode_spec.rb +1 -1
  385. data/spec/unit/type/file/selinux_spec.rb +0 -2
  386. data/spec/unit/type/file/source_spec.rb +0 -1
  387. data/spec/unit/type/file_spec.rb +12 -12
  388. data/spec/unit/type/group_spec.rb +13 -6
  389. data/spec/unit/type/package_spec.rb +1 -1
  390. data/spec/unit/type/resources_spec.rb +7 -7
  391. data/spec/unit/type/service_spec.rb +1 -1
  392. data/spec/unit/type/tidy_spec.rb +0 -1
  393. data/spec/unit/type_spec.rb +22 -2
  394. data/spec/unit/util/at_fork_spec.rb +2 -2
  395. data/spec/unit/util/autoload_spec.rb +5 -1
  396. data/spec/unit/util/backups_spec.rb +1 -4
  397. data/spec/unit/util/execution_spec.rb +15 -40
  398. data/spec/unit/util/inifile_spec.rb +6 -14
  399. data/spec/unit/util/log_spec.rb +8 -7
  400. data/spec/unit/util/logging_spec.rb +3 -3
  401. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  402. data/spec/unit/util/posix_spec.rb +363 -15
  403. data/spec/unit/util/rubygems_spec.rb +2 -2
  404. data/spec/unit/util/run_mode_spec.rb +21 -121
  405. data/spec/unit/util/selinux_spec.rb +76 -52
  406. data/spec/unit/util/storage_spec.rb +3 -1
  407. data/spec/unit/util/suidmanager_spec.rb +44 -41
  408. data/spec/unit/util/windows/string_spec.rb +1 -3
  409. data/spec/unit/util/yaml_spec.rb +0 -54
  410. data/spec/unit/util_spec.rb +13 -24
  411. metadata +66 -170
  412. data/conf/auth.conf +0 -150
  413. data/lib/puppet/application/cert.rb +0 -76
  414. data/lib/puppet/application/key.rb +0 -4
  415. data/lib/puppet/application/man.rb +0 -4
  416. data/lib/puppet/application/status.rb +0 -4
  417. data/lib/puppet/face/key.rb +0 -16
  418. data/lib/puppet/face/man.rb +0 -145
  419. data/lib/puppet/face/module/build.rb +0 -14
  420. data/lib/puppet/face/module/generate.rb +0 -14
  421. data/lib/puppet/face/module/search.rb +0 -103
  422. data/lib/puppet/face/status.rb +0 -51
  423. data/lib/puppet/indirector/certificate/file.rb +0 -9
  424. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  425. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  426. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  427. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  428. data/lib/puppet/indirector/file_content/http.rb +0 -22
  429. data/lib/puppet/indirector/key/file.rb +0 -46
  430. data/lib/puppet/indirector/key/memory.rb +0 -7
  431. data/lib/puppet/indirector/ssl_file.rb +0 -162
  432. data/lib/puppet/indirector/status.rb +0 -3
  433. data/lib/puppet/indirector/status/local.rb +0 -12
  434. data/lib/puppet/indirector/status/rest.rb +0 -27
  435. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  436. data/lib/puppet/network/auth_config_parser.rb +0 -90
  437. data/lib/puppet/network/authstore.rb +0 -283
  438. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  439. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  440. data/lib/puppet/network/http/base_pool.rb +0 -36
  441. data/lib/puppet/network/http/compression.rb +0 -127
  442. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  443. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  444. data/lib/puppet/network/rest_controller.rb +0 -2
  445. data/lib/puppet/network/rights.rb +0 -210
  446. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  447. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  448. data/lib/puppet/parser/environment_compiler.rb +0 -202
  449. data/lib/puppet/pops/types/enumeration.rb +0 -16
  450. data/lib/puppet/resource/capability_finder.rb +0 -154
  451. data/lib/puppet/rest/errors.rb +0 -15
  452. data/lib/puppet/rest/response.rb +0 -35
  453. data/lib/puppet/rest/route.rb +0 -85
  454. data/lib/puppet/rest/routes.rb +0 -135
  455. data/lib/puppet/ssl/host.rb +0 -505
  456. data/lib/puppet/ssl/key.rb +0 -61
  457. data/lib/puppet/ssl/validator.rb +0 -61
  458. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  459. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  460. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  461. data/lib/puppet/status.rb +0 -40
  462. data/lib/puppet/util/connection.rb +0 -88
  463. data/lib/puppet/util/ssl.rb +0 -83
  464. data/lib/puppet/util/windows/api_types.rb +0 -309
  465. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  466. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  467. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  468. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  469. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  470. data/lib/puppet/vendor/pathspec/README.md +0 -53
  471. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  472. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  473. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  474. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  475. data/man/man8/puppet-key.8 +0 -126
  476. data/man/man8/puppet-man.8 +0 -76
  477. data/man/man8/puppet-status.8 +0 -108
  478. data/spec/integration/application/config_spec.rb +0 -74
  479. data/spec/integration/network/authconfig_spec.rb +0 -256
  480. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  481. data/spec/unit/application/man_spec.rb +0 -52
  482. data/spec/unit/capability_spec.rb +0 -414
  483. data/spec/unit/face/catalog_spec.rb +0 -6
  484. data/spec/unit/face/key_spec.rb +0 -9
  485. data/spec/unit/face/module/search_spec.rb +0 -231
  486. data/spec/unit/face/module_spec.rb +0 -3
  487. data/spec/unit/face/status_spec.rb +0 -9
  488. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  489. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  490. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  491. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  492. data/spec/unit/indirector/key/file_spec.rb +0 -79
  493. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  494. data/spec/unit/indirector/status/local_spec.rb +0 -10
  495. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  496. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  497. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  498. data/spec/unit/network/authstore_spec.rb +0 -422
  499. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  500. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  501. data/spec/unit/network/http/compression_spec.rb +0 -240
  502. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  503. data/spec/unit/network/http_spec.rb +0 -9
  504. data/spec/unit/network/rights_spec.rb +0 -439
  505. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  506. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  507. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  508. data/spec/unit/rest/route_spec.rb +0 -132
  509. data/spec/unit/ssl/host_spec.rb +0 -650
  510. data/spec/unit/ssl/key_spec.rb +0 -173
  511. data/spec/unit/ssl/validator_spec.rb +0 -278
  512. data/spec/unit/status_spec.rb +0 -45
  513. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,305 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/indirector/ssl_file'
4
-
5
- describe Puppet::Indirector::SslFile do
6
- include PuppetSpec::Files
7
-
8
- before(:all) do
9
- class Puppet::SslTestModel
10
- extend Puppet::Indirector
11
- indirects :ssl_test_model
12
- end
13
-
14
- class Puppet::SslTestModel::SslFile < Puppet::Indirector::SslFile
15
- end
16
-
17
- Puppet::SslTestModel.indirection.terminus_class = :ssl_file
18
- end
19
-
20
- after(:all) do
21
- Puppet::SslTestModel.indirection.delete
22
- Puppet.send(:remove_const, :SslTestModel)
23
- end
24
-
25
- let(:terminus_class) { Puppet::SslTestModel::SslFile }
26
- let(:model) { Puppet::SslTestModel }
27
-
28
- before :each do
29
- @setting = :certdir
30
- terminus_class.store_in @setting
31
- terminus_class.store_at nil
32
- @path = make_absolute("/thisdoesntexist/my_directory")
33
- Puppet[:noop] = false
34
- Puppet[@setting] = @path
35
- Puppet[:trace] = false
36
- end
37
-
38
- after :each do
39
- terminus_class.store_in nil
40
- terminus_class.store_at nil
41
- end
42
-
43
- it "should use :main and :ssl upon initialization" do
44
- expect(Puppet.settings).to receive(:use).with(:main, :ssl)
45
- terminus_class.new
46
- end
47
-
48
- it "should return a nil collection directory if no directory setting has been provided" do
49
- terminus_class.store_in nil
50
- expect(terminus_class.collection_directory).to be_nil
51
- end
52
-
53
- it "should return a nil file location if no location has been provided" do
54
- terminus_class.store_at nil
55
- expect(terminus_class.file_location).to be_nil
56
- end
57
-
58
- it "should fail if no store directory or file location has been set" do
59
- expect(Puppet.settings).to receive(:use).with(:main, :ssl)
60
- terminus_class.store_in nil
61
- terminus_class.store_at nil
62
- expect {
63
- terminus_class.new
64
- }.to raise_error(Puppet::DevError, /No file or directory setting provided/)
65
- end
66
-
67
- describe "when managing ssl files" do
68
- before do
69
- allow(Puppet.settings).to receive(:use)
70
- @searcher = terminus_class.new
71
-
72
- @cert = double('certificate', :name => "myname")
73
- @certpath = File.join(@path, "myname.pem")
74
-
75
- @request = double('request', :key => @cert.name, :instance => @cert)
76
- end
77
-
78
- describe "when choosing the location for certificates" do
79
- it "should set them at the file location if a file setting is available" do
80
- terminus_class.store_in nil
81
- terminus_class.store_at :hostcrl
82
-
83
- Puppet[:hostcrl] = File.expand_path("/some/file")
84
-
85
- expect(@searcher.path(@cert.name)).to eq(Puppet[:hostcrl])
86
- end
87
-
88
- it "should set them in the setting directory, with the certificate name plus '.pem', if a directory setting is available" do
89
- expect(@searcher.path(@cert.name)).to eq(@certpath)
90
- end
91
-
92
- ['../foo', '..\\foo', './../foo', '.\\..\\foo',
93
- '/foo', '//foo', '\\foo', '\\\\goo',
94
- "test\0/../bar", "test\0\\..\\bar",
95
- "..\\/bar", "/tmp/bar", "/tmp\\bar", "tmp\\bar",
96
- " / bar", " /../ bar", " \\..\\ bar",
97
- "c:\\foo", "c:/foo", "\\\\?\\UNC\\bar", "\\\\foo\\bar",
98
- "\\\\?\\c:\\foo", "//?/UNC/bar", "//foo/bar",
99
- "//?/c:/foo",
100
- ].each do |input|
101
- it "should resist directory traversal attacks (#{input.inspect})" do
102
- expect { @searcher.path(input) }.to raise_error(ArgumentError, /invalid key/)
103
- end
104
- end
105
-
106
- # REVISIT: Should probably test MS-DOS reserved names here, too, since
107
- # they would represent a vulnerability on a Win32 system, should we ever
108
- # support that path. Don't forget that 'CON.foo' == 'CON'
109
- # --daniel 2011-09-24
110
- end
111
-
112
- describe "when finding certificates on disk" do
113
- describe "and no certificate is present" do
114
- it "should return nil" do
115
- expect(Puppet::FileSystem).to receive(:exist?).with(@path).and_return(true)
116
- expect(Dir).to receive(:entries).with(@path).and_return([])
117
- expect(Puppet::FileSystem).to receive(:exist?).with(@certpath).and_return(false)
118
-
119
- expect(@searcher.find(@request)).to be_nil
120
- end
121
- end
122
-
123
- describe "and a certificate is present" do
124
- let(:cert) { double('cert') }
125
- let(:model) { double('model') }
126
-
127
- before(:each) do
128
- allow(terminus_class).to receive(:model).and_return(model)
129
- end
130
-
131
- context "is readable" do
132
- it "should return an instance of the model, which it should use to read the certificate" do
133
- expect(Puppet::FileSystem).to receive(:exist?).with(@certpath).and_return(true)
134
-
135
- expect(model).to receive(:new).with("myname").and_return(cert)
136
- expect(cert).to receive(:read).with(@certpath)
137
-
138
- expect(@searcher.find(@request)).to equal(cert)
139
- end
140
- end
141
-
142
- context "is unreadable" do
143
- it "should raise an exception" do
144
- expect(Puppet::FileSystem).to receive(:exist?).with(@certpath).and_return(true)
145
-
146
- expect(model).to receive(:new).with("myname").and_return(cert)
147
- expect(cert).to receive(:read).with(@certpath).and_raise(Errno::EACCES)
148
-
149
- expect {
150
- @searcher.find(@request)
151
- }.to raise_error(Errno::EACCES)
152
- end
153
- end
154
- end
155
-
156
- describe "and a certificate is present but has uppercase letters" do
157
- before do
158
- @request = double('request', :key => "myhost")
159
- end
160
-
161
- # This is kind of more an integration test; it's for #1382, until
162
- # the support for upper-case certs can be removed around mid-2009.
163
- it "should rename the existing file to the lower-case path" do
164
- @path = @searcher.path("myhost")
165
- expect(Puppet::FileSystem).to receive(:exist?).with(@path).and_return(false)
166
- dir, file = File.split(@path)
167
- expect(Puppet::FileSystem).to receive(:exist?).with(dir).and_return(true)
168
- expect(Dir).to receive(:entries).with(dir).and_return([".", "..", "something.pem", file.upcase])
169
-
170
- expect(File).to receive(:rename).with(File.join(dir, file.upcase), @path)
171
-
172
- cert = double('cert')
173
- model = double('model')
174
- allow(@searcher).to receive(:model).and_return(model)
175
- expect(@searcher.model).to receive(:new).with("myhost").and_return(cert)
176
- expect(cert).to receive(:read).with(@path)
177
-
178
- @searcher.find(@request)
179
- end
180
- end
181
- end
182
-
183
- describe "when saving certificates to disk" do
184
- before do
185
- allow(FileTest).to receive(:directory?).and_return(true)
186
- allow(FileTest).to receive(:writable?).and_return(true)
187
- end
188
-
189
- it "should fail if the directory is absent" do
190
- expect(FileTest).to receive(:directory?).with(File.dirname(@certpath)).and_return(false)
191
- expect { @searcher.save(@request) }.to raise_error(Puppet::Error)
192
- end
193
-
194
- it "should fail if the directory is not writeable" do
195
- allow(FileTest).to receive(:directory?).and_return(true)
196
- expect(FileTest).to receive(:writable?).with(File.dirname(@certpath)).and_return(false)
197
- expect { @searcher.save(@request) }.to raise_error(Puppet::Error)
198
- end
199
-
200
- it "should save to the path the output of converting the certificate to a string" do
201
- fh = double('filehandle')
202
- expect(fh).to receive(:print).with("mycert")
203
-
204
- allow(@searcher).to receive(:write).and_yield(fh)
205
- expect(@cert).to receive(:to_s).and_return("mycert")
206
-
207
- @searcher.save(@request)
208
- end
209
-
210
- describe "and a directory setting is set" do
211
- it "should use the Settings class to write the file" do
212
- @searcher.class.store_in @setting
213
- fh = double('filehandle')
214
- allow(fh).to receive(:print)
215
- expect(Puppet.settings.setting(@setting)).to receive(:open_file).with(@certpath, 'w:ASCII').and_yield(fh)
216
-
217
- @searcher.save(@request)
218
- end
219
- end
220
-
221
- describe "and a file location is set" do
222
- it "should use the filehandle provided by the Settings" do
223
- @searcher.class.store_at @setting
224
-
225
- fh = double('filehandle')
226
- allow(fh).to receive(:print)
227
- expect(Puppet.settings.setting(@setting)).to receive(:open).with('w:ASCII').and_yield(fh)
228
- @searcher.save(@request)
229
- end
230
- end
231
- end
232
-
233
- describe "when destroying certificates" do
234
- describe "that do not exist" do
235
- before do
236
- expect(Puppet::FileSystem).to receive(:exist?).with(Puppet::FileSystem.pathname(@certpath)).and_return(false)
237
- end
238
-
239
- it "should return false" do
240
- expect(@searcher.destroy(@request)).to be_falsey
241
- end
242
- end
243
-
244
- describe "that exist" do
245
- it "should unlink the certificate file" do
246
- path = Puppet::FileSystem.pathname(@certpath)
247
- expect(Puppet::FileSystem).to receive(:exist?).with(path).and_return(true)
248
- expect(Puppet::FileSystem).to receive(:unlink).with(path)
249
- @searcher.destroy(@request)
250
- end
251
-
252
- it "should log that is removing the file" do
253
- allow(Puppet::FileSystem).to receive(:exist?).and_return(true)
254
- allow(Puppet::FileSystem).to receive(:unlink)
255
- expect(Puppet).to receive(:notice)
256
- @searcher.destroy(@request)
257
- end
258
- end
259
- end
260
-
261
- describe "when searching for certificates" do
262
- let(:one) { double('one') }
263
- let(:two) { double('two') }
264
- let(:one_path) { File.join(@path, 'one.pem') }
265
- let(:two_path) { File.join(@path, 'two.pem') }
266
- let(:model) { double('model') }
267
-
268
- before :each do
269
- allow(terminus_class).to receive(:model).and_return(model)
270
- end
271
-
272
- it "should return a certificate instance for all files that exist" do
273
- expect(Dir).to receive(:entries).with(@path).and_return(%w{. .. one.pem two.pem})
274
-
275
- expect(model).to receive(:new).with("one").and_return(one)
276
- expect(one).to receive(:read).with(one_path)
277
- expect(model).to receive(:new).with("two").and_return(two)
278
- expect(two).to receive(:read).with(two_path)
279
-
280
- expect(@searcher.search(@request)).to eq([one, two])
281
- end
282
-
283
- it "should raise an exception if any file is unreadable" do
284
- expect(Dir).to receive(:entries).with(@path).and_return(%w{. .. one.pem two.pem})
285
-
286
- expect(model).to receive(:new).with("one").and_return(one)
287
- expect(one).to receive(:read).with(one_path)
288
- expect(model).to receive(:new).with("two").and_return(two)
289
- expect(two).to receive(:read).and_raise(Errno::EACCES)
290
-
291
- expect {
292
- @searcher.search(@request)
293
- }.to raise_error(Errno::EACCES)
294
- end
295
-
296
- it "should skip any files that do not match /\.pem$/" do
297
- expect(Dir).to receive(:entries).with(@path).and_return(%w{. .. one two.notpem})
298
-
299
- expect(model).not_to receive(:new)
300
-
301
- expect(@searcher.search(@request)).to eq([])
302
- end
303
- end
304
- end
305
- end
@@ -1,10 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/indirector/status/local'
4
-
5
- describe Puppet::Indirector::Status::Local do
6
- it "should set the puppet version" do
7
- Puppet::Status.indirection.terminus_class = :local
8
- expect(Puppet::Status.indirection.find('*').version).to eq(Puppet.version)
9
- end
10
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/indirector/status/rest'
4
-
5
- describe Puppet::Indirector::Status::Rest do
6
- let(:certname) { 'ziggy' }
7
- let(:uri) { %r{/puppet/v3/status/ziggy} }
8
- let(:formatter) { Puppet::Network::FormatHandler.format(:json) }
9
-
10
- before :each do
11
- Puppet[:server] = 'compiler.example.com'
12
- Puppet[:serverport] = 8140
13
-
14
- described_class.indirection.terminus_class = :rest
15
- end
16
-
17
- def status_response(node)
18
- { body: formatter.render(node), headers: {'Content-Type' => formatter.mime } }
19
- end
20
-
21
- it 'finds server status' do
22
- node = Puppet::Status.new(certname)
23
-
24
- stub_request(:get, uri).to_return(**status_response(node))
25
-
26
- expect(described_class.indirection.find(certname)).to be_a(Puppet::Status)
27
- end
28
-
29
- it 'returns nil if the node does not exist' do
30
- stub_request(:get, uri).to_return(status: 404, headers: { 'Content-Type' => 'application/json' }, body: "{}")
31
-
32
- expect(described_class.indirection.find(certname)).to be_nil
33
- end
34
-
35
- it 'raises if fail_on_404 is specified' do
36
- stub_request(:get, uri).to_return(status: 404, headers: { 'Content-Type' => 'application/json' }, body: "{}")
37
-
38
- expect{
39
- described_class.indirection.find(certname, fail_on_404: true)
40
- }.to raise_error(Puppet::Error, %r{Find /puppet/v3/status/ziggy resulted in 404 with the message: {}})
41
- end
42
-
43
- it 'raises Net::HTTPError on 500' do
44
- stub_request(:get, uri).to_return(status: 500)
45
-
46
- expect{
47
- described_class.indirection.find(certname)
48
- }.to raise_error(Net::HTTPError, %r{Error 500 on SERVER: })
49
- end
50
- end
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/module_tool/applications'
3
- require 'puppet_spec/modules'
4
-
5
- describe Puppet::ModuleTool::Applications::Searcher do
6
- include PuppetSpec::Files
7
-
8
- describe "when searching" do
9
- let(:forge) { double('forge', :host => 'http://nowhe.re') }
10
- let(:searcher) do
11
- described_class.new('search_term', forge)
12
- end
13
-
14
- it "should return results from a forge query when successful" do
15
- results = 'mock results'
16
- expect(forge).to receive(:search).with('search_term').and_return(results)
17
-
18
- search_result = searcher.run
19
- expect(search_result).to eq({
20
- :result => :success,
21
- :answers => results,
22
- })
23
- end
24
-
25
- it "should return an error when the forge query throws an exception" do
26
- expect(forge).to receive(:search).with('search_term').and_raise(Puppet::Forge::Errors::ForgeError.new("something went wrong"))
27
-
28
- search_result = searcher.run
29
- expect(search_result).to eq({
30
- :result => :failure,
31
- :error => {
32
- :oneline => 'something went wrong',
33
- :multiline => 'something went wrong',
34
- },
35
- })
36
- end
37
- end
38
- end
@@ -1,115 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/network/auth_config_parser'
3
- require 'puppet/network/authconfig'
4
-
5
- describe Puppet::Network::AuthConfigParser do
6
- include PuppetSpec::Files
7
-
8
- let(:fake_authconfig) do
9
- "path ~ ^/catalog/([^/])\nmethod find\nallow *\n"
10
- end
11
-
12
- describe "Basic Parser" do
13
- it "should accept a string by default" do
14
- expect(described_class.new(fake_authconfig).parse).to be_a_kind_of Puppet::Network::AuthConfig
15
- end
16
- end
17
-
18
- describe "when parsing rights" do
19
- it "skips comments" do
20
- expect(described_class.new(' # comment\n').parse_rights).to be_empty
21
- end
22
-
23
- it "increments line number even on commented lines" do
24
- expect(described_class.new(" # comment\npath /").parse_rights['/'].line).to eq(2)
25
- end
26
-
27
- it "skips blank lines" do
28
- expect(described_class.new(' ').parse_rights).to be_empty
29
- end
30
-
31
- it "increments line number even on blank lines" do
32
- expect(described_class.new(" \npath /").parse_rights['/'].line).to eq(2)
33
- end
34
-
35
- it "does not throw an error if the same path appears twice" do
36
- expect {
37
- described_class.new("path /hello\npath /hello").parse_rights
38
- }.to_not raise_error
39
- end
40
-
41
- it "should create a new right for each found path line" do
42
- expect(described_class.new('path /certificates').parse_rights['/certificates']).to be
43
- end
44
-
45
- it "should create a new right for each found regex line" do
46
- expect(described_class.new('path ~ .rb$').parse_rights['.rb$']).to be
47
- end
48
-
49
- it "should strip whitespace around ACE" do
50
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('127.0.0.1')
51
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('172.16.10.0')
52
-
53
- described_class.new("path /\n allow 127.0.0.1 , 172.16.10.0 ").parse_rights
54
- end
55
-
56
- it "should allow ACE inline comments" do
57
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('127.0.0.1')
58
-
59
- described_class.new("path /\n allow 127.0.0.1 # will it work?").parse_rights
60
- end
61
-
62
- it "should create an allow ACE on each subsequent allow" do
63
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('127.0.0.1')
64
-
65
- described_class.new("path /\nallow 127.0.0.1").parse_rights
66
- end
67
-
68
- it "should create a deny ACE on each subsequent deny" do
69
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:deny).with('127.0.0.1')
70
-
71
- described_class.new("path /\ndeny 127.0.0.1").parse_rights
72
- end
73
-
74
- it "should inform the current ACL if we get the 'method' directive" do
75
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_method).with('search')
76
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_method).with('find')
77
-
78
- described_class.new("path /certificates\nmethod search,find").parse_rights
79
- end
80
-
81
- it "should inform the current ACL if we get the 'environment' directive" do
82
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_environment).with('production')
83
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_environment).with('development')
84
-
85
- described_class.new("path /certificates\nenvironment production,development").parse_rights
86
- end
87
-
88
- it "should inform the current ACL if we get the 'auth' directive" do
89
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_authenticated).with('yes')
90
-
91
- described_class.new("path /certificates\nauth yes").parse_rights
92
- end
93
-
94
- it "should also allow the long form 'authenticated' directive" do
95
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_authenticated).with('yes')
96
-
97
- described_class.new("path /certificates\nauthenticated yes").parse_rights
98
- end
99
- end
100
-
101
- describe "when parsing rights from files" do
102
- it "can read UTF-8" do
103
- rune_path = "/\u16A0\u16C7\u16BB" # ᚠᛇᚻ
104
- config = tmpfile('config')
105
-
106
- File.open(config, 'w', :encoding => 'utf-8') do |file|
107
- file.puts <<-EOF
108
- path #{rune_path}
109
- EOF
110
- end
111
-
112
- expect(described_class.new_from_file(config).parse_rights[rune_path]).to be
113
- end
114
- end
115
- end