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
@@ -3,13 +3,9 @@ require 'puppet/agent'
3
3
  require 'puppet/configurer'
4
4
 
5
5
  class AgentTestClient
6
- def initialize(transaction_uuid = nil, job_id = nil)
7
- end
8
-
9
- def run(client_args)
6
+ def run
10
7
  # no-op
11
8
  end
12
-
13
9
  def stop
14
10
  # no-op
15
11
  end
@@ -24,8 +20,6 @@ end
24
20
 
25
21
  describe Puppet::Agent do
26
22
  before do
27
- allow(Puppet::Status.indirection).to receive(:find).and_return(Puppet::Status.new("version" => Puppet.version))
28
-
29
23
  @agent = Puppet::Agent.new(AgentTestClient, false)
30
24
 
31
25
  # make Puppet::Application safe for stubbing; restore in an :after block; silence warnings for this.
@@ -55,10 +49,11 @@ describe Puppet::Agent do
55
49
 
56
50
  it "should create an instance of its client class and run it when asked to run" do
57
51
  client = double('client')
58
- allow(AgentTestClient).to receive(:new).with(nil, nil).and_return(client)
52
+ expect(AgentTestClient).to receive(:new).and_return(client)
59
53
 
60
- allow(@agent).to receive(:disabled?).and_return(false)
61
54
  expect(client).to receive(:run)
55
+
56
+ allow(@agent).to receive(:disabled?).and_return(false)
62
57
  @agent.run
63
58
  end
64
59
 
@@ -95,6 +90,7 @@ describe Puppet::Agent do
95
90
 
96
91
  describe "when being run" do
97
92
  before do
93
+ allow(AgentTestClient).to receive(:lockfile_path).and_return("/my/lock")
98
94
  allow(@agent).to receive(:disabled?).and_return(false)
99
95
  end
100
96
 
@@ -190,7 +186,7 @@ describe Puppet::Agent do
190
186
  allow(lockfile).to receive(:lock).and_return(false)
191
187
  end
192
188
 
193
- it "should notify that a run is already in progress" do
189
+ it "should notify that a run is already in progres" do
194
190
  client = AgentTestClient.new
195
191
  expect(AgentTestClient).to receive(:new).and_return(client)
196
192
  expect(Puppet).to receive(:notice).with(/Run of .* already in progress; skipping .* exists/)
@@ -202,6 +202,7 @@ describe Puppet::Application::Agent do
202
202
  allow(Puppet::Resource::Catalog.indirection).to receive(:terminus_class=)
203
203
  allow(Puppet::Resource::Catalog.indirection).to receive(:cache_class=)
204
204
  allow(Puppet::Node::Facts.indirection).to receive(:terminus_class=)
205
+ allow(Puppet).to receive(:settraps)
205
206
  end
206
207
 
207
208
  it "should not run with extra arguments" do
@@ -546,16 +547,11 @@ describe Puppet::Application::Agent do
546
547
  @puppetd.options[:digest] = :MD5
547
548
  end
548
549
 
549
- def expected_fingerprint(name, x509)
550
- digest = OpenSSL::Digest.new(name).hexdigest(x509.to_der)
551
- digest.scan(/../).join(':').upcase
552
- end
553
-
554
550
  it "should fingerprint the certificate if it exists" do
555
551
  cert = cert_fixture('signed.pem')
556
552
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(cert)
557
553
 
558
- expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', cert)}")
554
+ expect(@puppetd).to receive(:puts).with('(MD5) E2:BA:9A:EF:20:A8:7D:10:8D:82:9A:61:5D:FD:5B:33')
559
555
 
560
556
  @puppetd.fingerprint
561
557
  end
@@ -565,7 +561,7 @@ describe Puppet::Application::Agent do
565
561
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_client_cert).and_return(nil)
566
562
  allow_any_instance_of(Puppet::X509::CertProvider).to receive(:load_request).and_return(request)
567
563
 
568
- expect(@puppetd).to receive(:puts).with("(MD5) #{expected_fingerprint('md5', request)}")
564
+ expect(@puppetd).to receive(:puts).with('(MD5) B8:4C:FB:31:AE:17:86:E3:AD:53:97:CA:F6:3C:4A:CB')
569
565
 
570
566
  @puppetd.fingerprint
571
567
  end
@@ -3,7 +3,7 @@ require 'puppet/application/facts'
3
3
 
4
4
  describe Puppet::Application::Facts do
5
5
  let(:app) { Puppet::Application[:facts] }
6
- let(:values) { {"filesystems" => "apfs,autofs,devfs", "macaddress" => "64:52:11:22:03:2e"} }
6
+ let(:values) { {"filesystems" => "apfs,autofs,devfs", "macaddress" => "64:52:11:22:03:25"} }
7
7
 
8
8
  before :each do
9
9
  Puppet::Node::Facts.indirection.terminus_class = :memory
@@ -21,7 +21,7 @@ describe Puppet::Application::Facts do
21
21
  name: whatever
22
22
  values:
23
23
  filesystems: apfs,autofs,devfs
24
- macaddress: "64:52:11:22:03:2e"
24
+ macaddress: "64:52:11:22:03:25"
25
25
  END
26
26
 
27
27
  expect {
@@ -42,7 +42,7 @@ describe Puppet::Application::Facts do
42
42
  name: #{Puppet[:certname]}
43
43
  values:
44
44
  filesystems: apfs,autofs,devfs
45
- macaddress: "64:52:11:22:03:2e"
45
+ macaddress: "64:52:11:22:03:25"
46
46
  END
47
47
 
48
48
  expect {
@@ -52,12 +52,7 @@ describe Puppet::Application::Facts do
52
52
  end
53
53
 
54
54
  context 'when show action is called' do
55
- let(:expected) { <<~END }
56
- {
57
- "filesystems": "apfs,autofs,devfs",
58
- "macaddress": "64:52:11:22:03:2e"
59
- }
60
- END
55
+ let(:expected) { "{\n \"filesystems\": \"apfs,autofs,devfs\",\n \"macaddress\": \"64:52:11:22:03:25\"\n}\n" }
61
56
 
62
57
  before :each do
63
58
  Puppet::Node::Facts.indirection.terminus_class = :facter
@@ -69,464 +64,25 @@ describe Puppet::Application::Facts do
69
64
  expect {
70
65
  app.run
71
66
  }.to exit_with(0)
72
- .and output(expected).to_stdout
73
- end
74
-
75
- it 'displays a single fact value' do
76
- app.command_line.args << 'filesystems' << '--value-only'
77
- expect {
78
- app.run
79
- }.to exit_with(0)
80
- .and output("apfs,autofs,devfs\n").to_stdout
81
- end
82
-
83
- it "warns and ignores value-only when multiple fact names are specified" do
84
- app.command_line.args << 'filesystems' << 'macaddress' << '--value-only'
85
- expect {
86
- app.run
87
- }.to exit_with(0)
88
- .and output(expected).to_stdout
89
- .and output(/it can only be used when querying for a single fact/).to_stderr
90
- end
91
-
92
- {
93
- "type_hash" => [{'a' => 2}, "{\n \"a\": 2\n}"],
94
- "type_array" => [[], "[\n\n]"],
95
- "type_string" => ["str", "str"],
96
- "type_int" => [1, "1"],
97
- "type_float" => [1.0, "1.0"],
98
- "type_true" => [true, "true"],
99
- "type_false" => [false, "false"],
100
- "type_nil" => [nil, ""],
101
- "type_sym" => [:sym, "sym"]
102
- }.each_pair do |name, values|
103
- it "renders '#{name}' as '#{values.last}'" do
104
- fact_value = values.first
105
- fact_output = values.last
106
-
107
- allow(Facter).to receive(:resolve).and_return({name => fact_value})
108
-
109
- app.command_line.args << name << '--value-only'
110
- expect {
111
- app.run
112
- }.to exit_with(0)
113
- .and output("#{fact_output}\n").to_stdout
114
- end
67
+ .and output(expected).to_stdout
115
68
  end
116
69
  end
117
70
 
118
- context 'when diff action is called' do
119
- let(:facter3_facts) { <<~END }
120
- {
121
- "hypervisors": {
122
- "vmware": {
123
- "version": ""
124
- }
125
- },
126
- "networking": {
127
- "interfaces": {
128
- "lo": {
129
- "bindings6": [
130
- {
131
- "network": "::1"
132
- }
133
- ]
134
- },
135
- "em0.1": {
136
- "ip": "0.0.0.0"
137
- }
138
- }
139
- },
140
- "macaddress": "64:52:11:22:03:2e",
141
- "obsolete_fact": "true",
142
- "mountpoints": {
143
- "/var": {
144
- "options": [
145
- "noatime",
146
- "journaled",
147
- "nobrowse"
148
- ]
149
- }
150
- }
151
- }
152
- END
153
-
154
- let(:facter4_facts) { <<~END }
155
- {
156
- "hypervisors": {
157
- "vmware": {
158
- "version": "ESXi 6.7"
159
- }
160
- },
161
- "networking": {
162
- "interfaces": {
163
- "lo": {
164
- "bindings6": [
165
- {
166
- "network": "::1",
167
- "scope6": "host"
168
- }
169
- ]
170
- },
171
- "em0.1": {
172
- "ip": "127.0.0.1"
173
- }
174
- }
175
- },
176
- "macaddress": "64:52:11:22:03:2e",
177
- "mountpoints": {
178
- "/var": {
179
- "options": [
180
- "noatime",
181
- "nobrowse",
182
- "journaled"
183
- ]
184
- }
185
- }
186
- }
187
- END
71
+ context 'when default action is called' do
72
+ let(:expected) { "---\nfilesystems: apfs,autofs,devfs\nmacaddress: 64:52:11:22:03:25\n" }
188
73
 
189
74
  before :each do
190
75
  Puppet::Node::Facts.indirection.terminus_class = :facter
191
- app.command_line.args = %w{diff}
192
-
193
- allow(Facter).to receive(:value).with('facterversion').and_return('3.99.0')
194
- allow(Puppet::Util::Execution).to receive(:execute).with(/puppet facts show --no-facterng/, combine:false).and_return(facter3_facts)
195
- allow(Puppet::Util::Execution).to receive(:execute).with(/puppet facts show --facterng/, combine:false).and_return(facter4_facts)
196
- end
197
-
198
- # Workaround for YAML issue on Ubuntu where null values get space as key
199
- let(:regex) { false }
200
- shared_examples_for 'correctly rendering output' do |render_format|
201
- it 'correctly displays output' do
202
- app.command_line.args << '--structured' if structured
203
- app.command_line.args << '--exclude' << exclude if exclude
204
- app.command_line.args << '--render-as' << render_format if render_format
205
- expect {
206
- app.run
207
- }.to exit_with(0)
208
- .and output(regex ? /#{expected_output}/ : expected_output).to_stdout
209
- end
210
- end
211
-
212
- context 'when no exclude regex is provided via CLI' do
213
- let(:exclude) { nil }
214
- context 'when structured is requested' do
215
- let(:structured) { true }
216
- context 'when rendering is set to default' do
217
- let(:expected_output) { <<~END }
218
- {
219
- "hypervisors": {
220
- "vmware": {
221
- "version": {
222
- "new_value": "ESXi 6.7",
223
- "old_value": ""
224
- }
225
- }
226
- },
227
- "mountpoints": {
228
- "/var": {
229
- "options": {
230
- "1": {
231
- "new_value": "nobrowse",
232
- "old_value": "journaled"
233
- },
234
- "2": {
235
- "new_value": "journaled",
236
- "old_value": "nobrowse"
237
- }
238
- }
239
- }
240
- },
241
- "networking": {
242
- "interfaces": {
243
- "em0.1": {
244
- "ip": {
245
- "new_value": "127.0.0.1",
246
- "old_value": "0.0.0.0"
247
- }
248
- },
249
- "lo": {
250
- "bindings6": {
251
- "0": {
252
- "scope6": {
253
- "new_value": "host",
254
- "old_value": null
255
- }
256
- }
257
- }
258
- }
259
- }
260
- },
261
- "obsolete_fact": {
262
- "new_value": null,
263
- "old_value": "true"
264
- }
265
- }
266
- END
267
-
268
- it_behaves_like 'correctly rendering output'
269
- end
270
-
271
- context 'when rendering is set to yaml' do
272
- # Workaround for YAML issue on Ubuntu where null values get space as key
273
- let(:regex) { true }
274
- let(:expected_output) { <<~END }
275
- ---
276
- hypervisors:
277
- vmware:
278
- version:
279
- :new_value: ESXi 6\.7
280
- :old_value: ''
281
- mountpoints:
282
- "/var":
283
- options:
284
- 1:
285
- :new_value: nobrowse
286
- :old_value: journaled
287
- 2:
288
- :new_value: journaled
289
- :old_value: nobrowse
290
- networking:
291
- interfaces:
292
- em0\.1:
293
- ip:
294
- :new_value: 127\.0\.0\.1
295
- :old_value: 0\.0\.0\.0
296
- lo:
297
- bindings6:
298
- 0:
299
- scope6:
300
- :new_value: host
301
- :old_value:\s?
302
- obsolete_fact:
303
- :new_value:\s?
304
- :old_value: 'true'
305
- END
306
-
307
- it_behaves_like 'correctly rendering output', 'yaml'
308
- end
309
-
310
- context 'when rendering is set to json' do
311
- let(:expected_output) { <<~END }
312
- {"hypervisors":{"vmware":{"version":{"new_value":"ESXi 6.7","old_value":""}}},\
313
- "mountpoints":{"/var":{"options":{"1":{"new_value":"nobrowse","old_value":"journaled"},\
314
- "2":{"new_value":"journaled","old_value":"nobrowse"}}}},"networking":{"interfaces":\
315
- {"em0.1":{"ip":{"new_value":"127.0.0.1","old_value":"0.0.0.0"}},"lo":{"bindings6":\
316
- {"0":{"scope6":{"new_value":"host","old_value":null}}}}}},"obsolete_fact":\
317
- {"new_value":null,"old_value":"true"}}
318
- END
319
-
320
- it_behaves_like 'correctly rendering output', 'json'
321
- end
322
- end
323
-
324
- context 'when structured is not requested' do
325
- let(:structured) { false }
326
- context 'when rendering is set to default' do
327
- let(:expected_output) { <<~END }
328
- {
329
- "hypervisors.vmware.version": {
330
- "new_value": "ESXi 6.7",
331
- "old_value": ""
332
- },
333
- "mountpoints./var.options.1": {
334
- "new_value": "nobrowse",
335
- "old_value": "journaled"
336
- },
337
- "mountpoints./var.options.2": {
338
- "new_value": "journaled",
339
- "old_value": "nobrowse"
340
- },
341
- "networking.interfaces.\\"em0.1\\".ip": {
342
- "new_value": "127.0.0.1",
343
- "old_value": "0.0.0.0"
344
- },
345
- "networking.interfaces.lo.bindings6.0.scope6": {
346
- "new_value": "host",
347
- "old_value": null
348
- },
349
- "obsolete_fact": {
350
- "new_value": null,
351
- "old_value": "true"
352
- }
353
- }
354
- END
355
-
356
- it_behaves_like 'correctly rendering output'
357
- end
358
-
359
- context 'when rendering is set to yaml' do
360
- # Workaround for YAML issue on Ubuntu where null values get space as key
361
- let(:regex) { true }
362
- let(:expected_output) { <<~END }
363
- ---
364
- hypervisors\.vmware\.version:
365
- :new_value: ESXi 6\.7
366
- :old_value: ''
367
- mountpoints\./var\.options\.1:
368
- :new_value: nobrowse
369
- :old_value: journaled
370
- mountpoints\./var\.options\.2:
371
- :new_value: journaled
372
- :old_value: nobrowse
373
- networking\.interfaces\."em0\.1"\.ip:
374
- :new_value: 127\.0\.0\.1
375
- :old_value: 0\.0\.0\.0
376
- networking\.interfaces\.lo\.bindings6\.0\.scope6:
377
- :new_value: host
378
- :old_value:\s?
379
- obsolete_fact:
380
- :new_value:\s?
381
- :old_value: 'true'
382
- END
383
-
384
- it_behaves_like 'correctly rendering output', 'yaml'
385
- end
386
-
387
- context 'when rendering is set to json' do
388
- let(:expected_output) { <<~END }
389
- {"hypervisors.vmware.version":{"new_value":"ESXi 6.7","old_value":""},\
390
- "mountpoints./var.options.1":{"new_value":"nobrowse","old_value":"journaled"},\
391
- "mountpoints./var.options.2":{"new_value":"journaled","old_value":"nobrowse"},\
392
- "networking.interfaces.\\"em0.1\\".ip":{"new_value":"127.0.0.1",\
393
- "old_value":"0.0.0.0"},"networking.interfaces.lo.bindings6.0.scope6":\
394
- {"new_value":"host","old_value":null},"obsolete_fact":{"new_value":null,\
395
- "old_value":"true"}}
396
- END
397
-
398
- it_behaves_like 'correctly rendering output', 'json'
399
- end
400
- end
401
- end
402
-
403
- context 'when unwanted facts are excluded from diff via CLI option' do
404
- let(:exclude) { '^mountpoints\./var\.options.*$|^obsolete_fact$|^hypervisors' }
405
- context 'when structured is requested' do
406
- let(:structured) { true }
407
- context 'when rendering is set to default' do
408
- let(:expected_output) { <<~END }
409
- {
410
- "networking": {
411
- "interfaces": {
412
- "em0.1": {
413
- "ip": {
414
- "new_value": "127.0.0.1",
415
- "old_value": "0.0.0.0"
416
- }
417
- },
418
- "lo": {
419
- "bindings6": {
420
- "0": {
421
- "scope6": {
422
- "new_value": "host",
423
- "old_value": null
424
- }
425
- }
426
- }
427
- }
428
- }
429
- }
430
- }
431
- END
432
-
433
- it_behaves_like 'correctly rendering output'
434
- end
435
-
436
- context 'when rendering is set to yaml' do
437
- # Workaround for YAML issue on Ubuntu where null values get space as key
438
- let(:regex) { true }
439
- let(:expected_output) { <<~END }
440
- ---
441
- networking:
442
- interfaces:
443
- em0\.1:
444
- ip:
445
- :new_value: 127\.0\.0\.1
446
- :old_value: 0\.0\.0\.0
447
- lo:
448
- bindings6:
449
- 0:
450
- scope6:
451
- :new_value: host
452
- :old_value:\s?
453
- END
454
-
455
- it_behaves_like 'correctly rendering output', 'yaml'
456
- end
457
-
458
- context 'when rendering is set to json' do
459
- let(:expected_output) { <<~END }
460
- {"networking":{"interfaces":{"em0.1":{"ip":{"new_value":"127.0.0.1",\
461
- "old_value":"0.0.0.0"}},"lo":{"bindings6":{"0":{"scope6":{"new_value":\
462
- "host","old_value":null}}}}}}}
463
- END
464
-
465
- it_behaves_like 'correctly rendering output', 'json'
466
- end
467
- end
468
-
469
- context 'when structured is not requested' do
470
- let(:structured) { false }
471
- context 'when rendering is set to default' do
472
- let(:expected_output) { <<~END }
473
- {
474
- "networking.interfaces.\\"em0.1\\".ip": {
475
- "new_value": "127.0.0.1",
476
- "old_value": "0.0.0.0"
477
- },
478
- "networking.interfaces.lo.bindings6.0.scope6": {
479
- "new_value": "host",
480
- "old_value": null
481
- }
482
- }
483
- END
484
-
485
- it_behaves_like 'correctly rendering output'
486
- end
487
-
488
- context 'when rendering is set to yaml' do
489
- # Workaround for YAML issue on Ubuntu where null values get space as key
490
- let(:regex) { true }
491
- let(:expected_output) { <<~END }
492
- ---
493
- networking\.interfaces\."em0\.1"\.ip:
494
- :new_value: 127\.0\.0\.1
495
- :old_value: 0\.0\.0\.0
496
- networking\.interfaces\.lo\.bindings6\.0\.scope6:
497
- :new_value: host
498
- :old_value:\s?
499
- END
500
-
501
- it_behaves_like 'correctly rendering output', 'yaml'
502
- end
503
-
504
- context 'when rendering is set to json' do
505
- let(:expected_output) { <<~END }
506
- {"networking.interfaces.\\"em0.1\\".ip":{"new_value":"127.0.0.1",\
507
- "old_value":"0.0.0.0"},"networking.interfaces.lo.bindings6.0.scope6":\
508
- {"new_value":"host","old_value":null}}
509
- END
510
-
511
- it_behaves_like 'correctly rendering output', 'json'
512
- end
513
- end
514
- end
515
- end
516
-
517
- context 'when default action is called' do
518
- before :each do
519
- Puppet::Node::Facts.indirection.terminus_class = :memory
520
- facts = Puppet::Node::Facts.new('whatever', values)
521
- Puppet::Node::Facts.indirection.save(facts)
76
+ allow(Facter).to receive(:resolve).and_return(values)
77
+ app.command_line.args = %w{--render-as yaml}
522
78
  end
523
79
 
524
- it 'calls find action' do
80
+ it 'calls show action' do
525
81
  expect {
526
82
  app.run
527
83
  }.to exit_with(0)
528
- .and output(anything).to_stdout
529
- expect(app.action.name).to eq(:find)
84
+ .and output(expected).to_stdout
85
+ expect(app.action.name).to eq(:show)
530
86
  end
531
87
  end
532
88
  end