puppet 4.5.3-universal-darwin → 4.6.1-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 (422) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +10 -1
  3. data/ext/debian/control +2 -4
  4. data/ext/project_data.yaml +4 -4
  5. data/install.rb +6 -2
  6. data/lib/puppet.rb +3 -1
  7. data/lib/puppet/agent/locker.rb +1 -1
  8. data/lib/puppet/application.rb +6 -4
  9. data/lib/puppet/application/agent.rb +2 -1
  10. data/lib/puppet/application/cert.rb +35 -2
  11. data/lib/puppet/application/device.rb +1 -1
  12. data/lib/puppet/application/generate.rb +5 -0
  13. data/lib/puppet/application/lookup.rb +3 -3
  14. data/lib/puppet/application_support.rb +1 -1
  15. data/lib/puppet/compilable_resource_type.rb +15 -0
  16. data/lib/puppet/configurer.rb +67 -10
  17. data/lib/puppet/configurer/plugin_handler.rb +2 -4
  18. data/lib/puppet/data_providers/hiera_config.rb +1 -1
  19. data/lib/puppet/defaults.rb +34 -7
  20. data/lib/puppet/environments.rb +4 -2
  21. data/lib/puppet/error.rb +1 -1
  22. data/lib/puppet/external/dot.rb +1 -1
  23. data/lib/puppet/face/ca.rb +4 -1
  24. data/lib/puppet/face/certificate.rb +7 -1
  25. data/lib/puppet/face/epp.rb +5 -5
  26. data/lib/puppet/face/generate.rb +64 -0
  27. data/lib/puppet/face/help.rb +19 -13
  28. data/lib/puppet/face/man.rb +1 -1
  29. data/lib/puppet/feature/external_facts.rb +1 -1
  30. data/lib/puppet/file_system.rb +16 -0
  31. data/lib/puppet/file_system/file_impl.rb +5 -0
  32. data/lib/puppet/file_system/memory_impl.rb +4 -0
  33. data/lib/puppet/file_system/path_pattern.rb +1 -0
  34. data/lib/puppet/file_system/windows.rb +19 -0
  35. data/lib/puppet/functions.rb +3 -5
  36. data/lib/puppet/functions/assert_type.rb +1 -1
  37. data/lib/puppet/functions/defined.rb +7 -5
  38. data/lib/puppet/functions/dig.rb +2 -18
  39. data/lib/puppet/functions/hiera.rb +1 -1
  40. data/lib/puppet/functions/lest.rb +1 -37
  41. data/lib/puppet/functions/new.rb +2 -473
  42. data/lib/puppet/functions/reverse_each.rb +2 -59
  43. data/lib/puppet/functions/scanf.rb +4 -4
  44. data/lib/puppet/functions/step.rb +1 -63
  45. data/lib/puppet/functions/then.rb +1 -61
  46. data/lib/puppet/functions/type.rb +1 -40
  47. data/lib/puppet/functions/unwrap.rb +40 -0
  48. data/lib/puppet/generate/models/type/property.rb +70 -0
  49. data/lib/puppet/generate/models/type/type.rb +57 -0
  50. data/lib/puppet/generate/templates/type/pcore.erb +41 -0
  51. data/lib/puppet/generate/type.rb +239 -0
  52. data/lib/puppet/graph/simple_graph.rb +2 -6
  53. data/lib/puppet/indirector/catalog/static_compiler.rb +5 -2
  54. data/lib/puppet/indirector/facts/facter.rb +1 -1
  55. data/lib/puppet/indirector/key/ca.rb +2 -2
  56. data/lib/puppet/indirector/request.rb +25 -4
  57. data/lib/puppet/indirector/rest.rb +73 -3
  58. data/lib/puppet/info_service/class_information_service.rb +1 -2
  59. data/lib/puppet/interface/documentation.rb +1 -1
  60. data/lib/puppet/loaders.rb +2 -0
  61. data/lib/puppet/metatype/manager.rb +6 -6
  62. data/lib/puppet/module.rb +8 -1
  63. data/lib/puppet/module_tool.rb +2 -2
  64. data/lib/puppet/module_tool/checksums.rb +1 -1
  65. data/lib/puppet/module_tool/errors/installer.rb +2 -2
  66. data/lib/puppet/module_tool/metadata.rb +1 -1
  67. data/lib/puppet/network/http/api/indirected_routes.rb +23 -32
  68. data/lib/puppet/network/http/rack/rest.rb +15 -1
  69. data/lib/puppet/network/rights.rb +1 -11
  70. data/lib/puppet/node/environment.rb +7 -3
  71. data/lib/puppet/node/facts.rb +1 -1
  72. data/lib/puppet/parameter.rb +23 -3
  73. data/lib/puppet/parameter/boolean.rb +1 -1
  74. data/lib/puppet/parameter/value.rb +1 -1
  75. data/lib/puppet/parser.rb +0 -1
  76. data/lib/puppet/parser/ast/pops_bridge.rb +1 -1
  77. data/lib/puppet/parser/ast/resource.rb +5 -0
  78. data/lib/puppet/parser/ast/resource_instance.rb +5 -1
  79. data/lib/puppet/parser/ast/resourceparam.rb +5 -0
  80. data/lib/puppet/parser/compiler.rb +14 -17
  81. data/lib/puppet/parser/compiler/catalog_validator/relationship_validator.rb +1 -1
  82. data/lib/puppet/parser/environment_compiler.rb +10 -0
  83. data/lib/puppet/parser/functions/create_resources.rb +39 -24
  84. data/lib/puppet/parser/functions/defined.rb +2 -26
  85. data/lib/puppet/parser/functions/dig.rb +29 -0
  86. data/lib/puppet/parser/functions/lest.rb +49 -0
  87. data/lib/puppet/parser/functions/new.rb +530 -0
  88. data/lib/puppet/parser/functions/require.rb +1 -1
  89. data/lib/puppet/parser/functions/reverse_each.rb +83 -0
  90. data/lib/puppet/parser/functions/scanf.rb +4 -4
  91. data/lib/puppet/parser/functions/step.rb +84 -0
  92. data/lib/puppet/parser/functions/then.rb +73 -0
  93. data/lib/puppet/parser/functions/type.rb +53 -0
  94. data/lib/puppet/parser/resource.rb +16 -7
  95. data/lib/puppet/parser/scope.rb +36 -28
  96. data/lib/puppet/parser/type_loader.rb +1 -1
  97. data/lib/puppet/plugins/data_providers/data_provider.rb +1 -1
  98. data/lib/puppet/pops.rb +13 -0
  99. data/lib/puppet/pops/adapters.rb +49 -49
  100. data/lib/puppet/pops/binder/scheme_handler/confdir_scheme.rb +1 -1
  101. data/lib/puppet/pops/evaluator/access_operator.rb +39 -2
  102. data/lib/puppet/pops/evaluator/closure.rb +39 -13
  103. data/lib/puppet/pops/evaluator/collector_transformer.rb +10 -1
  104. data/lib/puppet/pops/evaluator/evaluator_impl.rb +16 -11
  105. data/lib/puppet/pops/evaluator/external_syntax_support.rb +1 -1
  106. data/lib/puppet/pops/evaluator/json_strict_literal_evaluator.rb +0 -1
  107. data/lib/puppet/pops/evaluator/literal_evaluator.rb +0 -1
  108. data/lib/puppet/pops/evaluator/relationship_operator.rb +1 -2
  109. data/lib/puppet/pops/evaluator/runtime3_resource_support.rb +119 -0
  110. data/lib/puppet/pops/evaluator/runtime3_support.rb +19 -45
  111. data/lib/puppet/pops/functions/function.rb +5 -0
  112. data/lib/puppet/pops/issues.rb +1 -1
  113. data/lib/puppet/pops/label_provider.rb +2 -2
  114. data/lib/puppet/pops/loader/base_loader.rb +12 -15
  115. data/lib/puppet/pops/loader/loader.rb +15 -50
  116. data/lib/puppet/pops/loader/loader_paths.rb +28 -2
  117. data/lib/puppet/pops/loader/module_loaders.rb +16 -1
  118. data/lib/puppet/pops/loader/null_loader.rb +17 -1
  119. data/lib/puppet/pops/loader/puppet_function_instantiator.rb +12 -11
  120. data/lib/puppet/pops/loader/puppet_resource_type_impl_instantiator.rb +80 -0
  121. data/lib/puppet/pops/loader/ruby_function_instantiator.rb +2 -3
  122. data/lib/puppet/pops/loader/runtime3_type_loader.rb +52 -13
  123. data/lib/puppet/pops/loader/static_loader.rb +55 -0
  124. data/lib/puppet/pops/loader/type_definition_instantiator.rb +30 -14
  125. data/lib/puppet/pops/loader/typed_name.rb +50 -0
  126. data/lib/puppet/pops/loaders.rb +64 -19
  127. data/lib/puppet/pops/merge_strategy.rb +7 -7
  128. data/lib/puppet/pops/migration/migration_checker.rb +4 -0
  129. data/lib/puppet/pops/model/model_label_provider.rb +2 -0
  130. data/lib/puppet/pops/parser/egrammar.ra +8 -5
  131. data/lib/puppet/pops/parser/eparser.rb +1550 -1498
  132. data/lib/puppet/pops/parser/evaluating_parser.rb +1 -1
  133. data/lib/puppet/pops/parser/interpolation_support.rb +7 -0
  134. data/lib/puppet/pops/parser/lexer2.rb +14 -1
  135. data/lib/puppet/pops/parser/locator.rb +30 -1
  136. data/lib/puppet/pops/parser/parser_support.rb +0 -3
  137. data/lib/puppet/pops/parser/slurp_support.rb +3 -3
  138. data/lib/puppet/pops/patterns.rb +9 -1
  139. data/lib/puppet/pops/pcore.rb +67 -11
  140. data/lib/puppet/pops/puppet_stack.rb +43 -0
  141. data/lib/puppet/pops/resource/param.rb +51 -0
  142. data/lib/puppet/pops/resource/resource_type_impl.rb +301 -0
  143. data/lib/puppet/pops/resource/resource_type_set.pcore +21 -0
  144. data/lib/puppet/pops/serialization.rb +17 -0
  145. data/lib/puppet/pops/serialization/abstract_reader.rb +149 -0
  146. data/lib/puppet/pops/serialization/abstract_writer.rb +179 -0
  147. data/lib/puppet/pops/serialization/deserializer.rb +60 -0
  148. data/lib/puppet/pops/serialization/extension.rb +126 -0
  149. data/lib/puppet/pops/serialization/instance_reader.rb +19 -0
  150. data/lib/puppet/pops/serialization/instance_writer.rb +14 -0
  151. data/lib/puppet/pops/serialization/json.rb +247 -0
  152. data/lib/puppet/pops/serialization/object.rb +63 -0
  153. data/lib/puppet/pops/serialization/rgen.rb +151 -0
  154. data/lib/puppet/pops/serialization/serializer.rb +91 -0
  155. data/lib/puppet/pops/serialization/time_factory.rb +66 -0
  156. data/lib/puppet/pops/types/annotatable.rb +36 -0
  157. data/lib/puppet/pops/types/implementation_registry.rb +3 -8
  158. data/lib/puppet/pops/types/p_meta_type.rb +83 -0
  159. data/lib/puppet/pops/types/p_object_type.rb +110 -117
  160. data/lib/puppet/pops/types/p_runtime_type.rb +13 -0
  161. data/lib/puppet/pops/types/p_sem_ver_range_type.rb +23 -0
  162. data/lib/puppet/pops/types/p_sem_ver_type.rb +30 -2
  163. data/lib/puppet/pops/types/p_sensitive_type.rb +69 -0
  164. data/lib/puppet/pops/types/p_type_set_type.rb +361 -0
  165. data/lib/puppet/pops/types/puppet_object.rb +0 -5
  166. data/lib/puppet/pops/types/ruby_generator.rb +9 -2
  167. data/lib/puppet/pops/types/type_calculator.rb +6 -1
  168. data/lib/puppet/pops/types/type_factory.rb +14 -12
  169. data/lib/puppet/pops/types/type_formatter.rb +78 -33
  170. data/lib/puppet/pops/types/type_mismatch_describer.rb +0 -2
  171. data/lib/puppet/pops/types/type_parser.rb +27 -2
  172. data/lib/puppet/pops/types/type_set_reference.rb +59 -0
  173. data/lib/puppet/pops/types/types.rb +366 -13
  174. data/lib/puppet/pops/validation.rb +4 -4
  175. data/lib/puppet/pops/validation/checker4_0.rb +5 -2
  176. data/lib/puppet/pops/visitor.rb +2 -2
  177. data/lib/puppet/property.rb +64 -5
  178. data/lib/puppet/provider.rb +1 -1
  179. data/lib/puppet/provider/aixobject.rb +3 -3
  180. data/lib/puppet/provider/group/aix.rb +4 -4
  181. data/lib/puppet/provider/macauthorization/macauthorization.rb +1 -1
  182. data/lib/puppet/provider/mailalias/aliases.rb +1 -1
  183. data/lib/puppet/provider/mcx/mcxcontent.rb +2 -2
  184. data/lib/puppet/provider/mount/parsed.rb +1 -1
  185. data/lib/puppet/provider/nameservice/directoryservice.rb +5 -5
  186. data/lib/puppet/provider/package/appdmg.rb +3 -3
  187. data/lib/puppet/provider/package/apple.rb +1 -1
  188. data/lib/puppet/provider/package/dnf.rb +5 -0
  189. data/lib/puppet/provider/package/nim.rb +1 -1
  190. data/lib/puppet/provider/package/pacman.rb +2 -2
  191. data/lib/puppet/provider/package/pip.rb +5 -3
  192. data/lib/puppet/provider/package/pip3.rb +1 -1
  193. data/lib/puppet/provider/package/pkg.rb +5 -5
  194. data/lib/puppet/provider/package/pkgdmg.rb +4 -4
  195. data/lib/puppet/provider/package/pkgin.rb +1 -1
  196. data/lib/puppet/provider/package/pkgutil.rb +1 -1
  197. data/lib/puppet/provider/package/portage.rb +48 -8
  198. data/lib/puppet/provider/package/sun.rb +1 -1
  199. data/lib/puppet/provider/package/tdnf.rb +28 -0
  200. data/lib/puppet/provider/package/yum.rb +22 -4
  201. data/lib/puppet/provider/parsedfile.rb +2 -2
  202. data/lib/puppet/provider/service/base.rb +1 -1
  203. data/lib/puppet/provider/service/bsd.rb +1 -1
  204. data/lib/puppet/provider/service/daemontools.rb +2 -2
  205. data/lib/puppet/provider/service/debian.rb +3 -3
  206. data/lib/puppet/provider/service/init.rb +5 -3
  207. data/lib/puppet/provider/service/launchd.rb +16 -2
  208. data/lib/puppet/provider/service/runit.rb +1 -1
  209. data/lib/puppet/provider/service/smf.rb +8 -1
  210. data/lib/puppet/provider/service/systemd.rb +39 -6
  211. data/lib/puppet/provider/ssh_authorized_key/parsed.rb +1 -1
  212. data/lib/puppet/provider/user/aix.rb +3 -2
  213. data/lib/puppet/provider/user/directoryservice.rb +4 -3
  214. data/lib/puppet/provider/user/hpux.rb +1 -1
  215. data/lib/puppet/provider/user/user_role_add.rb +1 -1
  216. data/lib/puppet/provider/user/windows_adsi.rb +3 -0
  217. data/lib/puppet/provider/zfs/zfs.rb +1 -1
  218. data/lib/puppet/reference/type.rb +1 -1
  219. data/lib/puppet/resource.rb +33 -7
  220. data/lib/puppet/resource/capability_finder.rb +74 -54
  221. data/lib/puppet/resource/status.rb +11 -2
  222. data/lib/puppet/settings.rb +17 -6
  223. data/lib/puppet/settings/environment_conf.rb +1 -1
  224. data/lib/puppet/settings/server_list_setting.rb +20 -0
  225. data/lib/puppet/ssl/certificate_authority.rb +32 -9
  226. data/lib/puppet/ssl/certificate_authority/interface.rb +164 -24
  227. data/lib/puppet/ssl/host.rb +3 -3
  228. data/lib/puppet/ssl/oids.rb +10 -0
  229. data/lib/puppet/ssl/validator/default_validator.rb +2 -2
  230. data/lib/puppet/test/test_helper.rb +2 -2
  231. data/lib/puppet/transaction.rb +12 -0
  232. data/lib/puppet/transaction/additional_resource_generator.rb +1 -1
  233. data/lib/puppet/transaction/event.rb +29 -2
  234. data/lib/puppet/transaction/event_manager.rb +1 -1
  235. data/lib/puppet/transaction/persistence.rb +84 -0
  236. data/lib/puppet/transaction/report.rb +49 -2
  237. data/lib/puppet/transaction/resource_harness.rb +98 -18
  238. data/lib/puppet/type.rb +63 -21
  239. data/lib/puppet/type/augeas.rb +3 -3
  240. data/lib/puppet/type/cron.rb +1 -1
  241. data/lib/puppet/type/file.rb +39 -2
  242. data/lib/puppet/type/file/data_sync.rb +13 -5
  243. data/lib/puppet/type/host.rb +1 -1
  244. data/lib/puppet/type/mount.rb +2 -6
  245. data/lib/puppet/type/notify.rb +1 -1
  246. data/lib/puppet/type/package.rb +1 -1
  247. data/lib/puppet/type/resources.rb +1 -1
  248. data/lib/puppet/type/scheduled_task.rb +1 -1
  249. data/lib/puppet/type/ssh_authorized_key.rb +2 -2
  250. data/lib/puppet/type/tidy.rb +1 -1
  251. data/lib/puppet/type/yumrepo.rb +3 -3
  252. data/lib/puppet/type/zone.rb +1 -1
  253. data/lib/puppet/util.rb +2 -2
  254. data/lib/puppet/util/classgen.rb +1 -1
  255. data/lib/puppet/util/command_line.rb +6 -2
  256. data/lib/puppet/util/command_line/trollop.rb +1 -1
  257. data/lib/puppet/util/execution.rb +2 -2
  258. data/lib/puppet/util/http_proxy.rb +1 -1
  259. data/lib/puppet/util/inifile.rb +1 -1
  260. data/lib/puppet/util/instance_loader.rb +1 -1
  261. data/lib/puppet/util/logging.rb +1 -1
  262. data/lib/puppet/util/multi_match.rb +1 -1
  263. data/lib/puppet/util/plist.rb +15 -5
  264. data/lib/puppet/util/profiler.rb +1 -1
  265. data/lib/puppet/util/profiler/around_profiler.rb +1 -1
  266. data/lib/puppet/util/psych_support.rb +1 -1
  267. data/lib/puppet/util/rdoc.rb +2 -2
  268. data/lib/puppet/util/rubygems.rb +1 -1
  269. data/lib/puppet/util/watcher/periodic_watcher.rb +2 -2
  270. data/lib/puppet/util/windows/access_control_entry.rb +1 -1
  271. data/lib/puppet/util/windows/adsi.rb +30 -8
  272. data/lib/puppet/util/windows/api_types.rb +1 -1
  273. data/lib/puppet/util/windows/file.rb +59 -0
  274. data/lib/puppet/util/windows/process.rb +10 -0
  275. data/lib/puppet/util/windows/security.rb +1 -1
  276. data/lib/puppet/util/windows/user.rb +22 -4
  277. data/lib/puppet/util/yaml.rb +15 -3
  278. data/lib/puppet/vendor/deep_merge/test/test_deep_merge.rb +1 -1
  279. data/lib/puppet/vendor/rgen_patch.rb +1 -1
  280. data/lib/puppet/version.rb +2 -2
  281. data/spec/fixtures/unit/pops/loaders/loaders/no_modules/manifests/site.pp +10 -0
  282. data/spec/integration/agent/logging_spec.rb +15 -14
  283. data/spec/integration/application/apply_spec.rb +1 -0
  284. data/spec/integration/directory_environments_spec.rb +16 -0
  285. data/spec/integration/environments/settings_spec.rb +32 -4
  286. data/spec/integration/faces/documentation_spec.rb +1 -1
  287. data/spec/integration/network/http/api/indirected_routes_spec.rb +33 -0
  288. data/spec/integration/node/environment_spec.rb +21 -0
  289. data/spec/integration/parser/collection_spec.rb +10 -0
  290. data/spec/integration/parser/compiler_spec.rb +76 -840
  291. data/spec/integration/parser/functions/require_spec.rb +3 -3
  292. data/spec/integration/parser/parameter_defaults_spec.rb +6 -2
  293. data/spec/integration/parser/pcore_resource_spec.rb +208 -0
  294. data/spec/integration/parser/resource_expressions_spec.rb +4 -2
  295. data/spec/integration/provider/yumrepo_spec.rb +4 -1
  296. data/spec/integration/transaction/report_spec.rb +666 -0
  297. data/spec/integration/type/file_spec.rb +11 -12
  298. data/spec/integration/util/windows/adsi_spec.rb +99 -0
  299. data/spec/integration/util/windows/principal_spec.rb +109 -60
  300. data/spec/integration/util/windows/process_spec.rb +4 -2
  301. data/spec/integration/util/windows/security_spec.rb +34 -8
  302. data/spec/integration/util/windows/user_spec.rb +26 -4
  303. data/spec/lib/puppet_spec/files.rb +2 -2
  304. data/spec/lib/puppet_spec/network.rb +12 -8
  305. data/spec/shared_examples/rhel_package_provider.rb +341 -0
  306. data/spec/spec_helper.rb +8 -2
  307. data/spec/unit/application/cert_spec.rb +20 -0
  308. data/spec/unit/configurer/plugin_handler_spec.rb +0 -26
  309. data/spec/unit/configurer_spec.rb +46 -0
  310. data/spec/unit/defaults_spec.rb +14 -0
  311. data/spec/unit/face/generate_spec.rb +230 -0
  312. data/spec/unit/face/help_spec.rb +53 -0
  313. data/spec/unit/face/parser_spec.rb +6 -0
  314. data/spec/unit/face/plugin_spec.rb +0 -4
  315. data/spec/unit/file_system_spec.rb +85 -0
  316. data/spec/unit/functions/lookup_spec.rb +4 -4
  317. data/spec/unit/functions/match_spec.rb +2 -2
  318. data/spec/unit/functions/regsubst_spec.rb +1 -1
  319. data/spec/unit/functions/split_spec.rb +1 -1
  320. data/spec/unit/functions/unwrap_spec.rb +29 -0
  321. data/spec/unit/functions/versioncmp_spec.rb +1 -1
  322. data/spec/unit/functions4_spec.rb +8 -8
  323. data/spec/unit/indirector/facts/facter_spec.rb +1 -9
  324. data/spec/unit/indirector/rest_spec.rb +95 -9
  325. data/spec/unit/module_spec.rb +43 -7
  326. data/spec/unit/module_tool/applications/installer_spec.rb +10 -1
  327. data/spec/unit/module_tool/applications/unpacker_spec.rb +2 -1
  328. data/spec/unit/module_tool/applications/upgrader_spec.rb +8 -0
  329. data/spec/unit/module_tool/tar/mini_spec.rb +3 -3
  330. data/spec/unit/network/http/api/indirected_routes_spec.rb +49 -58
  331. data/spec/unit/network/http/api/master/v3_spec.rb +7 -4
  332. data/spec/unit/network/rights_spec.rb +1 -1
  333. data/spec/unit/parameter_spec.rb +11 -0
  334. data/spec/unit/parser/compiler_spec.rb +19 -33
  335. data/spec/unit/{appmgmt_spec.rb → parser/environment_compiler_spec.rb} +12 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +76 -4
  337. data/spec/unit/parser/functions/require_spec.rb +2 -2
  338. data/spec/unit/parser/resource_spec.rb +21 -11
  339. data/spec/unit/parser/scope_spec.rb +1 -5
  340. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +1 -1
  341. data/spec/unit/pops/loaders/dependency_loader_spec.rb +1 -1
  342. data/spec/unit/pops/loaders/loader_paths_spec.rb +1 -1
  343. data/spec/unit/pops/loaders/loaders_spec.rb +63 -5
  344. data/spec/unit/pops/loaders/module_loaders_spec.rb +2 -2
  345. data/spec/unit/pops/loaders/static_loader_spec.rb +1 -1
  346. data/spec/unit/pops/parser/lexer2_spec.rb +27 -3
  347. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +8 -0
  348. data/spec/unit/pops/parser/parse_calls_spec.rb +9 -0
  349. data/spec/unit/pops/puppet_stack_spec.rb +79 -0
  350. data/spec/unit/pops/resource/resource_type_impl_spec.rb +37 -0
  351. data/spec/unit/pops/serialization/packer_spec.rb +153 -0
  352. data/spec/unit/pops/serialization/rgen_spec.rb +88 -0
  353. data/spec/unit/pops/serialization/serialization_spec.rb +228 -0
  354. data/spec/unit/pops/types/p_object_type_spec.rb +44 -2
  355. data/spec/unit/pops/types/p_sem_ver_type_spec.rb +42 -0
  356. data/spec/unit/pops/types/p_sensitive_type_spec.rb +139 -0
  357. data/spec/unit/pops/types/p_type_set_type_spec.rb +424 -0
  358. data/spec/unit/pops/types/ruby_generator_spec.rb +497 -181
  359. data/spec/unit/pops/types/type_calculator_spec.rb +10 -4
  360. data/spec/unit/pops/types/type_formatter_spec.rb +1 -1
  361. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +2 -2
  362. data/spec/unit/pops/types/type_parser_spec.rb +1 -1
  363. data/spec/unit/pops/types/types_spec.rb +1 -1
  364. data/spec/unit/pops/validator/validator_spec.rb +18 -1
  365. data/spec/unit/property_spec.rb +48 -11
  366. data/spec/unit/provider/group/windows_adsi_spec.rb +11 -1
  367. data/spec/unit/provider/package/dnf_spec.rb +1 -99
  368. data/spec/unit/provider/package/pacman_spec.rb +4 -4
  369. data/spec/unit/provider/package/pip_spec.rb +14 -0
  370. data/spec/unit/provider/package/pkg_spec.rb +6 -0
  371. data/spec/unit/provider/package/pkgdmg_spec.rb +0 -3
  372. data/spec/unit/provider/package/portage_spec.rb +64 -8
  373. data/spec/unit/provider/package/tdnf_spec.rb +18 -0
  374. data/spec/unit/provider/package/windows/package_spec.rb +4 -1
  375. data/spec/unit/provider/package/windows_spec.rb +8 -2
  376. data/spec/unit/provider/package/yum_spec.rb +6 -377
  377. data/spec/unit/provider/service/base_spec.rb +6 -0
  378. data/spec/unit/provider/service/debian_spec.rb +16 -7
  379. data/spec/unit/provider/service/gentoo_spec.rb +6 -0
  380. data/spec/unit/provider/service/init_spec.rb +7 -0
  381. data/spec/unit/provider/service/launchd_spec.rb +35 -4
  382. data/spec/unit/provider/service/openrc_spec.rb +6 -0
  383. data/spec/unit/provider/service/smf_spec.rb +31 -6
  384. data/spec/unit/provider/service/src_spec.rb +6 -0
  385. data/spec/unit/provider/service/systemd_spec.rb +70 -20
  386. data/spec/unit/provider/service/upstart_spec.rb +6 -0
  387. data/spec/unit/provider/user/aix_spec.rb +7 -0
  388. data/spec/unit/provider/user/directoryservice_spec.rb +30 -1
  389. data/spec/unit/provider/user/windows_adsi_spec.rb +19 -0
  390. data/spec/unit/resource/capability_finder_spec.rb +51 -3
  391. data/spec/unit/resource/catalog_spec.rb +5 -0
  392. data/spec/unit/resource/type_spec.rb +2 -2
  393. data/spec/unit/resource_spec.rb +19 -0
  394. data/spec/unit/settings_spec.rb +13 -0
  395. data/spec/unit/ssl/certificate_authority/interface_spec.rb +176 -10
  396. data/spec/unit/ssl/certificate_authority_spec.rb +63 -22
  397. data/spec/unit/ssl/host_spec.rb +1 -1
  398. data/spec/unit/ssl/oids_spec.rb +24 -21
  399. data/spec/unit/transaction/event_spec.rb +3 -1
  400. data/spec/unit/transaction/persistence_spec.rb +173 -0
  401. data/spec/unit/transaction/report_spec.rb +64 -1
  402. data/spec/unit/transaction/resource_harness_spec.rb +91 -0
  403. data/spec/unit/type/file/content_spec.rb +47 -15
  404. data/spec/unit/type/file_spec.rb +28 -0
  405. data/spec/unit/type/mount_spec.rb +5 -12
  406. data/spec/unit/type/yumrepo_spec.rb +1 -5
  407. data/spec/unit/type_spec.rb +32 -0
  408. data/spec/unit/util/command_line_spec.rb +11 -0
  409. data/spec/unit/util/execution_spec.rb +1 -1
  410. data/spec/unit/util/plist_spec.rb +16 -3
  411. data/spec/unit/util/storage_spec.rb +4 -1
  412. data/spec/unit/util/windows/adsi_spec.rb +23 -2
  413. data/spec/unit/util/windows/file_spec.rb +56 -1
  414. data/spec/unit/util/windows/sid_spec.rb +31 -7
  415. data/spec/unit/util/yaml_spec.rb +12 -0
  416. data/spec/unit/util_spec.rb +87 -20
  417. metadata +89 -34
  418. data/ext/puppetlisten/puppetlisten.rb +0 -77
  419. data/ext/puppetlisten/puppetrun.rb +0 -38
  420. data/lib/puppet/resource/type_collection_helper.rb +0 -7
  421. data/spec/unit/parser/functions/defined_spec.rb +0 -120
  422. data/spec/unit/resource/type_collection_helper_spec.rb +0 -24
@@ -614,13 +614,6 @@ describe Puppet::Module do
614
614
  expect(@module).to be_has_metadata
615
615
  end
616
616
 
617
- it "should have metadata if it has a metadata file and its data is not empty" do
618
- Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
619
- File.stubs(:read).with(@module.metadata_file, {:encoding => 'utf-8'}).returns "{\"foo\" : \"bar\"}"
620
-
621
- expect(@module).to be_has_metadata
622
- end
623
-
624
617
  it "should not have metadata if has a metadata file and its data is empty" do
625
618
  Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
626
619
  File.stubs(:read).with(@module.metadata_file, {:encoding => 'utf-8'}).returns "This is some invalid json.\n"
@@ -651,6 +644,49 @@ describe Puppet::Module do
651
644
  expect(@module.has_metadata?).to be_falsey
652
645
  end
653
646
 
647
+ describe 'when --strict is warning' do
648
+ before :each do
649
+ Puppet[:strict] = :warning
650
+ end
651
+
652
+ it "should warn about a failure to parse" do
653
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
654
+ File.stubs(:read).with(@module.metadata_file, {:encoding => 'utf-8'}).returns(my_fixture('trailing-comma.json'))
655
+
656
+ expect(@module.has_metadata?).to be_falsey
657
+ expect(@logs).to have_matching_log(/mymod has an invalid and unparsable metadata\.json file/)
658
+ end
659
+ end
660
+
661
+ describe 'when --strict is off' do
662
+ before :each do
663
+ Puppet[:strict] = :off
664
+ end
665
+
666
+ it "should warn about a failure to parse" do
667
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
668
+ File.stubs(:read).with(@module.metadata_file, {:encoding => 'utf-8'}).returns(my_fixture('trailing-comma.json'))
669
+
670
+ expect(@module.has_metadata?).to be_falsey
671
+ expect(@logs).to have_matching_log(/mymod has an invalid and unparsable metadata\.json file.*/)
672
+ end
673
+ end
674
+
675
+ describe 'when --strict is error' do
676
+ before :each do
677
+ Puppet[:strict] = :error
678
+ end
679
+
680
+ it "should fail on a failure to parse" do
681
+ Puppet::FileSystem.expects(:exist?).with(@module.metadata_file).returns true
682
+ File.stubs(:read).with(@module.metadata_file, {:encoding => 'utf-8'}).returns(my_fixture('trailing-comma.json'))
683
+
684
+ expect do
685
+ expect(@module.has_metadata?).to be_falsey
686
+ end.to raise_error(/mymod has an invalid and unparsable metadata\.json file/)
687
+ end
688
+ end
689
+
654
690
  def a_module_with_metadata(data)
655
691
  text = data.to_pson
656
692
 
@@ -4,6 +4,8 @@ require 'puppet_spec/module_tool/shared_functions'
4
4
  require 'puppet_spec/module_tool/stub_source'
5
5
  require 'semver'
6
6
 
7
+ require 'tmpdir'
8
+
7
9
  describe Puppet::ModuleTool::Applications::Installer do
8
10
  include PuppetSpec::ModuleTool::SharedFunctions
9
11
  include PuppetSpec::Files
@@ -32,6 +34,13 @@ describe Puppet::ModuleTool::Applications::Installer do
32
34
  installer.stubs(:module_repository).returns(remote_source)
33
35
  end
34
36
 
37
+ if Puppet.features.microsoft_windows?
38
+ before :each do
39
+ Puppet.settings.stubs(:[])
40
+ Puppet.settings.stubs(:[]).with(:module_working_dir).returns(Dir.mktmpdir('installertmp'))
41
+ end
42
+ end
43
+
35
44
  def installer(modname, target_dir, options)
36
45
  Puppet::ModuleTool.set_option_defaults(options)
37
46
  Puppet::ModuleTool::Applications::Installer.new(modname, target_dir, options)
@@ -358,6 +367,6 @@ describe Puppet::ModuleTool::Applications::Installer do
358
367
  end
359
368
  end
360
369
  end
361
-
362
370
  end
371
+
363
372
  end
@@ -14,7 +14,8 @@ describe Puppet::ModuleTool::Applications::Unpacker do
14
14
  let(:working_dir) { tmpdir("working_dir") }
15
15
 
16
16
  before :each do
17
- Puppet.settings[:module_working_dir] = working_dir
17
+ Puppet.settings.stubs(:[])
18
+ Puppet.settings.stubs(:[]).with(:module_working_dir).returns(working_dir)
18
19
  end
19
20
 
20
21
  it "should attempt to untar file to temporary location" do
@@ -3,6 +3,7 @@ require 'puppet/module_tool/applications'
3
3
  require 'puppet_spec/module_tool/shared_functions'
4
4
  require 'puppet_spec/module_tool/stub_source'
5
5
  require 'semver'
6
+ require 'tmpdir'
6
7
 
7
8
  describe Puppet::ModuleTool::Applications::Upgrader do
8
9
  include PuppetSpec::ModuleTool::SharedFunctions
@@ -31,6 +32,13 @@ describe Puppet::ModuleTool::Applications::Upgrader do
31
32
  installer.stubs(:module_repository).returns(remote_source)
32
33
  end
33
34
 
35
+ if Puppet.features.microsoft_windows?
36
+ before :each do
37
+ Puppet.settings.stubs(:[])
38
+ Puppet.settings.stubs(:[]).with(:module_working_dir).returns(Dir.mktmpdir('upgradertmp'))
39
+ end
40
+ end
41
+
34
42
  def upgrader(name, options = {})
35
43
  Puppet::ModuleTool.set_option_defaults(options)
36
44
  Puppet::ModuleTool::Applications::Upgrader.new(name, options)
@@ -20,7 +20,7 @@ describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? and Pup
20
20
  expect {
21
21
  minitar.unpack(sourcefile, destdir, 'uid')
22
22
  }.to raise_error(Puppet::ModuleTool::Errors::InvalidPathInPackageError,
23
- "Attempt to install file into \"/thefile\" under \"#{destdir}\"")
23
+ "Attempt to install file with an invalid path into \"/thefile\" under \"#{destdir}\"")
24
24
  end
25
25
 
26
26
  it "does not allow a file to be written outside the destination directory" do
@@ -29,7 +29,7 @@ describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? and Pup
29
29
  expect {
30
30
  minitar.unpack(sourcefile, destdir, 'uid')
31
31
  }.to raise_error(Puppet::ModuleTool::Errors::InvalidPathInPackageError,
32
- "Attempt to install file into \"#{File.expand_path('/the/thefile')}\" under \"#{destdir}\"")
32
+ "Attempt to install file with an invalid path into \"#{File.expand_path('/the/thefile')}\" under \"#{destdir}\"")
33
33
  end
34
34
 
35
35
  it "does not allow a directory to be written outside the destination directory" do
@@ -38,7 +38,7 @@ describe Puppet::ModuleTool::Tar::Mini, :if => (Puppet.features.minitar? and Pup
38
38
  expect {
39
39
  minitar.unpack(sourcefile, destdir, 'uid')
40
40
  }.to raise_error(Puppet::ModuleTool::Errors::InvalidPathInPackageError,
41
- "Attempt to install file into \"#{File.expand_path('/the/thedir')}\" under \"#{destdir}\"")
41
+ "Attempt to install file with an invalid path into \"#{File.expand_path('/the/thedir')}\" under \"#{destdir}\"")
42
42
  end
43
43
 
44
44
  it "packs a tar file" do
@@ -16,7 +16,6 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
16
16
  before do
17
17
  Puppet::IndirectorTesting.indirection.terminus_class = :memory
18
18
  Puppet::IndirectorTesting.indirection.terminus.clear
19
- handler.stubs(:check_authorization)
20
19
  handler.stubs(:warn_if_near_expiration)
21
20
  end
22
21
 
@@ -40,19 +39,19 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
40
39
  end
41
40
 
42
41
  it "should fail if there is no environment specified" do
43
- expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/node/bar", {}) }).to raise_error(ArgumentError)
42
+ expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/node/bar", {}) }).to raise_error(bad_request_error)
44
43
  end
45
44
 
46
45
  it "should fail if the environment is not alphanumeric" do
47
- expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/node/bar", {:environment => "env ness"}) }).to raise_error(ArgumentError)
46
+ expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/node/bar", {:environment => "env ness"}) }).to raise_error(bad_request_error)
48
47
  end
49
48
 
50
49
  it "should fail if the indirection does not match the prefix" do
51
- expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/certificate/foo", params) }).to raise_error(ArgumentError)
50
+ expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/certificate/foo", params) }).to raise_error(bad_request_error)
52
51
  end
53
52
 
54
53
  it "should fail if the indirection does not have the correct version" do
55
- expect(lambda { handler.uri2indirection("GET", "#{Puppet::Network::HTTP::CA_URL_PREFIX}/v3/certificate/foo", params) }).to raise_error(ArgumentError)
54
+ expect(lambda { handler.uri2indirection("GET", "#{Puppet::Network::HTTP::CA_URL_PREFIX}/v3/certificate/foo", params) }).to raise_error(bad_request_error)
56
55
  end
57
56
 
58
57
  it "should not pass a buck_path parameter through (See Bugs #13553, #13518, #13511)" do
@@ -76,7 +75,7 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
76
75
  end
77
76
 
78
77
  it "should fail if the indirection name is not alphanumeric" do
79
- expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/foo ness/bar", params) }).to raise_error(ArgumentError)
78
+ expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/foo ness/bar", params) }).to raise_error(bad_request_error)
80
79
  end
81
80
 
82
81
  it "should use the remainder of the URI as the indirection key" do
@@ -88,7 +87,7 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
88
87
  end
89
88
 
90
89
  it "should fail if no indirection key is specified" do
91
- expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/node", params) }).to raise_error(ArgumentError)
90
+ expect(lambda { handler.uri2indirection("GET", "#{master_url_prefix}/node", params) }).to raise_error(bad_request_error)
92
91
  end
93
92
 
94
93
  it "should choose 'find' as the indirection method if the http method is a GET and the indirection name is singular" do
@@ -124,7 +123,7 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
124
123
  end
125
124
 
126
125
  it "should fail if an indirection method cannot be picked" do
127
- expect(lambda { handler.uri2indirection("UPDATE", "#{master_url_prefix}/node/bar", params) }).to raise_error(ArgumentError)
126
+ expect(lambda { handler.uri2indirection("UPDATE", "#{master_url_prefix}/node/bar", params) }).to raise_error(method_not_allowed_error)
128
127
  end
129
128
 
130
129
  it "should not URI unescape the indirection key" do
@@ -146,7 +145,7 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
146
145
  Not(has_entry(:environment)))
147
146
  expect(lambda { handler.uri2indirection("GET",
148
147
  "#{master_url_prefix}/node/bar",
149
- {:environment => 'bogus'}) }).to raise_error(ArgumentError)
148
+ {:environment => 'bogus'}) }).to raise_error(not_found_error)
150
149
  end
151
150
 
152
151
  it "should not URI unescape the indirection key as passed through to a call to check_authorization" do
@@ -219,46 +218,37 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
219
218
  end
220
219
 
221
220
  describe "when processing a request" do
222
- it "should return not_authorized_code if the request is not authorized" do
223
- request = a_request_that_heads(Puppet::IndirectorTesting.new("my data"))
221
+ it "should raise not_authorized_error when authorization fails" do
222
+ data = Puppet::IndirectorTesting.new("my data")
223
+ indirection.save(data, "my data")
224
+ request = a_request_that_heads(data)
224
225
 
225
226
  handler.expects(:check_authorization).raises(Puppet::Network::AuthorizationError.new("forbidden"))
226
227
 
227
- handler.call(request, response)
228
-
229
- expect(response.code).to eq(not_authorized_code)
228
+ expect {
229
+ handler.call(request, response)
230
+ }.to raise_error(not_authorized_error)
230
231
  end
231
232
 
232
- it "should return 'not found' if the indirection does not support remote requests" do
233
+ it "should raise not_found_error if the indirection does not support remote requests" do
233
234
  request = a_request_that_heads(Puppet::IndirectorTesting.new("my data"))
234
235
 
235
236
  indirection.expects(:allow_remote_requests?).returns(false)
236
237
 
237
- handler.call(request, response)
238
-
239
- expect(response.code).to eq(not_found_code)
238
+ expect {
239
+ handler.call(request, response)
240
+ }.to raise_error(not_found_error)
240
241
  end
241
242
 
242
- it "should return 'bad request' if the environment does not exist" do
243
+ it "should raise not_found_error if the environment does not exist" do
243
244
  Puppet.override(:environments => Puppet::Environments::Static.new()) do
244
245
  request = a_request_that_heads(Puppet::IndirectorTesting.new("my data"))
245
246
 
246
- handler.call(request, response)
247
-
248
- expect(response.code).to eq(bad_request_code)
247
+ expect {
248
+ handler.call(request, response)
249
+ }.to raise_error(not_found_error)
249
250
  end
250
251
  end
251
-
252
- it "should serialize a controller exception when an exception is thrown while finding the model instance" do
253
- request = a_request_that_finds(Puppet::IndirectorTesting.new("key"))
254
- handler.expects(:do_find).raises(ArgumentError, "The exception")
255
-
256
- handler.call(request, response)
257
-
258
- expect(response.code).to eq(bad_request_code)
259
- expect(response.body).to eq("The exception")
260
- expect(response.type).to eq("text/plain")
261
- end
262
252
  end
263
253
 
264
254
  describe "when finding a model instance" do
@@ -273,24 +263,24 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
273
263
  expect(response.type).to eq(Puppet::Network::FormatHandler.format(:pson))
274
264
  end
275
265
 
276
- it "responds with a not_acceptable_code error when no accept header is provided" do
266
+ it "raises not_acceptable_error when no accept header is provided" do
277
267
  data = Puppet::IndirectorTesting.new("my data")
278
268
  indirection.save(data, "my data")
279
269
  request = a_request_that_finds(data, :accept_header => nil)
280
270
 
281
- handler.call(request, response)
282
-
283
- expect(response.code).to eq(not_acceptable_code)
271
+ expect {
272
+ handler.call(request, response)
273
+ }.to raise_error(not_acceptable_error)
284
274
  end
285
275
 
286
- it "raises an error when no accepted formats are known" do
276
+ it "raises not_acceptable_error when no accepted formats are known" do
287
277
  data = Puppet::IndirectorTesting.new("my data")
288
278
  indirection.save(data, "my data")
289
279
  request = a_request_that_finds(data, :accept_header => "unknown, also/unknown")
290
280
 
291
- handler.call(request, response)
292
-
293
- expect(response.code).to eq(not_acceptable_code)
281
+ expect {
282
+ handler.call(request, response)
283
+ }.to raise_error(not_acceptable_error)
294
284
  end
295
285
 
296
286
  it "should pass the result through without rendering it if the result is a string" do
@@ -305,12 +295,13 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
305
295
  expect(response.type).to eq(Puppet::Network::FormatHandler.format(:pson))
306
296
  end
307
297
 
308
- it "should return a not_found_code when no model instance can be found" do
298
+ it "should raise not_found_error when no model instance can be found" do
309
299
  data = Puppet::IndirectorTesting.new("my data")
310
300
  request = a_request_that_finds(data, :accept_header => "unknown, text/pson")
311
301
 
312
- handler.call(request, response)
313
- expect(response.code).to eq(not_found_code)
302
+ expect {
303
+ handler.call(request, response)
304
+ }.to raise_error(not_found_error)
314
305
  end
315
306
  end
316
307
 
@@ -335,13 +326,13 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
335
326
  expect(response.type).to eq(Puppet::Network::FormatHandler.format(:pson))
336
327
  end
337
328
 
338
- it "should return a not_found_code when searching returns nil" do
329
+ it "should raise not_found_error when searching returns nil" do
339
330
  request = a_request_that_searches(Puppet::IndirectorTesting.new("nothing"), :accept_header => "unknown, text/pson")
340
331
  indirection.expects(:search).returns(nil)
341
332
 
342
- handler.call(request, response)
343
-
344
- expect(response.code).to eq(not_found_code)
333
+ expect {
334
+ handler.call(request, response)
335
+ }.to raise_error(not_found_error)
345
336
  end
346
337
  end
347
338
 
@@ -383,9 +374,10 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
383
374
  indirection.save(data, "my data")
384
375
  request = a_request_that_destroys(data, :accept_header => "unknown, also/unknown")
385
376
 
386
- handler.call(request, response)
377
+ expect {
378
+ handler.call(request, response)
379
+ }.to raise_error(not_acceptable_error)
387
380
 
388
- expect(response.code).to eq(not_acceptable_code)
389
381
  expect(Puppet::IndirectorTesting.indirection.find("my data")).not_to be_nil
390
382
  end
391
383
  end
@@ -449,10 +441,11 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
449
441
  data = Puppet::IndirectorTesting.new("my data")
450
442
  request = a_request_that_submits(data, :accept_header => "unknown, also/unknown")
451
443
 
452
- handler.call(request, response)
444
+ expect {
445
+ handler.call(request, response)
446
+ }.to raise_error(not_acceptable_error)
453
447
 
454
448
  expect(Puppet::IndirectorTesting.indirection.find("my data")).to be_nil
455
- expect(response.code).to eq(not_acceptable_code)
456
449
  end
457
450
  end
458
451
 
@@ -467,15 +460,13 @@ describe Puppet::Network::HTTP::API::IndirectedRoutes do
467
460
  expect(response.code).to eq(nil)
468
461
  end
469
462
 
470
- it "should return a not_found_code when the model head call returns false" do
463
+ it "should raise not_found_error when the model head call returns false" do
471
464
  data = Puppet::IndirectorTesting.new("my data")
472
465
  request = a_request_that_heads(data)
473
466
 
474
- handler.call(request, response)
475
-
476
- expect(response.code).to eq(not_found_code)
477
- expect(response.type).to eq("text/plain")
478
- expect(response.body).to eq("Not Found: Could not find indirector_testing my data")
467
+ expect {
468
+ handler.call(request, response)
469
+ }.to raise_error(not_found_error)
479
470
  end
480
471
  end
481
472
  end
@@ -1,8 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  require 'puppet/network/http'
4
+ require 'puppet_spec/network'
4
5
 
5
6
  describe Puppet::Network::HTTP::API::Master::V3 do
7
+ include PuppetSpec::Network
8
+
6
9
  let(:response) { Puppet::Network::HTTP::MemoryResponse.new }
7
10
  let(:master_url_prefix) { "#{Puppet::Network::HTTP::MASTER_URL_PREFIX}/v3" }
8
11
  let(:master_routes) {
@@ -29,11 +32,11 @@ describe Puppet::Network::HTTP::API::Master::V3 do
29
32
  expect(response.code).to eq(200)
30
33
  end
31
34
 
32
- it "responds to unknown paths with a 404" do
35
+ it "responds to unknown paths by raising not_found_error" do
33
36
  request = Puppet::Network::HTTP::Request.from_hash(:path => "#{master_url_prefix}/unknown")
34
- master_routes.process(request, response)
35
37
 
36
- expect(response.code).to eq(404)
37
- expect(response.body).to match("Not Found: Could not find indirection 'unknown'")
38
+ expect {
39
+ master_routes.process(request, response)
40
+ }.to raise_error(not_found_error)
38
41
  end
39
42
  end
@@ -24,7 +24,7 @@ describe Puppet::Network::Rights do
24
24
  rights = Puppet::Network::Rights.new
25
25
  why_forbidden = rights.is_request_forbidden_and_why?(:head, "/indirection_name/key", {})
26
26
  expect(why_forbidden).to be_instance_of(Puppet::Network::AuthorizationError)
27
- expect(why_forbidden.to_s).to eq("Forbidden request: access to /indirection_name/key [find]")
27
+ expect(why_forbidden.to_s).to eq("Forbidden request: /indirection_name/key [find]")
28
28
  end
29
29
  end
30
30
 
@@ -190,4 +190,15 @@ describe Puppet::Parameter do
190
190
  )).to eq("{'1' => 'foo', 'bar' => ['2', '3', '4'], 'baz' => {'quux' => 'two', 'qux' => '1'}}")
191
191
  end
192
192
  end
193
+
194
+ describe 'formatting messages' do
195
+ it "formats messages as-is when the parameter is not sensitive" do
196
+ expect(@parameter.format("hello %s", "world")).to eq("hello world")
197
+ end
198
+
199
+ it "formats messages with redacted values when the parameter is not sensitive" do
200
+ @parameter.sensitive = true
201
+ expect(@parameter.format("hello %s", "world")).to eq("hello [redacted]")
202
+ end
203
+ end
193
204
  end
@@ -99,10 +99,6 @@ describe Puppet::Parser::Compiler do
99
99
  expect { Puppet::Parser::Compiler.compile(@node) }.to raise_error(Puppet::Error, /Compilation has been halted because.*bad environment/)
100
100
  end
101
101
 
102
- it "should include the resource type collection helper" do
103
- expect(Puppet::Parser::Compiler.ancestors).to be_include(Puppet::Resource::TypeCollectionHelper)
104
- end
105
-
106
102
  it "should be able to return a class list containing all added classes" do
107
103
  @compiler.add_class ""
108
104
  @compiler.add_class "one"
@@ -117,13 +113,8 @@ describe Puppet::Parser::Compiler do
117
113
  expect(@compiler.node).to equal(@node)
118
114
  end
119
115
 
120
- it "should detect when ast nodes are absent" do
121
- expect(@compiler.ast_nodes?).to be_falsey
122
- end
123
-
124
- it "should detect when ast nodes are present" do
125
- @known_resource_types.expects(:nodes?).returns true
126
- expect(@compiler.ast_nodes?).to be_truthy
116
+ it "the set of ast_nodes should be empty" do
117
+ expect(@compiler.environment.known_resource_types.nodes?).to be_falsey
127
118
  end
128
119
 
129
120
  it "should copy the known_resource_types version to the catalog" do
@@ -608,14 +599,13 @@ describe Puppet::Parser::Compiler do
608
599
  end
609
600
 
610
601
  it "should raise an error if a class is not found" do
611
- @scope.expects(:find_hostclass).with("notfound").returns(nil)
602
+ @scope.environment.known_resource_types.expects(:find_hostclass).with("notfound").returns(nil)
612
603
  expect{ @compiler.evaluate_classes(%w{notfound}, @scope) }.to raise_error(Puppet::Error, /Could not find class/)
613
604
  end
614
605
 
615
606
  it "should raise an error when it can't find class" do
616
607
  klasses = {'foo'=>nil}
617
608
  @node.classes = klasses
618
- @compiler.topscope.expects(:find_hostclass).with('foo').returns(nil)
619
609
  expect{ @compiler.compile }.to raise_error(Puppet::Error, /Could not find class foo for testnode/)
620
610
  end
621
611
  end
@@ -624,9 +614,7 @@ describe Puppet::Parser::Compiler do
624
614
 
625
615
  before do
626
616
  Puppet.settings[:data_binding_terminus] = "none"
627
- @class = stub 'class', :name => "my::class"
628
- @scope.stubs(:find_hostclass).with("myclass").returns(@class)
629
-
617
+ @class = @known_resource_types.add Puppet::Resource::Type.new(:hostclass, "myclass")
630
618
  @resource = stub 'resource', :ref => "Class[myclass]", :type => "file"
631
619
  end
632
620
 
@@ -658,7 +646,7 @@ describe Puppet::Parser::Compiler do
658
646
  def define_class(name, parameters)
659
647
  @node.classes[name] = parameters
660
648
  klass = Puppet::Resource::Type.new(:hostclass, name, :arguments => {'p1' => @ast_obj, 'p2' => @ast_obj})
661
- @compiler.topscope.known_resource_types.add klass
649
+ @compiler.environment.known_resource_types.add klass
662
650
  end
663
651
 
664
652
  def compile
@@ -697,7 +685,7 @@ describe Puppet::Parser::Compiler do
697
685
  ast_obj = Puppet::Parser::AST::Leaf.new(:value => 'foo')
698
686
  klasses.each do |name|
699
687
  klass = Puppet::Resource::Type.new(:hostclass, name, :arguments => {'p1' => ast_obj, 'p2' => ast_obj})
700
- @compiler.topscope.known_resource_types.add klass
688
+ @compiler.environment.known_resource_types.add klass
701
689
  end
702
690
  catalog = @compiler.compile
703
691
 
@@ -710,7 +698,7 @@ describe Puppet::Parser::Compiler do
710
698
  klass = {'foo'=>{'a'=>'one'}}
711
699
  @node.classes = klass
712
700
  klass = Puppet::Resource::Type.new(:hostclass, 'foo', :arguments => {'a' => nil, 'b' => nil})
713
- @compiler.topscope.known_resource_types.add klass
701
+ @compiler.environment.known_resource_types.add klass
714
702
  expect { @compiler.compile }.to raise_error(Puppet::PreformattedError, /Class\[Foo\]: expects a value for parameter 'b'/)
715
703
  end
716
704
 
@@ -718,14 +706,14 @@ describe Puppet::Parser::Compiler do
718
706
  klass = {'foo'=>{'3'=>'one'}}
719
707
  @node.classes = klass
720
708
  klass = Puppet::Resource::Type.new(:hostclass, 'foo', :arguments => {})
721
- @compiler.topscope.known_resource_types.add klass
709
+ @compiler.environment.known_resource_types.add klass
722
710
  expect { @compiler.compile }.to raise_error(Puppet::PreformattedError, /Class\[Foo\]: has no parameter named '3'/)
723
711
  end
724
712
 
725
713
  it "should ensure class is in catalog without params" do
726
714
  @node.classes = klasses = {'foo'=>nil}
727
715
  foo = Puppet::Resource::Type.new(:hostclass, 'foo')
728
- @compiler.topscope.known_resource_types.add foo
716
+ @compiler.environment.known_resource_types.add foo
729
717
  catalog = @compiler.compile
730
718
  expect(catalog.classes).to include 'foo'
731
719
  end
@@ -766,7 +754,7 @@ describe Puppet::Parser::Compiler do
766
754
 
767
755
  it "should skip classes previously evaluated with different capitalization" do
768
756
  @compiler.catalog.stubs(:tag)
769
- @scope.stubs(:find_hostclass).with("MyClass").returns(@class)
757
+ @scope.environment.known_resource_types.stubs(:find_hostclass).with("MyClass").returns(@class)
770
758
  @scope.stubs(:class_scope).with(@class).returns(@scope)
771
759
  @compiler.expects(:add_resource).never
772
760
  @resource.expects(:evaluate).never
@@ -778,8 +766,7 @@ describe Puppet::Parser::Compiler do
778
766
  describe "when evaluating AST nodes with no AST nodes present" do
779
767
 
780
768
  it "should do nothing" do
781
- @compiler.expects(:ast_nodes?).returns(false)
782
- @compiler.known_resource_types.expects(:nodes).never
769
+ @compiler.environment.known_resource_types.stubs(:nodes).returns(false)
783
770
  Puppet::Parser::Resource.expects(:new).never
784
771
 
785
772
  @compiler.send(:evaluate_ast_node)
@@ -789,16 +776,16 @@ describe Puppet::Parser::Compiler do
789
776
  describe "when evaluating AST nodes with AST nodes present" do
790
777
 
791
778
  before do
792
- @compiler.known_resource_types.stubs(:nodes?).returns true
779
+ @compiler.environment.known_resource_types.stubs(:nodes?).returns true
793
780
 
794
781
  # Set some names for our test
795
782
  @node.stubs(:names).returns(%w{a b c})
796
- @compiler.known_resource_types.stubs(:node).with("a").returns(nil)
797
- @compiler.known_resource_types.stubs(:node).with("b").returns(nil)
798
- @compiler.known_resource_types.stubs(:node).with("c").returns(nil)
783
+ @compiler.environment.known_resource_types.stubs(:node).with("a").returns(nil)
784
+ @compiler.environment.known_resource_types.stubs(:node).with("b").returns(nil)
785
+ @compiler.environment.known_resource_types.stubs(:node).with("c").returns(nil)
799
786
 
800
787
  # It should check this last, of course.
801
- @compiler.known_resource_types.stubs(:node).with("default").returns(nil)
788
+ @compiler.environment.known_resource_types.stubs(:node).with("default").returns(nil)
802
789
  end
803
790
 
804
791
  it "should fail if the named node cannot be found" do
@@ -807,7 +794,7 @@ describe Puppet::Parser::Compiler do
807
794
 
808
795
  it "should evaluate the first node class matching the node name" do
809
796
  node_class = stub 'node', :name => "c", :evaluate_code => nil
810
- @compiler.known_resource_types.stubs(:node).with("c").returns(node_class)
797
+ @compiler.environment.known_resource_types.stubs(:node).with("c").returns(node_class)
811
798
 
812
799
  node_resource = stub 'node resource', :ref => "Node[c]", :evaluate => nil, :type => "node"
813
800
  node_class.expects(:ensure_in_catalog).returns(node_resource)
@@ -817,7 +804,7 @@ describe Puppet::Parser::Compiler do
817
804
 
818
805
  it "should match the default node if no matching node can be found" do
819
806
  node_class = stub 'node', :name => "default", :evaluate_code => nil
820
- @compiler.known_resource_types.stubs(:node).with("default").returns(node_class)
807
+ @compiler.environment.known_resource_types.stubs(:node).with("default").returns(node_class)
821
808
 
822
809
  node_resource = stub 'node resource', :ref => "Node[default]", :evaluate => nil, :type => "node"
823
810
  node_class.expects(:ensure_in_catalog).returns(node_resource)
@@ -827,7 +814,7 @@ describe Puppet::Parser::Compiler do
827
814
 
828
815
  it "should evaluate the node resource immediately rather than using lazy evaluation" do
829
816
  node_class = stub 'node', :name => "c"
830
- @compiler.known_resource_types.stubs(:node).with("c").returns(node_class)
817
+ @compiler.environment.known_resource_types.stubs(:node).with("c").returns(node_class)
831
818
 
832
819
  node_resource = stub 'node resource', :ref => "Node[c]", :type => "node"
833
820
  node_class.expects(:ensure_in_catalog).returns(node_resource)
@@ -969,7 +956,6 @@ describe Puppet::Parser::Compiler do
969
956
  end
970
957
  end
971
958
 
972
-
973
959
  describe "when managing resource overrides" do
974
960
 
975
961
  before do