puppet 6.0.10-universal-darwin → 6.1.0-universal-darwin

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

Potentially problematic release.


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

Files changed (748) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +31 -27
  4. data/Guardfile.example +76 -0
  5. data/LICENSE +189 -4
  6. data/MAINTAINERS +47 -0
  7. data/README.md +3 -3
  8. data/lib/hiera/scope.rb +0 -7
  9. data/lib/puppet.rb +6 -5
  10. data/lib/puppet/application.rb +3 -3
  11. data/lib/puppet/application/cert.rb +2 -2
  12. data/lib/puppet/application/device.rb +83 -109
  13. data/lib/puppet/application/filebucket.rb +1 -10
  14. data/lib/puppet/application/ssl.rb +0 -2
  15. data/lib/puppet/configurer.rb +9 -10
  16. data/lib/puppet/confine/false.rb +1 -7
  17. data/lib/puppet/confine/true.rb +1 -7
  18. data/lib/puppet/defaults.rb +39 -51
  19. data/lib/puppet/forge.rb +1 -4
  20. data/lib/puppet/functions/abs.rb +1 -1
  21. data/lib/puppet/functions/call.rb +1 -2
  22. data/lib/puppet/functions/new.rb +1 -1
  23. data/lib/puppet/indirector/request.rb +15 -26
  24. data/lib/puppet/network/http/connection.rb +12 -32
  25. data/lib/puppet/network/http/factory.rb +0 -5
  26. data/lib/puppet/pal/catalog_compiler.rb +96 -0
  27. data/lib/puppet/pal/compiler.rb +221 -0
  28. data/lib/puppet/pal/function_signature.rb +52 -0
  29. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  30. data/lib/puppet/pal/pal_api.rb +15 -0
  31. data/lib/puppet/pal/pal_impl.rb +523 -0
  32. data/lib/puppet/pal/plan_signature.rb +71 -0
  33. data/lib/puppet/pal/script_compiler.rb +71 -0
  34. data/lib/puppet/pal/task_signature.rb +58 -0
  35. data/lib/puppet/parser/functions/generate.rb +7 -6
  36. data/lib/puppet/plugins/configuration.rb +5 -1
  37. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
  38. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
  39. data/lib/puppet/pops/issues.rb +0 -4
  40. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +4 -60
  41. data/lib/puppet/pops/model/factory.rb +4 -38
  42. data/lib/puppet/pops/model/pn_transformer.rb +0 -5
  43. data/lib/puppet/pops/parser/egrammar.ra +2 -2
  44. data/lib/puppet/pops/parser/heredoc_support.rb +7 -17
  45. data/lib/puppet/pops/parser/lexer2.rb +1 -6
  46. data/lib/puppet/pops/parser/locator.rb +86 -106
  47. data/lib/puppet/pops/parser/parser_support.rb +2 -11
  48. data/lib/puppet/pops/types/string_converter.rb +7 -2
  49. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  50. data/lib/puppet/pops/types/types.rb +3 -5
  51. data/lib/puppet/pops/validation/checker4_0.rb +13 -0
  52. data/lib/puppet/provider.rb +2 -1
  53. data/lib/puppet/provider/exec.rb +6 -1
  54. data/lib/puppet/provider/file/windows.rb +1 -49
  55. data/lib/puppet/provider/group/windows_adsi.rb +1 -4
  56. data/lib/puppet/provider/package.rb +0 -2
  57. data/lib/puppet/provider/package/dpkg.rb +2 -15
  58. data/lib/puppet/provider/package/gem.rb +42 -102
  59. data/lib/puppet/provider/package/pip.rb +111 -135
  60. data/lib/puppet/provider/package/pip3.rb +1 -1
  61. data/lib/puppet/provider/package/pkgng.rb +37 -21
  62. data/lib/puppet/provider/package/puppet_gem.rb +1 -1
  63. data/lib/puppet/provider/package/rpm.rb +16 -27
  64. data/lib/puppet/provider/package/windows.rb +1 -5
  65. data/lib/puppet/provider/package/yum.rb +1 -2
  66. data/lib/puppet/provider/service/systemd.rb +17 -0
  67. data/lib/puppet/provider/service/upstart.rb +5 -17
  68. data/lib/puppet/provider/service/windows.rb +8 -3
  69. data/lib/puppet/provider/user/directoryservice.rb +4 -16
  70. data/lib/puppet/provider/user/useradd.rb +13 -16
  71. data/lib/puppet/resource.rb +3 -1
  72. data/lib/puppet/rest/client.rb +83 -0
  73. data/lib/puppet/rest/route.rb +1 -1
  74. data/lib/puppet/settings.rb +5 -10
  75. data/lib/puppet/settings/server_list_setting.rb +0 -9
  76. data/lib/puppet/ssl/host.rb +11 -0
  77. data/lib/puppet/ssl/validator/default_validator.rb +0 -31
  78. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  79. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  80. data/lib/puppet/transaction.rb +7 -12
  81. data/lib/puppet/transaction/event_manager.rb +5 -1
  82. data/lib/puppet/transaction/resource_harness.rb +0 -1
  83. data/lib/puppet/type.rb +6 -0
  84. data/lib/puppet/type/exec.rb +5 -27
  85. data/lib/puppet/type/file/mode.rb +1 -6
  86. data/lib/puppet/type/file/source.rb +1 -0
  87. data/lib/puppet/type/filebucket.rb +8 -12
  88. data/lib/puppet/type/package.rb +11 -44
  89. data/lib/puppet/type/schedule.rb +0 -4
  90. data/lib/puppet/type/service.rb +12 -0
  91. data/lib/puppet/type/user.rb +1 -1
  92. data/lib/puppet/util/command_line.rb +1 -5
  93. data/lib/puppet/util/connection.rb +6 -15
  94. data/lib/puppet/util/http_proxy.rb +2 -3
  95. data/lib/puppet/util/log.rb +2 -7
  96. data/lib/puppet/util/pidlock.rb +1 -15
  97. data/lib/puppet/util/windows/process.rb +5 -73
  98. data/lib/puppet/util/windows/registry.rb +1 -7
  99. data/lib/puppet/util/windows/security.rb +8 -29
  100. data/lib/puppet/util/windows/service.rb +33 -27
  101. data/lib/puppet/util/windows/user.rb +4 -14
  102. data/lib/puppet/version.rb +1 -1
  103. data/lib/puppet_pal.rb +5 -1132
  104. data/locales/ja/puppet.po +297 -363
  105. data/locales/puppet.pot +445 -517
  106. data/man/man5/puppet.conf.5 +12 -20
  107. data/man/man8/puppet-agent.8 +1 -1
  108. data/man/man8/puppet-apply.8 +1 -1
  109. data/man/man8/puppet-catalog.8 +1 -1
  110. data/man/man8/puppet-config.8 +1 -1
  111. data/man/man8/puppet-describe.8 +1 -1
  112. data/man/man8/puppet-device.8 +1 -1
  113. data/man/man8/puppet-doc.8 +1 -1
  114. data/man/man8/puppet-epp.8 +1 -1
  115. data/man/man8/puppet-facts.8 +1 -1
  116. data/man/man8/puppet-filebucket.8 +2 -6
  117. data/man/man8/puppet-generate.8 +1 -1
  118. data/man/man8/puppet-help.8 +1 -1
  119. data/man/man8/puppet-key.8 +1 -1
  120. data/man/man8/puppet-lookup.8 +1 -1
  121. data/man/man8/puppet-man.8 +1 -1
  122. data/man/man8/puppet-module.8 +1 -1
  123. data/man/man8/puppet-node.8 +1 -1
  124. data/man/man8/puppet-parser.8 +1 -1
  125. data/man/man8/puppet-plugin.8 +1 -1
  126. data/man/man8/puppet-report.8 +1 -1
  127. data/man/man8/puppet-resource.8 +1 -1
  128. data/man/man8/puppet-script.8 +1 -1
  129. data/man/man8/puppet-ssl.8 +1 -1
  130. data/man/man8/puppet-status.8 +1 -1
  131. data/man/man8/puppet.8 +2 -2
  132. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  133. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  134. data/spec/integration/agent/logging_spec.rb +7 -5
  135. data/spec/integration/application/apply_spec.rb +16 -18
  136. data/spec/integration/application/doc_spec.rb +2 -1
  137. data/spec/integration/application/lookup_spec.rb +5 -5
  138. data/spec/integration/configurer_spec.rb +6 -5
  139. data/spec/integration/defaults_spec.rb +6 -5
  140. data/spec/integration/directory_environments_spec.rb +1 -1
  141. data/spec/integration/faces/config_spec.rb +4 -3
  142. data/spec/integration/faces/documentation_spec.rb +1 -0
  143. data/spec/integration/faces/plugin_spec.rb +1 -1
  144. data/spec/integration/file_bucket/file_spec.rb +4 -2
  145. data/spec/integration/file_serving/content_spec.rb +1 -0
  146. data/spec/integration/file_serving/fileset_spec.rb +1 -0
  147. data/spec/integration/file_serving/metadata_spec.rb +1 -0
  148. data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
  149. data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
  150. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  151. data/spec/integration/indirector/facts/facter_spec.rb +5 -4
  152. data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
  153. data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
  154. data/spec/integration/network/authconfig_spec.rb +24 -23
  155. data/spec/integration/network/formats_spec.rb +1 -0
  156. data/spec/integration/node/environment_spec.rb +1 -0
  157. data/spec/integration/node/facts_spec.rb +10 -9
  158. data/spec/integration/node_spec.rb +7 -6
  159. data/spec/integration/parser/catalog_spec.rb +5 -1
  160. data/spec/integration/parser/collection_spec.rb +2 -1
  161. data/spec/integration/parser/compiler_spec.rb +6 -6
  162. data/spec/integration/parser/scope_spec.rb +1 -1
  163. data/spec/integration/parser/undef_param_spec.rb +1 -1
  164. data/spec/integration/provider/service/init_spec.rb +5 -4
  165. data/spec/integration/provider/service/systemd_spec.rb +2 -0
  166. data/spec/integration/provider/service/windows_spec.rb +2 -1
  167. data/spec/integration/reference/providers_spec.rb +2 -1
  168. data/spec/integration/reports_spec.rb +2 -1
  169. data/spec/integration/resource/catalog_spec.rb +17 -14
  170. data/spec/integration/resource/type_collection_spec.rb +5 -4
  171. data/spec/integration/ssl/certificate_request_spec.rb +1 -0
  172. data/spec/integration/ssl/host_spec.rb +2 -1
  173. data/spec/integration/ssl/key_spec.rb +1 -0
  174. data/spec/integration/test/test_helper_spec.rb +1 -0
  175. data/spec/integration/transaction/report_spec.rb +11 -6
  176. data/spec/integration/transaction_spec.rb +19 -18
  177. data/spec/integration/type/exec_spec.rb +1 -0
  178. data/spec/integration/type/file_spec.rb +33 -13
  179. data/spec/integration/type/package_spec.rb +24 -20
  180. data/spec/integration/type/tidy_spec.rb +2 -1
  181. data/spec/integration/type_spec.rb +1 -0
  182. data/spec/integration/util/autoload_spec.rb +2 -1
  183. data/spec/integration/util/rdoc/parser_spec.rb +1 -0
  184. data/spec/integration/util/settings_spec.rb +1 -0
  185. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  186. data/spec/integration/util/windows/principal_spec.rb +1 -0
  187. data/spec/integration/util/windows/process_spec.rb +6 -4
  188. data/spec/integration/util/windows/registry_spec.rb +51 -93
  189. data/spec/integration/util/windows/security_spec.rb +4 -2
  190. data/spec/integration/util/windows/user_spec.rb +20 -37
  191. data/spec/integration/util_spec.rb +7 -4
  192. data/spec/lib/puppet_spec/compiler.rb +1 -1
  193. data/spec/lib/puppet_spec/files.rb +1 -0
  194. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
  195. data/spec/lib/puppet_spec/scope.rb +2 -1
  196. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  197. data/spec/shared_behaviours/file_server_terminus.rb +9 -8
  198. data/spec/shared_behaviours/file_serving.rb +8 -6
  199. data/spec/shared_behaviours/file_serving_model.rb +5 -3
  200. data/spec/shared_behaviours/hiera_indirections.rb +4 -3
  201. data/spec/shared_behaviours/iterative_functions.rb +1 -0
  202. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  203. data/spec/shared_examples/rhel_package_provider.rb +70 -112
  204. data/spec/spec_helper.rb +2 -11
  205. data/spec/unit/agent/disabler_spec.rb +5 -4
  206. data/spec/unit/agent/locker_spec.rb +13 -12
  207. data/spec/unit/agent_spec.rb +85 -80
  208. data/spec/unit/application/agent_spec.rb +93 -88
  209. data/spec/unit/application/apply_spec.rb +83 -82
  210. data/spec/unit/application/config_spec.rb +1 -0
  211. data/spec/unit/application/describe_spec.rb +7 -6
  212. data/spec/unit/application/device_spec.rb +419 -395
  213. data/spec/unit/application/doc_spec.rb +46 -44
  214. data/spec/unit/application/face_base_spec.rb +62 -61
  215. data/spec/unit/application/facts_spec.rb +4 -3
  216. data/spec/unit/application/filebucket_spec.rb +74 -66
  217. data/spec/unit/application/indirection_base_spec.rb +6 -8
  218. data/spec/unit/application/lookup_spec.rb +26 -26
  219. data/spec/unit/application/resource_spec.rb +48 -42
  220. data/spec/unit/application/ssl_spec.rb +3 -8
  221. data/spec/unit/application_spec.rb +98 -86
  222. data/spec/unit/capability_spec.rb +6 -6
  223. data/spec/unit/certificate_factory_spec.rb +5 -3
  224. data/spec/unit/configurer/downloader_spec.rb +21 -20
  225. data/spec/unit/configurer/fact_handler_spec.rb +3 -2
  226. data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
  227. data/spec/unit/configurer_spec.rb +198 -194
  228. data/spec/unit/confine/exists_spec.rb +15 -17
  229. data/spec/unit/confine/false_spec.rb +6 -32
  230. data/spec/unit/confine/feature_spec.rb +5 -7
  231. data/spec/unit/confine/true_spec.rb +6 -32
  232. data/spec/unit/confine/variable_spec.rb +15 -14
  233. data/spec/unit/confine_collection_spec.rb +29 -28
  234. data/spec/unit/confine_spec.rb +14 -13
  235. data/spec/unit/confiner_spec.rb +11 -10
  236. data/spec/unit/context/trusted_information_spec.rb +1 -1
  237. data/spec/unit/daemon_spec.rb +36 -35
  238. data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
  239. data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
  240. data/spec/unit/datatypes_spec.rb +4 -3
  241. data/spec/unit/defaults_spec.rb +27 -18
  242. data/spec/unit/environments_spec.rb +7 -7
  243. data/spec/unit/etc_spec.rb +32 -30
  244. data/spec/unit/external/pson_spec.rb +1 -0
  245. data/spec/unit/face/catalog_spec.rb +1 -0
  246. data/spec/unit/face/config_spec.rb +35 -31
  247. data/spec/unit/face/epp_face_spec.rb +4 -3
  248. data/spec/unit/face/facts_spec.rb +6 -5
  249. data/spec/unit/face/generate_spec.rb +5 -4
  250. data/spec/unit/face/help_spec.rb +8 -7
  251. data/spec/unit/face/key_spec.rb +1 -0
  252. data/spec/unit/face/man_spec.rb +2 -1
  253. data/spec/unit/face/module/install_spec.rb +5 -3
  254. data/spec/unit/face/module/list_spec.rb +12 -2
  255. data/spec/unit/face/module/search_spec.rb +9 -11
  256. data/spec/unit/face/module/uninstall_spec.rb +8 -4
  257. data/spec/unit/face/node_spec.rb +24 -23
  258. data/spec/unit/face/parser_spec.rb +18 -3
  259. data/spec/unit/face/plugin_spec.rb +9 -36
  260. data/spec/unit/face/status_spec.rb +1 -0
  261. data/spec/unit/file_bucket/dipper_spec.rb +20 -24
  262. data/spec/unit/file_bucket/file_spec.rb +2 -0
  263. data/spec/unit/file_serving/base_spec.rb +15 -14
  264. data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
  265. data/spec/unit/file_serving/configuration_spec.rb +66 -63
  266. data/spec/unit/file_serving/content_spec.rb +11 -10
  267. data/spec/unit/file_serving/fileset_spec.rb +58 -63
  268. data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
  269. data/spec/unit/file_serving/metadata_spec.rb +36 -36
  270. data/spec/unit/file_serving/mount/file_spec.rb +32 -31
  271. data/spec/unit/file_serving/mount/locales_spec.rb +24 -23
  272. data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
  273. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +24 -23
  274. data/spec/unit/file_serving/mount/plugins_spec.rb +24 -23
  275. data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
  276. data/spec/unit/file_serving/mount_spec.rb +1 -0
  277. data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
  278. data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
  279. data/spec/unit/file_system/uniquefile_spec.rb +4 -4
  280. data/spec/unit/file_system_spec.rb +2 -2
  281. data/spec/unit/forge/errors_spec.rb +1 -1
  282. data/spec/unit/forge/forge_spec.rb +16 -17
  283. data/spec/unit/forge/module_release_spec.rb +18 -18
  284. data/spec/unit/forge/repository_spec.rb +30 -29
  285. data/spec/unit/forge_spec.rb +11 -15
  286. data/spec/unit/functions/binary_file_spec.rb +3 -3
  287. data/spec/unit/functions/contain_spec.rb +2 -0
  288. data/spec/unit/functions/defined_spec.rb +1 -0
  289. data/spec/unit/functions/epp_spec.rb +2 -2
  290. data/spec/unit/functions/find_file_spec.rb +7 -7
  291. data/spec/unit/functions/include_spec.rb +4 -0
  292. data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
  293. data/spec/unit/functions/lookup_spec.rb +2 -1
  294. data/spec/unit/functions/module_directory_spec.rb +12 -12
  295. data/spec/unit/functions/new_spec.rb +0 -15
  296. data/spec/unit/functions/require_spec.rb +3 -0
  297. data/spec/unit/functions/shared.rb +8 -5
  298. data/spec/unit/functions/versioncmp_spec.rb +2 -1
  299. data/spec/unit/functions4_spec.rb +10 -9
  300. data/spec/unit/gettext/config_spec.rb +4 -4
  301. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  302. data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
  303. data/spec/unit/graph/relationship_graph_spec.rb +2 -1
  304. data/spec/unit/graph/simple_graph_spec.rb +10 -9
  305. data/spec/unit/hiera/scope_spec.rb +0 -7
  306. data/spec/unit/hiera_puppet_spec.rb +20 -20
  307. data/spec/unit/indirector/catalog/compiler_spec.rb +149 -147
  308. data/spec/unit/indirector/catalog/json_spec.rb +2 -1
  309. data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
  310. data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
  311. data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
  312. data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
  313. data/spec/unit/indirector/certificate/file_spec.rb +1 -0
  314. data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
  315. data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
  316. data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
  317. data/spec/unit/indirector/direct_file_server_spec.rb +18 -17
  318. data/spec/unit/indirector/envelope_spec.rb +2 -1
  319. data/spec/unit/indirector/exec_spec.rb +5 -4
  320. data/spec/unit/indirector/face_spec.rb +9 -9
  321. data/spec/unit/indirector/facts/facter_spec.rb +43 -37
  322. data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
  323. data/spec/unit/indirector/facts/rest_spec.rb +8 -7
  324. data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
  325. data/spec/unit/indirector/facts/yaml_spec.rb +1 -0
  326. data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -3
  327. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
  328. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
  329. data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
  330. data/spec/unit/indirector/file_content/file_spec.rb +1 -0
  331. data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
  332. data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
  333. data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
  334. data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
  335. data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
  336. data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
  337. data/spec/unit/indirector/file_server_spec.rb +87 -87
  338. data/spec/unit/indirector/indirection_spec.rb +226 -242
  339. data/spec/unit/indirector/json_spec.rb +9 -7
  340. data/spec/unit/indirector/key/file_spec.rb +22 -21
  341. data/spec/unit/indirector/memory_spec.rb +7 -6
  342. data/spec/unit/indirector/msgpack_spec.rb +9 -7
  343. data/spec/unit/indirector/node/exec_spec.rb +3 -2
  344. data/spec/unit/indirector/node/memory_spec.rb +4 -2
  345. data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
  346. data/spec/unit/indirector/node/plain_spec.rb +4 -2
  347. data/spec/unit/indirector/node/rest_spec.rb +1 -0
  348. data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
  349. data/spec/unit/indirector/node/yaml_spec.rb +1 -0
  350. data/spec/unit/indirector/none_spec.rb +5 -5
  351. data/spec/unit/indirector/plain_spec.rb +8 -7
  352. data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
  353. data/spec/unit/indirector/report/processor_spec.rb +22 -21
  354. data/spec/unit/indirector/report/rest_spec.rb +12 -11
  355. data/spec/unit/indirector/report/yaml_spec.rb +1 -0
  356. data/spec/unit/indirector/request_spec.rb +12 -11
  357. data/spec/unit/indirector/resource/ral_spec.rb +54 -47
  358. data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
  359. data/spec/unit/indirector/rest_spec.rb +110 -113
  360. data/spec/unit/indirector/ssl_file_spec.rb +65 -64
  361. data/spec/unit/indirector/status/local_spec.rb +1 -0
  362. data/spec/unit/indirector/status/rest_spec.rb +1 -0
  363. data/spec/unit/indirector/store_configs_spec.rb +1 -0
  364. data/spec/unit/indirector/terminus_spec.rb +27 -27
  365. data/spec/unit/indirector/yaml_spec.rb +6 -5
  366. data/spec/unit/indirector_spec.rb +2 -1
  367. data/spec/unit/info_service_spec.rb +1 -1
  368. data/spec/unit/interface/action_builder_spec.rb +1 -0
  369. data/spec/unit/interface/action_manager_spec.rb +1 -0
  370. data/spec/unit/interface/action_spec.rb +3 -2
  371. data/spec/unit/interface/documentation_spec.rb +1 -0
  372. data/spec/unit/interface/face_collection_spec.rb +12 -19
  373. data/spec/unit/interface_spec.rb +3 -3
  374. data/spec/unit/man_spec.rb +4 -3
  375. data/spec/unit/module_spec.rb +51 -46
  376. data/spec/unit/module_tool/applications/installer_spec.rb +11 -10
  377. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  378. data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
  379. data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
  380. data/spec/unit/module_tool/applications/upgrader_spec.rb +5 -5
  381. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  382. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  383. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  384. data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
  385. data/spec/unit/module_tool/tar_spec.rb +13 -12
  386. data/spec/unit/module_tool_spec.rb +12 -7
  387. data/spec/unit/network/auth_config_parser_spec.rb +13 -11
  388. data/spec/unit/network/authconfig_spec.rb +18 -17
  389. data/spec/unit/network/authorization_spec.rb +5 -4
  390. data/spec/unit/network/authstore_spec.rb +1 -0
  391. data/spec/unit/network/format_handler_spec.rb +1 -0
  392. data/spec/unit/network/format_spec.rb +10 -9
  393. data/spec/unit/network/format_support_spec.rb +29 -28
  394. data/spec/unit/network/formats_spec.rb +5 -4
  395. data/spec/unit/network/http/api/indirected_routes_spec.rb +29 -24
  396. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +2 -2
  397. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -1
  398. data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
  399. data/spec/unit/network/http/api_spec.rb +2 -0
  400. data/spec/unit/network/http/compression_spec.rb +22 -21
  401. data/spec/unit/network/http/connection_spec.rb +121 -30
  402. data/spec/unit/network/http/factory_spec.rb +6 -11
  403. data/spec/unit/network/http/handler_spec.rb +18 -9
  404. data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
  405. data/spec/unit/network/http/pool_spec.rb +29 -28
  406. data/spec/unit/network/http/request_spec.rb +2 -0
  407. data/spec/unit/network/http/response_spec.rb +13 -11
  408. data/spec/unit/network/http/route_spec.rb +1 -0
  409. data/spec/unit/network/http/session_spec.rb +2 -1
  410. data/spec/unit/network/http/site_spec.rb +1 -0
  411. data/spec/unit/network/http_pool_spec.rb +9 -18
  412. data/spec/unit/network/http_spec.rb +1 -0
  413. data/spec/unit/network/resolver_spec.rb +26 -25
  414. data/spec/unit/network/rights_spec.rb +53 -52
  415. data/spec/unit/node/environment_spec.rb +15 -14
  416. data/spec/unit/node/facts_spec.rb +7 -5
  417. data/spec/unit/node_spec.rb +10 -4
  418. data/spec/unit/other/selinux_spec.rb +1 -0
  419. data/spec/unit/parameter/boolean_spec.rb +2 -1
  420. data/spec/unit/parameter/package_options_spec.rb +2 -1
  421. data/spec/unit/parameter/path_spec.rb +1 -0
  422. data/spec/unit/parameter/value_collection_spec.rb +1 -0
  423. data/spec/unit/parameter/value_spec.rb +1 -0
  424. data/spec/unit/parameter_spec.rb +9 -9
  425. data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
  426. data/spec/unit/parser/ast/leaf_spec.rb +21 -20
  427. data/spec/unit/parser/compiler_spec.rb +96 -84
  428. data/spec/unit/parser/environment_compiler_spec.rb +8 -7
  429. data/spec/unit/parser/files_spec.rb +1 -0
  430. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  431. data/spec/unit/parser/functions/digest_spec.rb +1 -0
  432. data/spec/unit/parser/functions/fail_spec.rb +2 -1
  433. data/spec/unit/parser/functions/file_spec.rb +14 -13
  434. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
  435. data/spec/unit/parser/functions/generate_spec.rb +8 -7
  436. data/spec/unit/parser/functions/inline_template_spec.rb +1 -0
  437. data/spec/unit/parser/functions/regsubst_spec.rb +1 -0
  438. data/spec/unit/parser/functions/scanf_spec.rb +1 -0
  439. data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
  440. data/spec/unit/parser/functions/split_spec.rb +1 -0
  441. data/spec/unit/parser/functions/sprintf_spec.rb +1 -0
  442. data/spec/unit/parser/functions/tag_spec.rb +2 -1
  443. data/spec/unit/parser/functions/tagged_spec.rb +3 -2
  444. data/spec/unit/parser/functions/template_spec.rb +13 -13
  445. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -1
  446. data/spec/unit/parser/functions_spec.rb +7 -6
  447. data/spec/unit/parser/relationship_spec.rb +1 -0
  448. data/spec/unit/parser/resource_spec.rb +42 -42
  449. data/spec/unit/parser/scope_spec.rb +35 -39
  450. data/spec/unit/parser/templatewrapper_spec.rb +12 -11
  451. data/spec/unit/parser/type_loader_spec.rb +19 -17
  452. data/spec/unit/pops/adaptable_spec.rb +1 -0
  453. data/spec/unit/pops/benchmark_spec.rb +1 -0
  454. data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
  455. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +1 -0
  456. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
  457. data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
  458. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
  459. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
  460. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +47 -10
  461. data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
  462. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +1 -0
  463. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
  464. data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
  465. data/spec/unit/pops/factory_spec.rb +4 -3
  466. data/spec/unit/pops/issues_spec.rb +20 -19
  467. data/spec/unit/pops/loaders/loader_spec.rb +4 -8
  468. data/spec/unit/pops/loaders/loaders_spec.rb +31 -101
  469. data/spec/unit/pops/lookup/context_spec.rb +1 -0
  470. data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
  471. data/spec/unit/pops/merge_strategy_spec.rb +1 -0
  472. data/spec/unit/pops/migration_spec.rb +5 -3
  473. data/spec/unit/pops/model/model_spec.rb +1 -0
  474. data/spec/unit/pops/model/pn_transformer_spec.rb +1 -4
  475. data/spec/unit/pops/parser/locator_spec.rb +6 -48
  476. data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
  477. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
  478. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
  479. data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
  480. data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
  481. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
  482. data/spec/unit/pops/parser/parse_heredoc_spec.rb +15 -111
  483. data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
  484. data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
  485. data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
  486. data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
  487. data/spec/unit/pops/pn_spec.rb +1 -0
  488. data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
  489. data/spec/unit/pops/serialization/serialization_spec.rb +1 -1
  490. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  491. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  492. data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
  493. data/spec/unit/pops/types/string_converter_spec.rb +5 -1
  494. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  495. data/spec/unit/pops/types/type_calculator_spec.rb +30 -30
  496. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
  497. data/spec/unit/pops/types/type_parser_spec.rb +13 -13
  498. data/spec/unit/pops/validator/validator_spec.rb +2 -1
  499. data/spec/unit/pops/visitor_spec.rb +1 -0
  500. data/spec/unit/property/boolean_spec.rb +1 -1
  501. data/spec/unit/property/ensure_spec.rb +1 -0
  502. data/spec/unit/property/keyvalue_spec.rb +34 -32
  503. data/spec/unit/property/list_spec.rb +27 -26
  504. data/spec/unit/property/ordered_list_spec.rb +14 -10
  505. data/spec/unit/property_spec.rb +43 -42
  506. data/spec/unit/provider/aix_object_spec.rb +45 -47
  507. data/spec/unit/provider/command_spec.rb +9 -9
  508. data/spec/unit/provider/exec/posix_spec.rb +31 -6
  509. data/spec/unit/provider/exec/shell_spec.rb +1 -0
  510. data/spec/unit/provider/exec/windows_spec.rb +4 -2
  511. data/spec/unit/provider/exec_spec.rb +1 -0
  512. data/spec/unit/provider/file/posix_spec.rb +24 -22
  513. data/spec/unit/provider/file/windows_spec.rb +17 -15
  514. data/spec/unit/provider/group/aix_spec.rb +2 -3
  515. data/spec/unit/provider/group/groupadd_spec.rb +26 -30
  516. data/spec/unit/provider/group/ldap_spec.rb +18 -18
  517. data/spec/unit/provider/group/pw_spec.rb +11 -11
  518. data/spec/unit/provider/group/windows_adsi_spec.rb +53 -59
  519. data/spec/unit/provider/ldap_spec.rb +62 -61
  520. data/spec/unit/provider/nameservice/directoryservice_spec.rb +36 -35
  521. data/spec/unit/provider/nameservice_spec.rb +40 -38
  522. data/spec/unit/provider/package/aix_spec.rb +15 -15
  523. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  524. data/spec/unit/provider/package/apt_spec.rb +27 -44
  525. data/spec/unit/provider/package/aptitude_spec.rb +7 -6
  526. data/spec/unit/provider/package/aptrpm_spec.rb +12 -7
  527. data/spec/unit/provider/package/base_spec.rb +4 -4
  528. data/spec/unit/provider/package/dnf_spec.rb +20 -18
  529. data/spec/unit/provider/package/dpkg_spec.rb +53 -70
  530. data/spec/unit/provider/package/freebsd_spec.rb +11 -11
  531. data/spec/unit/provider/package/gem_spec.rb +55 -132
  532. data/spec/unit/provider/package/hpux_spec.rb +8 -8
  533. data/spec/unit/provider/package/macports_spec.rb +42 -46
  534. data/spec/unit/provider/package/nim_spec.rb +39 -30
  535. data/spec/unit/provider/package/openbsd_spec.rb +39 -36
  536. data/spec/unit/provider/package/opkg_spec.rb +26 -23
  537. data/spec/unit/provider/package/pacman_spec.rb +118 -97
  538. data/spec/unit/provider/package/pip3_spec.rb +0 -17
  539. data/spec/unit/provider/package/pip_spec.rb +106 -95
  540. data/spec/unit/provider/package/pkg_spec.rb +109 -109
  541. data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
  542. data/spec/unit/provider/package/pkgin_spec.rb +8 -10
  543. data/spec/unit/provider/package/pkgng_spec.rb +31 -22
  544. data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
  545. data/spec/unit/provider/package/portage_spec.rb +74 -70
  546. data/spec/unit/provider/package/puppet_gem_spec.rb +13 -37
  547. data/spec/unit/provider/package/rpm_spec.rb +76 -154
  548. data/spec/unit/provider/package/sun_spec.rb +18 -16
  549. data/spec/unit/provider/package/tdnf_spec.rb +2 -2
  550. data/spec/unit/provider/package/up2date_spec.rb +4 -2
  551. data/spec/unit/provider/package/urpmi_spec.rb +17 -15
  552. data/spec/unit/provider/package/windows/exe_package_spec.rb +15 -12
  553. data/spec/unit/provider/package/windows/msi_package_spec.rb +22 -19
  554. data/spec/unit/provider/package/windows/package_spec.rb +42 -37
  555. data/spec/unit/provider/package/windows_spec.rb +32 -47
  556. data/spec/unit/provider/package/yum_spec.rb +7 -7
  557. data/spec/unit/provider/package/zypper_spec.rb +87 -87
  558. data/spec/unit/provider/parsedfile_spec.rb +45 -44
  559. data/spec/unit/provider/service/base_spec.rb +5 -4
  560. data/spec/unit/provider/service/bsd_spec.rb +29 -27
  561. data/spec/unit/provider/service/daemontools_spec.rb +35 -35
  562. data/spec/unit/provider/service/debian_spec.rb +38 -38
  563. data/spec/unit/provider/service/freebsd_spec.rb +18 -18
  564. data/spec/unit/provider/service/gentoo_spec.rb +55 -50
  565. data/spec/unit/provider/service/init_spec.rb +52 -53
  566. data/spec/unit/provider/service/launchd_spec.rb +116 -138
  567. data/spec/unit/provider/service/openbsd_spec.rb +50 -50
  568. data/spec/unit/provider/service/openrc_spec.rb +45 -43
  569. data/spec/unit/provider/service/openwrt_spec.rb +31 -26
  570. data/spec/unit/provider/service/rcng_spec.rb +14 -14
  571. data/spec/unit/provider/service/redhat_spec.rb +43 -45
  572. data/spec/unit/provider/service/runit_spec.rb +27 -29
  573. data/spec/unit/provider/service/smf_spec.rb +66 -74
  574. data/spec/unit/provider/service/src_spec.rb +47 -46
  575. data/spec/unit/provider/service/systemd_spec.rb +136 -109
  576. data/spec/unit/provider/service/upstart_spec.rb +93 -77
  577. data/spec/unit/provider/service/windows_spec.rb +41 -33
  578. data/spec/unit/provider/user/aix_spec.rb +31 -31
  579. data/spec/unit/provider/user/directoryservice_spec.rb +114 -146
  580. data/spec/unit/provider/user/hpux_spec.rb +16 -16
  581. data/spec/unit/provider/user/ldap_spec.rb +57 -57
  582. data/spec/unit/provider/user/openbsd_spec.rb +12 -10
  583. data/spec/unit/provider/user/pw_spec.rb +35 -37
  584. data/spec/unit/provider/user/user_role_add_spec.rb +93 -93
  585. data/spec/unit/provider/user/useradd_spec.rb +92 -93
  586. data/spec/unit/provider/user/windows_adsi_spec.rb +60 -59
  587. data/spec/unit/provider_spec.rb +35 -35
  588. data/spec/unit/puppet_pal_2pec.rb +5 -4
  589. data/spec/unit/puppet_pal_spec.rb +1 -0
  590. data/spec/unit/puppet_spec.rb +7 -6
  591. data/spec/unit/relationship_spec.rb +1 -0
  592. data/spec/unit/reports/http_spec.rb +23 -21
  593. data/spec/unit/reports/store_spec.rb +4 -3
  594. data/spec/unit/reports_spec.rb +14 -12
  595. data/spec/unit/resource/capability_finder_spec.rb +17 -15
  596. data/spec/unit/resource/catalog_spec.rb +68 -72
  597. data/spec/unit/resource/status_spec.rb +8 -6
  598. data/spec/unit/resource/type_collection_spec.rb +18 -17
  599. data/spec/unit/resource/type_spec.rb +35 -34
  600. data/spec/unit/resource_spec.rb +63 -36
  601. data/spec/unit/rest/client_spec.rb +135 -0
  602. data/spec/unit/rest/route_spec.rb +6 -6
  603. data/spec/unit/scheduler/job_spec.rb +1 -0
  604. data/spec/unit/scheduler/scheduler_spec.rb +1 -0
  605. data/spec/unit/scheduler/splay_job_spec.rb +2 -1
  606. data/spec/unit/settings/array_setting_spec.rb +1 -1
  607. data/spec/unit/settings/autosign_setting_spec.rb +9 -9
  608. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  609. data/spec/unit/settings/config_file_spec.rb +1 -0
  610. data/spec/unit/settings/directory_setting_spec.rb +7 -2
  611. data/spec/unit/settings/duration_setting_spec.rb +2 -1
  612. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  613. data/spec/unit/settings/environment_conf_spec.rb +6 -4
  614. data/spec/unit/settings/file_setting_spec.rb +46 -44
  615. data/spec/unit/settings/path_setting_spec.rb +2 -1
  616. data/spec/unit/settings/priority_setting_spec.rb +2 -1
  617. data/spec/unit/settings/string_setting_spec.rb +15 -14
  618. data/spec/unit/settings/terminus_setting_spec.rb +2 -1
  619. data/spec/unit/settings/value_translator_spec.rb +1 -0
  620. data/spec/unit/settings_spec.rb +224 -253
  621. data/spec/unit/ssl/base_spec.rb +15 -14
  622. data/spec/unit/ssl/certificate_request_spec.rb +58 -62
  623. data/spec/unit/ssl/certificate_spec.rb +25 -23
  624. data/spec/unit/ssl/digest_spec.rb +1 -0
  625. data/spec/unit/ssl/host_spec.rb +149 -166
  626. data/spec/unit/ssl/key_spec.rb +31 -30
  627. data/spec/unit/ssl/validator_spec.rb +39 -40
  628. data/spec/unit/task_spec.rb +45 -44
  629. data/spec/unit/transaction/additional_resource_generator_spec.rb +5 -3
  630. data/spec/unit/transaction/event_manager_spec.rb +88 -87
  631. data/spec/unit/transaction/event_spec.rb +15 -16
  632. data/spec/unit/transaction/persistence_spec.rb +17 -16
  633. data/spec/unit/transaction/report_spec.rb +12 -11
  634. data/spec/unit/transaction/resource_harness_spec.rb +31 -52
  635. data/spec/unit/transaction_spec.rb +87 -140
  636. data/spec/unit/type/component_spec.rb +1 -0
  637. data/spec/unit/type/exec_spec.rb +50 -101
  638. data/spec/unit/type/file/checksum_spec.rb +10 -9
  639. data/spec/unit/type/file/checksum_value_spec.rb +32 -31
  640. data/spec/unit/type/file/content_spec.rb +61 -58
  641. data/spec/unit/type/file/ctime_spec.rb +1 -0
  642. data/spec/unit/type/file/ensure_spec.rb +13 -12
  643. data/spec/unit/type/file/group_spec.rb +7 -5
  644. data/spec/unit/type/file/mode_spec.rb +6 -4
  645. data/spec/unit/type/file/mtime_spec.rb +1 -0
  646. data/spec/unit/type/file/owner_spec.rb +8 -6
  647. data/spec/unit/type/file/selinux_spec.rb +19 -17
  648. data/spec/unit/type/file/source_spec.rb +101 -104
  649. data/spec/unit/type/file/type_spec.rb +1 -0
  650. data/spec/unit/type/file_spec.rb +185 -195
  651. data/spec/unit/type/filebucket_spec.rb +10 -11
  652. data/spec/unit/type/group_spec.rb +8 -6
  653. data/spec/unit/type/noop_metaparam_spec.rb +2 -1
  654. data/spec/unit/type/package/package_settings_spec.rb +23 -44
  655. data/spec/unit/type/package_spec.rb +57 -56
  656. data/spec/unit/type/resources_spec.rb +74 -72
  657. data/spec/unit/type/schedule_spec.rb +26 -24
  658. data/spec/unit/type/service_spec.rb +75 -49
  659. data/spec/unit/type/stage_spec.rb +1 -0
  660. data/spec/unit/type/tidy_spec.rb +62 -61
  661. data/spec/unit/type/user_spec.rb +25 -24
  662. data/spec/unit/type/whit_spec.rb +1 -0
  663. data/spec/unit/type_spec.rb +54 -55
  664. data/spec/unit/util/at_fork_spec.rb +19 -18
  665. data/spec/unit/util/autoload_spec.rb +56 -55
  666. data/spec/unit/util/backups_spec.rb +35 -34
  667. data/spec/unit/util/character_encoding_spec.rb +5 -5
  668. data/spec/unit/util/checksums_spec.rb +39 -38
  669. data/spec/unit/util/colors_spec.rb +2 -1
  670. data/spec/unit/util/command_line_spec.rb +20 -40
  671. data/spec/unit/util/constant_inflector_spec.rb +1 -0
  672. data/spec/unit/util/diff_spec.rb +8 -7
  673. data/spec/unit/util/errors_spec.rb +1 -0
  674. data/spec/unit/util/execution_spec.rb +163 -187
  675. data/spec/unit/util/execution_stub_spec.rb +1 -0
  676. data/spec/unit/util/feature_spec.rb +14 -21
  677. data/spec/unit/util/filetype_spec.rb +49 -49
  678. data/spec/unit/util/http_proxy_spec.rb +12 -12
  679. data/spec/unit/util/inifile_spec.rb +31 -26
  680. data/spec/unit/util/json_lockfile_spec.rb +5 -3
  681. data/spec/unit/util/ldap/connection_spec.rb +25 -26
  682. data/spec/unit/util/ldap/generator_spec.rb +1 -0
  683. data/spec/unit/util/ldap/manager_spec.rb +101 -102
  684. data/spec/unit/util/lockfile_spec.rb +1 -0
  685. data/spec/unit/util/log/destinations_spec.rb +33 -30
  686. data/spec/unit/util/log_spec.rb +34 -48
  687. data/spec/unit/util/logging_spec.rb +72 -58
  688. data/spec/unit/util/metric_spec.rb +1 -0
  689. data/spec/unit/util/monkey_patches_spec.rb +9 -7
  690. data/spec/unit/util/multi_match_spec.rb +1 -0
  691. data/spec/unit/util/network_device/config_spec.rb +1 -0
  692. data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
  693. data/spec/unit/util/network_device_spec.rb +9 -7
  694. data/spec/unit/util/package_spec.rb +1 -0
  695. data/spec/unit/util/pidlock_spec.rb +15 -60
  696. data/spec/unit/util/plist_spec.rb +33 -40
  697. data/spec/unit/util/posix_spec.rb +51 -54
  698. data/spec/unit/util/rdoc_spec.rb +10 -9
  699. data/spec/unit/util/reference_spec.rb +1 -0
  700. data/spec/unit/util/resource_template_spec.rb +20 -20
  701. data/spec/unit/util/retry_action_spec.rb +8 -7
  702. data/spec/unit/util/rubygems_spec.rb +8 -7
  703. data/spec/unit/util/run_mode_spec.rb +4 -3
  704. data/spec/unit/util/selinux_spec.rb +72 -79
  705. data/spec/unit/util/splayer_spec.rb +9 -8
  706. data/spec/unit/util/ssl_spec.rb +1 -0
  707. data/spec/unit/util/storage_spec.rb +23 -22
  708. data/spec/unit/util/suidmanager_spec.rb +54 -45
  709. data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
  710. data/spec/unit/util/tag_set_spec.rb +1 -0
  711. data/spec/unit/util/tagging_spec.rb +1 -0
  712. data/spec/unit/util/terminal_spec.rb +10 -9
  713. data/spec/unit/util/user_attr_spec.rb +2 -1
  714. data/spec/unit/util/warnings_spec.rb +4 -3
  715. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  716. data/spec/unit/util/watcher_spec.rb +21 -51
  717. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -0
  718. data/spec/unit/util/windows/access_control_list_spec.rb +1 -0
  719. data/spec/unit/util/windows/adsi_spec.rb +138 -136
  720. data/spec/unit/util/windows/api_types_spec.rb +1 -0
  721. data/spec/unit/util/windows/eventlog_spec.rb +12 -9
  722. data/spec/unit/util/windows/file_spec.rb +1 -0
  723. data/spec/unit/util/windows/root_certs_spec.rb +1 -0
  724. data/spec/unit/util/windows/security_descriptor_spec.rb +2 -0
  725. data/spec/unit/util/windows/service_spec.rb +103 -100
  726. data/spec/unit/util/windows/sid_spec.rb +13 -11
  727. data/spec/unit/util/windows/string_spec.rb +1 -0
  728. data/spec/unit/util_spec.rb +57 -55
  729. data/spec/unit/version_spec.rb +6 -6
  730. metadata +20 -32
  731. data/CODEOWNERS +0 -30
  732. data/ext/autotest/Rakefile +0 -8
  733. data/ext/autotest/config +0 -43
  734. data/ext/autotest/readme.rst +0 -16
  735. data/lib/puppet/confine/boolean.rb +0 -45
  736. data/lib/puppet/provider/package_targetable.rb +0 -68
  737. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  738. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  739. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  740. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  741. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  742. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
  743. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  744. data/spec/integration/network/http_pool_spec.rb +0 -120
  745. data/spec/integration/provider/file/windows_spec.rb +0 -162
  746. data/spec/lib/puppet_spec/https.rb +0 -166
  747. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  748. data/spec/watchr.rb +0 -137
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
  require 'puppet/application/config'
3
4
 
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/application/describe'
@@ -21,7 +22,7 @@ describe Puppet::Application::Describe do
21
22
  end
22
23
 
23
24
  it "should store argument value when calling handle_#{option}" do
24
- expect(@describe.options).to receive(:[]=).with("#{option}".to_sym, 'arg')
25
+ @describe.options.expects(:[]=).with("#{option}".to_sym, 'arg')
25
26
  @describe.send("handle_#{option}".to_sym, 'arg')
26
27
  end
27
28
  end
@@ -45,7 +46,7 @@ describe Puppet::Application::Describe do
45
46
 
46
47
  describe "during setup" do
47
48
  it "should collect arguments in options[:types]" do
48
- allow(@describe.command_line).to receive(:args).and_return(['1','2'])
49
+ @describe.command_line.stubs(:args).returns(['1','2'])
49
50
  @describe.setup
50
51
 
51
52
  expect(@describe.options[:types]).to eq(['1','2'])
@@ -55,14 +56,14 @@ describe Puppet::Application::Describe do
55
56
  describe "when running" do
56
57
 
57
58
  before :each do
58
- @typedoc = double('type_doc')
59
- allow(TypeDoc).to receive(:new).and_return(@typedoc)
59
+ @typedoc = stub 'type_doc'
60
+ TypeDoc.stubs(:new).returns(@typedoc)
60
61
  end
61
62
 
62
63
  it "should call list_types if options list is set" do
63
64
  @describe.options[:list] = true
64
65
 
65
- expect(@typedoc).to receive(:list_types)
66
+ @typedoc.expects(:list_types)
66
67
 
67
68
  @describe.run_command
68
69
  end
@@ -71,7 +72,7 @@ describe Puppet::Application::Describe do
71
72
  @describe.options[:list] = false
72
73
  @describe.options[:types] = ['type']
73
74
 
74
- expect(@typedoc).to receive(:format_type).with('type', @describe.options)
75
+ @typedoc.expects(:format_type).with('type', @describe.options)
75
76
  @describe.run_command
76
77
  end
77
78
  end
@@ -1,601 +1,625 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
- require 'ostruct'
4
- require 'puppet/application/apply'
5
4
  require 'puppet/application/device'
6
- require 'puppet/configurer'
7
5
  require 'puppet/util/network_device/config'
6
+ require 'ostruct'
7
+ require 'puppet/configurer'
8
+ require 'puppet/application/apply'
8
9
 
9
10
  describe Puppet::Application::Device do
10
11
  include PuppetSpec::Files
11
12
 
12
- let(:device) do
13
- dev = Puppet::Application[:device]
14
- allow(dev).to receive(:trap)
15
- allow(Signal).to receive(:trap)
16
- dev.preinit
17
- dev
18
- end
19
- let(:ssl_host) { instance_double(Puppet::SSL::Host, 'ssl_host') }
20
- let(:ssl_localhost) { instance_double(Puppet::SSL::Host, 'ssl_localhost') }
21
-
22
- before do
23
- allow(Puppet::Node::Facts.indirection).to receive(:terminus_class=)
24
- allow(Puppet::Node.indirection).to receive(:cache_class=)
25
- allow(Puppet::Node.indirection).to receive(:terminus_class=)
26
- allow(Puppet::Resource::Catalog.indirection).to receive(:cache_class=)
27
- allow(Puppet::Resource::Catalog.indirection).to receive(:terminus_class=)
28
- allow(Puppet::Transaction::Report.indirection).to receive(:terminus_class=)
29
-
30
- allow(Puppet::Util::Log).to receive(:newdestination)
31
-
32
- allow(ssl_host).to receive(:wait_for_cert).and_return(nil)
33
- allow(Puppet::SSL::Host).to receive(:new).with(instance_of(String), boolean).and_return(ssl_host)
34
-
35
- allow(ssl_localhost).to receive(:generate)
36
- allow(ssl_localhost).to receive(:certificate)
37
- allow(ssl_localhost).to receive(:key)
38
- allow(Puppet::SSL::Host).to receive(:new).with(no_args).and_return(ssl_localhost)
13
+ before :each do
14
+ @device = Puppet::Application[:device]
15
+ @device.preinit
16
+ Puppet::Util::Log.stubs(:newdestination)
17
+
18
+ Puppet::Node.indirection.stubs(:terminus_class=)
19
+ Puppet::Node.indirection.stubs(:cache_class=)
20
+ Puppet::Node::Facts.indirection.stubs(:terminus_class=)
39
21
  end
40
22
 
41
- it "operates in agent run_mode" do
42
- expect(device.class.run_mode.name).to eq(:agent)
23
+ it "should operate in agent run_mode" do
24
+ expect(@device.class.run_mode.name).to eq(:agent)
43
25
  end
44
26
 
45
- it "declares a main command" do
46
- expect(device).to respond_to(:main)
27
+ it "should declare a main command" do
28
+ expect(@device).to respond_to(:main)
47
29
  end
48
30
 
49
- it "declares a preinit block" do
50
- expect(device).to respond_to(:preinit)
31
+ it "should declare a preinit block" do
32
+ expect(@device).to respond_to(:preinit)
51
33
  end
52
34
 
53
35
  describe "in preinit" do
54
- before do
36
+ before :each do
37
+ @device.stubs(:trap)
55
38
  end
56
39
 
57
- it "catches INT" do
58
- device
40
+ it "should catch INT" do
41
+ Signal.expects(:trap).with { |arg,block| arg == :INT }
59
42
 
60
- expect(Signal).to have_received(:trap).with(:INT)
43
+ @device.preinit
61
44
  end
62
45
 
63
- it "inits waitforcert to nil" do
64
- expect(device.options[:waitforcert]).to be_nil
46
+ it "should init waitforcert to nil" do
47
+ @device.preinit
48
+
49
+ expect(@device.options[:waitforcert]).to be_nil
65
50
  end
66
51
 
67
- it "inits target to nil" do
68
- expect(device.options[:target]).to be_nil
52
+ it "should init target to nil" do
53
+ @device.preinit
54
+
55
+ expect(@device.options[:target]).to be_nil
69
56
  end
70
57
  end
71
58
 
72
59
  describe "when handling options" do
73
60
  before do
74
- Puppet[:certname] = 'device.example.com'
75
- allow(device.command_line).to receive(:args).and_return([])
61
+ @device.command_line.stubs(:args).returns([])
76
62
  end
77
63
 
78
64
  [:centrallogging, :debug, :verbose,].each do |option|
79
65
  it "should declare handle_#{option} method" do
80
- expect(device).to respond_to("handle_#{option}".to_sym)
66
+ expect(@device).to respond_to("handle_#{option}".to_sym)
81
67
  end
82
68
 
83
69
  it "should store argument value when calling handle_#{option}" do
84
- allow(device.options).to receive(:[]=).with(option, 'arg')
85
- device.send("handle_#{option}".to_sym, 'arg')
70
+ @device.options.expects(:[]=).with(option, 'arg')
71
+ @device.send("handle_#{option}".to_sym, 'arg')
86
72
  end
87
73
  end
88
74
 
89
- context 'when setting --onetime' do
90
- before do
91
- Puppet[:onetime] = true
92
- end
93
-
94
- context 'without --waitforcert' do
95
- it "defaults waitforcert to 0" do
96
- device.setup_host('device.example.com')
97
-
98
- expect(ssl_host).to have_received(:wait_for_cert).with(0)
99
- end
100
- end
101
-
102
- context 'with --waitforcert=60' do
103
- it "uses supplied waitforcert" do
104
- device.handle_waitforcert(60)
105
- device.setup_host('device.example.com')
106
-
107
- expect(ssl_host).to have_received(:wait_for_cert).with(60)
108
- end
109
- end
75
+ it "should set waitforcert to 0 with --onetime and if --waitforcert wasn't given" do
76
+ Puppet[:onetime] = true
77
+ Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(0)
78
+ @device.setup_host('device.example.com')
110
79
  end
111
80
 
112
- context 'without setting --onetime' do
113
- before do
114
- Puppet[:onetime] = false
115
- end
81
+ it "should use supplied waitforcert when --onetime is specified" do
82
+ Puppet[:onetime] = true
83
+ @device.handle_waitforcert(60)
84
+ Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(60)
85
+ @device.setup_host('device.example.com')
86
+ end
116
87
 
117
- it "uses a default value for waitforcert when --onetime and --waitforcert are not specified" do
118
- device.setup_host('device.example.com')
119
- expect(ssl_host).to have_received(:wait_for_cert).with(120)
120
- end
88
+ it "should use a default value for waitforcert when --onetime and --waitforcert are not specified" do
89
+ Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(120)
90
+ @device.setup_host('device.example.com')
91
+ end
121
92
 
122
- it "uses the waitforcert setting when checking for a signed certificate" do
123
- Puppet[:waitforcert] = 10
124
- device.setup_host('device.example.com')
125
- expect(ssl_host).to have_received(:wait_for_cert).with(10)
126
- end
93
+ it "should use the waitforcert setting when checking for a signed certificate" do
94
+ Puppet[:waitforcert] = 10
95
+ Puppet::SSL::Host.any_instance.expects(:wait_for_cert).with(10)
96
+ @device.setup_host('device.example.com')
127
97
  end
128
98
 
129
- it "sets the log destination with --logdest" do
130
- allow(device.options).to receive(:[]=).with(:setdest, anything)
131
- expect(Puppet::Log).to receive(:newdestination).with("console")
99
+ it "should set the log destination with --logdest" do
100
+ @device.options.stubs(:[]=).with { |opt,val| opt == :setdest }
101
+ Puppet::Log.expects(:newdestination).with("console")
132
102
 
133
- device.handle_logdest("console")
103
+ @device.handle_logdest("console")
134
104
  end
135
105
 
136
- it "puts the setdest options to true" do
137
- expect(device.options).to receive(:[]=).with(:setdest, true)
106
+ it "should put the setdest options to true" do
107
+ @device.options.expects(:[]=).with(:setdest,true)
138
108
 
139
- device.handle_logdest("console")
109
+ @device.handle_logdest("console")
140
110
  end
141
111
 
142
- it "parses the log destination from the command line" do
143
- allow(device.command_line).to receive(:args).and_return(%w{--logdest /my/file})
112
+ it "should parse the log destination from the command line" do
113
+ @device.command_line.stubs(:args).returns(%w{--logdest /my/file})
144
114
 
145
- expect(Puppet::Util::Log).to receive(:newdestination).with("/my/file")
115
+ Puppet::Util::Log.expects(:newdestination).with("/my/file")
146
116
 
147
- device.parse_options
117
+ @device.parse_options
148
118
  end
149
119
 
150
- it "stores the waitforcert options with --waitforcert" do
151
- expect(device.options).to receive(:[]=).with(:waitforcert,42)
120
+ it "should store the waitforcert options with --waitforcert" do
121
+ @device.options.expects(:[]=).with(:waitforcert,42)
152
122
 
153
- device.handle_waitforcert("42")
123
+ @device.handle_waitforcert("42")
154
124
  end
155
125
 
156
- it "sets args[:Port] with --port" do
157
- device.handle_port("42")
158
- expect(device.args[:Port]).to eq("42")
126
+ it "should set args[:Port] with --port" do
127
+ @device.handle_port("42")
128
+ expect(@device.args[:Port]).to eq("42")
159
129
  end
160
130
 
161
- it "stores the target options with --target" do
162
- expect(device.options).to receive(:[]=).with(:target,'test123')
131
+ it "should store the target options with --target" do
132
+ @device.options.expects(:[]=).with(:target,'test123')
163
133
 
164
- device.handle_target('test123')
134
+ @device.handle_target('test123')
165
135
  end
166
136
 
167
- it "stores the resource options with --resource" do
168
- expect(device.options).to receive(:[]=).with(:resource,true)
137
+ it "should store the resource options with --resource" do
138
+ @device.options.expects(:[]=).with(:resource,true)
169
139
 
170
- device.handle_resource(true)
140
+ @device.handle_resource(true)
171
141
  end
172
142
 
173
- it "stores the facts options with --facts" do
174
- expect(device.options).to receive(:[]=).with(:facts,true)
143
+ it "should store the facts options with --facts" do
144
+ @device.options.expects(:[]=).with(:facts,true)
175
145
 
176
- device.handle_facts(true)
146
+ @device.handle_facts(true)
177
147
  end
178
148
  end
179
149
 
180
150
  describe "during setup" do
181
- before do
182
- allow(device.options).to receive(:[])
151
+ before :each do
152
+ @device.options.stubs(:[])
183
153
  Puppet[:libdir] = "/dev/null/lib"
154
+ Puppet::Transaction::Report.indirection.stubs(:terminus_class=)
155
+ Puppet::Resource::Catalog.indirection.stubs(:terminus_class=)
156
+ Puppet::Resource::Catalog.indirection.stubs(:cache_class=)
157
+ Puppet::Node::Facts.indirection.stubs(:terminus_class=)
158
+ @host = stub_everything 'host'
159
+ Puppet::SSL::Host.stubs(:new).returns(@host)
160
+ Puppet.stubs(:settraps)
184
161
  end
185
162
 
186
- it "calls setup_logs" do
187
- expect(device).to receive(:setup_logs)
188
- device.setup
163
+ it "should call setup_logs" do
164
+ @device.expects(:setup_logs)
165
+ @device.setup
189
166
  end
190
167
 
191
168
  describe "when setting up logs" do
192
- before do
193
- allow(Puppet::Util::Log).to receive(:newdestination)
169
+ before :each do
170
+ Puppet::Util::Log.stubs(:newdestination)
194
171
  end
195
172
 
196
- it "sets log level to debug if --debug was passed" do
197
- allow(device.options).to receive(:[]).with(:debug).and_return(true)
198
- device.setup_logs
173
+ it "should set log level to debug if --debug was passed" do
174
+ @device.options.stubs(:[]).with(:debug).returns(true)
175
+ @device.setup_logs
199
176
  expect(Puppet::Util::Log.level).to eq(:debug)
200
177
  end
201
178
 
202
- it "sets log level to info if --verbose was passed" do
203
- allow(device.options).to receive(:[]).with(:verbose).and_return(true)
204
- device.setup_logs
179
+ it "should set log level to info if --verbose was passed" do
180
+ @device.options.stubs(:[]).with(:verbose).returns(true)
181
+ @device.setup_logs
205
182
  expect(Puppet::Util::Log.level).to eq(:info)
206
183
  end
207
184
 
208
185
  [:verbose, :debug].each do |level|
209
186
  it "should set console as the log destination with level #{level}" do
210
- allow(device.options).to receive(:[]).with(level).and_return(true)
187
+ @device.options.stubs(:[]).with(level).returns(true)
211
188
 
212
- expect(Puppet::Util::Log).to receive(:newdestination).with(:console)
189
+ Puppet::Util::Log.expects(:newdestination).with(:console)
213
190
 
214
- device.setup_logs
191
+ @device.setup_logs
215
192
  end
216
193
  end
217
194
 
218
- it "sets a default log destination if no --logdest" do
219
- allow(device.options).to receive(:[]).with(:setdest).and_return(false)
195
+ it "should set a default log destination if no --logdest" do
196
+ @device.options.stubs(:[]).with(:setdest).returns(false)
220
197
 
221
- expect(Puppet::Util::Log).to receive(:setup_default)
198
+ Puppet::Util::Log.expects(:setup_default)
222
199
 
223
- device.setup_logs
200
+ @device.setup_logs
224
201
  end
202
+
225
203
  end
226
204
 
227
- it "sets a central log destination with --centrallogs" do
228
- allow(device.options).to receive(:[]).with(:centrallogs).and_return(true)
229
- Puppet[:server] = "puppet.example.com"
230
- allow(Puppet::Util::Log).to receive(:newdestination).with(:syslog)
205
+ it "should set a central log destination with --centrallogs" do
206
+ @device.options.stubs(:[]).with(:centrallogs).returns(true)
207
+ Puppet[:server] = "puppet.reductivelabs.com"
208
+ Puppet::Util::Log.stubs(:newdestination).with(:syslog)
231
209
 
232
- expect(Puppet::Util::Log).to receive(:newdestination).with("puppet.example.com")
210
+ Puppet::Util::Log.expects(:newdestination).with("puppet.reductivelabs.com")
233
211
 
234
- device.setup
212
+ @device.setup
235
213
  end
236
214
 
237
- it "uses :main, :agent, :device and :ssl config" do
238
- expect(Puppet.settings).to receive(:use).with(:main, :agent, :device, :ssl)
215
+ it "should use :main, :agent, :device and :ssl config" do
216
+ Puppet.settings.expects(:use).with(:main, :agent, :device, :ssl)
239
217
 
240
- device.setup
218
+ @device.setup
241
219
  end
242
220
 
243
- it "tells the report handler to use REST" do
244
- device.setup
245
- expect(Puppet::Transaction::Report.indirection).to have_received(:terminus_class=).with(:rest)
221
+ it "should tell the report handler to use REST" do
222
+ Puppet::Transaction::Report.indirection.expects(:terminus_class=).with(:rest)
223
+
224
+ @device.setup
246
225
  end
247
226
 
248
- it "defaults the catalog_terminus setting to 'rest'" do
249
- device.initialize_app_defaults
227
+ it "should default the catalog_terminus setting to 'rest'" do
228
+ @device.initialize_app_defaults
250
229
  expect(Puppet[:catalog_terminus]).to eq(:rest)
251
230
  end
252
231
 
253
- it "defaults the node_terminus setting to 'rest'" do
254
- device.initialize_app_defaults
232
+ it "should default the node_terminus setting to 'rest'" do
233
+ @device.initialize_app_defaults
255
234
  expect(Puppet[:node_terminus]).to eq(:rest)
256
235
  end
257
236
 
258
237
  it "has an application default :catalog_cache_terminus setting of 'json'" do
259
- expect(Puppet::Resource::Catalog.indirection).to receive(:cache_class=).with(:json)
238
+ Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(:json)
260
239
 
261
- device.initialize_app_defaults
262
- device.setup
240
+ @device.initialize_app_defaults
241
+ @device.setup
263
242
  end
264
243
 
265
- it "tells the catalog cache class based on the :catalog_cache_terminus setting" do
244
+ it "should tell the catalog cache class based on the :catalog_cache_terminus setting" do
266
245
  Puppet[:catalog_cache_terminus] = "yaml"
267
- expect(Puppet::Resource::Catalog.indirection).to receive(:cache_class=).with(:yaml)
246
+ Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(:yaml)
268
247
 
269
- device.initialize_app_defaults
270
- device.setup
248
+ @device.initialize_app_defaults
249
+ @device.setup
271
250
  end
272
251
 
273
- it "does not set catalog cache class if :catalog_cache_terminus is explicitly nil" do
252
+ it "should not set catalog cache class if :catalog_cache_terminus is explicitly nil" do
274
253
  Puppet[:catalog_cache_terminus] = nil
275
- expect(Puppet::Resource::Catalog.indirection).not_to receive(:cache_class=)
254
+ Puppet::Resource::Catalog.indirection.expects(:cache_class=).never
276
255
 
277
- device.initialize_app_defaults
278
- device.setup
256
+ @device.initialize_app_defaults
257
+ @device.setup
279
258
  end
280
259
 
281
- it "defaults the facts_terminus setting to 'network_device'" do
282
- device.initialize_app_defaults
260
+ it "should default the facts_terminus setting to 'network_device'" do
261
+ @device.initialize_app_defaults
283
262
  expect(Puppet[:facts_terminus]).to eq(:network_device)
284
263
  end
285
264
  end
286
265
 
287
- describe "when initializing SSL" do
288
- context 'with one host' do
289
- it "creates a new ssl host" do
290
- device.setup_host('device.example.com')
266
+ describe "when initializing each devices SSL" do
267
+ before(:each) do
268
+ @host = stub_everything 'host'
269
+ Puppet::SSL::Host.stubs(:new).returns(@host)
270
+ end
291
271
 
292
- expect(Puppet::SSL::Host).to have_received(:new).with('device.example.com', true)
293
- end
272
+ it "should create a new ssl host" do
273
+ Puppet::SSL::Host.expects(:new).returns(@host)
274
+ @device.setup_host('device.example.com')
275
+ end
294
276
 
295
- it "waits for a certificate" do
296
- allow(device.options).to receive(:[]).with(:waitforcert).and_return(123)
277
+ it "should wait for a certificate" do
278
+ @device.options.stubs(:[]).with(:waitforcert).returns(123)
279
+ @host.expects(:wait_for_cert).with(123)
297
280
 
298
- device.setup_host('device.example.com')
299
- expect(ssl_host).to have_received(:wait_for_cert).with(123)
300
- end
281
+ @device.setup_host('device.example.com')
301
282
  end
302
283
  end
303
284
 
304
285
  describe "when running" do
305
- let(:device_hash) { {} }
306
- let(:plugin_handler) { instance_double(Puppet::Configurer::PluginHandler, 'plugin_handler') }
307
-
308
- before do
309
- allow(device.options).to receive(:[]).with(:fingerprint).and_return(false)
310
- allow(Puppet).to receive(:notice)
311
- allow(device.options).to receive(:[]).with(:detailed_exitcodes).and_return(false)
312
- allow(device.options).to receive(:[]).with(:target).and_return(nil)
313
- allow(device.options).to receive(:[]).with(:apply).and_return(nil)
314
- allow(device.options).to receive(:[]).with(:facts).and_return(false)
315
- allow(device.options).to receive(:[]).with(:resource).and_return(false)
316
- allow(device.options).to receive(:[]).with(:to_yaml).and_return(false)
317
- allow(device.options).to receive(:[]).with(:libdir).and_return(nil)
318
- allow(device.options).to receive(:[]).with(:client)
319
- allow(device.command_line).to receive(:args).and_return([])
320
- allow(Puppet::Util::NetworkDevice::Config).to receive(:devices).and_return(device_hash)
321
- allow(Puppet::Configurer::PluginHandler).to receive(:new).and_return(plugin_handler)
286
+ before :each do
287
+ @device.options.stubs(:[]).with(:fingerprint).returns(false)
288
+ Puppet.stubs(:notice)
289
+ @device.options.stubs(:[]).with(:detailed_exitcodes).returns(false)
290
+ @device.options.stubs(:[]).with(:target).returns(nil)
291
+ @device.options.stubs(:[]).with(:apply).returns(nil)
292
+ @device.options.stubs(:[]).with(:facts).returns(false)
293
+ @device.options.stubs(:[]).with(:resource).returns(false)
294
+ @device.options.stubs(:[]).with(:to_yaml).returns(false)
295
+ @device.options.stubs(:[]).with(:libdir).returns(nil)
296
+ @device.options.stubs(:[]).with(:client)
297
+ @device.command_line.stubs(:args).returns([])
298
+ Puppet::Util::NetworkDevice::Config.stubs(:devices).returns({})
322
299
  end
323
300
 
324
- it "dispatches to main" do
325
- allow(device).to receive(:main)
326
- device.run_command
301
+ it "should dispatch to main" do
302
+ @device.stubs(:main)
303
+ @device.run_command
327
304
  end
328
305
 
329
- it "errors if resource is requested without target" do
330
- allow(device.options).to receive(:[]).with(:resource).and_return(true)
331
- expect { device.main }.to raise_error(RuntimeError, "resource command requires target")
306
+ it "should exit if resource is requested without target" do
307
+ @device.options.stubs(:[]).with(:resource).returns(true)
308
+ expect { @device.main }.to raise_error(RuntimeError, "resource command requires target")
332
309
  end
333
310
 
334
- it "errors if facts is requested without target" do
335
- allow(device.options).to receive(:[]).with(:facts).and_return(true)
336
- expect { device.main }.to raise_error(RuntimeError, "facts command requires target")
311
+ it "should exit if facts is requested without target" do
312
+ @device.options.stubs(:[]).with(:facts).returns(true)
313
+ expect { @device.main }.to raise_error(RuntimeError, "facts command requires target")
337
314
  end
338
315
 
339
- it "gets the device list" do
340
- expect(Puppet::Util::NetworkDevice::Config).to receive(:devices).and_return(device_hash)
341
- expect { device.main }.to exit_with 1
316
+ it "should get the device list" do
317
+ device_hash = stub_everything 'device hash'
318
+ Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
319
+ expect { @device.main }.to exit_with 1
342
320
  end
343
321
 
344
- it "errors when an invalid target parameter is passed" do
345
- allow(device.options).to receive(:[]).with(:target).and_return('bla')
346
- expect(Puppet).not_to receive(:info).with(/starting applying configuration to/)
347
- expect { device.main }.to raise_error(RuntimeError, /Target device \/ certificate 'bla' not found in .*\.conf/)
322
+ it "should get a single device, when a valid target parameter is passed" do
323
+ @device.options.stubs(:[]).with(:target).returns('device1')
324
+
325
+ device_hash = {
326
+ "device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
327
+ "device2" => OpenStruct.new(:name => "device2", :url => "https://user:pass@testhost/some/path", :provider => "rest"),
328
+ }
329
+
330
+ Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
331
+ URI.expects(:parse).with("ssh://user:pass@testhost")
332
+ URI.expects(:parse).with("https://user:pass@testhost/some/path").never
333
+ expect { @device.main }.to exit_with 1
348
334
  end
349
335
 
350
- it "errors if target is passed and the apply path is incorrect" do
351
- allow(device.options).to receive(:[]).with(:apply).and_return('file.pp')
352
- allow(device.options).to receive(:[]).with(:target).and_return('device1')
336
+ it "should exit, when an invalid target parameter is passed" do
337
+ @device.options.stubs(:[]).with(:target).returns('bla')
338
+ device_hash = {
339
+ "device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
340
+ }
353
341
 
354
- expect(File).to receive(:file?).and_return(false)
355
- expect { device.main }.to raise_error(RuntimeError, /does not exist, cannot apply/)
342
+ Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
343
+ Puppet.expects(:info).with(regexp_matches(/starting applying configuration to/)).never
344
+ expect { @device.main }.to raise_error(RuntimeError, /Target device \/ certificate 'bla' not found in .*\.conf/)
356
345
  end
357
346
 
358
- it "exits if the device list is empty" do
359
- expect { device.main }.to exit_with 1
347
+ it "should error if target is passed and the apply path is incorrect" do
348
+ @device.options.stubs(:[]).with(:apply).returns('file.pp')
349
+ @device.options.stubs(:[]).with(:target).returns('device1')
350
+
351
+ File.expects(:file?).returns(false)
352
+ expect { @device.main }.to raise_error(RuntimeError, /does not exist, cannot apply/)
360
353
  end
361
354
 
362
- context 'with some devices configured' do
363
- let(:configurer) { instance_double(Puppet::Configurer, 'configurer') }
364
- let(:device_hash) {
365
- {
366
- "device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
367
- "device2" => OpenStruct.new(:name => "device2", :url => "https://user:pass@testhost/some/path", :provider => "rest"),
368
- }
355
+ it "should run an apply, and not create the state folder" do
356
+ @device.options.stubs(:[]).with(:apply).returns('file.pp')
357
+ @device.options.stubs(:[]).with(:target).returns('device1')
358
+ device_hash = {
359
+ "device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
369
360
  }
361
+ Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
362
+ Puppet::Util::NetworkDevice.stubs(:init)
363
+ File.expects(:file?).returns(true)
370
364
 
371
- before do
372
- Puppet[:vardir] = make_absolute("/dummy")
373
- Puppet[:confdir] = make_absolute("/dummy")
374
- Puppet[:certname] = "certname"
365
+ ::File.stubs(:directory?).returns false
366
+ state_path = tmpfile('state')
367
+ Puppet[:statedir] = state_path
368
+ File.expects(:directory?).with(state_path).returns true
369
+ FileUtils.expects(:mkdir_p).with(state_path).never
375
370
 
376
- allow(Puppet).to receive(:[]=)
377
- allow(Puppet.settings).to receive(:use)
371
+ Puppet::Util::CommandLine.expects(:new).once
372
+ Puppet::Application::Apply.expects(:new).once
378
373
 
379
- allow(device).to receive(:setup_host)
380
- allow(Puppet::Util::NetworkDevice).to receive(:init)
374
+ Puppet::Configurer.expects(:new).never
375
+ expect { @device.main }.to exit_with 1
376
+ end
381
377
 
382
- allow(configurer).to receive(:run)
383
- allow(Puppet::Configurer).to receive(:new).and_return(configurer)
378
+ it "should run an apply, and create the state folder" do
379
+ @device.options.stubs(:[]).with(:apply).returns('file.pp')
380
+ @device.options.stubs(:[]).with(:target).returns('device1')
381
+ device_hash = {
382
+ "device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
383
+ }
384
+ Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
385
+ Puppet::Util::NetworkDevice.stubs(:init)
386
+ File.expects(:file?).returns(true)
387
+ FileUtils.expects(:mkdir_p).once
384
388
 
385
- allow(plugin_handler).to receive(:download_plugins)
386
- end
389
+ Puppet::Util::CommandLine.expects(:new).once
390
+ Puppet::Application::Apply.expects(:new).once
387
391
 
388
- it "sets vardir to the device vardir" do
389
- expect(Puppet).to receive(:[]=).with(:vardir, make_absolute("/dummy/devices/device1"))
390
- expect { device.main }.to exit_with 1
391
- end
392
+ Puppet::Configurer.expects(:new).never
393
+ expect { @device.main }.to exit_with 1
394
+ end
392
395
 
393
- it "sets confdir to the device confdir" do
394
- expect(Puppet).to receive(:[]=).with(:confdir, make_absolute("/dummy/devices/device1"))
395
- expect { device.main }.to exit_with 1
396
- end
396
+ it "should exit if the device list is empty" do
397
+ expect { @device.main }.to exit_with 1
398
+ end
397
399
 
398
- it "sets certname to the device certname" do
399
- expect(Puppet).to receive(:[]=).with(:certname, "device1")
400
- expect(Puppet).to receive(:[]=).with(:certname, "device2")
401
- expect { device.main }.to exit_with 1
400
+ describe "for each device" do
401
+ before(:each) do
402
+ Puppet[:vardir] = make_absolute("/dummy")
403
+ Puppet[:confdir] = make_absolute("/dummy")
404
+ Puppet[:certname] = "certname"
405
+ @device_hash = {
406
+ "device1" => OpenStruct.new(:name => "device1", :url => "ssh://user:pass@testhost", :provider => "cisco"),
407
+ "device2" => OpenStruct.new(:name => "device2", :url => "https://user:pass@testhost/some/path", :provider => "rest"),
408
+ }
409
+ Puppet::Util::NetworkDevice::Config.stubs(:devices).returns(@device_hash)
410
+ Puppet.stubs(:[]=)
411
+ Puppet.settings.stubs(:use)
412
+ @device.stubs(:setup_host)
413
+ Puppet::Util::NetworkDevice.stubs(:init)
414
+ @configurer = stub_everything 'configurer'
415
+ Puppet::Configurer.stubs(:new).returns(@configurer)
402
416
  end
403
417
 
404
- context 'with --target=device1' do
405
- it "manages the specified target" do
406
- allow(device.options).to receive(:[]).with(:target).and_return('device1')
407
-
408
- expect(URI).to receive(:parse).with("ssh://user:pass@testhost")
409
- expect(URI).not_to receive(:parse).with("https://user:pass@testhost/some/path")
410
- expect { device.main }.to exit_with 1
411
- end
418
+ it "should set vardir to the device vardir" do
419
+ Puppet.expects(:[]=).with(:vardir, make_absolute("/dummy/devices/device1"))
420
+ expect { @device.main }.to exit_with 1
412
421
  end
413
422
 
414
- context 'when running --resource' do
415
- before do
416
- allow(device.options).to receive(:[]).with(:resource).and_return(true)
417
- allow(device.options).to receive(:[]).with(:target).and_return('device1')
418
- end
423
+ it "should set confdir to the device confdir" do
424
+ Puppet.expects(:[]=).with(:confdir, make_absolute("/dummy/devices/device1"))
425
+ expect { @device.main }.to exit_with 1
426
+ end
419
427
 
420
- it "raises an error if no type is given" do
421
- allow(device.command_line).to receive(:args).and_return([])
422
- expect(Puppet).to receive(:log_exception) { |e| expect(e.message).to eq("You must specify the type to display") }
423
- expect { device.main }.to exit_with 1
424
- end
428
+ it "should set certname to the device certname" do
429
+ Puppet.expects(:[]=).with(:certname, "device1")
430
+ Puppet.expects(:[]=).with(:certname, "device2")
431
+ expect { @device.main }.to exit_with 1
432
+ end
425
433
 
426
- it "raises an error if the type is not found" do
427
- allow(device.command_line).to receive(:args).and_return(['nope'])
428
- expect(Puppet).to receive(:log_exception) { |e| expect(e.message).to eq("Could not find type nope") }
429
- expect { device.main }.to exit_with 1
430
- end
434
+ it "should raise an error if no type is given" do
435
+ @device.options.stubs(:[]).with(:resource).returns(true)
436
+ @device.options.stubs(:[]).with(:target).returns('device1')
437
+ @device.command_line.stubs(:args).returns([])
438
+ Puppet.expects(:log_exception).with {|e| e.message == "You must specify the type to display"}
439
+ expect { @device.main }.to exit_with 1
440
+ end
431
441
 
432
- it "retrieves all resources of a type" do
433
- allow(device.command_line).to receive(:args).and_return(['user'])
434
- expect(Puppet::Resource.indirection).to receive(:search).with('user/', {}).and_return([])
435
- expect { device.main }.to exit_with 0
436
- end
442
+ it "should raise an error if the type is not found" do
443
+ @device.options.stubs(:[]).with(:resource).returns(true)
444
+ @device.options.stubs(:[]).with(:target).returns('device1')
445
+ @device.command_line.stubs(:args).returns(['nope'])
446
+ Puppet.expects(:log_exception).with {|e| e.message == "Could not find type nope"}
447
+ expect { @device.main }.to exit_with 1
448
+ end
437
449
 
438
- it "retrieves named resources of a type" do
439
- resource = Puppet::Type.type(:user).new(:name => "jim").to_resource
440
- allow(device.command_line).to receive(:args).and_return(['user', 'jim'])
441
- expect(Puppet::Resource.indirection).to receive(:find).with('user/jim').and_return(resource)
442
- expect(device).to receive(:puts).with("user { 'jim':\n}")
443
- expect { device.main }.to exit_with 0
444
- end
450
+ it "should retrieve all resources of a type" do
451
+ @device.options.stubs(:[]).with(:resource).returns(true)
452
+ @device.options.stubs(:[]).with(:target).returns('device1')
453
+ @device.command_line.stubs(:args).returns(['user'])
454
+ Puppet::Resource.indirection.expects(:search).with('user/', {}).returns([])
455
+ expect { @device.main }.to exit_with 0
456
+ end
445
457
 
446
- it "outputs resources as YAML" do
447
- resources = [
448
- Puppet::Type.type(:user).new(:name => "title").to_resource,
449
- ]
450
- allow(device.options).to receive(:[]).with(:to_yaml).and_return(true)
451
- allow(device.command_line).to receive(:args).and_return(['user'])
452
- expect(Puppet::Resource.indirection).to receive(:search).with('user/', {}).and_return(resources)
453
- expect(device).to receive(:puts).with("user:\n title:\n")
454
- expect { device.main }.to exit_with 0
455
- end
458
+ it "should retrieve named resources of a type" do
459
+ resource = Puppet::Type.type(:user).new(:name => "jim").to_resource
460
+ @device.options.stubs(:[]).with(:resource).returns(true)
461
+ @device.options.stubs(:[]).with(:target).returns('device1')
462
+ @device.command_line.stubs(:args).returns(['user', 'jim'])
463
+ Puppet::Resource.indirection.expects(:find).with('user/jim').returns(resource)
464
+ @device.expects(:puts).with("user { 'jim':\n}")
465
+ expect { @device.main }.to exit_with 0
456
466
  end
457
467
 
458
- context 'when running --facts' do
459
- before do
460
- allow(device.options).to receive(:[]).with(:facts).and_return(true)
461
- allow(device.options).to receive(:[]).with(:target).and_return('device1')
462
- end
468
+ it "should output resources as YAML" do
469
+ resources = [
470
+ Puppet::Type.type(:user).new(:name => "title").to_resource,
471
+ ]
472
+ @device.options.stubs(:[]).with(:resource).returns(true)
473
+ @device.options.stubs(:[]).with(:target).returns('device1')
474
+ @device.options.stubs(:[]).with(:to_yaml).returns(true)
475
+ @device.command_line.stubs(:args).returns(['user'])
476
+ Puppet::Resource.indirection.expects(:search).with('user/', {}).returns(resources)
477
+ @device.expects(:puts).with("user:\n title:\n")
478
+ expect { @device.main }.to exit_with 0
479
+ end
463
480
 
464
- it "retrieves facts" do
465
- indirection_fact_values = {"operatingsystem"=>"cisco_ios","clientcert"=>"3750"}
466
- indirection_facts = Puppet::Node::Facts.new("nil", indirection_fact_values)
467
- expect(Puppet::Node::Facts.indirection).to receive(:find).with(nil, anything()).and_return(indirection_facts)
468
- expect(device).to receive(:puts).with(/name.*3750.*\n.*values.*\n.*operatingsystem.*cisco_ios/)
469
- expect { device.main }.to exit_with 0
470
- end
481
+ it "should retrieve facts" do
482
+ indirection_fact_values = {"operatingsystem"=>"cisco_ios","clientcert"=>"3750"}
483
+ indirection_facts = Puppet::Node::Facts.new("nil", indirection_fact_values)
484
+ @device.options.stubs(:[]).with(:facts).returns(true)
485
+ @device.options.stubs(:[]).with(:target).returns('device1')
486
+ Puppet::Node::Facts.indirection.expects(:find).with(nil, anything()).returns(indirection_facts)
487
+ @device.expects(:puts).with(regexp_matches(/name.*3750.*\n.*values.*\n.*operatingsystem.*cisco_ios/))
488
+ expect { @device.main }.to exit_with 0
471
489
  end
472
490
 
473
- context 'when running in agent mode' do
474
- it "makes sure all the required folders and files are created" do
475
- expect(Puppet.settings).to receive(:use).with(:main, :agent, :ssl).twice
476
- expect { device.main }.to exit_with 1
477
- end
491
+ it "should make sure all the required folders and files are created" do
492
+ Puppet.settings.expects(:use).with(:main, :agent, :ssl).twice
493
+ expect { @device.main }.to exit_with 1
494
+ end
478
495
 
479
- it "initializes the device singleton" do
480
- expect(Puppet::Util::NetworkDevice).to receive(:init).with(device_hash["device1"]).ordered
481
- expect(Puppet::Util::NetworkDevice).to receive(:init).with(device_hash["device2"]).ordered
482
- expect { device.main }.to exit_with 1
483
- end
496
+ it "should initialize the device singleton" do
497
+ Puppet::Util::NetworkDevice.expects(:init).with(@device_hash["device1"]).then.with(@device_hash["device2"])
498
+ expect { @device.main }.to exit_with 1
499
+ end
484
500
 
485
- it "retrieves plugins and print the device url scheme, host, and port" do
486
- allow(Puppet).to receive(:info)
487
- expect(plugin_handler).to receive(:download_plugins).twice
488
- expect(Puppet).to receive(:info).with("starting applying configuration to device1 at ssh://testhost")
489
- expect(Puppet).to receive(:info).with("starting applying configuration to device2 at https://testhost:443/some/path")
490
- expect { device.main }.to exit_with 1
491
- end
501
+ it "should retrieve plugins and print the device url scheme, host, and port" do
502
+ Puppet.stubs(:info)
503
+ Puppet.expects(:info).with "Retrieving pluginfacts"
504
+ Puppet.expects(:info).with "starting applying configuration to device1 at ssh://testhost"
505
+ Puppet.expects(:info).with "starting applying configuration to device2 at https://testhost:443/some/path"
506
+ expect { @device.main }.to exit_with 1
507
+ end
492
508
 
493
- it "setups the SSL context before pluginsync" do
494
- expect(device).to receive(:setup_host).ordered
495
- expect(plugin_handler).to receive(:download_plugins).ordered
496
- expect(device).to receive(:setup_host).ordered
497
- expect(plugin_handler).to receive(:download_plugins).ordered
498
- expect { device.main }.to exit_with 1
499
- end
509
+ it "should setup the SSL context" do
510
+ @device.expects(:setup_host).twice
511
+ expect { @device.main }.to exit_with 1
512
+ end
500
513
 
501
- it "launches a configurer for this device" do
502
- expect(configurer).to receive(:run).twice
503
- expect { device.main }.to exit_with 1
504
- end
514
+ it "should launch a configurer for this device" do
515
+ @configurer.expects(:run).twice
516
+ expect { @device.main }.to exit_with 1
517
+ end
505
518
 
506
- it "exits 1 when configurer raises error" do
507
- expect(configurer).to receive(:run).and_raise(Puppet::Error).ordered
508
- expect(configurer).to receive(:run).and_return(0).ordered
509
- expect { device.main }.to exit_with 1
510
- end
519
+ it "exits 1 when configurer raises error" do
520
+ @configurer.stubs(:run).raises(Puppet::Error).then.returns(0)
521
+ expect { @device.main }.to exit_with 1
522
+ end
511
523
 
512
- it "exits 0 when run happens without puppet errors but with failed run" do
513
- allow(configurer).to receive(:run).and_return(6, 2)
514
- expect { device.main }.to exit_with 0
515
- end
524
+ it "exits 0 when run happens without puppet errors but with failed run" do
525
+ @configurer.stubs(:run).returns(6,2)
526
+ expect { @device.main }.to exit_with 0
527
+ end
516
528
 
517
- it "makes the Puppet::Pops::Loaders available" do
518
- expect(configurer).to receive(:run).with(:network_device => true, :pluginsync => false) do
519
- fail('Loaders not available') unless Puppet.lookup(:loaders) { nil }.is_a?(Puppet::Pops::Loaders)
520
- true
521
- end.and_return(6, 2)
522
- expect { device.main }.to exit_with 0
523
- end
529
+ it "should make the Puppet::Pops::Loaaders available" do
530
+ @configurer.expects(:run).with(:network_device => true, :pluginsync => true) do
531
+ fail('Loaders not available') unless Puppet.lookup(:loaders) { nil }.is_a?(Puppet::Pops::Loaders)
532
+ true
533
+ end.at_least_once.returns(6,2)
534
+ expect { @device.main }.to exit_with 0
535
+ end
524
536
 
525
- it "exits 2 when --detailed-exitcodes and successful runs" do
526
- allow(device.options).to receive(:[]).with(:detailed_exitcodes).and_return(true)
527
- allow(configurer).to receive(:run).and_return(0, 2)
528
- expect { device.main }.to exit_with 2
529
- end
537
+ it "exits 2 when --detailed-exitcodes and successful runs" do
538
+ @device.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
539
+ @configurer.stubs(:run).returns(0,2)
540
+ expect { @device.main }.to exit_with 2
541
+ end
530
542
 
531
- it "exits 1 when --detailed-exitcodes and failed parse" do
532
- allow(Puppet::Configurer).to receive(:new).and_return(configurer)
533
- allow(device.options).to receive(:[]).with(:detailed_exitcodes).and_return(true)
534
- allow(configurer).to receive(:run).and_return(6, 1)
535
- expect { device.main }.to exit_with 7
536
- end
543
+ it "exits 1 when --detailed-exitcodes and failed parse" do
544
+ @configurer = stub_everything 'configurer'
545
+ Puppet::Configurer.stubs(:new).returns(@configurer)
546
+ @device.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
547
+ @configurer.stubs(:run).returns(6,1)
548
+ expect { @device.main }.to exit_with 7
549
+ end
537
550
 
538
- it "exits 6 when --detailed-exitcodes and failed run" do
539
- allow(Puppet::Configurer).to receive(:new).and_return(configurer)
540
- allow(device.options).to receive(:[]).with(:detailed_exitcodes).and_return(true)
541
- allow(configurer).to receive(:run).and_return(6, 2)
542
- expect { device.main }.to exit_with 6
543
- end
551
+ it "exits 6 when --detailed-exitcodes and failed run" do
552
+ @configurer = stub_everything 'configurer'
553
+ Puppet::Configurer.stubs(:new).returns(@configurer)
554
+ @device.options.stubs(:[]).with(:detailed_exitcodes).returns(true)
555
+ @configurer.stubs(:run).returns(6,2)
556
+ expect { @device.main }.to exit_with 6
557
+ end
544
558
 
545
- [:vardir, :confdir].each do |setting|
546
- it "resets the #{setting} setting after the run" do
547
- all_devices = Set.new(device_hash.keys.map do |device_name| make_absolute("/dummy/devices/#{device_name}") end)
548
- found_devices = Set.new()
559
+ [:vardir, :confdir].each do |setting|
560
+ it "should cleanup the #{setting} setting after the run" do
561
+ all_devices = Set.new(@device_hash.keys.map do |device_name| make_absolute("/dummy/devices/#{device_name}") end)
562
+ found_devices = Set.new()
549
563
 
550
- # a block to use in a few places later to validate the updated settings
551
- p = Proc.new do |my_setting, my_value|
552
- expect(all_devices).to include(my_value)
564
+ # a block to use in a few places later to validate the updated settings
565
+ p = Proc.new do |my_setting, my_value|
566
+ if my_setting == setting && all_devices.include?(my_value)
553
567
  found_devices.add(my_value)
568
+ true
569
+ else
570
+ false
554
571
  end
572
+ end
555
573
 
556
- all_devices.size.times do
557
- ## one occurrence of set / run / set("/dummy") for each device
558
- expect(Puppet).to receive(:[]=, &p).with(setting, anything).ordered
559
- expect(configurer).to receive(:run).ordered
560
- expect(Puppet).to receive(:[]=).with(setting, make_absolute("/dummy")).ordered
561
- end
562
-
563
- expect { device.main }.to exit_with 1
574
+ seq = sequence("clean up dirs")
564
575
 
565
- expect(found_devices).to eq(all_devices)
576
+ all_devices.size.times do
577
+ ## one occurrence of set / run / set("/dummy") for each device
578
+ Puppet.expects(:[]=).with(&p).in_sequence(seq)
579
+ @configurer.expects(:run).in_sequence(seq)
580
+ Puppet.expects(:[]=).with(setting, make_absolute("/dummy")).in_sequence(seq)
566
581
  end
582
+
583
+ expect { @device.main }.to exit_with 1
584
+
585
+ expect(found_devices).to eq(all_devices)
567
586
  end
587
+ end
568
588
 
569
- it "resets the certname setting after the run" do
570
- all_devices = Set.new(device_hash.keys)
571
- found_devices = Set.new()
589
+ it "should cleanup the certname setting after the run" do
590
+ all_devices = Set.new(@device_hash.keys)
591
+ found_devices = Set.new()
572
592
 
573
- # a block to use in a few places later to validate the updated settings
574
- p = Proc.new do |my_setting, my_value|
575
- expect(all_devices).to include(my_value)
593
+ # a block to use in a few places later to validate the updated settings
594
+ p = Proc.new do |my_setting, my_value|
595
+ if my_setting == :certname && all_devices.include?(my_value)
576
596
  found_devices.add(my_value)
597
+ true
598
+ else
599
+ false
577
600
  end
601
+ end
578
602
 
579
- allow(Puppet).to receive(:[]=)
580
- all_devices.size.times do
581
- ## one occurrence of set / run / set("certname") for each device
582
- expect(Puppet).to receive(:[]=, &p).with(:certname, anything).ordered
583
- expect(configurer).to receive(:run).ordered
584
- expect(Puppet).to receive(:[]=).with(:certname, "certname").ordered
585
- end
603
+ seq = sequence("clean up certname")
586
604
 
605
+ all_devices.size.times do
606
+ ## one occurrence of set / run / set("certname") for each device
607
+ Puppet.expects(:[]=).with(&p).in_sequence(seq)
608
+ @configurer.expects(:run).in_sequence(seq)
609
+ Puppet.expects(:[]=).with(:certname, "certname").in_sequence(seq)
610
+ end
587
611
 
588
- expect { device.main }.to exit_with 1
589
612
 
590
- # make sure that we were called with each of the defined devices
591
- expect(found_devices).to eq(all_devices)
592
- end
613
+ expect { @device.main }.to exit_with 1
593
614
 
594
- it "expires all cached attributes" do
595
- expect(Puppet::SSL::Host).to receive(:reset).twice
615
+ # make sure that we were called with each of the defined devices
616
+ expect(found_devices).to eq(all_devices)
617
+ end
596
618
 
597
- expect { device.main }.to exit_with 1
598
- end
619
+ it "should expire all cached attributes" do
620
+ Puppet::SSL::Host.expects(:reset).twice
621
+
622
+ expect { @device.main }.to exit_with 1
599
623
  end
600
624
  end
601
625
  end