puppet 6.16.0-universal-darwin → 7.0.0-universal-darwin

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 (645) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -3
  3. data/Gemfile.lock +31 -33
  4. data/README.md +4 -5
  5. data/Rakefile +4 -12
  6. data/conf/fileserver.conf +5 -10
  7. data/ext/build_defaults.yaml +1 -1
  8. data/ext/osx/file_mapping.yaml +0 -5
  9. data/ext/project_data.yaml +1 -14
  10. data/ext/redhat/puppet.spec.erb +0 -1
  11. data/ext/windows/service/daemon.rb +6 -5
  12. data/install.rb +21 -17
  13. data/lib/puppet.rb +11 -20
  14. data/lib/puppet/agent.rb +2 -2
  15. data/lib/puppet/agent/locker.rb +0 -7
  16. data/lib/puppet/application.rb +172 -98
  17. data/lib/puppet/application/agent.rb +22 -6
  18. data/lib/puppet/application/apply.rb +18 -20
  19. data/lib/puppet/application/device.rb +100 -104
  20. data/lib/puppet/application/doc.rb +1 -1
  21. data/lib/puppet/application/filebucket.rb +15 -11
  22. data/lib/puppet/application/lookup.rb +16 -4
  23. data/lib/puppet/application/ssl.rb +1 -1
  24. data/lib/puppet/configurer.rb +66 -31
  25. data/lib/puppet/configurer/downloader.rb +31 -10
  26. data/lib/puppet/configurer/plugin_handler.rb +21 -19
  27. data/lib/puppet/confine.rb +2 -2
  28. data/lib/puppet/confine/any.rb +1 -1
  29. data/lib/puppet/defaults.rb +166 -169
  30. data/lib/puppet/environments.rb +41 -15
  31. data/lib/puppet/face/catalog.rb +1 -1
  32. data/lib/puppet/face/config.rb +56 -16
  33. data/lib/puppet/face/epp.rb +12 -2
  34. data/lib/puppet/face/facts.rb +66 -6
  35. data/lib/puppet/face/help.rb +1 -1
  36. data/lib/puppet/face/node.rb +3 -3
  37. data/lib/puppet/face/node/clean.rb +2 -2
  38. data/lib/puppet/face/plugin.rb +5 -8
  39. data/lib/puppet/feature/base.rb +1 -1
  40. data/lib/puppet/ffi/windows.rb +12 -0
  41. data/lib/puppet/ffi/windows/api_types.rb +311 -0
  42. data/lib/puppet/ffi/windows/constants.rb +404 -0
  43. data/lib/puppet/ffi/windows/functions.rb +628 -0
  44. data/lib/puppet/ffi/windows/structs.rb +338 -0
  45. data/lib/puppet/file_bucket/dipper.rb +1 -1
  46. data/lib/puppet/file_serving/configuration.rb +0 -5
  47. data/lib/puppet/file_serving/configuration/parser.rb +3 -32
  48. data/lib/puppet/file_serving/http_metadata.rb +13 -1
  49. data/lib/puppet/file_serving/metadata.rb +4 -1
  50. data/lib/puppet/file_serving/mount.rb +1 -2
  51. data/lib/puppet/file_serving/mount/locales.rb +1 -2
  52. data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
  53. data/lib/puppet/file_serving/mount/plugins.rb +1 -2
  54. data/lib/puppet/file_serving/terminus_selector.rb +7 -8
  55. data/lib/puppet/file_system/file_impl.rb +4 -4
  56. data/lib/puppet/file_system/uniquefile.rb +8 -16
  57. data/lib/puppet/forge.rb +1 -1
  58. data/lib/puppet/forge/cache.rb +1 -1
  59. data/lib/puppet/forge/repository.rb +3 -8
  60. data/lib/puppet/functions/epp.rb +1 -0
  61. data/lib/puppet/functions/inline_epp.rb +1 -0
  62. data/lib/puppet/functions/lstrip.rb +4 -4
  63. data/lib/puppet/functions/new.rb +8 -3
  64. data/lib/puppet/functions/reverse_each.rb +1 -1
  65. data/lib/puppet/functions/rstrip.rb +4 -4
  66. data/lib/puppet/functions/step.rb +1 -1
  67. data/lib/puppet/functions/strip.rb +4 -4
  68. data/lib/puppet/generate/models/type/type.rb +4 -1
  69. data/lib/puppet/gettext/config.rb +5 -5
  70. data/lib/puppet/gettext/module_translations.rb +4 -4
  71. data/lib/puppet/http.rb +23 -13
  72. data/lib/puppet/http/client.rb +170 -115
  73. data/lib/puppet/{network/resolver.rb → http/dns.rb} +2 -2
  74. data/lib/puppet/http/errors.rb +16 -0
  75. data/lib/puppet/http/external_client.rb +5 -7
  76. data/lib/puppet/{network/http → http}/factory.rb +8 -11
  77. data/lib/puppet/{network/http → http}/pool.rb +61 -26
  78. data/lib/puppet/{network/http/session.rb → http/pool_entry.rb} +2 -3
  79. data/lib/puppet/http/proxy.rb +137 -0
  80. data/lib/puppet/http/redirector.rb +13 -19
  81. data/lib/puppet/http/resolver.rb +10 -23
  82. data/lib/puppet/http/resolver/server_list.rb +23 -45
  83. data/lib/puppet/http/resolver/settings.rb +7 -10
  84. data/lib/puppet/http/resolver/srv.rb +11 -15
  85. data/lib/puppet/http/response.rb +49 -48
  86. data/lib/puppet/http/response_converter.rb +24 -0
  87. data/lib/puppet/http/response_net_http.rb +42 -0
  88. data/lib/puppet/http/retry_after_handler.rb +4 -13
  89. data/lib/puppet/http/service.rb +15 -27
  90. data/lib/puppet/http/service/ca.rb +11 -22
  91. data/lib/puppet/http/service/compiler.rb +23 -70
  92. data/lib/puppet/http/service/file_server.rb +19 -28
  93. data/lib/puppet/http/service/puppetserver.rb +53 -0
  94. data/lib/puppet/http/service/report.rb +8 -10
  95. data/lib/puppet/http/session.rb +16 -24
  96. data/lib/puppet/{network/http → http}/site.rb +1 -2
  97. data/lib/puppet/indirector.rb +1 -1
  98. data/lib/puppet/indirector/catalog/compiler.rb +1 -1
  99. data/lib/puppet/indirector/catalog/rest.rb +2 -4
  100. data/lib/puppet/indirector/exec.rb +1 -1
  101. data/lib/puppet/indirector/fact_search.rb +60 -0
  102. data/lib/puppet/indirector/facts/facter.rb +27 -6
  103. data/lib/puppet/indirector/facts/json.rb +27 -0
  104. data/lib/puppet/indirector/facts/rest.rb +3 -22
  105. data/lib/puppet/indirector/facts/yaml.rb +4 -59
  106. data/lib/puppet/indirector/file_bucket_file/rest.rb +3 -9
  107. data/lib/puppet/indirector/file_content/rest.rb +3 -7
  108. data/lib/puppet/indirector/file_metadata/http.rb +25 -5
  109. data/lib/puppet/indirector/file_metadata/rest.rb +5 -11
  110. data/lib/puppet/indirector/file_server.rb +1 -8
  111. data/lib/puppet/indirector/generic_http.rb +0 -11
  112. data/lib/puppet/indirector/hiera.rb +4 -0
  113. data/lib/puppet/indirector/indirection.rb +1 -1
  114. data/lib/puppet/indirector/json.rb +5 -1
  115. data/lib/puppet/indirector/msgpack.rb +1 -1
  116. data/lib/puppet/indirector/node/json.rb +8 -0
  117. data/lib/puppet/indirector/node/rest.rb +2 -4
  118. data/lib/puppet/indirector/report/json.rb +34 -0
  119. data/lib/puppet/indirector/report/processor.rb +2 -2
  120. data/lib/puppet/indirector/report/rest.rb +3 -8
  121. data/lib/puppet/indirector/request.rb +2 -103
  122. data/lib/puppet/indirector/rest.rb +12 -263
  123. data/lib/puppet/indirector/yaml.rb +1 -1
  124. data/lib/puppet/module.rb +1 -2
  125. data/lib/puppet/module_tool/applications.rb +0 -1
  126. data/lib/puppet/network/authconfig.rb +2 -96
  127. data/lib/puppet/network/authorization.rb +13 -35
  128. data/lib/puppet/network/format_support.rb +2 -2
  129. data/lib/puppet/network/formats.rb +2 -1
  130. data/lib/puppet/network/http.rb +3 -3
  131. data/lib/puppet/network/http/api/indirected_routes.rb +3 -21
  132. data/lib/puppet/network/http/api/master/v3.rb +11 -13
  133. data/lib/puppet/network/http/api/master/v3/environments.rb +0 -1
  134. data/lib/puppet/network/http/connection.rb +247 -316
  135. data/lib/puppet/network/http/handler.rb +0 -1
  136. data/lib/puppet/network/http/route.rb +2 -2
  137. data/lib/puppet/network/http_pool.rb +16 -34
  138. data/lib/puppet/node.rb +1 -30
  139. data/lib/puppet/node/environment.rb +12 -5
  140. data/lib/puppet/node/facts.rb +17 -0
  141. data/lib/puppet/pal/json_catalog_encoder.rb +4 -0
  142. data/lib/puppet/pal/pal_impl.rb +93 -14
  143. data/lib/puppet/parameter.rb +1 -1
  144. data/lib/puppet/parser/ast/leaf.rb +5 -5
  145. data/lib/puppet/parser/ast/pops_bridge.rb +0 -42
  146. data/lib/puppet/parser/compiler.rb +1 -199
  147. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +14 -39
  148. data/lib/puppet/parser/functions.rb +21 -17
  149. data/lib/puppet/parser/functions/create_resources.rb +11 -7
  150. data/lib/puppet/parser/resource.rb +3 -71
  151. data/lib/puppet/parser/resource/param.rb +6 -0
  152. data/lib/puppet/parser/type_loader.rb +2 -2
  153. data/lib/puppet/pops/adaptable.rb +7 -13
  154. data/lib/puppet/pops/adapters.rb +8 -4
  155. data/lib/puppet/pops/evaluator/collectors/abstract_collector.rb +1 -3
  156. data/lib/puppet/pops/evaluator/evaluator_impl.rb +27 -13
  157. data/lib/puppet/pops/evaluator/runtime3_converter.rb +2 -2
  158. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +3 -3
  159. data/lib/puppet/pops/evaluator/runtime3_support.rb +1 -1
  160. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +6 -8
  161. data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
  162. data/lib/puppet/pops/loaders.rb +18 -11
  163. data/lib/puppet/pops/lookup/context.rb +1 -1
  164. data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
  165. data/lib/puppet/pops/model/ast.pp +0 -42
  166. data/lib/puppet/pops/model/ast.rb +0 -290
  167. data/lib/puppet/pops/model/factory.rb +0 -45
  168. data/lib/puppet/pops/model/model_label_provider.rb +0 -5
  169. data/lib/puppet/pops/model/model_tree_dumper.rb +0 -22
  170. data/lib/puppet/pops/model/pn_transformer.rb +0 -16
  171. data/lib/puppet/pops/parser/egrammar.ra +0 -56
  172. data/lib/puppet/pops/parser/eparser.rb +1520 -1712
  173. data/lib/puppet/pops/parser/lexer2.rb +4 -4
  174. data/lib/puppet/pops/parser/parser_support.rb +0 -5
  175. data/lib/puppet/pops/resource/resource_type_impl.rb +2 -22
  176. data/lib/puppet/pops/types/iterable.rb +34 -8
  177. data/lib/puppet/pops/types/p_meta_type.rb +1 -1
  178. data/lib/puppet/pops/types/p_type_set_type.rb +4 -0
  179. data/lib/puppet/pops/types/type_calculator.rb +0 -7
  180. data/lib/puppet/pops/types/type_parser.rb +0 -4
  181. data/lib/puppet/pops/types/types.rb +0 -1
  182. data/lib/puppet/pops/validation/checker4_0.rb +28 -42
  183. data/lib/puppet/pops/validation/tasks_checker.rb +0 -12
  184. data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -1
  185. data/lib/puppet/provider.rb +0 -13
  186. data/lib/puppet/provider/file/windows.rb +1 -1
  187. data/lib/puppet/provider/nameservice.rb +0 -18
  188. data/lib/puppet/provider/package/apt.rb +34 -0
  189. data/lib/puppet/provider/package/aptitude.rb +1 -1
  190. data/lib/puppet/provider/package/dpkg.rb +1 -11
  191. data/lib/puppet/provider/package/gem.rb +27 -5
  192. data/lib/puppet/provider/package/pip.rb +0 -1
  193. data/lib/puppet/provider/package/pip2.rb +17 -0
  194. data/lib/puppet/provider/package/pkg.rb +0 -4
  195. data/lib/puppet/provider/package/portage.rb +1 -1
  196. data/lib/puppet/provider/package/puppet_gem.rb +6 -4
  197. data/lib/puppet/provider/package/puppetserver_gem.rb +180 -0
  198. data/lib/puppet/provider/package/yum.rb +2 -1
  199. data/lib/puppet/provider/package/zypper.rb +3 -0
  200. data/lib/puppet/provider/service/smf.rb +191 -73
  201. data/lib/puppet/provider/service/windows.rb +23 -7
  202. data/lib/puppet/provider/user/aix.rb +1 -1
  203. data/lib/puppet/provider/user/directoryservice.rb +0 -10
  204. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  205. data/lib/puppet/provider/user/useradd.rb +11 -4
  206. data/lib/puppet/provider/user/windows_adsi.rb +18 -1
  207. data/lib/puppet/reference/configuration.rb +2 -0
  208. data/lib/puppet/reference/indirection.rb +1 -1
  209. data/lib/puppet/reports/http.rb +2 -0
  210. data/lib/puppet/resource.rb +3 -90
  211. data/lib/puppet/resource/catalog.rb +1 -14
  212. data/lib/puppet/resource/type.rb +5 -112
  213. data/lib/puppet/resource/type_collection.rb +3 -48
  214. data/lib/puppet/runtime.rb +1 -2
  215. data/lib/puppet/settings.rb +84 -35
  216. data/lib/puppet/settings/base_setting.rb +26 -2
  217. data/lib/puppet/settings/integer_setting.rb +17 -0
  218. data/lib/puppet/settings/port_setting.rb +15 -0
  219. data/lib/puppet/settings/priority_setting.rb +5 -4
  220. data/lib/puppet/ssl.rb +10 -6
  221. data/lib/puppet/ssl/base.rb +3 -5
  222. data/lib/puppet/ssl/certificate.rb +0 -6
  223. data/lib/puppet/ssl/certificate_request.rb +1 -12
  224. data/lib/puppet/ssl/certificate_signer.rb +6 -0
  225. data/lib/puppet/ssl/oids.rb +3 -1
  226. data/lib/puppet/ssl/ssl_context.rb +2 -2
  227. data/lib/puppet/ssl/ssl_provider.rb +37 -1
  228. data/lib/puppet/ssl/state_machine.rb +3 -1
  229. data/lib/puppet/ssl/verifier.rb +2 -0
  230. data/lib/puppet/test/test_helper.rb +19 -16
  231. data/lib/puppet/transaction.rb +3 -9
  232. data/lib/puppet/transaction/persistence.rb +1 -1
  233. data/lib/puppet/transaction/report.rb +10 -8
  234. data/lib/puppet/trusted_external.rb +29 -1
  235. data/lib/puppet/type.rb +9 -77
  236. data/lib/puppet/type/file.rb +45 -22
  237. data/lib/puppet/type/file/checksum.rb +5 -5
  238. data/lib/puppet/type/file/source.rb +33 -13
  239. data/lib/puppet/type/filebucket.rb +4 -4
  240. data/lib/puppet/type/notify.rb +2 -2
  241. data/lib/puppet/type/package.rb +5 -13
  242. data/lib/puppet/type/service.rb +53 -0
  243. data/lib/puppet/type/user.rb +18 -3
  244. data/lib/puppet/util.rb +41 -3
  245. data/lib/puppet/util/autoload.rb +9 -7
  246. data/lib/puppet/util/character_encoding.rb +9 -5
  247. data/lib/puppet/util/checksums.rb +19 -4
  248. data/lib/puppet/util/execution.rb +2 -13
  249. data/lib/puppet/util/fileparsing.rb +2 -2
  250. data/lib/puppet/util/http_proxy.rb +2 -215
  251. data/lib/puppet/util/monkey_patches.rb +0 -46
  252. data/lib/puppet/util/provider_features.rb +1 -1
  253. data/lib/puppet/util/rdoc.rb +0 -7
  254. data/lib/puppet/util/reference.rb +1 -1
  255. data/lib/puppet/util/retry_action.rb +1 -1
  256. data/lib/puppet/util/rubygems.rb +5 -1
  257. data/lib/puppet/util/run_mode.rb +14 -2
  258. data/lib/puppet/util/windows.rb +3 -7
  259. data/lib/puppet/util/windows/daemon.rb +360 -0
  260. data/lib/puppet/util/windows/error.rb +1 -0
  261. data/lib/puppet/util/windows/eventlog.rb +5 -15
  262. data/lib/puppet/util/windows/file.rb +8 -242
  263. data/lib/puppet/util/windows/monkey_patches/process.rb +414 -0
  264. data/lib/puppet/util/windows/principal.rb +8 -6
  265. data/lib/puppet/util/windows/process.rb +4 -226
  266. data/lib/puppet/util/windows/registry.rb +11 -11
  267. data/lib/puppet/util/windows/security.rb +4 -4
  268. data/lib/puppet/util/windows/service.rb +52 -486
  269. data/lib/puppet/util/windows/string.rb +12 -13
  270. data/lib/puppet/util/windows/user.rb +242 -8
  271. data/lib/puppet/util/yaml.rb +0 -22
  272. data/lib/puppet/vendor/require_vendored.rb +0 -1
  273. data/lib/puppet/version.rb +1 -1
  274. data/lib/puppet/x509.rb +5 -1
  275. data/lib/puppet/x509/cert_provider.rb +29 -1
  276. data/locales/puppet.pot +713 -1380
  277. data/man/man5/puppet.conf.5 +84 -98
  278. data/man/man8/puppet-agent.8 +7 -4
  279. data/man/man8/puppet-apply.8 +1 -1
  280. data/man/man8/puppet-catalog.8 +1 -1
  281. data/man/man8/puppet-config.8 +6 -6
  282. data/man/man8/puppet-describe.8 +1 -1
  283. data/man/man8/puppet-device.8 +1 -1
  284. data/man/man8/puppet-doc.8 +1 -1
  285. data/man/man8/puppet-epp.8 +1 -1
  286. data/man/man8/puppet-facts.8 +55 -9
  287. data/man/man8/puppet-filebucket.8 +6 -6
  288. data/man/man8/puppet-generate.8 +1 -1
  289. data/man/man8/puppet-help.8 +1 -1
  290. data/man/man8/puppet-lookup.8 +2 -2
  291. data/man/man8/puppet-module.8 +1 -58
  292. data/man/man8/puppet-node.8 +7 -4
  293. data/man/man8/puppet-parser.8 +1 -1
  294. data/man/man8/puppet-plugin.8 +1 -1
  295. data/man/man8/puppet-report.8 +4 -1
  296. data/man/man8/puppet-resource.8 +1 -1
  297. data/man/man8/puppet-script.8 +1 -1
  298. data/man/man8/puppet-ssl.8 +1 -1
  299. data/man/man8/puppet.8 +2 -2
  300. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
  301. data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
  302. data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
  303. data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
  304. data/spec/fixtures/unit/provider/package/puppetserver_gem/gem-list-local-packages +30 -0
  305. data/spec/fixtures/unit/provider/service/smf/{svcs.out → svcs_instances.out} +0 -0
  306. data/spec/integration/application/agent_spec.rb +157 -59
  307. data/spec/integration/application/apply_spec.rb +150 -150
  308. data/spec/integration/application/doc_spec.rb +16 -6
  309. data/spec/integration/application/filebucket_spec.rb +78 -29
  310. data/spec/integration/application/help_spec.rb +44 -0
  311. data/spec/integration/application/lookup_spec.rb +13 -0
  312. data/spec/integration/application/module_spec.rb +68 -0
  313. data/spec/integration/application/plugin_spec.rb +76 -4
  314. data/spec/integration/configurer_spec.rb +14 -0
  315. data/spec/integration/data_binding_spec.rb +82 -0
  316. data/spec/integration/defaults_spec.rb +33 -5
  317. data/spec/integration/directory_environments_spec.rb +17 -17
  318. data/spec/integration/environments/setting_hooks_spec.rb +1 -1
  319. data/spec/integration/indirector/facts/facter_spec.rb +8 -6
  320. data/spec/integration/network/http_pool_spec.rb +29 -30
  321. data/spec/integration/node/environment_spec.rb +1 -1
  322. data/spec/integration/parser/catalog_spec.rb +0 -38
  323. data/spec/integration/parser/compiler_spec.rb +11 -0
  324. data/spec/integration/parser/node_spec.rb +0 -9
  325. data/spec/integration/parser/pcore_resource_spec.rb +0 -37
  326. data/spec/integration/type/file_spec.rb +6 -5
  327. data/spec/integration/util/execution_spec.rb +22 -0
  328. data/spec/integration/util/windows/adsi_spec.rb +2 -2
  329. data/spec/integration/util/windows/monkey_patches/process_spec.rb +231 -0
  330. data/spec/integration/util/windows/process_spec.rb +26 -32
  331. data/spec/integration/util/windows/registry_spec.rb +7 -7
  332. data/spec/integration/util/windows/security_spec.rb +1 -1
  333. data/spec/integration/util/windows/user_spec.rb +47 -5
  334. data/spec/integration/util_spec.rb +7 -33
  335. data/spec/lib/puppet_spec/matchers.rb +0 -80
  336. data/spec/lib/puppet_spec/puppetserver.rb +9 -1
  337. data/spec/lib/puppet_spec/settings.rb +7 -1
  338. data/spec/shared_contexts/types_setup.rb +2 -0
  339. data/spec/spec_helper.rb +2 -0
  340. data/spec/unit/agent_spec.rb +0 -2
  341. data/spec/unit/application/agent_spec.rb +3 -4
  342. data/spec/unit/application/config_spec.rb +224 -4
  343. data/spec/unit/application/doc_spec.rb +2 -2
  344. data/spec/unit/application/face_base_spec.rb +6 -4
  345. data/spec/unit/application/facts_spec.rb +74 -8
  346. data/spec/unit/application/filebucket_spec.rb +41 -39
  347. data/spec/unit/application/resource_spec.rb +3 -1
  348. data/spec/unit/application/ssl_spec.rb +17 -4
  349. data/spec/unit/application_spec.rb +9 -4
  350. data/spec/unit/certificate_factory_spec.rb +1 -1
  351. data/spec/unit/configurer/downloader_spec.rb +14 -0
  352. data/spec/unit/configurer/fact_handler_spec.rb +4 -4
  353. data/spec/unit/configurer/plugin_handler_spec.rb +56 -18
  354. data/spec/unit/configurer_spec.rb +96 -44
  355. data/spec/unit/confine_spec.rb +2 -1
  356. data/spec/unit/context/trusted_information_spec.rb +12 -10
  357. data/spec/unit/defaults_spec.rb +77 -28
  358. data/spec/unit/environments_spec.rb +96 -32
  359. data/spec/unit/face/config_spec.rb +65 -12
  360. data/spec/unit/face/facts_spec.rb +4 -0
  361. data/spec/unit/face/node_spec.rb +2 -2
  362. data/spec/unit/face/plugin_spec.rb +73 -33
  363. data/spec/unit/file_bucket/file_spec.rb +1 -1
  364. data/spec/unit/file_serving/configuration/parser_spec.rb +14 -18
  365. data/spec/unit/file_serving/configuration_spec.rb +6 -12
  366. data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
  367. data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
  368. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
  369. data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
  370. data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
  371. data/spec/unit/file_system/uniquefile_spec.rb +18 -0
  372. data/spec/unit/file_system_spec.rb +1 -2
  373. data/spec/unit/functions/camelcase_spec.rb +1 -1
  374. data/spec/unit/functions/capitalize_spec.rb +1 -1
  375. data/spec/unit/functions/downcase_spec.rb +1 -1
  376. data/spec/unit/functions/inline_epp_spec.rb +26 -1
  377. data/spec/unit/functions/upcase_spec.rb +1 -1
  378. data/spec/unit/http/client_spec.rb +71 -17
  379. data/spec/unit/{network/resolver_spec.rb → http/dns_spec.rb} +3 -3
  380. data/spec/unit/http/external_client_spec.rb +4 -4
  381. data/spec/unit/{network/http → http}/factory_spec.rb +5 -11
  382. data/spec/unit/{network/http/session_spec.rb → http/pool_entry_spec.rb} +3 -3
  383. data/spec/unit/{network/http → http}/pool_spec.rb +12 -17
  384. data/spec/unit/{util/http_proxy_spec.rb → http/proxy_spec.rb} +2 -69
  385. data/spec/unit/http/resolver_spec.rb +34 -15
  386. data/spec/unit/http/response_spec.rb +6 -0
  387. data/spec/unit/http/service/ca_spec.rb +2 -3
  388. data/spec/unit/http/service/compiler_spec.rb +51 -65
  389. data/spec/unit/http/service/file_server_spec.rb +5 -6
  390. data/spec/unit/http/service/puppetserver_spec.rb +112 -0
  391. data/spec/unit/http/service/report_spec.rb +2 -3
  392. data/spec/unit/http/service_spec.rb +1 -3
  393. data/spec/unit/http/session_spec.rb +24 -35
  394. data/spec/unit/{network/http → http}/site_spec.rb +3 -3
  395. data/spec/unit/indirector/catalog/json_spec.rb +1 -1
  396. data/spec/unit/indirector/catalog/rest_spec.rb +1 -1
  397. data/spec/unit/indirector/facts/facter_spec.rb +97 -0
  398. data/spec/unit/indirector/facts/json_spec.rb +255 -0
  399. data/spec/unit/indirector/facts/rest_spec.rb +1 -1
  400. data/spec/unit/indirector/file_bucket_file/file_spec.rb +5 -3
  401. data/spec/unit/indirector/file_content/rest_spec.rb +0 -4
  402. data/spec/unit/indirector/file_metadata/http_spec.rb +27 -0
  403. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -4
  404. data/spec/unit/indirector/file_server_spec.rb +1 -15
  405. data/spec/unit/indirector/json_spec.rb +8 -8
  406. data/spec/unit/indirector/msgpack_spec.rb +8 -8
  407. data/spec/unit/indirector/node/json_spec.rb +33 -0
  408. data/spec/unit/indirector/node/rest_spec.rb +1 -1
  409. data/spec/{integration/indirector/report/yaml.rb → unit/indirector/report/json_spec.rb} +13 -24
  410. data/spec/unit/indirector/report/rest_spec.rb +2 -17
  411. data/spec/unit/indirector/report/yaml_spec.rb +72 -8
  412. data/spec/unit/indirector/request_spec.rb +3 -267
  413. data/spec/unit/indirector/rest_spec.rb +98 -752
  414. data/spec/unit/indirector/yaml_spec.rb +7 -7
  415. data/spec/unit/interface_spec.rb +3 -3
  416. data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
  417. data/spec/unit/network/authconfig_spec.rb +2 -132
  418. data/spec/unit/network/authorization_spec.rb +2 -55
  419. data/spec/unit/network/format_support_spec.rb +3 -2
  420. data/spec/unit/network/formats_spec.rb +4 -4
  421. data/spec/unit/network/http/api/indirected_routes_spec.rb +3 -98
  422. data/spec/unit/network/http/api/master/v3/environments_spec.rb +12 -23
  423. data/spec/unit/network/http/api/master/v3_spec.rb +28 -7
  424. data/spec/unit/network/http/api_spec.rb +10 -0
  425. data/spec/unit/network/http/connection_spec.rb +61 -73
  426. data/spec/unit/network/http/handler_spec.rb +0 -6
  427. data/spec/unit/network/http_pool_spec.rb +0 -4
  428. data/spec/unit/node/environment_spec.rb +51 -22
  429. data/spec/unit/node_spec.rb +2 -54
  430. data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
  431. data/spec/unit/parser/functions/create_resources_spec.rb +2 -20
  432. data/spec/unit/parser/scope_spec.rb +1 -1
  433. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +19 -8
  434. data/spec/unit/pops/loaders/loaders_spec.rb +77 -22
  435. data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
  436. data/spec/unit/pops/parser/parse_application_spec.rb +4 -22
  437. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  438. data/spec/unit/pops/parser/parse_capabilities_spec.rb +8 -21
  439. data/spec/unit/pops/parser/parse_site_spec.rb +20 -24
  440. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -71
  441. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  442. data/spec/unit/pops/types/type_calculator_spec.rb +7 -17
  443. data/spec/unit/pops/types/type_factory_spec.rb +1 -1
  444. data/spec/unit/pops/validator/validator_spec.rb +61 -46
  445. data/spec/unit/pops/visitor_spec.rb +1 -1
  446. data/spec/unit/provider/exec_spec.rb +4 -3
  447. data/spec/unit/provider/nameservice_spec.rb +0 -57
  448. data/spec/unit/provider/package/apt_spec.rb +77 -0
  449. data/spec/unit/provider/package/aptitude_spec.rb +1 -0
  450. data/spec/unit/provider/package/dpkg_spec.rb +22 -55
  451. data/spec/unit/provider/package/gem_spec.rb +32 -0
  452. data/spec/unit/provider/package/openbsd_spec.rb +2 -0
  453. data/spec/unit/provider/package/pip2_spec.rb +36 -0
  454. data/spec/unit/provider/package/puppet_gem_spec.rb +6 -2
  455. data/spec/unit/provider/package/puppetserver_gem_spec.rb +137 -0
  456. data/spec/unit/provider/package/yum_spec.rb +31 -0
  457. data/spec/unit/provider/package/zypper_spec.rb +14 -0
  458. data/spec/unit/provider/service/base_spec.rb +2 -4
  459. data/spec/unit/provider/service/bsd_spec.rb +5 -1
  460. data/spec/unit/provider/service/daemontools_spec.rb +1 -1
  461. data/spec/unit/provider/service/debian_spec.rb +3 -5
  462. data/spec/unit/provider/service/freebsd_spec.rb +1 -1
  463. data/spec/unit/provider/service/gentoo_spec.rb +4 -5
  464. data/spec/unit/provider/service/init_spec.rb +45 -5
  465. data/spec/unit/provider/service/launchd_spec.rb +5 -6
  466. data/spec/unit/provider/service/openrc_spec.rb +4 -5
  467. data/spec/unit/provider/service/openwrt_spec.rb +1 -1
  468. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  469. data/spec/unit/provider/service/runit_spec.rb +2 -1
  470. data/spec/unit/provider/service/smf_spec.rb +402 -166
  471. data/spec/unit/provider/service/src_spec.rb +3 -5
  472. data/spec/unit/provider/service/systemd_spec.rb +3 -6
  473. data/spec/unit/provider/service/upstart_spec.rb +4 -5
  474. data/spec/unit/provider/service/windows_spec.rb +50 -15
  475. data/spec/unit/provider/user/openbsd_spec.rb +1 -0
  476. data/spec/unit/provider/user/useradd_spec.rb +22 -16
  477. data/spec/unit/provider/user/windows_adsi_spec.rb +82 -0
  478. data/spec/unit/provider_spec.rb +0 -12
  479. data/spec/unit/puppet_pal_2pec.rb +40 -0
  480. data/spec/unit/puppet_pal_catalog_spec.rb +45 -0
  481. data/spec/unit/reports/store_spec.rb +17 -13
  482. data/spec/unit/resource/type_collection_spec.rb +2 -22
  483. data/spec/unit/resource_spec.rb +3 -59
  484. data/spec/unit/settings/http_extra_headers_spec.rb +2 -4
  485. data/spec/unit/settings/integer_setting_spec.rb +42 -0
  486. data/spec/unit/settings/port_setting_spec.rb +31 -0
  487. data/spec/unit/settings/priority_setting_spec.rb +4 -4
  488. data/spec/unit/settings_spec.rb +586 -239
  489. data/spec/unit/ssl/base_spec.rb +36 -3
  490. data/spec/unit/ssl/certificate_request_spec.rb +15 -45
  491. data/spec/unit/ssl/certificate_spec.rb +2 -11
  492. data/spec/unit/ssl/ssl_provider_spec.rb +78 -49
  493. data/spec/unit/ssl/state_machine_spec.rb +0 -1
  494. data/spec/unit/ssl/verifier_spec.rb +0 -21
  495. data/spec/unit/test/test_helper_spec.rb +17 -0
  496. data/spec/unit/transaction/persistence_spec.rb +15 -0
  497. data/spec/unit/transaction/report_spec.rb +3 -3
  498. data/spec/unit/transaction/resource_harness_spec.rb +2 -2
  499. data/spec/unit/transaction_spec.rb +45 -79
  500. data/spec/unit/type/file/checksum_spec.rb +6 -6
  501. data/spec/unit/type/file/content_spec.rb +1 -1
  502. data/spec/unit/type/file/ensure_spec.rb +1 -1
  503. data/spec/unit/type/file/mode_spec.rb +1 -1
  504. data/spec/unit/type/file/source_spec.rb +4 -5
  505. data/spec/unit/type/file_spec.rb +134 -102
  506. data/spec/unit/type/filebucket_spec.rb +1 -1
  507. data/spec/unit/type/package_spec.rb +1 -1
  508. data/spec/unit/type/service_spec.rb +209 -0
  509. data/spec/unit/type/user_spec.rb +31 -2
  510. data/spec/unit/type_spec.rb +70 -0
  511. data/spec/unit/util/backups_spec.rb +0 -2
  512. data/spec/unit/util/character_encoding_spec.rb +4 -4
  513. data/spec/unit/util/checksums_spec.rb +16 -0
  514. data/spec/unit/util/command_line_spec.rb +11 -6
  515. data/spec/unit/util/execution_spec.rb +0 -29
  516. data/spec/unit/util/monkey_patches_spec.rb +0 -6
  517. data/spec/unit/util/rubygems_spec.rb +2 -2
  518. data/spec/unit/util/run_mode_spec.rb +27 -127
  519. data/spec/unit/util/windows/api_types_spec.rb +104 -40
  520. data/spec/unit/util/windows/service_spec.rb +4 -4
  521. data/spec/unit/util/windows/string_spec.rb +1 -3
  522. data/spec/unit/util/yaml_spec.rb +0 -54
  523. data/spec/unit/util_spec.rb +3 -21
  524. data/spec/unit/x509/cert_provider_spec.rb +1 -1
  525. metadata +76 -214
  526. data/conf/auth.conf +0 -150
  527. data/lib/puppet/application/cert.rb +0 -76
  528. data/lib/puppet/application/key.rb +0 -4
  529. data/lib/puppet/application/man.rb +0 -4
  530. data/lib/puppet/application/status.rb +0 -4
  531. data/lib/puppet/face/key.rb +0 -16
  532. data/lib/puppet/face/man.rb +0 -145
  533. data/lib/puppet/face/module/build.rb +0 -14
  534. data/lib/puppet/face/module/generate.rb +0 -14
  535. data/lib/puppet/face/module/search.rb +0 -103
  536. data/lib/puppet/face/status.rb +0 -51
  537. data/lib/puppet/indirector/certificate/file.rb +0 -9
  538. data/lib/puppet/indirector/certificate/rest.rb +0 -18
  539. data/lib/puppet/indirector/certificate_request/file.rb +0 -9
  540. data/lib/puppet/indirector/certificate_request/memory.rb +0 -7
  541. data/lib/puppet/indirector/certificate_request/rest.rb +0 -11
  542. data/lib/puppet/indirector/file_content/http.rb +0 -22
  543. data/lib/puppet/indirector/key/file.rb +0 -46
  544. data/lib/puppet/indirector/key/memory.rb +0 -7
  545. data/lib/puppet/indirector/ssl_file.rb +0 -162
  546. data/lib/puppet/indirector/status.rb +0 -3
  547. data/lib/puppet/indirector/status/local.rb +0 -12
  548. data/lib/puppet/indirector/status/rest.rb +0 -27
  549. data/lib/puppet/module_tool/applications/searcher.rb +0 -29
  550. data/lib/puppet/network/auth_config_parser.rb +0 -90
  551. data/lib/puppet/network/authstore.rb +0 -283
  552. data/lib/puppet/network/http/api/master/v3/authorization.rb +0 -18
  553. data/lib/puppet/network/http/api/master/v3/environment.rb +0 -85
  554. data/lib/puppet/network/http/base_pool.rb +0 -36
  555. data/lib/puppet/network/http/compression.rb +0 -127
  556. data/lib/puppet/network/http/connection_adapter.rb +0 -182
  557. data/lib/puppet/network/http/nocache_pool.rb +0 -28
  558. data/lib/puppet/network/rest_controller.rb +0 -2
  559. data/lib/puppet/network/rights.rb +0 -210
  560. data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +0 -64
  561. data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +0 -20
  562. data/lib/puppet/parser/environment_compiler.rb +0 -199
  563. data/lib/puppet/pops/types/enumeration.rb +0 -16
  564. data/lib/puppet/resource/capability_finder.rb +0 -154
  565. data/lib/puppet/rest/errors.rb +0 -15
  566. data/lib/puppet/rest/response.rb +0 -35
  567. data/lib/puppet/rest/route.rb +0 -85
  568. data/lib/puppet/rest/routes.rb +0 -135
  569. data/lib/puppet/ssl/host.rb +0 -505
  570. data/lib/puppet/ssl/key.rb +0 -61
  571. data/lib/puppet/ssl/validator.rb +0 -61
  572. data/lib/puppet/ssl/validator/default_validator.rb +0 -209
  573. data/lib/puppet/ssl/validator/no_validator.rb +0 -22
  574. data/lib/puppet/ssl/verifier_adapter.rb +0 -58
  575. data/lib/puppet/status.rb +0 -40
  576. data/lib/puppet/util/connection.rb +0 -88
  577. data/lib/puppet/util/ssl.rb +0 -83
  578. data/lib/puppet/util/windows/api_types.rb +0 -282
  579. data/lib/puppet/vendor/load_pathspec.rb +0 -1
  580. data/lib/puppet/vendor/pathspec/CHANGELOG.md +0 -2
  581. data/lib/puppet/vendor/pathspec/LICENSE +0 -201
  582. data/lib/puppet/vendor/pathspec/PUPPET_README.md +0 -6
  583. data/lib/puppet/vendor/pathspec/README.md +0 -53
  584. data/lib/puppet/vendor/pathspec/lib/pathspec.rb +0 -122
  585. data/lib/puppet/vendor/pathspec/lib/pathspec/gitignorespec.rb +0 -275
  586. data/lib/puppet/vendor/pathspec/lib/pathspec/regexspec.rb +0 -17
  587. data/lib/puppet/vendor/pathspec/lib/pathspec/spec.rb +0 -14
  588. data/man/man8/puppet-key.8 +0 -126
  589. data/man/man8/puppet-man.8 +0 -76
  590. data/man/man8/puppet-status.8 +0 -108
  591. data/spec/integration/faces/config_spec.rb +0 -91
  592. data/spec/integration/faces/documentation_spec.rb +0 -57
  593. data/spec/integration/file_bucket/file_spec.rb +0 -50
  594. data/spec/integration/file_serving/content_spec.rb +0 -7
  595. data/spec/integration/file_serving/fileset_spec.rb +0 -12
  596. data/spec/integration/file_serving/metadata_spec.rb +0 -8
  597. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
  598. data/spec/integration/file_system/uniquefile_spec.rb +0 -26
  599. data/spec/integration/module_tool/forge_spec.rb +0 -51
  600. data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
  601. data/spec/integration/network/authconfig_spec.rb +0 -256
  602. data/spec/integration/provider/service/init_spec.rb +0 -48
  603. data/spec/integration/provider/service/systemd_spec.rb +0 -25
  604. data/spec/integration/provider/service/windows_spec.rb +0 -50
  605. data/spec/integration/reference/providers_spec.rb +0 -21
  606. data/spec/integration/reports_spec.rb +0 -13
  607. data/spec/integration/ssl/certificate_request_spec.rb +0 -44
  608. data/spec/integration/ssl/host_spec.rb +0 -72
  609. data/spec/integration/ssl/key_spec.rb +0 -99
  610. data/spec/integration/test/test_helper_spec.rb +0 -31
  611. data/spec/shared_behaviours/file_serving_model.rb +0 -51
  612. data/spec/unit/capability_spec.rb +0 -414
  613. data/spec/unit/face/catalog_spec.rb +0 -6
  614. data/spec/unit/face/key_spec.rb +0 -9
  615. data/spec/unit/face/man_spec.rb +0 -25
  616. data/spec/unit/face/module/search_spec.rb +0 -231
  617. data/spec/unit/face/module_spec.rb +0 -3
  618. data/spec/unit/face/status_spec.rb +0 -9
  619. data/spec/unit/indirector/certificate/file_spec.rb +0 -14
  620. data/spec/unit/indirector/certificate/rest_spec.rb +0 -61
  621. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -14
  622. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -25
  623. data/spec/unit/indirector/key/file_spec.rb +0 -79
  624. data/spec/unit/indirector/ssl_file_spec.rb +0 -305
  625. data/spec/unit/indirector/status/local_spec.rb +0 -10
  626. data/spec/unit/indirector/status/rest_spec.rb +0 -50
  627. data/spec/unit/man_spec.rb +0 -31
  628. data/spec/unit/module_tool/applications/searcher_spec.rb +0 -38
  629. data/spec/unit/network/auth_config_parser_spec.rb +0 -115
  630. data/spec/unit/network/authstore_spec.rb +0 -422
  631. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +0 -57
  632. data/spec/unit/network/http/api/master/v3/environment_spec.rb +0 -185
  633. data/spec/unit/network/http/compression_spec.rb +0 -240
  634. data/spec/unit/network/http/nocache_pool_spec.rb +0 -64
  635. data/spec/unit/network/http_spec.rb +0 -9
  636. data/spec/unit/network/rights_spec.rb +0 -439
  637. data/spec/unit/parser/environment_compiler_spec.rb +0 -723
  638. data/spec/unit/pops/types/enumeration_spec.rb +0 -51
  639. data/spec/unit/resource/capability_finder_spec.rb +0 -143
  640. data/spec/unit/rest/route_spec.rb +0 -132
  641. data/spec/unit/ssl/host_spec.rb +0 -650
  642. data/spec/unit/ssl/key_spec.rb +0 -173
  643. data/spec/unit/ssl/validator_spec.rb +0 -278
  644. data/spec/unit/status_spec.rb +0 -45
  645. data/spec/unit/util/ssl_spec.rb +0 -91
@@ -1,10 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/indirector/status/local'
4
-
5
- describe Puppet::Indirector::Status::Local do
6
- it "should set the puppet version" do
7
- Puppet::Status.indirection.terminus_class = :local
8
- expect(Puppet::Status.indirection.find('*').version).to eq(Puppet.version)
9
- end
10
- end
@@ -1,50 +0,0 @@
1
- require 'spec_helper'
2
-
3
- require 'puppet/indirector/status/rest'
4
-
5
- describe Puppet::Indirector::Status::Rest do
6
- let(:certname) { 'ziggy' }
7
- let(:uri) { %r{/puppet/v3/status/ziggy} }
8
- let(:formatter) { Puppet::Network::FormatHandler.format(:json) }
9
-
10
- before :each do
11
- Puppet[:server] = 'compiler.example.com'
12
- Puppet[:masterport] = 8140
13
-
14
- described_class.indirection.terminus_class = :rest
15
- end
16
-
17
- def status_response(node)
18
- { body: formatter.render(node), headers: {'Content-Type' => formatter.mime } }
19
- end
20
-
21
- it 'finds server status' do
22
- node = Puppet::Status.new(certname)
23
-
24
- stub_request(:get, uri).to_return(**status_response(node))
25
-
26
- expect(described_class.indirection.find(certname)).to be_a(Puppet::Status)
27
- end
28
-
29
- it 'returns nil if the node does not exist' do
30
- stub_request(:get, uri).to_return(status: 404, headers: { 'Content-Type' => 'application/json' }, body: "{}")
31
-
32
- expect(described_class.indirection.find(certname)).to be_nil
33
- end
34
-
35
- it 'raises if fail_on_404 is specified' do
36
- stub_request(:get, uri).to_return(status: 404, headers: { 'Content-Type' => 'application/json' }, body: "{}")
37
-
38
- expect{
39
- described_class.indirection.find(certname, fail_on_404: true)
40
- }.to raise_error(Puppet::Error, %r{Find /puppet/v3/status/ziggy resulted in 404 with the message: {}})
41
- end
42
-
43
- it 'raises Net::HTTPError on 500' do
44
- stub_request(:get, uri).to_return(status: 500)
45
-
46
- expect{
47
- described_class.indirection.find(certname)
48
- }.to raise_error(Net::HTTPError, %r{Error 500 on SERVER: })
49
- end
50
- end
@@ -1,31 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/face'
3
-
4
- describe Puppet::Face[:man, :current] do
5
- let(:pager) { '/path/to/our/pager' }
6
-
7
- around do |example|
8
- oldpager = ENV['MANPAGER']
9
- ENV['MANPAGER'] = pager
10
- example.run
11
- ENV['MANPAGER'] = oldpager
12
- end
13
-
14
- it "exits with 0 when generating man documentation for each available application" do
15
- allow(Puppet::Util).to receive(:which).with('ronn').and_return(nil)
16
- allow(Puppet::Util).to receive(:which).with(pager).and_return(pager)
17
-
18
- Puppet::Application.available_application_names.each do |name|
19
- next if %w{man face_base indirection_base}.include? name
20
-
21
- klass = Puppet::Application.find('man')
22
- app = klass.new(Puppet::Util::CommandLine.new('puppet', ['man', name]))
23
-
24
- expect do
25
- allow(IO).to receive(:popen).with(pager, 'w:UTF-8').and_yield($stdout)
26
-
27
- expect { app.run }.to exit_with(0)
28
- end.to_not have_printed(/undefined method `gsub'/)
29
- end
30
- end
31
- end
@@ -1,38 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/module_tool/applications'
3
- require 'puppet_spec/modules'
4
-
5
- describe Puppet::ModuleTool::Applications::Searcher do
6
- include PuppetSpec::Files
7
-
8
- describe "when searching" do
9
- let(:forge) { double('forge', :host => 'http://nowhe.re') }
10
- let(:searcher) do
11
- described_class.new('search_term', forge)
12
- end
13
-
14
- it "should return results from a forge query when successful" do
15
- results = 'mock results'
16
- expect(forge).to receive(:search).with('search_term').and_return(results)
17
-
18
- search_result = searcher.run
19
- expect(search_result).to eq({
20
- :result => :success,
21
- :answers => results,
22
- })
23
- end
24
-
25
- it "should return an error when the forge query throws an exception" do
26
- expect(forge).to receive(:search).with('search_term').and_raise(Puppet::Forge::Errors::ForgeError.new("something went wrong"))
27
-
28
- search_result = searcher.run
29
- expect(search_result).to eq({
30
- :result => :failure,
31
- :error => {
32
- :oneline => 'something went wrong',
33
- :multiline => 'something went wrong',
34
- },
35
- })
36
- end
37
- end
38
- end
@@ -1,115 +0,0 @@
1
- require 'spec_helper'
2
- require 'puppet/network/auth_config_parser'
3
- require 'puppet/network/authconfig'
4
-
5
- describe Puppet::Network::AuthConfigParser do
6
- include PuppetSpec::Files
7
-
8
- let(:fake_authconfig) do
9
- "path ~ ^/catalog/([^/])\nmethod find\nallow *\n"
10
- end
11
-
12
- describe "Basic Parser" do
13
- it "should accept a string by default" do
14
- expect(described_class.new(fake_authconfig).parse).to be_a_kind_of Puppet::Network::AuthConfig
15
- end
16
- end
17
-
18
- describe "when parsing rights" do
19
- it "skips comments" do
20
- expect(described_class.new(' # comment\n').parse_rights).to be_empty
21
- end
22
-
23
- it "increments line number even on commented lines" do
24
- expect(described_class.new(" # comment\npath /").parse_rights['/'].line).to eq(2)
25
- end
26
-
27
- it "skips blank lines" do
28
- expect(described_class.new(' ').parse_rights).to be_empty
29
- end
30
-
31
- it "increments line number even on blank lines" do
32
- expect(described_class.new(" \npath /").parse_rights['/'].line).to eq(2)
33
- end
34
-
35
- it "does not throw an error if the same path appears twice" do
36
- expect {
37
- described_class.new("path /hello\npath /hello").parse_rights
38
- }.to_not raise_error
39
- end
40
-
41
- it "should create a new right for each found path line" do
42
- expect(described_class.new('path /certificates').parse_rights['/certificates']).to be
43
- end
44
-
45
- it "should create a new right for each found regex line" do
46
- expect(described_class.new('path ~ .rb$').parse_rights['.rb$']).to be
47
- end
48
-
49
- it "should strip whitespace around ACE" do
50
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('127.0.0.1')
51
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('172.16.10.0')
52
-
53
- described_class.new("path /\n allow 127.0.0.1 , 172.16.10.0 ").parse_rights
54
- end
55
-
56
- it "should allow ACE inline comments" do
57
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('127.0.0.1')
58
-
59
- described_class.new("path /\n allow 127.0.0.1 # will it work?").parse_rights
60
- end
61
-
62
- it "should create an allow ACE on each subsequent allow" do
63
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:allow).with('127.0.0.1')
64
-
65
- described_class.new("path /\nallow 127.0.0.1").parse_rights
66
- end
67
-
68
- it "should create a deny ACE on each subsequent deny" do
69
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:deny).with('127.0.0.1')
70
-
71
- described_class.new("path /\ndeny 127.0.0.1").parse_rights
72
- end
73
-
74
- it "should inform the current ACL if we get the 'method' directive" do
75
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_method).with('search')
76
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_method).with('find')
77
-
78
- described_class.new("path /certificates\nmethod search,find").parse_rights
79
- end
80
-
81
- it "should inform the current ACL if we get the 'environment' directive" do
82
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_environment).with('production')
83
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_environment).with('development')
84
-
85
- described_class.new("path /certificates\nenvironment production,development").parse_rights
86
- end
87
-
88
- it "should inform the current ACL if we get the 'auth' directive" do
89
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_authenticated).with('yes')
90
-
91
- described_class.new("path /certificates\nauth yes").parse_rights
92
- end
93
-
94
- it "should also allow the long form 'authenticated' directive" do
95
- expect_any_instance_of(Puppet::Network::Rights::Right).to receive(:restrict_authenticated).with('yes')
96
-
97
- described_class.new("path /certificates\nauthenticated yes").parse_rights
98
- end
99
- end
100
-
101
- describe "when parsing rights from files" do
102
- it "can read UTF-8" do
103
- rune_path = "/\u16A0\u16C7\u16BB" # ᚠᛇᚻ
104
- config = tmpfile('config')
105
-
106
- File.open(config, 'w', :encoding => 'utf-8') do |file|
107
- file.puts <<-EOF
108
- path #{rune_path}
109
- EOF
110
- end
111
-
112
- expect(described_class.new_from_file(config).parse_rights[rune_path]).to be
113
- end
114
- end
115
- end
@@ -1,422 +0,0 @@
1
- require 'spec_helper'
2
- require 'rbconfig'
3
-
4
- require 'puppet/network/authconfig'
5
-
6
- describe Puppet::Network::AuthStore do
7
- before :each do
8
- @authstore = Puppet::Network::AuthStore.new
9
- @authstore.reset_interpolation
10
- end
11
-
12
- describe "when checking if the acl has some entries" do
13
- it "should be empty if no ACE have been entered" do
14
- expect(@authstore).to be_empty
15
- end
16
-
17
- it "should not be empty if it is a global allow" do
18
- @authstore.allow('*')
19
-
20
- expect(@authstore).not_to be_empty
21
- end
22
-
23
- it "should not be empty if at least one allow has been entered" do
24
- @authstore.allow_ip('1.1.1.*')
25
-
26
- expect(@authstore).not_to be_empty
27
- end
28
-
29
- it "should not be empty if at least one deny has been entered" do
30
- @authstore.deny_ip('1.1.1.*')
31
-
32
- expect(@authstore).not_to be_empty
33
- end
34
- end
35
-
36
- describe "when checking global allow" do
37
- it "should not be enabled by default" do
38
- expect(@authstore).not_to be_globalallow
39
- expect(@authstore).not_to be_allowed('foo.bar.com', '192.168.1.1')
40
- end
41
-
42
- it "should always allow when enabled" do
43
- @authstore.allow('*')
44
-
45
- expect(@authstore).to be_globalallow
46
- expect(@authstore).to be_allowed('foo.bar.com', '192.168.1.1')
47
- end
48
- end
49
-
50
- describe "when checking a regex type of allow" do
51
- before :each do
52
- @authstore.allow('/^(test-)?host[0-9]+\.other-domain\.(com|org|net)$|some-domain\.com/')
53
- @ip = '192.168.1.1'
54
- end
55
- ['host5.other-domain.com', 'test-host12.other-domain.net', 'foo.some-domain.com'].each { |name|
56
- it "should allow the host #{name}" do
57
- expect(@authstore).to be_allowed(name, @ip)
58
- end
59
- }
60
- ['host0.some-other-domain.com',''].each { |name|
61
- it "should not allow the host #{name}" do
62
- expect(@authstore).not_to be_allowed(name, @ip)
63
- end
64
- }
65
- end
66
- end
67
-
68
- describe Puppet::Network::AuthStore::Declaration do
69
-
70
- ['100.101.99.98','100.100.100.100','1.2.3.4','11.22.33.44'].each { |ip|
71
- describe "when the pattern is a simple numeric IP such as #{ip}" do
72
- before :each do
73
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow_ip,ip)
74
- end
75
- it "should match the specified IP" do
76
- expect(@declaration).to be_match('www.testsite.org',ip)
77
- end
78
- it "should not match other IPs" do
79
- expect(@declaration).not_to be_match('www.testsite.org','200.101.99.98')
80
- end
81
- end
82
-
83
- (1..3).each { |n|
84
- describe "when the pattern is an IP mask with #{n} numeric segments and a *" do
85
- before :each do
86
- @ip_pattern = ip.split('.')[0,n].join('.')+'.*'
87
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow_ip,@ip_pattern)
88
- end
89
- it "should match an IP in the range" do
90
- expect(@declaration).to be_match('www.testsite.org',ip)
91
- end
92
- it "should not match other IPs" do
93
- expect(@declaration).not_to be_match('www.testsite.org','200.101.99.98')
94
- end
95
- it "should not match IPs that differ in the last non-wildcard segment" do
96
- other = ip.split('.')
97
- other[n-1].succ!
98
- expect(@declaration).not_to be_match('www.testsite.org',other.join('.'))
99
- end
100
- end
101
- }
102
- }
103
-
104
- describe "when the pattern is a numeric IP with a back reference" do
105
- pending("implementation of backreferences for IP") do
106
- before :each do
107
- @ip = '100.101.$1'
108
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow_ip,@ip).interpolate('12.34'.match(/(.*)/))
109
- end
110
- it "should match an IP with the appropriate interpolation" do
111
- @declaration.should be_match('www.testsite.org',@ip.sub(/\$1/,'12.34'))
112
- end
113
- it "should not match other IPs" do
114
- @declaration.should_not be_match('www.testsite.org',@ip.sub(/\$1/,'66.34'))
115
- end
116
- end
117
- end
118
-
119
- [
120
- "02001:0000:1234:0000:0000:C1C0:ABCD:0876",
121
- "2001:0000:1234:0000:00001:C1C0:ABCD:0876",
122
- " 2001:0000:1234:0000:0000:C1C0:ABCD:0876 0",
123
- "2001:0000:1234: 0000:0000:C1C0:ABCD:0876",
124
- "3ffe:0b00:0000:0001:0000:0000:000a",
125
- "FF02:0000:0000:0000:0000:0000:0000:0000:0001",
126
- "3ffe:b00::1::a",
127
- "1:2:3::4:5::7:8",
128
- "12345::6:7:8",
129
- "1::5:400.2.3.4",
130
- "1::5:260.2.3.4",
131
- "1::5:256.2.3.4",
132
- "1::5:1.256.3.4",
133
- "1::5:1.2.256.4",
134
- "1::5:1.2.3.256",
135
- "1::5:300.2.3.4",
136
- "1::5:1.300.3.4",
137
- "1::5:1.2.300.4",
138
- "1::5:1.2.3.300",
139
- "1::5:900.2.3.4",
140
- "1::5:1.900.3.4",
141
- "1::5:1.2.900.4",
142
- "1::5:1.2.3.900",
143
- "1::5:300.300.300.300",
144
- "1::5:3000.30.30.30",
145
- "1::400.2.3.4",
146
- "1::260.2.3.4",
147
- "1::256.2.3.4",
148
- "1::1.256.3.4",
149
- "1::1.2.256.4",
150
- "1::1.2.3.256",
151
- "1::300.2.3.4",
152
- "1::1.300.3.4",
153
- "1::1.2.300.4",
154
- "1::1.2.3.300",
155
- "1::900.2.3.4",
156
- "1::1.900.3.4",
157
- "1::1.2.900.4",
158
- "1::1.2.3.900",
159
- "1::300.300.300.300",
160
- "1::3000.30.30.30",
161
- "::400.2.3.4",
162
- "::260.2.3.4",
163
- "::256.2.3.4",
164
- "::1.256.3.4",
165
- "::1.2.256.4",
166
- "::1.2.3.256",
167
- "::300.2.3.4",
168
- "::1.300.3.4",
169
- "::1.2.300.4",
170
- "::1.2.3.300",
171
- "::900.2.3.4",
172
- "::1.900.3.4",
173
- "::1.2.900.4",
174
- "::1.2.3.900",
175
- "::300.300.300.300",
176
- "::3000.30.30.30",
177
- "2001:DB8:0:0:8:800:200C:417A:221", # unicast, full
178
- "FF01::101::2" # multicast, compressed
179
- ].each { |invalid_ip|
180
- describe "when the pattern is an invalid IPv6 address such as #{invalid_ip}" do
181
- it "should raise an exception" do
182
- expect { Puppet::Network::AuthStore::Declaration.new(:allow,invalid_ip) }.to raise_error(Puppet::AuthStoreError, /Invalid pattern/)
183
- end
184
- end
185
- }
186
-
187
- [
188
- "1.2.3.4",
189
- "2001:0000:1234:0000:0000:C1C0:ABCD:0876",
190
- "3ffe:0b00:0000:0000:0001:0000:0000:000a",
191
- "FF02:0000:0000:0000:0000:0000:0000:0001",
192
- "0000:0000:0000:0000:0000:0000:0000:0001",
193
- "0000:0000:0000:0000:0000:0000:0000:0000",
194
- "::ffff:192.168.1.26",
195
- "2::10",
196
- "ff02::1",
197
- "fe80::",
198
- "2002::",
199
- "2001:db8::",
200
- "2001:0db8:1234::",
201
- "::ffff:0:0",
202
- "::1",
203
- "::ffff:192.168.1.1",
204
- "1:2:3:4:5:6:7:8",
205
- "1:2:3:4:5:6::8",
206
- "1:2:3:4:5::8",
207
- "1:2:3:4::8",
208
- "1:2:3::8",
209
- "1:2::8",
210
- "1::8",
211
- "1::2:3:4:5:6:7",
212
- "1::2:3:4:5:6",
213
- "1::2:3:4:5",
214
- "1::2:3:4",
215
- "1::2:3",
216
- "1::8",
217
- "::2:3:4:5:6:7",
218
- "::2:3:4:5:6",
219
- "::2:3:4:5",
220
- "::2:3:4",
221
- "::2:3",
222
- "::8",
223
- "1:2:3:4:5:6::",
224
- "1:2:3:4:5::",
225
- "1:2:3:4::",
226
- "1:2:3::",
227
- "1:2::",
228
- "1::",
229
- "1:2:3:4:5::7:8",
230
- "1:2:3:4::7:8",
231
- "1:2:3::7:8",
232
- "1:2::7:8",
233
- "1::7:8",
234
- "1:2:3:4:5:6:1.2.3.4",
235
- "1:2:3:4:5::1.2.3.4",
236
- "1:2:3:4::1.2.3.4",
237
- "1:2:3::1.2.3.4",
238
- "1:2::1.2.3.4",
239
- "1::1.2.3.4",
240
- "1:2:3:4::5:1.2.3.4",
241
- "1:2:3::5:1.2.3.4",
242
- "1:2::5:1.2.3.4",
243
- "1::5:1.2.3.4",
244
- "1::5:11.22.33.44",
245
- "fe80::217:f2ff:254.7.237.98",
246
- "fe80::217:f2ff:fe07:ed62",
247
- "2001:DB8:0:0:8:800:200C:417A", # unicast, full
248
- "FF01:0:0:0:0:0:0:101", # multicast, full
249
- "0:0:0:0:0:0:0:1", # loopback, full
250
- "0:0:0:0:0:0:0:0", # unspecified, full
251
- "2001:DB8::8:800:200C:417A", # unicast, compressed
252
- "FF01::101", # multicast, compressed
253
- "::1", # loopback, compressed, non-routable
254
- "::", # unspecified, compressed, non-routable
255
- "0:0:0:0:0:0:13.1.68.3", # IPv4-compatible IPv6 address, full, deprecated
256
- "0:0:0:0:0:FFFF:129.144.52.38", # IPv4-mapped IPv6 address, full
257
- "::13.1.68.3", # IPv4-compatible IPv6 address, compressed, deprecated
258
- "::FFFF:129.144.52.38", # IPv4-mapped IPv6 address, compressed
259
- "2001:0DB8:0000:CD30:0000:0000:0000:0000/60", # full, with prefix
260
- "2001:0DB8::CD30:0:0:0:0/60", # compressed, with prefix
261
- "2001:0DB8:0:CD30::/60", # compressed, with prefix #2
262
- "::/128", # compressed, unspecified address type, non-routable
263
- "::1/128", # compressed, loopback address type, non-routable
264
- "FF00::/8", # compressed, multicast address type
265
- "FE80::/10", # compressed, link-local unicast, non-routable
266
- "FEC0::/10", # compressed, site-local unicast, deprecated
267
- "127.0.0.1", # standard IPv4, loopback, non-routable
268
- "0.0.0.0", # standard IPv4, unspecified, non-routable
269
- "255.255.255.255", # standard IPv4
270
- "fe80:0000:0000:0000:0204:61ff:fe9d:f156",
271
- "fe80:0:0:0:204:61ff:fe9d:f156",
272
- "fe80::204:61ff:fe9d:f156",
273
- "fe80:0000:0000:0000:0204:61ff:254.157.241.086",
274
- "fe80:0:0:0:204:61ff:254.157.241.86",
275
- "fe80::204:61ff:254.157.241.86",
276
- "::1",
277
- "fe80::",
278
- "fe80::1"
279
- ].each { |ip|
280
- describe "when the pattern is a valid IP such as #{ip}" do
281
- before :each do
282
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow_ip,ip)
283
- end
284
- it "should match the specified IP" do
285
- expect(@declaration).to be_match('www.testsite.org',ip)
286
- end
287
- it "should not match other IPs" do
288
- expect(@declaration).not_to be_match('www.testsite.org','200.101.99.98')
289
- end
290
- end unless ip =~ /:.*\./ # Hybrid IPs aren't supported by ruby's ipaddr
291
- }
292
-
293
- [
294
- "::2:3:4:5:6:7:8",
295
- ].each { |ip|
296
- describe "when the pattern is a valid IP such as #{ip}" do
297
- let(:declaration) do
298
- Puppet::Network::AuthStore::Declaration.new(:allow_ip,ip)
299
- end
300
-
301
- issue_7477 = !(IPAddr.new(ip) rescue false)
302
-
303
- describe "on rubies with a fix for issue [7477](https://goo.gl/Bb1LU)", :if => issue_7477
304
- it "should match the specified IP" do
305
- expect(declaration).to be_match('www.testsite.org',ip)
306
- end
307
- it "should not match other IPs" do
308
- expect(declaration).not_to be_match('www.testsite.org','200.101.99.98')
309
- end
310
- end
311
- }
312
-
313
- {
314
- 'spirit.mars.nasa.gov' => 'a PQDN',
315
- 'ratchet.2ndsiteinc.com' => 'a PQDN with digits',
316
- 'a.c.ru' => 'a PQDN with short segments',
317
- }.each {|pqdn,desc|
318
- describe "when the pattern is #{desc}" do
319
- before :each do
320
- @host = pqdn
321
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@host)
322
- end
323
- it "should match the specified PQDN" do
324
- expect(@declaration).to be_match(@host,'200.101.99.98')
325
- end
326
- it "should not match a similar FQDN" do
327
- pending "FQDN consensus"
328
- expect(@declaration).not_to be_match(@host+'.','200.101.99.98')
329
- end
330
- end
331
- }
332
-
333
- ['abc.12seps.edu.phisher.biz','www.google.com','slashdot.org'].each { |host|
334
- (1...(host.split('.').length)).each { |n|
335
- describe "when the pattern is #{"*."+host.split('.')[-n,n].join('.')}" do
336
- before :each do
337
- @pattern = "*."+host.split('.')[-n,n].join('.')
338
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@pattern)
339
- end
340
- it "should match #{host}" do
341
- expect(@declaration).to be_match(host,'1.2.3.4')
342
- end
343
- it "should not match www.testsite.gov" do
344
- expect(@declaration).not_to be_match('www.testsite.gov','200.101.99.98')
345
- end
346
- it "should not match hosts that differ in the first non-wildcard segment" do
347
- other = host.split('.')
348
- other[-n].succ!
349
- expect(@declaration).not_to be_match(other.join('.'),'1.2.3.4')
350
- end
351
- end
352
- }
353
- }
354
-
355
- describe "when the pattern is a FQDN" do
356
- before :each do
357
- @host = 'spirit.mars.nasa.gov.'
358
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,@host)
359
- end
360
- it "should match the specified FQDN" do
361
- pending "FQDN consensus"
362
- expect(@declaration).to be_match(@host,'200.101.99.98')
363
- end
364
- it "should not match a similar PQDN" do
365
- expect(@declaration).not_to be_match(@host[0..-2],'200.101.99.98')
366
- end
367
- end
368
-
369
-
370
- describe "when the pattern is an opaque string with a back reference" do
371
- before :each do
372
- @host = 'c216f41a-f902-4bfb-a222-850dd957bebb'
373
- @item = "/catalog/#{@host}"
374
- @pattern = %{^/catalog/([^/]+)$}
375
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,'$1')
376
- end
377
- it "should match an IP with the appropriate interpolation" do
378
- expect(@declaration.interpolate(@item.match(@pattern))).to be_match(@host,'10.0.0.5')
379
- end
380
- end
381
-
382
- describe "when the pattern is an opaque string with a back reference and the matched data contains dots" do
383
- before :each do
384
- @host = 'admin.mgmt.nym1'
385
- @item = "/catalog/#{@host}"
386
- @pattern = %{^/catalog/([^/]+)$}
387
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,'$1')
388
- end
389
- it "should match a name with the appropriate interpolation" do
390
- expect(@declaration.interpolate(@item.match(@pattern))).to be_match(@host,'10.0.0.5')
391
- end
392
- end
393
-
394
- describe "when the pattern is an opaque string with a back reference and the matched data contains dots with an initial prefix that looks like an IP address" do
395
- before :each do
396
- @host = '01.admin.mgmt.nym1'
397
- @item = "/catalog/#{@host}"
398
- @pattern = %{^/catalog/([^/]+)$}
399
- @declaration = Puppet::Network::AuthStore::Declaration.new(:allow,'$1')
400
- end
401
- it "should match a name with the appropriate interpolation" do
402
- expect(@declaration.interpolate(@item.match(@pattern))).to be_match(@host,'10.0.0.5')
403
- end
404
- end
405
-
406
- describe "when comparing patterns" do
407
- before :each do
408
- @ip = Puppet::Network::AuthStore::Declaration.new(:allow,'127.0.0.1')
409
- @host_name = Puppet::Network::AuthStore::Declaration.new(:allow,'www.hard_knocks.edu')
410
- @opaque = Puppet::Network::AuthStore::Declaration.new(:allow,'hey_dude')
411
- end
412
- it "should consider ip addresses before host names" do
413
- expect(@ip < @host_name).to be_truthy
414
- end
415
- it "should consider ip addresses before opaque strings" do
416
- expect(@ip < @opaque).to be_truthy
417
- end
418
- it "should consider host_names before opaque strings" do
419
- expect(@host_name < @opaque).to be_truthy
420
- end
421
- end
422
- end