puppet 4.5.3-x86-mingw32 → 4.6.1-x86-mingw32

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

Potentially problematic release.


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

Files changed (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 +91 -48
  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