puppet 6.23.0 → 7.0.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 (581) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/Gemfile +1 -3
  4. data/Gemfile.lock +34 -46
  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/osx/puppet.plist +0 -2
  10. data/ext/project_data.yaml +1 -14
  11. data/ext/redhat/puppet.spec.erb +0 -1
  12. data/ext/windows/service/daemon.rb +6 -5
  13. data/install.rb +21 -17
  14. data/lib/puppet.rb +11 -20
  15. data/lib/puppet/application.rb +178 -108
  16. data/lib/puppet/application/agent.rb +4 -12
  17. data/lib/puppet/application/apply.rb +2 -4
  18. data/lib/puppet/application/device.rb +100 -106
  19. data/lib/puppet/application/filebucket.rb +13 -9
  20. data/lib/puppet/application/resource.rb +1 -2
  21. data/lib/puppet/application/script.rb +0 -2
  22. data/lib/puppet/application/ssl.rb +1 -12
  23. data/lib/puppet/application_support.rb +0 -7
  24. data/lib/puppet/configurer.rb +30 -45
  25. data/lib/puppet/configurer/downloader.rb +1 -2
  26. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  27. data/lib/puppet/defaults.rb +100 -192
  28. data/lib/puppet/environments.rb +60 -74
  29. data/lib/puppet/face/facts.rb +5 -103
  30. data/lib/puppet/face/help.rb +1 -1
  31. data/lib/puppet/face/plugin.rb +5 -8
  32. data/lib/puppet/ffi/windows.rb +12 -0
  33. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  34. data/lib/puppet/ffi/windows/constants.rb +404 -0
  35. data/lib/puppet/ffi/windows/functions.rb +628 -0
  36. data/lib/puppet/ffi/windows/structs.rb +338 -0
  37. data/lib/puppet/file_serving/configuration.rb +0 -5
  38. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  39. data/lib/puppet/file_serving/fileset.rb +2 -14
  40. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  41. data/lib/puppet/file_serving/mount.rb +1 -2
  42. data/lib/puppet/file_system/memory_file.rb +1 -8
  43. data/lib/puppet/file_system/windows.rb +0 -2
  44. data/lib/puppet/forge/repository.rb +0 -1
  45. data/lib/puppet/functions/all.rb +1 -1
  46. data/lib/puppet/functions/camelcase.rb +1 -1
  47. data/lib/puppet/functions/capitalize.rb +2 -2
  48. data/lib/puppet/functions/downcase.rb +2 -2
  49. data/lib/puppet/functions/get.rb +5 -5
  50. data/lib/puppet/functions/group_by.rb +5 -13
  51. data/lib/puppet/functions/lest.rb +1 -1
  52. data/lib/puppet/functions/new.rb +100 -100
  53. data/lib/puppet/functions/partition.rb +4 -12
  54. data/lib/puppet/functions/require.rb +5 -5
  55. data/lib/puppet/functions/sort.rb +3 -3
  56. data/lib/puppet/functions/tree_each.rb +9 -7
  57. data/lib/puppet/functions/type.rb +4 -4
  58. data/lib/puppet/functions/upcase.rb +2 -2
  59. data/lib/puppet/generate/models/type/type.rb +4 -1
  60. data/lib/puppet/http.rb +22 -13
  61. data/lib/puppet/http/client.rb +164 -114
  62. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  63. data/lib/puppet/http/errors.rb +16 -0
  64. data/lib/puppet/http/external_client.rb +5 -7
  65. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  66. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  67. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  68. data/lib/puppet/http/proxy.rb +137 -0
  69. data/lib/puppet/http/redirector.rb +4 -12
  70. data/lib/puppet/http/resolver.rb +5 -15
  71. data/lib/puppet/http/resolver/server_list.rb +10 -25
  72. data/lib/puppet/http/resolver/settings.rb +4 -7
  73. data/lib/puppet/http/resolver/srv.rb +7 -11
  74. data/lib/puppet/http/response.rb +36 -54
  75. data/lib/puppet/http/response_converter.rb +24 -0
  76. data/lib/puppet/http/response_net_http.rb +42 -0
  77. data/lib/puppet/http/retry_after_handler.rb +4 -13
  78. data/lib/puppet/http/service.rb +12 -26
  79. data/lib/puppet/http/service/ca.rb +11 -22
  80. data/lib/puppet/http/service/compiler.rb +22 -138
  81. data/lib/puppet/http/service/file_server.rb +19 -29
  82. data/lib/puppet/http/service/puppetserver.rb +26 -12
  83. data/lib/puppet/http/service/report.rb +8 -10
  84. data/lib/puppet/http/session.rb +11 -20
  85. data/lib/puppet/{network/http → http}/site.rb +1 -2
  86. data/lib/puppet/indirector/catalog/compiler.rb +0 -1
  87. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  88. data/lib/puppet/indirector/facts/rest.rb +3 -22
  89. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  90. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  91. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  92. data/lib/puppet/indirector/file_server.rb +1 -8
  93. data/lib/puppet/indirector/generic_http.rb +0 -11
  94. data/lib/puppet/indirector/node/rest.rb +2 -4
  95. data/lib/puppet/indirector/report/rest.rb +3 -8
  96. data/lib/puppet/indirector/request.rb +0 -101
  97. data/lib/puppet/indirector/rest.rb +12 -263
  98. data/lib/puppet/module_tool/applications.rb +0 -1
  99. data/lib/puppet/module_tool/applications/installer.rb +2 -48
  100. data/lib/puppet/module_tool/errors/shared.rb +2 -17
  101. data/lib/puppet/network/authconfig.rb +2 -96
  102. data/lib/puppet/network/authorization.rb +13 -35
  103. data/lib/puppet/network/formats.rb +0 -67
  104. data/lib/puppet/network/http.rb +3 -3
  105. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  106. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  107. data/lib/puppet/network/http/connection.rb +247 -316
  108. data/lib/puppet/network/http/handler.rb +0 -1
  109. data/lib/puppet/network/http_pool.rb +16 -34
  110. data/lib/puppet/node.rb +1 -30
  111. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  112. data/lib/puppet/pal/pal_impl.rb +3 -1
  113. data/lib/puppet/parser/ast/leaf.rb +2 -3
  114. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  115. data/lib/puppet/parser/compiler.rb +0 -198
  116. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  117. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  118. data/lib/puppet/parser/resource.rb +0 -69
  119. data/lib/puppet/parser/templatewrapper.rb +1 -1
  120. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  121. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  122. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  123. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  124. data/lib/puppet/pops/issues.rb +0 -5
  125. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  126. data/lib/puppet/pops/model/ast.pp +0 -42
  127. data/lib/puppet/pops/model/ast.rb +0 -290
  128. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  129. data/lib/puppet/pops/model/factory.rb +0 -45
  130. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  131. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  132. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  133. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  134. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  135. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  137. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  138. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  139. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  140. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  141. data/lib/puppet/pops/types/type_parser.rb +0 -4
  142. data/lib/puppet/pops/types/types.rb +0 -1
  143. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  144. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  145. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  146. data/lib/puppet/property/list.rb +1 -1
  147. data/lib/puppet/provider.rb +0 -13
  148. data/lib/puppet/provider/group/groupadd.rb +8 -13
  149. data/lib/puppet/provider/nameservice.rb +0 -18
  150. data/lib/puppet/provider/package/apt.rb +2 -34
  151. data/lib/puppet/provider/package/aptitude.rb +0 -6
  152. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  153. data/lib/puppet/provider/package/dpkg.rb +0 -10
  154. data/lib/puppet/provider/package/gem.rb +23 -3
  155. data/lib/puppet/provider/package/nim.rb +6 -11
  156. data/lib/puppet/provider/package/pip.rb +0 -1
  157. data/lib/puppet/provider/package/pkg.rb +0 -4
  158. data/lib/puppet/provider/package/portage.rb +1 -1
  159. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  160. data/lib/puppet/provider/service/debian.rb +0 -2
  161. data/lib/puppet/provider/service/smf.rb +191 -73
  162. data/lib/puppet/provider/service/systemd.rb +4 -14
  163. data/lib/puppet/provider/service/windows.rb +0 -38
  164. data/lib/puppet/provider/user/aix.rb +2 -2
  165. data/lib/puppet/provider/user/directoryservice.rb +10 -33
  166. data/lib/puppet/provider/user/useradd.rb +8 -62
  167. data/lib/puppet/reference/configuration.rb +8 -7
  168. data/lib/puppet/reference/indirection.rb +1 -1
  169. data/lib/puppet/resource.rb +1 -89
  170. data/lib/puppet/resource/catalog.rb +1 -14
  171. data/lib/puppet/resource/type.rb +3 -119
  172. data/lib/puppet/resource/type_collection.rb +3 -48
  173. data/lib/puppet/runtime.rb +1 -2
  174. data/lib/puppet/settings.rb +73 -66
  175. data/lib/puppet/settings/environment_conf.rb +0 -1
  176. data/lib/puppet/settings/integer_setting.rb +17 -0
  177. data/lib/puppet/settings/port_setting.rb +15 -0
  178. data/lib/puppet/settings/priority_setting.rb +5 -4
  179. data/lib/puppet/ssl.rb +10 -6
  180. data/lib/puppet/ssl/base.rb +3 -5
  181. data/lib/puppet/ssl/certificate.rb +0 -6
  182. data/lib/puppet/ssl/certificate_request.rb +1 -12
  183. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  184. data/lib/puppet/ssl/oids.rb +3 -1
  185. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  186. data/lib/puppet/ssl/state_machine.rb +3 -1
  187. data/lib/puppet/ssl/verifier.rb +2 -0
  188. data/lib/puppet/test/test_helper.rb +1 -3
  189. data/lib/puppet/transaction.rb +1 -7
  190. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  191. data/lib/puppet/transaction/report.rb +2 -4
  192. data/lib/puppet/type.rb +0 -76
  193. data/lib/puppet/type/file.rb +6 -26
  194. data/lib/puppet/type/file/checksum.rb +1 -1
  195. data/lib/puppet/type/file/selcontext.rb +1 -1
  196. data/lib/puppet/type/file/source.rb +1 -1
  197. data/lib/puppet/type/filebucket.rb +3 -3
  198. data/lib/puppet/type/package.rb +8 -16
  199. data/lib/puppet/type/service.rb +38 -18
  200. data/lib/puppet/type/tidy.rb +2 -21
  201. data/lib/puppet/type/user.rb +20 -38
  202. data/lib/puppet/util/autoload.rb +8 -1
  203. data/lib/puppet/util/execution.rb +0 -11
  204. data/lib/puppet/util/http_proxy.rb +2 -215
  205. data/lib/puppet/util/monkey_patches.rb +0 -53
  206. data/lib/puppet/util/posix.rb +5 -54
  207. data/lib/puppet/util/rdoc.rb +0 -7
  208. data/lib/puppet/util/retry_action.rb +1 -1
  209. data/lib/puppet/util/run_mode.rb +9 -1
  210. data/lib/puppet/util/selinux.rb +4 -30
  211. data/lib/puppet/util/windows.rb +3 -8
  212. data/lib/puppet/util/windows/adsi.rb +0 -46
  213. data/lib/puppet/util/windows/daemon.rb +360 -0
  214. data/lib/puppet/util/windows/error.rb +1 -0
  215. data/lib/puppet/util/windows/eventlog.rb +4 -9
  216. data/lib/puppet/util/windows/file.rb +8 -242
  217. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  218. data/lib/puppet/util/windows/principal.rb +2 -9
  219. data/lib/puppet/util/windows/process.rb +4 -226
  220. data/lib/puppet/util/windows/service.rb +9 -460
  221. data/lib/puppet/util/windows/sid.rb +2 -4
  222. data/lib/puppet/util/windows/string.rb +12 -13
  223. data/lib/puppet/util/yaml.rb +0 -22
  224. data/lib/puppet/vendor/require_vendored.rb +0 -1
  225. data/lib/puppet/version.rb +1 -1
  226. data/lib/puppet/x509.rb +5 -1
  227. data/lib/puppet/x509/cert_provider.rb +29 -1
  228. data/locales/puppet.pot +651 -1436
  229. data/man/man5/puppet.conf.5 +266 -354
  230. data/man/man8/puppet-agent.8 +2 -2
  231. data/man/man8/puppet-apply.8 +2 -2
  232. data/man/man8/puppet-catalog.8 +1 -1
  233. data/man/man8/puppet-config.8 +1 -1
  234. data/man/man8/puppet-describe.8 +1 -1
  235. data/man/man8/puppet-device.8 +2 -2
  236. data/man/man8/puppet-doc.8 +1 -1
  237. data/man/man8/puppet-epp.8 +1 -1
  238. data/man/man8/puppet-facts.8 +4 -47
  239. data/man/man8/puppet-filebucket.8 +4 -4
  240. data/man/man8/puppet-generate.8 +1 -1
  241. data/man/man8/puppet-help.8 +1 -1
  242. data/man/man8/puppet-lookup.8 +1 -1
  243. data/man/man8/puppet-module.8 +1 -58
  244. data/man/man8/puppet-node.8 +1 -1
  245. data/man/man8/puppet-parser.8 +1 -1
  246. data/man/man8/puppet-plugin.8 +1 -1
  247. data/man/man8/puppet-report.8 +1 -1
  248. data/man/man8/puppet-resource.8 +1 -1
  249. data/man/man8/puppet-script.8 +2 -2
  250. data/man/man8/puppet-ssl.8 +1 -5
  251. data/man/man8/puppet.8 +2 -2
  252. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  253. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  254. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  255. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  256. data/spec/fixtures/ssl/ca.pem +35 -57
  257. data/spec/fixtures/ssl/crl.pem +18 -28
  258. data/spec/fixtures/ssl/ec-key.pem +11 -11
  259. data/spec/fixtures/ssl/ec.pem +24 -33
  260. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  261. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  262. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  263. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  264. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  265. data/spec/fixtures/ssl/intermediate.pem +36 -57
  266. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  267. data/spec/fixtures/ssl/pluto.pem +30 -52
  268. data/spec/fixtures/ssl/request-key.pem +57 -107
  269. data/spec/fixtures/ssl/request.pem +26 -47
  270. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  271. data/spec/fixtures/ssl/revoked.pem +30 -52
  272. data/spec/fixtures/ssl/signed-key.pem +57 -107
  273. data/spec/fixtures/ssl/signed.pem +30 -52
  274. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  275. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  276. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  277. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  278. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  279. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  280. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  281. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  282. data/spec/integration/application/agent_spec.rb +27 -171
  283. data/spec/integration/application/apply_spec.rb +1 -20
  284. data/spec/integration/application/filebucket_spec.rb +16 -16
  285. data/spec/integration/application/help_spec.rb +2 -0
  286. data/spec/integration/application/plugin_spec.rb +24 -2
  287. data/spec/integration/defaults_spec.rb +14 -3
  288. data/spec/integration/http/client_spec.rb +0 -12
  289. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  290. data/spec/integration/network/http_pool_spec.rb +3 -21
  291. data/spec/integration/parser/catalog_spec.rb +0 -38
  292. data/spec/integration/parser/node_spec.rb +0 -9
  293. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  294. data/spec/integration/resource/type_collection_spec.rb +6 -2
  295. data/spec/integration/transaction_spec.rb +9 -4
  296. data/spec/integration/type/file_spec.rb +5 -4
  297. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  298. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  299. data/spec/integration/util/windows/principal_spec.rb +0 -21
  300. data/spec/integration/util/windows/registry_spec.rb +10 -6
  301. data/spec/integration/util/windows/security_spec.rb +1 -1
  302. data/spec/lib/matchers/include.rb +27 -0
  303. data/spec/lib/matchers/include_spec.rb +32 -0
  304. data/spec/lib/puppet/test_ca.rb +2 -2
  305. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  306. data/spec/lib/puppet_spec/settings.rb +1 -0
  307. data/spec/spec_helper.rb +7 -12
  308. data/spec/unit/agent_spec.rb +6 -10
  309. data/spec/unit/application/agent_spec.rb +3 -7
  310. data/spec/unit/application/facts_spec.rb +12 -456
  311. data/spec/unit/application/filebucket_spec.rb +43 -39
  312. data/spec/unit/application/ssl_spec.rb +2 -25
  313. data/spec/unit/application_spec.rb +9 -51
  314. data/spec/unit/certificate_factory_spec.rb +1 -1
  315. data/spec/unit/configurer/downloader_spec.rb +6 -8
  316. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  317. data/spec/unit/configurer_spec.rb +12 -32
  318. data/spec/unit/confine/feature_spec.rb +1 -1
  319. data/spec/unit/confine_spec.rb +2 -8
  320. data/spec/unit/context/trusted_information_spec.rb +2 -6
  321. data/spec/unit/defaults_spec.rb +68 -54
  322. data/spec/unit/environments_spec.rb +68 -224
  323. data/spec/unit/face/node_spec.rb +11 -0
  324. data/spec/unit/face/plugin_spec.rb +73 -33
  325. data/spec/unit/file_bucket/file_spec.rb +1 -1
  326. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  327. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  328. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  329. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  330. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  331. data/spec/unit/file_system_spec.rb +0 -9
  332. data/spec/unit/forge/module_release_spec.rb +7 -2
  333. data/spec/unit/functions/camelcase_spec.rb +1 -1
  334. data/spec/unit/functions/capitalize_spec.rb +1 -1
  335. data/spec/unit/functions/downcase_spec.rb +1 -1
  336. data/spec/unit/functions/upcase_spec.rb +1 -1
  337. data/spec/unit/gettext/config_spec.rb +0 -12
  338. data/spec/unit/http/client_spec.rb +7 -8
  339. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  340. data/spec/unit/http/external_client_spec.rb +4 -4
  341. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  342. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  343. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  344. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  345. data/spec/unit/http/resolver_spec.rb +13 -13
  346. data/spec/unit/http/service/compiler_spec.rb +0 -185
  347. data/spec/unit/http/service/file_server_spec.rb +3 -3
  348. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  349. data/spec/unit/http/service_spec.rb +0 -1
  350. data/spec/unit/http/session_spec.rb +16 -14
  351. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  352. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -14
  353. data/spec/unit/indirector/face_spec.rb +1 -0
  354. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  355. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  356. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  357. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  358. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  359. data/spec/unit/indirector/file_server_spec.rb +1 -15
  360. data/spec/unit/indirector/indirection_spec.rb +12 -8
  361. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  362. data/spec/unit/indirector/request_spec.rb +0 -264
  363. data/spec/unit/indirector/rest_spec.rb +98 -752
  364. data/spec/unit/indirector_spec.rb +2 -2
  365. data/spec/unit/module_tool/applications/installer_spec.rb +0 -66
  366. data/spec/unit/network/authconfig_spec.rb +2 -129
  367. data/spec/unit/network/authorization_spec.rb +2 -55
  368. data/spec/unit/network/formats_spec.rb +4 -45
  369. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  370. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  371. data/spec/unit/network/http/api_spec.rb +10 -0
  372. data/spec/unit/network/http/connection_spec.rb +19 -41
  373. data/spec/unit/network/http/handler_spec.rb +0 -1
  374. data/spec/unit/network/http_pool_spec.rb +0 -4
  375. data/spec/unit/node/environment_spec.rb +33 -21
  376. data/spec/unit/node_spec.rb +2 -54
  377. data/spec/unit/parser/compiler_spec.rb +19 -3
  378. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  379. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  380. data/spec/unit/parser/resource_spec.rb +8 -14
  381. data/spec/unit/parser/templatewrapper_spec.rb +3 -4
  382. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  383. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  384. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  385. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  386. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  387. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  388. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  389. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  390. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  391. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  392. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  393. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  394. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  395. data/spec/unit/pops/visitor_spec.rb +1 -1
  396. data/spec/unit/property_spec.rb +0 -1
  397. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  398. data/spec/unit/provider/nameservice_spec.rb +64 -122
  399. data/spec/unit/provider/package/apt_spec.rb +23 -28
  400. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  401. data/spec/unit/provider/package/base_spec.rb +5 -6
  402. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  403. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  404. data/spec/unit/provider/package/gem_spec.rb +32 -0
  405. data/spec/unit/provider/package/nim_spec.rb +0 -42
  406. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  407. data/spec/unit/provider/package/pip_spec.rb +11 -6
  408. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  409. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  410. data/spec/unit/provider/service/init_spec.rb +0 -1
  411. data/spec/unit/provider/service/openwrt_spec.rb +1 -3
  412. data/spec/unit/provider/service/smf_spec.rb +401 -165
  413. data/spec/unit/provider/service/systemd_spec.rb +8 -53
  414. data/spec/unit/provider/service/windows_spec.rb +0 -203
  415. data/spec/unit/provider/user/aix_spec.rb +0 -5
  416. data/spec/unit/provider/user/directoryservice_spec.rb +35 -67
  417. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  418. data/spec/unit/provider/user/pw_spec.rb +0 -2
  419. data/spec/unit/provider/user/useradd_spec.rb +3 -71
  420. data/spec/unit/provider_spec.rb +8 -18
  421. data/spec/unit/resource/catalog_spec.rb +1 -1
  422. data/spec/unit/resource/type_collection_spec.rb +2 -22
  423. data/spec/unit/resource/type_spec.rb +1 -1
  424. data/spec/unit/resource_spec.rb +10 -67
  425. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  426. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  427. data/spec/unit/settings/port_setting_spec.rb +31 -0
  428. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  429. data/spec/unit/settings_spec.rb +23 -13
  430. data/spec/unit/ssl/base_spec.rb +37 -3
  431. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  432. data/spec/unit/ssl/certificate_spec.rb +2 -11
  433. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  434. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  435. data/spec/unit/ssl/verifier_spec.rb +0 -21
  436. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  437. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  438. data/spec/unit/transaction/report_spec.rb +0 -2
  439. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  440. data/spec/unit/transaction_spec.rb +55 -96
  441. data/spec/unit/type/file/checksum_spec.rb +6 -6
  442. data/spec/unit/type/file/content_spec.rb +2 -1
  443. data/spec/unit/type/file/ensure_spec.rb +1 -1
  444. data/spec/unit/type/file/mode_spec.rb +1 -1
  445. data/spec/unit/type/file/selinux_spec.rb +5 -3
  446. data/spec/unit/type/file/source_spec.rb +0 -1
  447. data/spec/unit/type/file_spec.rb +18 -6
  448. data/spec/unit/type/group_spec.rb +6 -13
  449. data/spec/unit/type/package_spec.rb +1 -1
  450. data/spec/unit/type/resources_spec.rb +7 -7
  451. data/spec/unit/type/service_spec.rb +189 -60
  452. data/spec/unit/type/tidy_spec.rb +8 -17
  453. data/spec/unit/type/user_spec.rb +0 -45
  454. data/spec/unit/type_spec.rb +22 -2
  455. data/spec/unit/util/at_fork_spec.rb +2 -2
  456. data/spec/unit/util/autoload_spec.rb +1 -5
  457. data/spec/unit/util/backups_spec.rb +2 -3
  458. data/spec/unit/util/execution_spec.rb +11 -44
  459. data/spec/unit/util/inifile_spec.rb +14 -6
  460. data/spec/unit/util/log_spec.rb +7 -8
  461. data/spec/unit/util/logging_spec.rb +3 -3
  462. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  463. data/spec/unit/util/posix_spec.rb +15 -363
  464. data/spec/unit/util/run_mode_spec.rb +21 -121
  465. data/spec/unit/util/selinux_spec.rb +68 -163
  466. data/spec/unit/util/storage_spec.rb +1 -3
  467. data/spec/unit/util/suidmanager_spec.rb +41 -44
  468. data/spec/unit/util/windows/sid_spec.rb +0 -6
  469. data/spec/unit/util/windows/string_spec.rb +1 -3
  470. data/spec/unit/util/yaml_spec.rb +0 -54
  471. data/spec/unit/util_spec.rb +6 -31
  472. data/tasks/generate_cert_fixtures.rake +2 -2
  473. metadata +44 -181
  474. data/conf/auth.conf +0 -150
  475. data/lib/puppet/application/cert.rb +0 -76
  476. data/lib/puppet/application/key.rb +0 -4
  477. data/lib/puppet/application/man.rb +0 -4
  478. data/lib/puppet/application/status.rb +0 -4
  479. data/lib/puppet/face/key.rb +0 -16
  480. data/lib/puppet/face/man.rb +0 -145
  481. data/lib/puppet/face/module/build.rb +0 -14
  482. data/lib/puppet/face/module/generate.rb +0 -14
  483. data/lib/puppet/face/module/search.rb +0 -103
  484. data/lib/puppet/face/status.rb +0 -51
  485. data/lib/puppet/ffi/posix.rb +0 -10
  486. data/lib/puppet/ffi/posix/constants.rb +0 -14
  487. data/lib/puppet/ffi/posix/functions.rb +0 -24
  488. data/lib/puppet/indirector/certificate/file.rb +0 -9
  489. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  490. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  491. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  492. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  493. data/lib/puppet/indirector/file_content/http.rb +0 -22
  494. data/lib/puppet/indirector/key/file.rb +0 -46
  495. data/lib/puppet/indirector/key/memory.rb +0 -7
  496. data/lib/puppet/indirector/ssl_file.rb +0 -162
  497. data/lib/puppet/indirector/status.rb +0 -3
  498. data/lib/puppet/indirector/status/local.rb +0 -12
  499. data/lib/puppet/indirector/status/rest.rb +0 -27
  500. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  501. data/lib/puppet/network/auth_config_parser.rb +0 -90
  502. data/lib/puppet/network/authstore.rb +0 -283
  503. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  504. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  505. data/lib/puppet/network/http/base_pool.rb +0 -36
  506. data/lib/puppet/network/http/compression.rb +0 -127
  507. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  508. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  509. data/lib/puppet/network/rest_controller.rb +0 -2
  510. data/lib/puppet/network/rights.rb +0 -210
  511. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  512. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  513. data/lib/puppet/parser/environment_compiler.rb +0 -202
  514. data/lib/puppet/pops/types/enumeration.rb +0 -16
  515. data/lib/puppet/resource/capability_finder.rb +0 -154
  516. data/lib/puppet/rest/errors.rb +0 -15
  517. data/lib/puppet/rest/response.rb +0 -35
  518. data/lib/puppet/rest/route.rb +0 -85
  519. data/lib/puppet/rest/routes.rb +0 -135
  520. data/lib/puppet/settings/alias_setting.rb +0 -37
  521. data/lib/puppet/ssl/host.rb +0 -505
  522. data/lib/puppet/ssl/key.rb +0 -61
  523. data/lib/puppet/ssl/validator.rb +0 -61
  524. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  525. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  526. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  527. data/lib/puppet/status.rb +0 -40
  528. data/lib/puppet/util/connection.rb +0 -88
  529. data/lib/puppet/util/fact_dif.rb +0 -81
  530. data/lib/puppet/util/ssl.rb +0 -83
  531. data/lib/puppet/util/windows/api_types.rb +0 -309
  532. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  533. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  534. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  535. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  536. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  537. data/lib/puppet/vendor/pathspec/README.md +0 -53
  538. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  539. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  540. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  541. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  542. data/man/man8/puppet-key.8 +0 -126
  543. data/man/man8/puppet-man.8 +0 -76
  544. data/man/man8/puppet-status.8 +0 -108
  545. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  546. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  547. data/spec/integration/application/resource_spec.rb +0 -30
  548. data/spec/integration/network/authconfig_spec.rb +0 -256
  549. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  550. data/spec/unit/application/man_spec.rb +0 -52
  551. data/spec/unit/capability_spec.rb +0 -414
  552. data/spec/unit/face/key_spec.rb +0 -9
  553. data/spec/unit/face/module/search_spec.rb +0 -231
  554. data/spec/unit/face/status_spec.rb +0 -9
  555. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  556. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  557. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  558. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  559. data/spec/unit/indirector/key/file_spec.rb +0 -78
  560. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  561. data/spec/unit/indirector/status/local_spec.rb +0 -10
  562. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  563. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  564. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  565. data/spec/unit/network/authstore_spec.rb +0 -422
  566. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  567. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  568. data/spec/unit/network/http/compression_spec.rb +0 -240
  569. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  570. data/spec/unit/network/http_spec.rb +0 -9
  571. data/spec/unit/network/rights_spec.rb +0 -439
  572. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  573. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  574. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  575. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  576. data/spec/unit/rest/route_spec.rb +0 -132
  577. data/spec/unit/ssl/host_spec.rb +0 -645
  578. data/spec/unit/ssl/key_spec.rb +0 -173
  579. data/spec/unit/ssl/validator_spec.rb +0 -278
  580. data/spec/unit/status_spec.rb +0 -45
  581. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -22,7 +22,7 @@ describe Puppet::Confine::Feature do
22
22
  end
23
23
 
24
24
  it "should use the Puppet features instance to test validity" do
25
- Puppet.features.add(:myfeature) do true end
25
+ expect(Puppet.features).to receive(:myfeature?)
26
26
  @confine.valid?
27
27
  end
28
28
 
@@ -2,12 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  require 'puppet/confine'
4
4
 
5
- class Puppet::TestConfine < Puppet::Confine
6
- def pass?(value)
7
- false
8
- end
9
- end
10
-
11
5
  describe Puppet::Confine do
12
6
  it "should require a value" do
13
7
  expect { Puppet::Confine.new }.to raise_error(ArgumentError)
@@ -39,7 +33,7 @@ describe Puppet::Confine do
39
33
 
40
34
  describe "when testing all values" do
41
35
  before do
42
- @confine = Puppet::TestConfine.new(%w{a b c})
36
+ @confine = Puppet::Confine.new(%w{a b c})
43
37
  @confine.label = "foo"
44
38
  end
45
39
 
@@ -70,7 +64,7 @@ describe Puppet::Confine do
70
64
  end
71
65
 
72
66
  describe "when testing the result of the values" do
73
- before { @confine = Puppet::TestConfine.new(%w{a b c d}) }
67
+ before { @confine = Puppet::Confine.new(%w{a b c d}) }
74
68
 
75
69
  it "should return an array with the result of the test for each value" do
76
70
  allow(@confine).to receive(:pass?).and_return(true)
@@ -4,11 +4,7 @@ require 'puppet/certificate_factory'
4
4
  require 'puppet/context/trusted_information'
5
5
 
6
6
  describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java' do
7
- let(:key) do
8
- key = Puppet::SSL::Key.new("myname")
9
- key.generate
10
- key
11
- end
7
+ let(:key) { OpenSSL::PKey::RSA.new(Puppet[:keylength]) }
12
8
 
13
9
  let(:csr) do
14
10
  csr = Puppet::SSL::CertificateRequest.new("csr")
@@ -26,7 +22,7 @@ describe Puppet::Context::TrustedInformation, :unless => RUBY_PLATFORM == 'java'
26
22
 
27
23
  # The cert must be signed so that it can be successfully be DER-decoded later
28
24
  signer = Puppet::SSL::CertificateSigner.new
29
- signer.sign(cert.content, key.content)
25
+ signer.sign(cert.content, key)
30
26
  cert
31
27
  end
32
28
 
@@ -65,9 +65,9 @@ describe "Defaults" do
65
65
  end
66
66
 
67
67
  describe '.default_digest_algorithm' do
68
- it 'defaults to md5 when FIPS is not enabled' do
68
+ it 'defaults to sha256 when FIPS is not enabled' do
69
69
  allow(Puppet::Util::Platform).to receive(:fips_enabled?).and_return(false)
70
- expect(Puppet.default_digest_algorithm).to eq('md5')
70
+ expect(Puppet.default_digest_algorithm).to eq('sha256')
71
71
  end
72
72
 
73
73
  it 'defaults to sha256 when FIPS is enabled' do
@@ -77,9 +77,9 @@ describe "Defaults" do
77
77
  end
78
78
 
79
79
  describe '.supported_checksum_types' do
80
- it 'defaults to md5, sha256, sha384, sha512, sha224 when FIPS is not enabled' do
80
+ it 'defaults to sha256, sha384, sha512, sha224, md5 when FIPS is not enabled' do
81
81
  allow(Puppet::Util::Platform).to receive(:fips_enabled?).and_return(false)
82
- expect(Puppet.default_file_checksum_types).to eq(%w[md5 sha256 sha384 sha512 sha224])
82
+ expect(Puppet.default_file_checksum_types).to eq(%w[sha256 sha384 sha512 sha224 md5])
83
83
  end
84
84
 
85
85
  it 'defaults to sha256, sha384, sha512, sha224 when FIPS is enabled' do
@@ -89,8 +89,8 @@ describe "Defaults" do
89
89
  end
90
90
 
91
91
  describe 'Puppet[:supported_checksum_types]' do
92
- it 'defaults to md5, sha256, sha512, sha384, sha224' do
93
- expect(Puppet.settings[:supported_checksum_types]).to eq(%w[md5 sha256 sha384 sha512 sha224])
92
+ it 'defaults to sha256, sha512, sha384, sha224, md5' do
93
+ expect(Puppet.settings[:supported_checksum_types]).to eq(%w[sha256 sha384 sha512 sha224 md5])
94
94
  end
95
95
 
96
96
  it 'should raise an error on an unsupported checksum type' do
@@ -182,72 +182,86 @@ describe "Defaults" do
182
182
  end
183
183
  end
184
184
 
185
- describe "facterng" do
186
- it "defaults to false" do
187
- expect(Puppet[:facterng]).to be_falsey
188
- end
189
-
190
- it "raises an exception if facter-ng could not be loaded" do
191
- allow_any_instance_of(Puppet::Settings::BooleanSetting).to receive(:require).with('facter-ng').and_raise(LoadError)
192
- allow(Facter).to receive(:value).with('facterversion').and_return('3.11.4')
185
+ describe "deprecated settings" do
186
+ it 'does not issue a deprecation warning by default' do
187
+ expect(Puppet).to receive(:deprecation_warning).never
193
188
 
194
- expect{ Puppet.settings[:facterng] = true }.to raise_exception ArgumentError, 'facter-ng could not be loaded'
189
+ Puppet.initialize_settings
195
190
  end
191
+ end
196
192
 
197
- context 'set logger' do
198
- before do
199
- @original_facter = Object.const_get(:Facter)
200
-
201
- Object.send(:remove_const, :Facter)
202
- facter = double('facter')
203
- allow(facter).to receive(:value).with('facterversion').and_return('3.11.4')
204
- Object.const_set(:Facter, facter)
205
-
206
- allow_any_instance_of(Puppet::Settings::BooleanSetting).to receive(:require).with('facter-ng').and_return(true)
207
- allow(Facter).to receive(:respond_to?).and_return(false)
208
- end
209
-
210
- after do
211
- Object.const_set(:Facter, @original_facter)
212
- end
193
+ describe "the call hook for the cadir setting", unless: Puppet::Util::Platform.windows? do
194
+ it 'does not warn when the cadir is outside the puppet ssldir' do
195
+ FileUtils.mkdir_p(Puppet[:confdir])
196
+ # This is fun; in order to get the confdir setting from the spec_helper to
197
+ # not be deleted by the #unsafe_clear in Puppet::Settings#parse_config,
198
+ # we can code it into the confdir itself, and thus we can avoid getting
199
+ # that setting wiped out during Puppet.initialize_settings.
200
+ File.write(File.join(Puppet[:confdir], 'puppet.conf'),
201
+ "cadir = /my/cool/path/for/my/cadir\n
202
+ confdir = #{Puppet[:confdir]}")
203
+ expect(Puppet).to_not receive(:log_ca_migration_warning)
204
+ Puppet.initialize_settings
205
+ expect(Puppet[:cadir]).to eq("/my/cool/path/for/my/cadir")
206
+ end
213
207
 
214
- it 'calls setup_facter_logging!' do
215
- allow(Puppet::Util::Logging).to receive(:setup_facter_logging!).and_return(true)
216
- Puppet.settings[:facterng] = true
217
- expect(Puppet::Util::Logging).to have_received(:setup_facter_logging!).once
208
+ it 'does warn when the cadir is inside the puppet ssldir' do
209
+ FileUtils.mkdir_p(Puppet[:confdir])
210
+ cadir_location = File.join(Puppet[:ssldir], 'still_inside_ssldir')
211
+ # This is fun; in order to get the confdir setting from the spec_helper to
212
+ # not be deleted by the #unsafe_clear in Puppet::Settings#parse_config,
213
+ # we can code it into the confdir itself, and thus we can avoid getting
214
+ # that setting wiped out during Puppet.initialize_settings.
215
+ File.write(File.join(Puppet[:confdir], 'puppet.conf'),
216
+ "cadir = #{cadir_location}\n
217
+ confdir = #{Puppet[:confdir]}")
218
+ expect(Puppet).to receive(:log_ca_migration_warning).twice
219
+ Puppet.initialize_settings
220
+ expect(Puppet[:cadir]).to eq(cadir_location)
218
221
  end
219
- end
220
222
  end
221
223
 
222
- describe "deprecated settings" do
223
- it 'does not issue a deprecation warning by default' do
224
- expect(Puppet).to receive(:deprecation_warning).never
225
-
224
+ describe "the default cadir", :unless => Puppet::Util::Platform.windows? do
225
+ it 'defaults to the puppetserver confdir' do
226
226
  Puppet.initialize_settings
227
+ expect(Puppet[:cadir]).to eq('/etc/puppetlabs/puppetserver/ca')
227
228
  end
228
229
 
229
- it 'issues a deprecation warning when func3x_check is disabled' do
230
- Puppet[:func3x_check] = false
231
-
232
- expect(Puppet).to receive(:deprecation_warning).with("The 'func3x_check' setting is deprecated and will be removed in a future release.")
233
-
230
+ it 'returns an empty string for Windows platforms', :if => Puppet::Util::Platform.windows? do
234
231
  Puppet.initialize_settings
232
+ expect(Puppet[:cadir]).to eq("")
235
233
  end
236
234
  end
237
235
 
238
- describe "the default cadir", :unless => Puppet::Util::Platform.windows? do
239
- it 'defaults to inside the ssldir if not migrated' do
240
- expect(File).to receive(:exist?).with('/etc/puppetlabs/puppetserver/ca/ca_crt.pem').and_return(false)
241
- expect(Puppet.default_cadir).to eq("#{Puppet[:ssldir]}/ca")
236
+ describe '#default_cadir', :unless => Puppet::Util::Platform.windows? do
237
+ it 'returns the new puppetserver directory when no ca dir is present' do
238
+ expect(Puppet).to_not receive(:log_ca_migration_warning)
239
+ expect(Puppet.default_cadir).to eq('/etc/puppetlabs/puppetserver/ca')
242
240
  end
243
241
 
244
- it 'returns the new location if there is CA content there' do
245
- expect(File).to receive(:exist?).with('/etc/puppetlabs/puppetserver/ca/ca_crt.pem').and_return(true)
246
- expect(Puppet.default_cadir).to eq('/etc/puppetlabs/puppetserver/ca')
242
+ it 'warns when a CA dir exists in the current ssldir' do
243
+ cadir = File.join(Puppet[:ssldir], 'ca')
244
+ FileUtils.mkdir_p(cadir)
245
+ expect(Puppet).to receive(:log_ca_migration_warning)
246
+ expect(Puppet.default_cadir).to eq(cadir)
247
247
  end
248
248
 
249
- it 'returns an empty string for Windows platforms', :if => Puppet::Util::Platform.windows? do
250
- expect(Puppet.default_cadir).to eq("")
249
+ it 'warns when the cadir is a symlink still inside the ssldir' do
250
+ another_dir = File.join(Puppet[:ssldir], 'another_dir')
251
+ cadir = File.join(Puppet[:ssldir], 'ca')
252
+ FileUtils.mkdir_p(another_dir)
253
+ File.symlink(another_dir, cadir)
254
+ expect(Puppet).to receive(:log_ca_migration_warning)
255
+ expect(Puppet.default_cadir).to eq(another_dir)
256
+ end
257
+
258
+ it 'does not warn when the cadir is a symlink targeted outside the ssldir' do
259
+ another_dir = Dir.mktmpdir
260
+ cadir = File.join(Puppet[:ssldir], 'ca')
261
+ FileUtils.mkdir_p(Puppet[:ssldir])
262
+ File.symlink(another_dir, cadir)
263
+ expect(Puppet).to_not receive(:log_ca_migration_warning)
264
+ expect(Puppet.default_cadir).to eq(another_dir)
251
265
  end
252
266
  end
253
267
  end
@@ -1,8 +1,13 @@
1
1
  require 'spec_helper'
2
2
  require 'puppet/environments'
3
3
  require 'puppet/file_system'
4
+ require 'matchers/include'
5
+ require 'matchers/include_in_order'
4
6
 
7
+ module PuppetEnvironments
5
8
  describe Puppet::Environments do
9
+ include Matchers::Include
10
+
6
11
  FS = Puppet::FileSystem
7
12
 
8
13
  before(:each) do
@@ -44,7 +49,7 @@ describe Puppet::Environments do
44
49
  loader_from(:filesystem => [directory_tree, global_path_1, global_path_2],
45
50
  :directory => directory_tree.children.first,
46
51
  :modulepath => [global_path_1_location, global_path_2_location]) do |loader|
47
- expect(loader.list).to contain_exactly(
52
+ expect(loader.list).to include_in_any_order(
48
53
  environment(:an_environment).
49
54
  with_manifest("#{FS.path_string(directory_tree)}/envdir/an_environment/manifests").
50
55
  with_modulepath(["#{FS.path_string(directory_tree)}/envdir/an_environment/modules",
@@ -82,7 +87,7 @@ describe Puppet::Environments do
82
87
 
83
88
  loader_from(:filesystem => [envdir],
84
89
  :directory => envdir) do |loader|
85
- expect(loader.list).to contain_exactly(environment(:env1), environment(:env2))
90
+ expect(loader.list).to include_in_any_order(environment(:env1), environment(:env2))
86
91
  end
87
92
  end
88
93
 
@@ -401,29 +406,33 @@ config_version=$vardir/random/scripts
401
406
  ]),
402
407
  ])
403
408
 
404
- cached_loader_from(:filesystem => [original_envdir], :directory => original_envdir) do |loader|
405
- original_env = loader.get("env3") # force the environment.conf to be read
406
-
407
- changed_envdir = FS::MemoryFile.a_directory(base_dir, [
408
- FS::MemoryFile.a_directory("env3", [
409
- FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
410
- manifest=/manifest_changed
411
- modulepath=/modules_changed
412
- environment_timeout=0
413
- EOF
414
- ]),
415
- ])
409
+ FS.overlay(original_envdir) do
410
+ dir_loader = Puppet::Environments::Directories.new(original_envdir, [])
411
+ loader = Puppet::Environments::Cached.new(dir_loader)
412
+ Puppet.override(:environments => loader) do
413
+ original_env = loader.get("env3") # force the environment.conf to be read
414
+
415
+ changed_envdir = FS::MemoryFile.a_directory(base_dir, [
416
+ FS::MemoryFile.a_directory("env3", [
417
+ FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
418
+ manifest=/manifest_changed
419
+ modulepath=/modules_changed
420
+ environment_timeout=0
421
+ EOF
422
+ ]),
423
+ ])
416
424
 
417
- FS.overlay(changed_envdir) do
418
- changed_env = loader.get("env3")
425
+ FS.overlay(changed_envdir) do
426
+ changed_env = loader.get("env3")
419
427
 
420
- expect(original_env).to environment(:env3).
421
- with_manifest(File.expand_path("/manifest_orig")).
422
- with_full_modulepath([File.expand_path("/modules_orig")])
428
+ expect(original_env).to environment(:env3).
429
+ with_manifest(File.expand_path("/manifest_orig")).
430
+ with_full_modulepath([File.expand_path("/modules_orig")])
423
431
 
424
- expect(changed_env).to environment(:env3).
425
- with_manifest(File.expand_path("/manifest_changed")).
426
- with_full_modulepath([File.expand_path("/modules_changed")])
432
+ expect(changed_env).to environment(:env3).
433
+ with_manifest(File.expand_path("/manifest_changed")).
434
+ with_full_modulepath([File.expand_path("/modules_changed")])
435
+ end
427
436
  end
428
437
  end
429
438
  end
@@ -549,49 +558,24 @@ config_version=$vardir/random/scripts
549
558
 
550
559
  describe "cached loaders" do
551
560
  it "lists environments" do
552
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
553
- expect(loader.list).to contain_exactly(
561
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
562
+ expect(Puppet::Environments::Cached.new(loader).list).to include_in_any_order(
554
563
  environment(:an_environment),
555
564
  environment(:another_environment),
556
565
  environment(:symlinked_environment))
557
566
  end
558
567
  end
559
568
 
560
- it "returns the same cached environment object for list and get methods" do
561
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
562
- env = loader.list.find { |e| e.name == :an_environment }
563
-
564
- expect(env).to equal(loader.get(:an_environment)) # same object
565
- end
566
- end
567
-
568
- it "returns the same cached environment object for multiple list calls" do
569
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
570
- expect(loader.list.first).to equal(loader.list.first) # same object
571
- end
572
- end
573
-
574
- it "expires environments and returns a new environment object with the same value" do
575
- Puppet[:environment_timeout] = "0"
576
-
577
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
578
- a = loader.list.first
579
- b = loader.list.first
580
- expect(a).to eq(b) # same value
581
- expect(a).to_not equal(b) # not same object
582
- end
583
- end
584
-
585
569
  it "has search_paths" do
586
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
587
- expect(loader.search_paths).to eq(["file://#{directory_tree.children.first}"])
570
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
571
+ expect(Puppet::Environments::Cached.new(loader).search_paths).to eq(["file://#{directory_tree.children.first}"])
588
572
  end
589
573
  end
590
574
 
591
575
  context "#get" do
592
576
  it "gets an environment" do
593
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
594
- expect(loader.get(:an_environment)).to environment(:an_environment)
577
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
578
+ expect(Puppet::Environments::Cached.new(loader).get(:an_environment)).to environment(:an_environment)
595
579
  end
596
580
  end
597
581
 
@@ -608,16 +592,16 @@ config_version=$vardir/random/scripts
608
592
  end
609
593
 
610
594
  it "returns nil if env not found" do
611
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
612
- expect(loader.get(:doesnotexist)).to be_nil
595
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
596
+ expect(Puppet::Environments::Cached.new(loader).get(:doesnotexist)).to be_nil
613
597
  end
614
598
  end
615
599
  end
616
600
 
617
601
  context "#get!" do
618
602
  it "gets an environment" do
619
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
620
- expect(loader.get!(:an_environment)).to environment(:an_environment)
603
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
604
+ expect(Puppet::Environments::Cached.new(loader).get!(:an_environment)).to environment(:an_environment)
621
605
  end
622
606
  end
623
607
 
@@ -634,43 +618,29 @@ config_version=$vardir/random/scripts
634
618
  end
635
619
 
636
620
  it "raises error if environment is not found" do
637
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
621
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
638
622
  expect do
639
- loader.get!(:doesnotexist)
623
+ Puppet::Environments::Cached.new(loader).get!(:doesnotexist)
640
624
  end.to raise_error(Puppet::Environments::EnvironmentNotFound)
641
625
  end
642
626
  end
643
627
  end
644
628
 
645
- context "#get_conf" do
646
- it "loads environment.conf" do
647
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
648
- expect(loader.get_conf(:an_environment)).to match_environment_conf(:an_environment).
649
- with_env_path(directory_tree.children.first).
650
- with_global_module_path([])
651
- end
652
- end
653
-
654
- it "always reloads environment.conf" do
655
- env = Puppet::Node::Environment.create(:cached, [])
656
- mocked_loader = double('loader')
657
- expect(mocked_loader).to receive(:get_conf).with(:cached).and_return(Puppet::Settings::EnvironmentConf.static_for(env, 20)).twice
658
-
659
- cached = Puppet::Environments::Cached.new(mocked_loader)
629
+ context "expiration policies" do
630
+ let(:service) { ReplayExpirationService.new }
660
631
 
661
- cached.get_conf(:cached)
662
- cached.get_conf(:cached)
663
- end
632
+ # The environment named `:an_environment` will already be loaded when the
633
+ # block is yielded to
634
+ def with_environment_loaded(service, &block)
635
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
636
+ using_expiration_service(service) do
637
+ cached = Puppet::Environments::Cached.new(loader)
638
+ cached.get!(:an_environment)
664
639
 
665
- it "returns nil if environment is not found" do
666
- cached_loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
667
- expect(loader.get_conf(:doesnotexist)).to be_nil
640
+ yield cached if block_given?
641
+ end
668
642
  end
669
643
  end
670
- end
671
-
672
- context "expiration policies" do
673
- let(:service) { ReplayExpirationService.new }
674
644
 
675
645
  it "notifies when the environment is first created" do
676
646
  with_environment_loaded(service)
@@ -690,7 +660,12 @@ config_version=$vardir/random/scripts
690
660
  end
691
661
 
692
662
  it "evicts an expired environment" do
693
- expect(service).to receive(:expired?).and_return(true)
663
+ service = ReplayExpirationService.new
664
+
665
+ # The `Cached#clear_all_expired` method tries to optimize the case where
666
+ # no entries are expired. But if `Time.now < @next_expiration` and there is
667
+ # an expired entry, then the `service#expired?` method is called twice.
668
+ expect(service).to receive(:expired?).twice.and_return(true)
694
669
 
695
670
  with_environment_loaded(service) do |cached|
696
671
  cached.get!(:an_environment)
@@ -702,7 +677,6 @@ config_version=$vardir/random/scripts
702
677
 
703
678
  it "evicts an environment that hasn't been recently touched" do
704
679
  Puppet[:environment_timeout] = 1
705
- Puppet[:environment_timeout_mode] = :from_last_used
706
680
 
707
681
  with_environment_loaded(service) do |cached|
708
682
  future = Time.now + 60
@@ -719,7 +693,6 @@ config_version=$vardir/random/scripts
719
693
 
720
694
  it "reuses an environment that was recently touched" do
721
695
  Puppet[:environment_timeout] = 60
722
- Puppet[:environment_timeout_mode] = :from_last_used
723
696
 
724
697
  with_environment_loaded(service) do |cached|
725
698
  # reuse the already cached environment
@@ -732,9 +705,9 @@ config_version=$vardir/random/scripts
732
705
 
733
706
  it "evicts a recently touched environment" do
734
707
  Puppet[:environment_timeout] = 60
735
- Puppet[:environment_timeout_mode] = :from_last_used
736
708
 
737
- expect(service).to receive(:expired?).and_return(true)
709
+ # see note above about "twice"
710
+ expect(service).to receive(:expired?).twice.and_return(true)
738
711
 
739
712
  with_environment_loaded(service) do |cached|
740
713
  # even though the environment was recently touched, it's been expired
@@ -744,116 +717,13 @@ config_version=$vardir/random/scripts
744
717
  expect(service.created_envs).to eq([:an_environment, :an_environment])
745
718
  expect(service.evicted_envs).to eq([:an_environment])
746
719
  end
747
-
748
- it "evicts expired environments when listing" do
749
- expect(service).to receive(:expired?).with(:an_environment).and_return(true)
750
-
751
- with_environment_loaded(service) do |cached|
752
- cached.list
753
- end
754
-
755
- expect(service.evicted_envs).to eq([:an_environment])
756
- end
757
720
  end
758
721
 
759
- context '#clear' do
760
- let(:service) { ReplayExpirationService.new }
761
-
762
- it "evicts an environment" do
763
- with_environment_loaded(service) do |cached|
764
- cached.clear(:an_environment)
765
- end
766
-
767
- expect(service.evicted_envs).to eq([:an_environment])
768
- end
769
- end
770
-
771
- context '#clear_all' do
772
- let(:service) { ReplayExpirationService.new }
773
- let(:envdir) { File.expand_path("envdir") }
774
- let(:default_dir) { File.join(envdir, "cached_env", "modules") }
775
- let(:expected_dir) { File.join(envdir, "cached_env", "site") }
776
-
777
- let(:base_dir) do
778
- FS::MemoryFile.a_directory(envdir, [
779
- FS::MemoryFile.a_directory("cached_env", [
780
- FS::MemoryFile.a_missing_file("environment.conf")
781
- ])
782
- ])
783
- end
784
-
785
- let(:updated_dir) do
786
- FS::MemoryFile.a_directory(envdir, [
787
- FS::MemoryFile.a_directory("cached_env", [
788
- FS::MemoryFile.a_directory("site"),
789
- FS::MemoryFile.a_missing_directory("modules"),
790
- FS::MemoryFile.a_regular_file_containing("environment.conf", <<-EOF)
791
- modulepath=site
792
- environment_timeout=unlimited
793
- EOF
794
- ])
795
- ])
796
- end
797
-
798
- it 'evicts all environments' do
799
- with_environment_loaded(service) do |cached|
800
- cached.get(:an_environment)
801
- cached.get(:another_environment)
802
- cached.clear_all
803
-
804
- expect(service.evicted_envs).to match([:an_environment, :another_environment])
805
- end
806
- end
807
-
808
- it "recomputes modulepath if 'get' is called before 'clear_all'" do
809
- cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
810
- loader.get(:cached_env)
811
-
812
- expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
813
-
814
- FS.overlay(updated_dir) do
815
- loader.clear_all
816
-
817
- expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
818
- end
819
- end
820
- end
821
-
822
- it "recomputes modulepath if 'list' is called before 'clear_all'" do
823
- cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
824
- loader.list
825
-
826
- expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
827
-
828
- FS.overlay(updated_dir) do
829
- loader.clear_all
830
-
831
- expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
832
- end
833
- end
834
- end
835
-
836
- it "recomputes modulepath if 'get_conf' is called before 'clear_all'" do
837
- cached_loader_from(:filesystem => [base_dir], :directory => base_dir) do |loader|
838
- loader.get_conf(:cached_env)
839
-
840
- expect(Puppet.settings.value(:modulepath, :cached_env)).to eq(default_dir)
841
-
842
- FS.overlay(updated_dir) do
843
- loader.clear_all
844
-
845
- expect(loader.get(:cached_env).modulepath).to contain_exactly(expected_dir)
846
- end
847
- end
848
- end
849
-
850
- it 'deletes environment text domains' do
851
- with_environment_loaded(service) do |cached|
852
- cached.get(:an_environment)
853
- cached.clear_all
854
-
855
- expect(FastGettext.text_domain).to eq(Puppet::GettextConfig::DEFAULT_TEXT_DOMAIN)
856
- end
722
+ it "gets an environment.conf" do
723
+ loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
724
+ expect(Puppet::Environments::Cached.new(loader).get_conf(:an_environment)).to match_environment_conf(:an_environment).
725
+ with_env_path(directory_tree.children.first).
726
+ with_global_module_path([])
857
727
  end
858
728
  end
859
729
  end
@@ -928,20 +798,6 @@ config_version=$vardir/random/scripts
928
798
  end
929
799
  end
930
800
 
931
- def cached_loader_from(options, &block)
932
- FS.overlay(*options[:filesystem]) do
933
- environments = Puppet::Environments::Cached.new(
934
- Puppet::Environments::Directories.new(
935
- options[:directory],
936
- options[:modulepath] || []
937
- )
938
- )
939
- Puppet.override(:environments => environments) do
940
- yield environments
941
- end
942
- end
943
- end
944
-
945
801
  def loader_from(options, &block)
946
802
  FS.overlay(*options[:filesystem]) do
947
803
  environments = Puppet::Environments::Directories.new(
@@ -964,19 +820,6 @@ config_version=$vardir/random/scripts
964
820
  end
965
821
  end
966
822
 
967
- # The environment named `:an_environment` will already be loaded when the
968
- # block is yielded to
969
- def with_environment_loaded(service, &block)
970
- loader_from(:filesystem => [directory_tree], :directory => directory_tree.children.first) do |loader|
971
- using_expiration_service(service) do
972
- cached = Puppet::Environments::Cached.new(loader)
973
- cached.get!(:an_environment)
974
-
975
- yield cached if block_given?
976
- end
977
- end
978
- end
979
-
980
823
  class ReplayExpirationService < Puppet::Environments::Cached::DefaultCacheExpirationService
981
824
  attr_reader :created_envs, :evicted_envs
982
825
 
@@ -994,3 +837,4 @@ config_version=$vardir/random/scripts
994
837
  end
995
838
  end
996
839
  end
840
+ end