puppet 6.24.0-x64-mingw32 → 7.0.0-x64-mingw32

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

Potentially problematic release.


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

Files changed (613) hide show
  1. checksums.yaml +4 -4
  2. data/CODEOWNERS +16 -2
  3. data/CONTRIBUTING.md +5 -5
  4. data/Gemfile +1 -3
  5. data/Gemfile.lock +35 -47
  6. data/README.md +5 -5
  7. data/conf/fileserver.conf +5 -10
  8. data/ext/build_defaults.yaml +1 -1
  9. data/ext/osx/file_mapping.yaml +0 -5
  10. data/ext/osx/puppet.plist +0 -2
  11. data/ext/project_data.yaml +1 -15
  12. data/ext/redhat/puppet.spec.erb +0 -1
  13. data/ext/windows/service/daemon.rb +6 -5
  14. data/install.rb +21 -17
  15. data/lib/puppet.rb +14 -23
  16. data/lib/puppet/application.rb +178 -108
  17. data/lib/puppet/application/agent.rb +4 -12
  18. data/lib/puppet/application/apply.rb +2 -4
  19. data/lib/puppet/application/device.rb +100 -106
  20. data/lib/puppet/application/filebucket.rb +13 -10
  21. data/lib/puppet/application/resource.rb +3 -17
  22. data/lib/puppet/application/script.rb +0 -2
  23. data/lib/puppet/application/ssl.rb +1 -13
  24. data/lib/puppet/application_support.rb +0 -7
  25. data/lib/puppet/configurer.rb +30 -45
  26. data/lib/puppet/configurer/downloader.rb +1 -2
  27. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  28. data/lib/puppet/defaults.rb +100 -192
  29. data/lib/puppet/environments.rb +60 -84
  30. data/lib/puppet/face/facts.rb +5 -103
  31. data/lib/puppet/face/help.rb +1 -1
  32. data/lib/puppet/face/help/action.erb +0 -1
  33. data/lib/puppet/face/help/face.erb +0 -1
  34. data/lib/puppet/face/node/clean.rb +0 -11
  35. data/lib/puppet/face/plugin.rb +5 -8
  36. data/lib/puppet/ffi/windows.rb +12 -0
  37. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  38. data/lib/puppet/ffi/windows/constants.rb +404 -0
  39. data/lib/puppet/ffi/windows/functions.rb +628 -0
  40. data/lib/puppet/ffi/windows/structs.rb +338 -0
  41. data/lib/puppet/file_serving/configuration.rb +0 -5
  42. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  43. data/lib/puppet/file_serving/fileset.rb +2 -14
  44. data/lib/puppet/file_serving/http_metadata.rb +1 -1
  45. data/lib/puppet/file_serving/mount.rb +1 -2
  46. data/lib/puppet/file_system/file_impl.rb +1 -1
  47. data/lib/puppet/file_system/memory_file.rb +1 -8
  48. data/lib/puppet/file_system/windows.rb +2 -4
  49. data/lib/puppet/forge.rb +3 -3
  50. data/lib/puppet/forge/repository.rb +0 -1
  51. data/lib/puppet/functions/all.rb +1 -1
  52. data/lib/puppet/functions/camelcase.rb +1 -1
  53. data/lib/puppet/functions/capitalize.rb +2 -2
  54. data/lib/puppet/functions/downcase.rb +2 -2
  55. data/lib/puppet/functions/empty.rb +0 -8
  56. data/lib/puppet/functions/get.rb +5 -5
  57. data/lib/puppet/functions/group_by.rb +5 -13
  58. data/lib/puppet/functions/lest.rb +1 -1
  59. data/lib/puppet/functions/new.rb +100 -100
  60. data/lib/puppet/functions/partition.rb +4 -12
  61. data/lib/puppet/functions/require.rb +5 -5
  62. data/lib/puppet/functions/sort.rb +3 -3
  63. data/lib/puppet/functions/strftime.rb +0 -1
  64. data/lib/puppet/functions/tree_each.rb +9 -7
  65. data/lib/puppet/functions/type.rb +4 -4
  66. data/lib/puppet/functions/unwrap.rb +2 -17
  67. data/lib/puppet/functions/upcase.rb +2 -2
  68. data/lib/puppet/generate/models/type/type.rb +4 -1
  69. data/lib/puppet/http.rb +22 -13
  70. data/lib/puppet/http/client.rb +164 -114
  71. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  72. data/lib/puppet/http/errors.rb +16 -0
  73. data/lib/puppet/http/external_client.rb +5 -7
  74. data/lib/puppet/{network/http → http}/factory.rb +8 -15
  75. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  76. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  77. data/lib/puppet/http/proxy.rb +137 -0
  78. data/lib/puppet/http/redirector.rb +4 -12
  79. data/lib/puppet/http/resolver.rb +5 -15
  80. data/lib/puppet/http/resolver/server_list.rb +10 -25
  81. data/lib/puppet/http/resolver/settings.rb +4 -7
  82. data/lib/puppet/http/resolver/srv.rb +7 -11
  83. data/lib/puppet/http/response.rb +36 -54
  84. data/lib/puppet/http/response_converter.rb +24 -0
  85. data/lib/puppet/http/response_net_http.rb +42 -0
  86. data/lib/puppet/http/retry_after_handler.rb +4 -13
  87. data/lib/puppet/http/service.rb +12 -26
  88. data/lib/puppet/http/service/ca.rb +11 -22
  89. data/lib/puppet/http/service/compiler.rb +22 -138
  90. data/lib/puppet/http/service/file_server.rb +19 -29
  91. data/lib/puppet/http/service/puppetserver.rb +26 -12
  92. data/lib/puppet/http/service/report.rb +8 -10
  93. data/lib/puppet/http/session.rb +11 -20
  94. data/lib/puppet/{network/http → http}/site.rb +1 -2
  95. data/lib/puppet/indirector/catalog/compiler.rb +0 -1
  96. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  97. data/lib/puppet/indirector/facts/rest.rb +3 -22
  98. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  99. data/lib/puppet/indirector/file_content/rest.rb +2 -6
  100. data/lib/puppet/indirector/file_metadata/rest.rb +3 -10
  101. data/lib/puppet/indirector/file_server.rb +1 -8
  102. data/lib/puppet/indirector/generic_http.rb +0 -11
  103. data/lib/puppet/indirector/node/rest.rb +2 -4
  104. data/lib/puppet/indirector/report/rest.rb +3 -8
  105. data/lib/puppet/indirector/request.rb +0 -101
  106. data/lib/puppet/indirector/resource/ral.rb +1 -6
  107. data/lib/puppet/indirector/rest.rb +12 -263
  108. data/lib/puppet/interface/documentation.rb +0 -1
  109. data/lib/puppet/module_tool/applications.rb +0 -1
  110. data/lib/puppet/module_tool/applications/installer.rb +2 -52
  111. data/lib/puppet/module_tool/errors/shared.rb +2 -34
  112. data/lib/puppet/network/authconfig.rb +2 -96
  113. data/lib/puppet/network/authorization.rb +13 -35
  114. data/lib/puppet/network/formats.rb +0 -67
  115. data/lib/puppet/network/http.rb +3 -3
  116. data/lib/puppet/network/http/api/indirected_routes.rb +2 -20
  117. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  118. data/lib/puppet/network/http/connection.rb +247 -316
  119. data/lib/puppet/network/http/handler.rb +0 -1
  120. data/lib/puppet/network/http_pool.rb +16 -34
  121. data/lib/puppet/node.rb +1 -30
  122. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  123. data/lib/puppet/pal/pal_impl.rb +3 -1
  124. data/lib/puppet/parser/ast/leaf.rb +2 -3
  125. data/lib/puppet/parser/ast/pops_bridge.rb +0 -38
  126. data/lib/puppet/parser/compiler.rb +0 -198
  127. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  128. data/lib/puppet/parser/functions/fqdn_rand.rb +6 -14
  129. data/lib/puppet/parser/resource.rb +0 -69
  130. data/lib/puppet/parser/templatewrapper.rb +1 -1
  131. data/lib/puppet/pops/evaluator/deferred_resolver.rb +3 -5
  132. data/lib/puppet/pops/evaluator/evaluator_impl.rb +0 -5
  133. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  134. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  135. data/lib/puppet/pops/issues.rb +0 -5
  136. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  137. data/lib/puppet/pops/model/ast.pp +0 -42
  138. data/lib/puppet/pops/model/ast.rb +0 -290
  139. data/lib/puppet/pops/model/ast_transformer.rb +1 -1
  140. data/lib/puppet/pops/model/factory.rb +0 -45
  141. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  142. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  143. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  144. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  145. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  146. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  147. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  148. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -24
  149. data/lib/puppet/pops/types/p_sem_ver_type.rb +2 -8
  150. data/lib/puppet/pops/types/p_sensitive_type.rb +0 -10
  151. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  152. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  153. data/lib/puppet/pops/types/type_parser.rb +0 -4
  154. data/lib/puppet/pops/types/types.rb +0 -1
  155. data/lib/puppet/pops/validation/checker4_0.rb +9 -37
  156. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  157. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -2
  158. data/lib/puppet/property/list.rb +1 -1
  159. data/lib/puppet/provider.rb +0 -13
  160. data/lib/puppet/provider/exec/posix.rb +4 -16
  161. data/lib/puppet/provider/group/groupadd.rb +8 -13
  162. data/lib/puppet/provider/nameservice.rb +0 -18
  163. data/lib/puppet/provider/package/apt.rb +2 -34
  164. data/lib/puppet/provider/package/aptitude.rb +0 -6
  165. data/lib/puppet/provider/package/dnfmodule.rb +1 -1
  166. data/lib/puppet/provider/package/dpkg.rb +0 -10
  167. data/lib/puppet/provider/package/gem.rb +23 -3
  168. data/lib/puppet/provider/package/nim.rb +6 -11
  169. data/lib/puppet/provider/package/pip.rb +3 -16
  170. data/lib/puppet/provider/package/pkg.rb +0 -4
  171. data/lib/puppet/provider/package/portage.rb +1 -1
  172. data/lib/puppet/provider/package/puppet_gem.rb +1 -4
  173. data/lib/puppet/provider/parsedfile.rb +0 -3
  174. data/lib/puppet/provider/service/debian.rb +0 -2
  175. data/lib/puppet/provider/service/smf.rb +191 -73
  176. data/lib/puppet/provider/service/systemd.rb +4 -14
  177. data/lib/puppet/provider/service/windows.rb +0 -38
  178. data/lib/puppet/provider/user/aix.rb +2 -2
  179. data/lib/puppet/provider/user/directoryservice.rb +10 -33
  180. data/lib/puppet/provider/user/useradd.rb +8 -62
  181. data/lib/puppet/reference/configuration.rb +8 -7
  182. data/lib/puppet/reference/indirection.rb +1 -1
  183. data/lib/puppet/resource.rb +1 -89
  184. data/lib/puppet/resource/catalog.rb +1 -14
  185. data/lib/puppet/resource/type.rb +3 -119
  186. data/lib/puppet/resource/type_collection.rb +3 -48
  187. data/lib/puppet/runtime.rb +1 -2
  188. data/lib/puppet/settings.rb +80 -96
  189. data/lib/puppet/settings/environment_conf.rb +0 -1
  190. data/lib/puppet/settings/integer_setting.rb +17 -0
  191. data/lib/puppet/settings/port_setting.rb +15 -0
  192. data/lib/puppet/settings/priority_setting.rb +5 -4
  193. data/lib/puppet/ssl.rb +10 -6
  194. data/lib/puppet/ssl/base.rb +3 -5
  195. data/lib/puppet/ssl/certificate.rb +0 -6
  196. data/lib/puppet/ssl/certificate_request.rb +1 -12
  197. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  198. data/lib/puppet/ssl/oids.rb +3 -1
  199. data/lib/puppet/ssl/ssl_provider.rb +17 -0
  200. data/lib/puppet/ssl/state_machine.rb +3 -1
  201. data/lib/puppet/ssl/verifier.rb +2 -0
  202. data/lib/puppet/test/test_helper.rb +1 -3
  203. data/lib/puppet/transaction.rb +1 -7
  204. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  205. data/lib/puppet/transaction/report.rb +2 -4
  206. data/lib/puppet/type.rb +0 -76
  207. data/lib/puppet/type/exec.rb +3 -16
  208. data/lib/puppet/type/file.rb +6 -26
  209. data/lib/puppet/type/file/checksum.rb +1 -1
  210. data/lib/puppet/type/file/mode.rb +0 -6
  211. data/lib/puppet/type/file/selcontext.rb +1 -1
  212. data/lib/puppet/type/file/source.rb +1 -1
  213. data/lib/puppet/type/filebucket.rb +3 -3
  214. data/lib/puppet/type/package.rb +8 -16
  215. data/lib/puppet/type/service.rb +38 -18
  216. data/lib/puppet/type/tidy.rb +3 -22
  217. data/lib/puppet/type/user.rb +20 -38
  218. data/lib/puppet/util/autoload.rb +8 -1
  219. data/lib/puppet/util/execution.rb +0 -11
  220. data/lib/puppet/util/http_proxy.rb +2 -215
  221. data/lib/puppet/util/monkey_patches.rb +0 -53
  222. data/lib/puppet/util/posix.rb +5 -54
  223. data/lib/puppet/util/rdoc.rb +0 -7
  224. data/lib/puppet/util/retry_action.rb +1 -1
  225. data/lib/puppet/util/run_mode.rb +9 -1
  226. data/lib/puppet/util/selinux.rb +4 -30
  227. data/lib/puppet/util/symbolic_file_mode.rb +17 -29
  228. data/lib/puppet/util/windows.rb +3 -8
  229. data/lib/puppet/util/windows/adsi.rb +0 -46
  230. data/lib/puppet/util/windows/daemon.rb +360 -0
  231. data/lib/puppet/util/windows/error.rb +1 -0
  232. data/lib/puppet/util/windows/eventlog.rb +4 -9
  233. data/lib/puppet/util/windows/file.rb +8 -242
  234. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  235. data/lib/puppet/util/windows/principal.rb +2 -9
  236. data/lib/puppet/util/windows/process.rb +4 -226
  237. data/lib/puppet/util/windows/service.rb +9 -460
  238. data/lib/puppet/util/windows/sid.rb +2 -6
  239. data/lib/puppet/util/windows/string.rb +12 -13
  240. data/lib/puppet/util/yaml.rb +0 -22
  241. data/lib/puppet/vendor/require_vendored.rb +0 -1
  242. data/lib/puppet/version.rb +1 -1
  243. data/lib/puppet/x509.rb +5 -1
  244. data/lib/puppet/x509/cert_provider.rb +29 -1
  245. data/locales/puppet.pot +722 -1527
  246. data/man/man5/puppet.conf.5 +266 -354
  247. data/man/man8/puppet-agent.8 +2 -2
  248. data/man/man8/puppet-apply.8 +2 -2
  249. data/man/man8/puppet-catalog.8 +9 -9
  250. data/man/man8/puppet-config.8 +1 -1
  251. data/man/man8/puppet-describe.8 +1 -1
  252. data/man/man8/puppet-device.8 +2 -2
  253. data/man/man8/puppet-doc.8 +1 -1
  254. data/man/man8/puppet-epp.8 +1 -1
  255. data/man/man8/puppet-facts.8 +8 -51
  256. data/man/man8/puppet-filebucket.8 +4 -4
  257. data/man/man8/puppet-generate.8 +1 -1
  258. data/man/man8/puppet-help.8 +1 -1
  259. data/man/man8/puppet-lookup.8 +1 -1
  260. data/man/man8/puppet-module.8 +1 -58
  261. data/man/man8/puppet-node.8 +5 -5
  262. data/man/man8/puppet-parser.8 +1 -1
  263. data/man/man8/puppet-plugin.8 +1 -1
  264. data/man/man8/puppet-report.8 +5 -5
  265. data/man/man8/puppet-resource.8 +1 -1
  266. data/man/man8/puppet-script.8 +2 -2
  267. data/man/man8/puppet-ssl.8 +1 -5
  268. data/man/man8/puppet.8 +2 -2
  269. data/spec/fixtures/ssl/127.0.0.1-key.pem +57 -107
  270. data/spec/fixtures/ssl/127.0.0.1.pem +31 -52
  271. data/spec/fixtures/ssl/bad-basic-constraints.pem +35 -57
  272. data/spec/fixtures/ssl/bad-int-basic-constraints.pem +35 -57
  273. data/spec/fixtures/ssl/ca.pem +35 -57
  274. data/spec/fixtures/ssl/crl.pem +18 -28
  275. data/spec/fixtures/ssl/ec-key.pem +11 -11
  276. data/spec/fixtures/ssl/ec.pem +24 -33
  277. data/spec/fixtures/ssl/encrypted-ec-key.pem +12 -12
  278. data/spec/fixtures/ssl/encrypted-key.pem +58 -108
  279. data/spec/fixtures/ssl/intermediate-agent-crl.pem +19 -28
  280. data/spec/fixtures/ssl/intermediate-agent.pem +36 -57
  281. data/spec/fixtures/ssl/intermediate-crl.pem +21 -31
  282. data/spec/fixtures/ssl/intermediate.pem +36 -57
  283. data/spec/fixtures/ssl/pluto-key.pem +57 -107
  284. data/spec/fixtures/ssl/pluto.pem +30 -52
  285. data/spec/fixtures/ssl/request-key.pem +57 -107
  286. data/spec/fixtures/ssl/request.pem +26 -47
  287. data/spec/fixtures/ssl/revoked-key.pem +57 -107
  288. data/spec/fixtures/ssl/revoked.pem +30 -52
  289. data/spec/fixtures/ssl/signed-key.pem +57 -107
  290. data/spec/fixtures/ssl/signed.pem +30 -52
  291. data/spec/fixtures/ssl/tampered-cert.pem +30 -52
  292. data/spec/fixtures/ssl/tampered-csr.pem +26 -47
  293. data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +57 -107
  294. data/spec/fixtures/ssl/unknown-127.0.0.1.pem +29 -50
  295. data/spec/fixtures/ssl/unknown-ca-key.pem +57 -107
  296. data/spec/fixtures/ssl/unknown-ca.pem +33 -55
  297. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  298. data/spec/fixtures/unit/provider/user/aix/aix_passwd_file.out +0 -4
  299. data/spec/integration/application/agent_spec.rb +27 -171
  300. data/spec/integration/application/apply_spec.rb +1 -20
  301. data/spec/integration/application/filebucket_spec.rb +16 -27
  302. data/spec/integration/application/help_spec.rb +2 -0
  303. data/spec/integration/application/module_spec.rb +0 -21
  304. data/spec/integration/application/plugin_spec.rb +24 -2
  305. data/spec/integration/defaults_spec.rb +14 -3
  306. data/spec/integration/environments/settings_interpolation_spec.rb +4 -0
  307. data/spec/integration/http/client_spec.rb +0 -12
  308. data/spec/integration/indirector/direct_file_server_spec.rb +3 -1
  309. data/spec/integration/indirector/facts/facter_spec.rb +36 -90
  310. data/spec/integration/network/http_pool_spec.rb +3 -21
  311. data/spec/integration/parser/catalog_spec.rb +0 -38
  312. data/spec/integration/parser/node_spec.rb +0 -9
  313. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  314. data/spec/integration/resource/type_collection_spec.rb +6 -2
  315. data/spec/integration/transaction_spec.rb +9 -4
  316. data/spec/integration/type/exec_spec.rb +45 -70
  317. data/spec/integration/type/file_spec.rb +5 -4
  318. data/spec/integration/util/windows/adsi_spec.rb +1 -21
  319. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  320. data/spec/integration/util/windows/principal_spec.rb +0 -21
  321. data/spec/integration/util/windows/registry_spec.rb +10 -6
  322. data/spec/integration/util/windows/security_spec.rb +1 -1
  323. data/spec/lib/matchers/include.rb +27 -0
  324. data/spec/lib/matchers/include_spec.rb +32 -0
  325. data/spec/lib/puppet/test_ca.rb +2 -7
  326. data/spec/lib/puppet_spec/puppetserver.rb +1 -1
  327. data/spec/lib/puppet_spec/settings.rb +1 -1
  328. data/spec/spec_helper.rb +7 -12
  329. data/spec/unit/agent_spec.rb +6 -10
  330. data/spec/unit/application/agent_spec.rb +3 -7
  331. data/spec/unit/application/facts_spec.rb +12 -456
  332. data/spec/unit/application/filebucket_spec.rb +43 -39
  333. data/spec/unit/application/ssl_spec.rb +2 -25
  334. data/spec/unit/application_spec.rb +9 -51
  335. data/spec/unit/certificate_factory_spec.rb +1 -1
  336. data/spec/unit/configurer/downloader_spec.rb +6 -8
  337. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  338. data/spec/unit/configurer_spec.rb +12 -32
  339. data/spec/unit/confine/feature_spec.rb +1 -1
  340. data/spec/unit/confine_spec.rb +2 -8
  341. data/spec/unit/context/trusted_information_spec.rb +2 -6
  342. data/spec/unit/defaults_spec.rb +68 -54
  343. data/spec/unit/environments_spec.rb +68 -259
  344. data/spec/unit/face/node_spec.rb +11 -0
  345. data/spec/unit/face/plugin_spec.rb +73 -33
  346. data/spec/unit/file_bucket/file_spec.rb +1 -1
  347. data/spec/unit/file_serving/configuration/parser_spec.rb +15 -18
  348. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  349. data/spec/unit/file_serving/fileset_spec.rb +0 -60
  350. data/spec/unit/file_serving/metadata_spec.rb +3 -3
  351. data/spec/unit/file_serving/terminus_helper_spec.rb +4 -11
  352. data/spec/unit/file_system_spec.rb +0 -15
  353. data/spec/unit/forge/module_release_spec.rb +7 -2
  354. data/spec/unit/functions/assert_type_spec.rb +1 -1
  355. data/spec/unit/functions/camelcase_spec.rb +1 -1
  356. data/spec/unit/functions/capitalize_spec.rb +1 -1
  357. data/spec/unit/functions/downcase_spec.rb +1 -1
  358. data/spec/unit/functions/empty_spec.rb +0 -10
  359. data/spec/unit/functions/unwrap_spec.rb +0 -8
  360. data/spec/unit/functions/upcase_spec.rb +1 -1
  361. data/spec/unit/functions4_spec.rb +2 -2
  362. data/spec/unit/gettext/config_spec.rb +0 -12
  363. data/spec/unit/http/client_spec.rb +7 -8
  364. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  365. data/spec/unit/http/external_client_spec.rb +4 -4
  366. data/spec/unit/{network/http → http}/factory_spec.rb +5 -30
  367. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  368. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  369. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  370. data/spec/unit/http/resolver_spec.rb +13 -13
  371. data/spec/unit/http/service/compiler_spec.rb +0 -185
  372. data/spec/unit/http/service/file_server_spec.rb +3 -3
  373. data/spec/unit/http/service/puppetserver_spec.rb +34 -4
  374. data/spec/unit/http/service_spec.rb +0 -1
  375. data/spec/unit/http/session_spec.rb +16 -14
  376. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  377. data/spec/unit/indirector/catalog/compiler_spec.rb +10 -14
  378. data/spec/unit/indirector/face_spec.rb +1 -0
  379. data/spec/unit/indirector/facts/facter_spec.rb +3 -0
  380. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  381. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +8 -26
  382. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  383. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  384. data/spec/unit/indirector/file_server_spec.rb +1 -15
  385. data/spec/unit/indirector/indirection_spec.rb +12 -8
  386. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  387. data/spec/unit/indirector/request_spec.rb +0 -264
  388. data/spec/unit/indirector/resource/ral_spec.rb +75 -40
  389. data/spec/unit/indirector/rest_spec.rb +98 -752
  390. data/spec/unit/indirector_spec.rb +2 -2
  391. data/spec/unit/module_tool/applications/installer_spec.rb +0 -78
  392. data/spec/unit/network/authconfig_spec.rb +2 -129
  393. data/spec/unit/network/authorization_spec.rb +2 -55
  394. data/spec/unit/network/formats_spec.rb +4 -45
  395. data/spec/unit/network/http/api/indirected_routes_spec.rb +5 -92
  396. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  397. data/spec/unit/network/http/api_spec.rb +10 -0
  398. data/spec/unit/network/http/connection_spec.rb +19 -41
  399. data/spec/unit/network/http/handler_spec.rb +0 -1
  400. data/spec/unit/network/http_pool_spec.rb +0 -4
  401. data/spec/unit/node/environment_spec.rb +33 -21
  402. data/spec/unit/node_spec.rb +2 -54
  403. data/spec/unit/parser/compiler_spec.rb +19 -3
  404. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  405. data/spec/unit/parser/functions/fqdn_rand_spec.rb +1 -15
  406. data/spec/unit/parser/resource_spec.rb +8 -14
  407. data/spec/unit/parser/templatewrapper_spec.rb +5 -16
  408. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +4 -7
  409. data/spec/unit/pops/loaders/loaders_spec.rb +6 -21
  410. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  411. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  412. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  413. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  414. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  415. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  416. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +0 -18
  417. data/spec/unit/pops/types/p_sensitive_type_spec.rb +0 -18
  418. data/spec/unit/pops/types/type_calculator_spec.rb +6 -6
  419. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  420. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  421. data/spec/unit/pops/visitor_spec.rb +1 -1
  422. data/spec/unit/property_spec.rb +0 -1
  423. data/spec/unit/provider/group/groupadd_spec.rb +2 -5
  424. data/spec/unit/provider/nameservice_spec.rb +64 -122
  425. data/spec/unit/provider/package/apt_spec.rb +23 -28
  426. data/spec/unit/provider/package/aptitude_spec.rb +1 -1
  427. data/spec/unit/provider/package/base_spec.rb +5 -6
  428. data/spec/unit/provider/package/dnfmodule_spec.rb +1 -10
  429. data/spec/unit/provider/package/dpkg_spec.rb +0 -48
  430. data/spec/unit/provider/package/gem_spec.rb +32 -0
  431. data/spec/unit/provider/package/nim_spec.rb +0 -42
  432. data/spec/unit/provider/package/pacman_spec.rb +12 -18
  433. data/spec/unit/provider/package/pip_spec.rb +11 -43
  434. data/spec/unit/provider/package/pkgdmg_spec.rb +4 -0
  435. data/spec/unit/provider/package/puppet_gem_spec.rb +3 -2
  436. data/spec/unit/provider/parsedfile_spec.rb +0 -10
  437. data/spec/unit/provider/service/init_spec.rb +0 -1
  438. data/spec/unit/provider/service/openwrt_spec.rb +1 -3
  439. data/spec/unit/provider/service/smf_spec.rb +401 -165
  440. data/spec/unit/provider/service/systemd_spec.rb +8 -53
  441. data/spec/unit/provider/service/windows_spec.rb +0 -203
  442. data/spec/unit/provider/user/aix_spec.rb +0 -5
  443. data/spec/unit/provider/user/directoryservice_spec.rb +35 -67
  444. data/spec/unit/provider/user/hpux_spec.rb +1 -1
  445. data/spec/unit/provider/user/pw_spec.rb +0 -2
  446. data/spec/unit/provider/user/useradd_spec.rb +3 -71
  447. data/spec/unit/provider_spec.rb +8 -18
  448. data/spec/unit/resource/catalog_spec.rb +1 -1
  449. data/spec/unit/resource/type_collection_spec.rb +2 -22
  450. data/spec/unit/resource/type_spec.rb +1 -1
  451. data/spec/unit/resource_spec.rb +10 -67
  452. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  453. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  454. data/spec/unit/settings/port_setting_spec.rb +31 -0
  455. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  456. data/spec/unit/settings_spec.rb +79 -110
  457. data/spec/unit/ssl/base_spec.rb +37 -3
  458. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  459. data/spec/unit/ssl/certificate_spec.rb +2 -11
  460. data/spec/unit/ssl/ssl_provider_spec.rb +2 -5
  461. data/spec/unit/ssl/state_machine_spec.rb +5 -20
  462. data/spec/unit/ssl/verifier_spec.rb +0 -21
  463. data/spec/unit/transaction/additional_resource_generator_spec.rb +9 -3
  464. data/spec/unit/transaction/event_manager_spec.rb +11 -14
  465. data/spec/unit/transaction/report_spec.rb +0 -2
  466. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  467. data/spec/unit/transaction_spec.rb +55 -96
  468. data/spec/unit/type/exec_spec.rb +29 -76
  469. data/spec/unit/type/file/checksum_spec.rb +6 -6
  470. data/spec/unit/type/file/content_spec.rb +2 -1
  471. data/spec/unit/type/file/ensure_spec.rb +1 -1
  472. data/spec/unit/type/file/mode_spec.rb +1 -1
  473. data/spec/unit/type/file/selinux_spec.rb +5 -3
  474. data/spec/unit/type/file/source_spec.rb +4 -5
  475. data/spec/unit/type/file_spec.rb +18 -6
  476. data/spec/unit/type/group_spec.rb +6 -13
  477. data/spec/unit/type/package_spec.rb +1 -1
  478. data/spec/unit/type/resources_spec.rb +7 -7
  479. data/spec/unit/type/service_spec.rb +189 -60
  480. data/spec/unit/type/tidy_spec.rb +8 -24
  481. data/spec/unit/type/user_spec.rb +0 -45
  482. data/spec/unit/type_spec.rb +22 -2
  483. data/spec/unit/util/at_fork_spec.rb +2 -2
  484. data/spec/unit/util/autoload_spec.rb +1 -5
  485. data/spec/unit/util/backups_spec.rb +2 -3
  486. data/spec/unit/util/execution_spec.rb +11 -44
  487. data/spec/unit/util/inifile_spec.rb +14 -6
  488. data/spec/unit/util/log_spec.rb +7 -8
  489. data/spec/unit/util/logging_spec.rb +3 -3
  490. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  491. data/spec/unit/util/posix_spec.rb +15 -363
  492. data/spec/unit/util/run_mode_spec.rb +21 -121
  493. data/spec/unit/util/selinux_spec.rb +68 -163
  494. data/spec/unit/util/storage_spec.rb +1 -3
  495. data/spec/unit/util/suidmanager_spec.rb +41 -44
  496. data/spec/unit/util/windows/sid_spec.rb +0 -41
  497. data/spec/unit/util/windows/string_spec.rb +1 -3
  498. data/spec/unit/util/yaml_spec.rb +0 -54
  499. data/spec/unit/util_spec.rb +6 -31
  500. data/tasks/generate_cert_fixtures.rake +3 -12
  501. metadata +45 -253
  502. data/conf/auth.conf +0 -150
  503. data/lib/puppet/application/cert.rb +0 -76
  504. data/lib/puppet/application/key.rb +0 -4
  505. data/lib/puppet/application/man.rb +0 -4
  506. data/lib/puppet/application/status.rb +0 -4
  507. data/lib/puppet/face/key.rb +0 -16
  508. data/lib/puppet/face/man.rb +0 -145
  509. data/lib/puppet/face/module/build.rb +0 -14
  510. data/lib/puppet/face/module/generate.rb +0 -14
  511. data/lib/puppet/face/module/search.rb +0 -103
  512. data/lib/puppet/face/status.rb +0 -51
  513. data/lib/puppet/ffi/posix.rb +0 -10
  514. data/lib/puppet/ffi/posix/constants.rb +0 -14
  515. data/lib/puppet/ffi/posix/functions.rb +0 -24
  516. data/lib/puppet/indirector/certificate/file.rb +0 -9
  517. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  518. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  519. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  520. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  521. data/lib/puppet/indirector/file_content/http.rb +0 -22
  522. data/lib/puppet/indirector/key/file.rb +0 -46
  523. data/lib/puppet/indirector/key/memory.rb +0 -7
  524. data/lib/puppet/indirector/ssl_file.rb +0 -162
  525. data/lib/puppet/indirector/status.rb +0 -3
  526. data/lib/puppet/indirector/status/local.rb +0 -12
  527. data/lib/puppet/indirector/status/rest.rb +0 -27
  528. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  529. data/lib/puppet/network/auth_config_parser.rb +0 -90
  530. data/lib/puppet/network/authstore.rb +0 -283
  531. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  532. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -88
  533. data/lib/puppet/network/http/base_pool.rb +0 -36
  534. data/lib/puppet/network/http/compression.rb +0 -127
  535. data/lib/puppet/network/http/connection_adapter.rb +0 -184
  536. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  537. data/lib/puppet/network/rest_controller.rb +0 -2
  538. data/lib/puppet/network/rights.rb +0 -210
  539. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -66
  540. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -22
  541. data/lib/puppet/parser/environment_compiler.rb +0 -202
  542. data/lib/puppet/pops/types/enumeration.rb +0 -16
  543. data/lib/puppet/resource/capability_finder.rb +0 -154
  544. data/lib/puppet/rest/errors.rb +0 -15
  545. data/lib/puppet/rest/response.rb +0 -35
  546. data/lib/puppet/rest/route.rb +0 -85
  547. data/lib/puppet/rest/routes.rb +0 -135
  548. data/lib/puppet/settings/alias_setting.rb +0 -37
  549. data/lib/puppet/ssl/host.rb +0 -505
  550. data/lib/puppet/ssl/key.rb +0 -61
  551. data/lib/puppet/ssl/validator.rb +0 -61
  552. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  553. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  554. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  555. data/lib/puppet/status.rb +0 -40
  556. data/lib/puppet/util/connection.rb +0 -88
  557. data/lib/puppet/util/fact_dif.rb +0 -81
  558. data/lib/puppet/util/ssl.rb +0 -83
  559. data/lib/puppet/util/windows/api_types.rb +0 -309
  560. data/lib/puppet/util/windows/monkey_patches/dir.rb +0 -40
  561. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  562. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  563. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  564. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  565. data/lib/puppet/vendor/pathspec/README.md +0 -53
  566. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  567. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  568. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  569. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  570. data/man/man8/puppet-key.8 +0 -126
  571. data/man/man8/puppet-man.8 +0 -76
  572. data/man/man8/puppet-status.8 +0 -108
  573. data/spec/fixtures/integration/application/agent/cached_deferred_catalog.json +0 -91
  574. data/spec/fixtures/ssl/oid-key.pem +0 -117
  575. data/spec/fixtures/ssl/oid.pem +0 -69
  576. data/spec/fixtures/ssl/trusted_oid_mapping.yaml +0 -5
  577. data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services_vendor_preset +0 -9
  578. data/spec/integration/application/resource_spec.rb +0 -64
  579. data/spec/integration/application/ssl_spec.rb +0 -20
  580. data/spec/integration/network/authconfig_spec.rb +0 -256
  581. data/spec/integration/util/windows/monkey_patches/dir_spec.rb +0 -11
  582. data/spec/unit/application/man_spec.rb +0 -52
  583. data/spec/unit/capability_spec.rb +0 -414
  584. data/spec/unit/face/key_spec.rb +0 -9
  585. data/spec/unit/face/module/search_spec.rb +0 -231
  586. data/spec/unit/face/status_spec.rb +0 -9
  587. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  588. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  589. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  590. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  591. data/spec/unit/indirector/key/file_spec.rb +0 -78
  592. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  593. data/spec/unit/indirector/status/local_spec.rb +0 -10
  594. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  595. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  596. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  597. data/spec/unit/network/authstore_spec.rb +0 -422
  598. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  599. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  600. data/spec/unit/network/http/compression_spec.rb +0 -240
  601. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  602. data/spec/unit/network/http_spec.rb +0 -9
  603. data/spec/unit/network/rights_spec.rb +0 -439
  604. data/spec/unit/parser/environment_compiler_spec.rb +0 -730
  605. data/spec/unit/pops/evaluator/deferred_resolver_spec.rb +0 -20
  606. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  607. data/spec/unit/resource/capability_finder_spec.rb +0 -148
  608. data/spec/unit/rest/route_spec.rb +0 -132
  609. data/spec/unit/ssl/host_spec.rb +0 -645
  610. data/spec/unit/ssl/key_spec.rb +0 -173
  611. data/spec/unit/ssl/validator_spec.rb +0 -278
  612. data/spec/unit/status_spec.rb +0 -45
  613. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,414 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet_spec/compiler'
3
-
4
- describe 'Capability types' do
5
- include PuppetSpec::Compiler
6
- let(:env) { Puppet::Node::Environment.create(:testing, []) }
7
- let(:node) { Puppet::Node.new('test', :environment => env) }
8
- let(:loaders) { Puppet::Pops::Loaders.new(env) }
9
-
10
- before(:each) do
11
- allow_any_instance_of(Puppet::Parser::Compiler).to receive(:loaders).and_return(loaders)
12
- Puppet.push_context({:loaders => loaders, :current_environment => env})
13
- Puppet::Type.newtype :cap, :is_capability => true do
14
- newparam :name
15
- newparam :host
16
- end
17
- end
18
-
19
- after(:each) do
20
- Puppet::Type.rmtype(:cap)
21
- Puppet.pop_context()
22
- end
23
-
24
- context 'annotations' do
25
- it "adds a blueprint for a produced resource" do
26
- catalog = compile_to_catalog(<<-MANIFEST, node)
27
- define test($hostname) {
28
- notify { "hostname ${hostname}":}
29
- }
30
-
31
- Test produces Cap {
32
- host => $hostname
33
- }
34
- MANIFEST
35
-
36
- krt = catalog.environment_instance.known_resource_types
37
- type = krt.definition(:test)
38
- expect(type.produces).to be_instance_of(Array)
39
- prd = type.produces.first
40
-
41
- expect(prd).to be_instance_of(Hash)
42
- expect(prd[:capability]).to eq("Cap")
43
- expect(prd[:mappings]).to be_instance_of(Hash)
44
- expect(prd[:mappings]["host"]).to be_instance_of(Puppet::Parser::AST::PopsBridge::Expression)
45
- end
46
-
47
- it "adds a blueprint for a consumed resource" do
48
- catalog = compile_to_catalog(<<-MANIFEST, node)
49
- define test($hostname) {
50
- notify { "hostname ${hostname}":}
51
- }
52
-
53
- Test consumes Cap {
54
- host => $hostname
55
- }
56
- MANIFEST
57
-
58
- krt = catalog.environment_instance.known_resource_types
59
- type = krt.definition(:test)
60
- expect(type.produces).to be_instance_of(Array)
61
- cns = type.consumes.first
62
-
63
- expect(cns).to be_instance_of(Hash)
64
- expect(cns[:capability]).to eq("Cap")
65
- expect(cns[:mappings]).to be_instance_of(Hash)
66
- expect(cns[:mappings]["host"]).to be_instance_of(Puppet::Parser::AST::PopsBridge::Expression)
67
- end
68
-
69
- it 'can place define and consumes/produces in separate manifests' do
70
- parse_results = []
71
- parser = Puppet::Parser::ParserFactory.parser
72
-
73
- parser.string = <<-MANIFEST
74
- define test($hostname) {
75
- notify { "hostname ${hostname}":}
76
- }
77
- MANIFEST
78
- parse_results << parser.parse
79
-
80
- parser.string = <<-MANIFEST
81
- Test consumes Cap {
82
- host => $hostname
83
- }
84
- MANIFEST
85
- parse_results << parser.parse
86
-
87
- main = Puppet::Parser::AST::Hostclass.new('', :code => Puppet::Parser::ParserFactory.code_merger.concatenate(parse_results))
88
- allow_any_instance_of(Puppet::Node::Environment).to receive(:perform_initial_import).and_return(main)
89
-
90
- type = compile_to_catalog(nil).environment_instance.known_resource_types.definition(:test)
91
- expect(type.produces).to be_instance_of(Array)
92
- cns = type.consumes.first
93
-
94
- expect(cns).to be_instance_of(Hash)
95
- expect(cns[:capability]).to eq('Cap')
96
- expect(cns[:mappings]).to be_instance_of(Hash)
97
- expect(cns[:mappings]['host']).to be_instance_of(Puppet::Parser::AST::PopsBridge::Expression)
98
- end
99
-
100
- it 'can place use a qualified name for defines that produces capabilities' do
101
- parse_results = []
102
- parser = Puppet::Parser::ParserFactory.parser
103
-
104
- parser.string = <<-MANIFEST
105
- class mod {
106
- define test($hostname) {
107
- notify { "hostname ${hostname}":}
108
- }
109
- }
110
- include mod
111
- MANIFEST
112
- parse_results << parser.parse
113
-
114
- parser.string = <<-MANIFEST
115
- Mod::Test consumes Cap {
116
- host => $hostname
117
- }
118
- MANIFEST
119
- parse_results << parser.parse
120
-
121
- main = Puppet::Parser::AST::Hostclass.new('', :code => Puppet::Parser::ParserFactory.code_merger.concatenate(parse_results))
122
- allow_any_instance_of(Puppet::Node::Environment).to receive(:perform_initial_import).and_return(main)
123
-
124
- type = compile_to_catalog(nil).environment_instance.known_resource_types.definition('Mod::Test')
125
- expect(type.produces).to be_instance_of(Array)
126
- cns = type.consumes.first
127
-
128
- expect(cns).to be_instance_of(Hash)
129
- expect(cns[:capability]).to eq('Cap')
130
- expect(cns[:mappings]).to be_instance_of(Hash)
131
- expect(cns[:mappings]['host']).to be_instance_of(Puppet::Parser::AST::PopsBridge::Expression)
132
- end
133
-
134
- it "does not allow operator '+>' in a mapping" do
135
- expect do
136
- compile_to_catalog(<<-MANIFEST, node)
137
- define test($hostname) {
138
- notify { "hostname ${hostname}":}
139
- }
140
-
141
- Test consumes Cap {
142
- host +> $hostname
143
- }
144
- MANIFEST
145
- end.to raise_error(Puppet::ParseErrorWithIssue, /Illegal \+> operation.*This operator can not be used in a Capability Mapping/)
146
- end
147
-
148
- it "does not allow operator '*=>' in a mapping" do
149
- expect do
150
- compile_to_catalog(<<-MANIFEST, node)
151
- define test($hostname) {
152
- notify { "hostname ${hostname}":}
153
- }
154
-
155
- Test consumes Cap {
156
- *=> { host => $hostname }
157
- }
158
- MANIFEST
159
- end.to raise_error(Puppet::ParseError, /The operator '\* =>' in a Capability Mapping is not supported/)
160
- end
161
-
162
- it "does not allow 'before' relationship to capability mapping" do
163
- expect do
164
- compile_to_catalog(<<-MANIFEST, node)
165
- define test() {
166
- notify { "hello":}
167
- }
168
-
169
- Test consumes Cap {}
170
-
171
- test { one: before => Cap[cap] }
172
- MANIFEST
173
- end.to raise_error(Puppet::Error, /'before' is not a valid relationship to a capability/)
174
- end
175
-
176
- ["produces", "consumes"].each do |kw|
177
- it "creates an error when #{kw} references nonexistent type" do
178
- manifest = <<-MANIFEST
179
- Test #{kw} Cap {
180
- host => $hostname
181
- }
182
- MANIFEST
183
-
184
- expect {
185
- compile_to_catalog(manifest, node)
186
- }.to raise_error(Puppet::Error,
187
- /#{kw} clause references nonexistent type Test/)
188
- end
189
- end
190
- end
191
-
192
- context 'exporting a capability' do
193
- it "does not add produced resources that are not exported" do
194
- manifest = <<-MANIFEST
195
- define test($hostname) {
196
- notify { "hostname ${hostname}":}
197
- }
198
-
199
- Test produces Cap {
200
- host => $hostname
201
- }
202
-
203
- test { one: hostname => "ahost" }
204
- MANIFEST
205
- catalog = compile_to_catalog(manifest, node)
206
- expect(catalog.resource("Test[one]")).to be_instance_of(Puppet::Resource)
207
- expect(catalog.resource_keys.find { |type, _| type == "Cap" }).to be_nil
208
- end
209
-
210
- it "adds produced resources that are exported" do
211
- manifest = <<-MANIFEST
212
- define test($hostname) {
213
- notify { "hostname ${hostname}":}
214
- }
215
-
216
- # The $hostname in the produces clause does not refer to this variable,
217
- # instead, it referes to the hostname property of the Test resource
218
- # that is producing the Cap
219
- $hostname = "other_host"
220
-
221
- Test produces Cap {
222
- host => $hostname
223
- }
224
-
225
- test { one: hostname => "ahost", export => Cap[two] }
226
- MANIFEST
227
- catalog = compile_to_catalog(manifest, node)
228
- expect(catalog.resource("Test[one]")).to be_instance_of(Puppet::Resource)
229
-
230
- caps = catalog.resource_keys.select { |type, _| type == "Cap" }
231
- expect(caps.size).to eq(1)
232
-
233
- cap = catalog.resource("Cap[two]")
234
- expect(cap).to be_instance_of(Puppet::Resource)
235
- expect(cap["require"]).to eq("Test[one]")
236
- expect(cap["host"]).to eq("ahost")
237
- expect(cap.resource_type).to eq(Puppet::Type::Cap)
238
- expect(cap.tags.any? { |t| t == 'producer:testing' }).to eq(true)
239
- end
240
- end
241
-
242
- context 'consuming a capability' do
243
- def make_catalog(instance)
244
- manifest = <<-MANIFEST
245
- define test($hostname = nohost) {
246
- notify { "hostname ${hostname}":}
247
- }
248
-
249
- Test consumes Cap {
250
- hostname => $host
251
- }
252
- MANIFEST
253
- compile_to_catalog(manifest + instance, node)
254
- end
255
-
256
- def mock_cap_finding
257
- cap = Puppet::Resource.new("Cap", "two")
258
- cap["host"] = "ahost"
259
- expect(Puppet::Resource::CapabilityFinder).to receive(:find).and_return(cap)
260
- cap
261
- end
262
-
263
- it "does not fetch a consumed resource when consume metaparam not set" do
264
- expect(Puppet::Resource::CapabilityFinder).not_to receive(:find)
265
- catalog = make_catalog("test { one: }")
266
- expect(catalog.resource_keys.find { |type, _| type == "Cap" }).to be_nil
267
- expect(catalog.resource("Test", "one")["hostname"]).to eq("nohost")
268
- end
269
-
270
- it "sets hostname from consumed capability" do
271
- cap = mock_cap_finding
272
- catalog = make_catalog("test { one: consume => Cap[two] }")
273
- expect(catalog.resource("Cap[two]")).to eq(cap)
274
- expect(catalog.resource("Cap[two]")["host"]).to eq("ahost")
275
- expect(catalog.resource("Test", "one")["hostname"]).to eq("ahost")
276
- end
277
-
278
- it "does not override explicit hostname property when consuming" do
279
- cap = mock_cap_finding
280
- catalog = make_catalog("test { one: hostname => other_host, consume => Cap[two] }")
281
- expect(catalog.resource("Cap[two]")).to eq(cap)
282
- expect(catalog.resource("Cap[two]")["host"]).to eq("ahost")
283
- expect(catalog.resource("Test", "one")["hostname"]).to eq("other_host")
284
- end
285
-
286
- it "fetches required capability" do
287
- cap = mock_cap_finding
288
- catalog = make_catalog("test { one: require => Cap[two] }")
289
- expect(catalog.resource("Cap[two]")).to eq(cap)
290
- expect(catalog.resource("Cap[two]")["host"]).to eq("ahost")
291
- expect(catalog.resource("Test", "one")["hostname"]).to eq("nohost")
292
- end
293
-
294
- ['export', 'consume'].each do |metaparam|
295
-
296
- it "validates that #{metaparam} metaparameter rejects values that are not resources" do
297
- expect { make_catalog("test { one: #{metaparam} => 'hello' }") }.to raise_error(Puppet::Error, /not a resource/)
298
- end
299
-
300
- it "validates that #{metaparam} metaparameter rejects resources that are not capability resources" do
301
- expect { make_catalog("notify{hello:} test { one: #{metaparam} => Notify[hello] }") }.to raise_error(Puppet::Error, /not a capability resource/)
302
- end
303
- end
304
-
305
- context 'producing/consuming resources' do
306
-
307
- let(:ral) do
308
- compile_to_ral(<<-MANIFEST, node)
309
- define producer() {
310
- notify { "producer":}
311
- }
312
-
313
- define consumer() {
314
- notify { $title:}
315
- }
316
-
317
- Producer produces Cap {}
318
-
319
- Consumer consumes Cap {}
320
-
321
- producer {x: export => Cap[cap]}
322
- consumer {x: consume => Cap[cap]}
323
- consumer {y: require => Cap[cap]}
324
- MANIFEST
325
- end
326
-
327
- let(:graph) do
328
- graph = Puppet::Graph::RelationshipGraph.new(Puppet::Graph::SequentialPrioritizer.new)
329
- graph.populate_from(ral)
330
- graph
331
- end
332
-
333
- let(:capability) { ral.resource('Cap[cap]') }
334
-
335
- it 'the produced resource depends on the producer' do
336
- expect(graph.dependencies(capability).map {|d| d.to_s }).to include('Producer[x]')
337
- end
338
-
339
- it 'the consumer depends on the consumed resource' do
340
- expect(graph.dependents(capability).map {|d| d.to_s }).to include('Consumer[x]')
341
- end
342
-
343
- it 'the consumer depends on the required resource' do
344
- expect(graph.dependents(capability).map {|d| d.to_s }).to include('Consumer[y]')
345
- end
346
- end
347
-
348
- context 'producing/consuming resources to/from classes' do
349
-
350
- let(:ral) do
351
- compile_to_ral(<<-MANIFEST, node)
352
- define test($hostname) {
353
- notify { $hostname:}
354
- }
355
-
356
- class producer($host) {
357
- notify { p: }
358
- }
359
-
360
- class consumer($host) {
361
- test { c: hostname => $host }
362
- }
363
-
364
- Class[producer] produces Cap {}
365
-
366
- Class[consumer] consumes Cap {}
367
-
368
- class { producer: host => 'produced.host', export => Cap[one]}
369
- class { consumer: consume => Cap[one]}
370
- MANIFEST
371
- end
372
-
373
- let(:graph) do
374
- graph = Puppet::Graph::RelationshipGraph.new(Puppet::Graph::SequentialPrioritizer.new)
375
- graph.populate_from(ral)
376
- graph
377
- end
378
-
379
- let(:capability) { ral.resource('Cap[one]') }
380
-
381
- it 'the produced resource depends on the producer' do
382
- expect(graph.dependencies(capability).map {|d| d.to_s }).to include('Class[Producer]')
383
- end
384
-
385
- it 'the consumer depends on the consumed resource' do
386
- expect(graph.dependents(capability).map {|d| d.to_s }).to include('Class[Consumer]')
387
- end
388
-
389
- it 'resource in the consumer class gets values from producer via the capability resource' do
390
- expect(graph.dependents(capability).map {|d| d.to_s }).to include('Notify[produced.host]')
391
- end
392
- end
393
- end
394
-
395
- context 'and aliased resources' do
396
- let(:drive) { Puppet::Util::Platform.windows? ? 'C:' : '' }
397
- let(:code) { <<-PUPPET }
398
- $dir='#{drive}/tmp/test'
399
- $same_dir='#{drive}/tmp/test/'
400
-
401
- file {$dir:
402
- ensure => directory
403
- }
404
-
405
- file { $same_dir:
406
- ensure => directory
407
- }
408
- PUPPET
409
-
410
- it 'fails if a resource is defined and then redefined using name that results in the same alias' do
411
- expect { compile_to_ral(code) }.to raise_error(/resource \["File", "#{drive}\/tmp\/test"\] already declared/)
412
- end
413
- end
414
- end
@@ -1,9 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/face'
3
-
4
- describe Puppet::Face[:key, '0.0.1'] do
5
- it "should be deprecated" do
6
- expect(subject.deprecated?).to be_truthy
7
- end
8
- end
9
-
@@ -1,231 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/face'
3
- require 'puppet/application/module'
4
- require 'puppet/module_tool'
5
-
6
- describe "puppet module search" do
7
- subject { Puppet::Face[:module, :current] }
8
-
9
- let(:options) do
10
- {}
11
- end
12
-
13
- describe Puppet::Application::Module do
14
- subject do
15
- app = Puppet::Application::Module.new
16
- allow(app).to receive(:action).and_return(Puppet::Face.find_action(:module, :search))
17
- app
18
- end
19
-
20
- before do
21
- subject.render_as = :console
22
- allow(Puppet::Util::Terminal).to receive(:width).and_return(100)
23
- end
24
-
25
- it 'should output nothing when receiving an empty dataset' do
26
- expect(subject.render({:answers => [], :result => :success}, ['apache', {}])).to eq("No results found for 'apache'.")
27
- end
28
-
29
- it 'should return error and exit when error returned' do
30
- results = {
31
- :result => :failure,
32
- :error => {
33
- :oneline => 'Something failed',
34
- :multiline => 'Something failed',
35
- }
36
- }
37
- expect { subject.render(results, ['apache', {}]) }.to raise_error 'Something failed'
38
- end
39
-
40
- it 'should output a header when receiving a non-empty dataset' do
41
- results = {
42
- :result => :success,
43
- :answers => [
44
- {'full_name' => '', 'author' => '', 'desc' => '', 'tag_list' => [] },
45
- ],
46
- }
47
-
48
- expect(subject.render(results, ['apache', {}])).to match(/NAME/)
49
- expect(subject.render(results, ['apache', {}])).to match(/DESCRIPTION/)
50
- expect(subject.render(results, ['apache', {}])).to match(/AUTHOR/)
51
- expect(subject.render(results, ['apache', {}])).to match(/KEYWORDS/)
52
- end
53
-
54
- it 'should output the relevant fields when receiving a non-empty dataset' do
55
- results = {
56
- :result => :success,
57
- :answers => [
58
- {'full_name' => 'Name', 'author' => 'Author', 'desc' => 'Summary', 'tag_list' => ['tag1', 'tag2'] },
59
- ]
60
- }
61
-
62
- expect(subject.render(results, ['apache', {}])).to match(/Name/)
63
- expect(subject.render(results, ['apache', {}])).to match(/Author/)
64
- expect(subject.render(results, ['apache', {}])).to match(/Summary/)
65
- expect(subject.render(results, ['apache', {}])).to match(/tag1/)
66
- expect(subject.render(results, ['apache', {}])).to match(/tag2/)
67
- end
68
-
69
- it 'should mark deprecated modules in search results' do
70
- results = {
71
- :result => :success,
72
- :answers => [
73
- {'full_name' => 'puppetlabs-corosync', 'deprecated_at' => Time.new, 'author' => 'Author', 'desc' => 'Summary', 'tag_list' => ['tag1', 'tag2'] },
74
- ]
75
- }
76
-
77
- expect(subject.render(results, ['apache', {}])).to match(/puppetlabs-corosync.*DEPRECATED/i)
78
- end
79
-
80
- it 'should elide really long descriptions' do
81
- results = {
82
- :result => :success,
83
- :answers => [
84
- {
85
- 'full_name' => 'Name',
86
- 'author' => 'Author',
87
- 'desc' => 'This description is really too long to fit in a single data table, guys -- we should probably set about truncating it',
88
- 'tag_list' => ['tag1', 'tag2'],
89
- },
90
- ]
91
- }
92
-
93
- expect(subject.render(results, ['apache', {}])).to match(/\.{3} @Author/)
94
- end
95
-
96
- it 'should never truncate the module name' do
97
- results = {
98
- :result => :success,
99
- :answers => [
100
- {
101
- 'full_name' => 'This-module-has-a-really-really-long-name',
102
- 'author' => 'Author',
103
- 'desc' => 'Description',
104
- 'tag_list' => ['tag1', 'tag2'],
105
- },
106
- ]
107
- }
108
-
109
- expect(subject.render(results, ['apache', {}])).to match(/This-module-has-a-really-really-long-name/)
110
- end
111
-
112
- it 'should never truncate the author name' do
113
- results = {
114
- :result => :success,
115
- :answers => [
116
- {
117
- 'full_name' => 'Name',
118
- 'author' => 'This-author-has-a-really-really-long-name',
119
- 'desc' => 'Description',
120
- 'tag_list' => ['tag1', 'tag2'],
121
- },
122
- ]
123
- }
124
-
125
- expect(subject.render(results, ['apache', {}])).to match(/@This-author-has-a-really-really-long-name/)
126
- end
127
-
128
- it 'should never remove tags that match the search term' do
129
- results = {
130
- :results => :success,
131
- :answers => [
132
- {
133
- 'full_name' => 'Name',
134
- 'author' => 'Author',
135
- 'desc' => 'Description',
136
- 'tag_list' => ['Supercalifragilisticexpialidocious'] + (1..100).map { |i| "tag#{i}" },
137
- },
138
- ]
139
- }
140
-
141
- expect(subject.render(results, ['Supercalifragilisticexpialidocious', {}])).to match(/Supercalifragilisticexpialidocious/)
142
- expect(subject.render(results, ['Supercalifragilisticexpialidocious', {}])).not_to match(/tag/)
143
- end
144
-
145
- {
146
- 100 => "NAME DESCRIPTION AUTHOR KEYWORDS#{' '*15}\n"\
147
- "Name This description is really too long to fit ... @JohnnyApples tag1 tag2 taggitty3#{' '*4}\n",
148
-
149
- 70 => "NAME DESCRIPTION AUTHOR KEYWORDS#{' '*5}\n"\
150
- "Name This description is rea... @JohnnyApples tag1 tag2#{' '*4}\n",
151
-
152
- 80 => "NAME DESCRIPTION AUTHOR KEYWORDS#{' '*8}\n"\
153
- "Name This description is really too... @JohnnyApples tag1 tag2#{' '*7}\n",
154
-
155
- 200 => "NAME DESCRIPTION AUTHOR KEYWORDS#{' '*48}\n"\
156
- "Name This description is really too long to fit in a single data table, guys -- we should probably set about trunca... @JohnnyApples tag1 tag2 taggitty3#{' '*37}\n"
157
- }.each do |width, expectation|
158
- it "should resize the table to fit the screen, when #{width} columns" do
159
- results = {
160
- :result => :success,
161
- :answers => [
162
- {
163
- 'full_name' => 'Name',
164
- 'author' => 'JohnnyApples',
165
- 'desc' => 'This description is really too long to fit in a single data table, guys -- we should probably set about truncating it',
166
- 'tag_list' => ['tag1', 'tag2', 'taggitty3'],
167
- },
168
- ]
169
- }
170
-
171
- expect(Puppet::Util::Terminal).to receive(:width).and_return(width)
172
- result = subject.render(results, ['apache', {}])
173
- expect(result.lines.sort_by(&:length).last.chomp.length).to be <= width
174
- expect(result).to eq(expectation)
175
- end
176
- end
177
- end
178
-
179
- describe "option validation" do
180
- context "without any options" do
181
- it "should require a search term" do
182
- pattern = /wrong number of arguments/
183
- expect { subject.search }.to raise_error ArgumentError, pattern
184
- end
185
- end
186
-
187
- it "should accept the --module_repository option" do
188
- forge = double("Puppet::Forge")
189
- searcher = double("Searcher")
190
- options[:module_repository] = "http://forge.example.com"
191
-
192
- expect(Puppet::Forge).to receive(:new).with("http://forge.example.com").and_return(forge)
193
- expect(Puppet::ModuleTool::Applications::Searcher).to receive(:new).with("puppetlabs-apache", forge, hash_including(options)).and_return(searcher)
194
- expect(searcher).to receive(:run)
195
-
196
- subject.search("puppetlabs-apache", options)
197
- end
198
- end
199
-
200
- describe "inline documentation" do
201
- subject { Puppet::Face[:module, :current].get_action :search }
202
-
203
- its(:summary) { should =~ /search.*module/im }
204
- its(:description) { should =~ /search.*module/im }
205
- its(:returns) { should =~ /array/i }
206
- its(:examples) { should_not be_empty }
207
-
208
- %w{ license copyright summary description returns examples }.each do |doc|
209
- context "of the" do
210
- its(doc.to_sym) { should_not =~ /(FIXME|REVISIT|TODO)/ }
211
- end
212
- end
213
- end
214
-
215
- it "should include a deprecation warning" do
216
- stub_request(:get, "https://forgeapi.puppet.com/v3/modules?query=puppetlabs-apache").to_return(status: 200, body: [answers: [], result: :success])
217
-
218
- subject.search("puppetlabs-apache")
219
-
220
- expect(@logs).to include(an_object_having_attributes(level: :warning, message: /This action has been deprecated. Please use the Puppet Forge to search for modules./))
221
- end
222
-
223
- it "omits the warning when deprecations are disabled" do
224
- stub_request(:get, "https://forgeapi.puppet.com/v3/modules?query=puppetlabs-apache").to_return(status: 200, body: [answers: [], result: :success])
225
-
226
- Puppet[:disable_warnings] = 'deprecations'
227
- subject.search("puppetlabs-apache")
228
-
229
- expect(@logs).not_to include(an_object_having_attributes(level: :warning))
230
- end
231
- end