puppet 6.0.7-universal-darwin → 6.0.8-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 (632) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/Gemfile.lock +4 -8
  4. data/lib/puppet/application/device.rb +99 -83
  5. data/lib/puppet/application/filebucket.rb +4 -0
  6. data/lib/puppet/configurer.rb +5 -4
  7. data/lib/puppet/defaults.rb +31 -11
  8. data/lib/puppet/indirector/request.rb +26 -15
  9. data/lib/puppet/network/http/connection.rb +15 -7
  10. data/lib/puppet/transaction/event_manager.rb +1 -5
  11. data/lib/puppet/type/file/source.rb +0 -1
  12. data/lib/puppet/util/connection.rb +15 -6
  13. data/lib/puppet/util/http_proxy.rb +3 -2
  14. data/lib/puppet/version.rb +1 -1
  15. data/locales/puppet.pot +99 -40
  16. data/man/man5/puppet.conf.5 +8 -8
  17. data/man/man8/puppet-agent.8 +1 -1
  18. data/man/man8/puppet-apply.8 +1 -1
  19. data/man/man8/puppet-catalog.8 +1 -1
  20. data/man/man8/puppet-config.8 +1 -1
  21. data/man/man8/puppet-describe.8 +1 -1
  22. data/man/man8/puppet-device.8 +1 -1
  23. data/man/man8/puppet-doc.8 +1 -1
  24. data/man/man8/puppet-epp.8 +1 -1
  25. data/man/man8/puppet-facts.8 +1 -1
  26. data/man/man8/puppet-filebucket.8 +1 -1
  27. data/man/man8/puppet-generate.8 +1 -1
  28. data/man/man8/puppet-help.8 +1 -1
  29. data/man/man8/puppet-key.8 +1 -1
  30. data/man/man8/puppet-lookup.8 +1 -1
  31. data/man/man8/puppet-man.8 +1 -1
  32. data/man/man8/puppet-module.8 +1 -1
  33. data/man/man8/puppet-node.8 +1 -1
  34. data/man/man8/puppet-parser.8 +1 -1
  35. data/man/man8/puppet-plugin.8 +1 -1
  36. data/man/man8/puppet-report.8 +1 -1
  37. data/man/man8/puppet-resource.8 +1 -1
  38. data/man/man8/puppet-script.8 +1 -1
  39. data/man/man8/puppet-ssl.8 +1 -1
  40. data/man/man8/puppet-status.8 +1 -1
  41. data/man/man8/puppet.8 +2 -2
  42. data/spec/integration/agent/logging_spec.rb +5 -7
  43. data/spec/integration/application/apply_spec.rb +18 -16
  44. data/spec/integration/application/doc_spec.rb +1 -2
  45. data/spec/integration/application/lookup_spec.rb +5 -5
  46. data/spec/integration/configurer_spec.rb +5 -6
  47. data/spec/integration/defaults_spec.rb +5 -6
  48. data/spec/integration/directory_environments_spec.rb +1 -1
  49. data/spec/integration/faces/config_spec.rb +3 -4
  50. data/spec/integration/faces/documentation_spec.rb +0 -1
  51. data/spec/integration/faces/plugin_spec.rb +1 -1
  52. data/spec/integration/file_bucket/file_spec.rb +2 -4
  53. data/spec/integration/file_serving/content_spec.rb +0 -1
  54. data/spec/integration/file_serving/fileset_spec.rb +0 -1
  55. data/spec/integration/file_serving/metadata_spec.rb +0 -1
  56. data/spec/integration/file_serving/terminus_helper_spec.rb +0 -1
  57. data/spec/integration/indirector/catalog/compiler_spec.rb +10 -11
  58. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  59. data/spec/integration/indirector/facts/facter_spec.rb +4 -5
  60. data/spec/integration/indirector/file_content/file_server_spec.rb +7 -8
  61. data/spec/integration/indirector/file_metadata/file_server_spec.rb +7 -8
  62. data/spec/integration/network/authconfig_spec.rb +23 -24
  63. data/spec/integration/network/formats_spec.rb +0 -1
  64. data/spec/integration/node/environment_spec.rb +0 -1
  65. data/spec/integration/node/facts_spec.rb +9 -10
  66. data/spec/integration/node_spec.rb +6 -7
  67. data/spec/integration/parser/catalog_spec.rb +1 -5
  68. data/spec/integration/parser/collection_spec.rb +1 -2
  69. data/spec/integration/parser/compiler_spec.rb +6 -6
  70. data/spec/integration/parser/scope_spec.rb +1 -1
  71. data/spec/integration/parser/undef_param_spec.rb +1 -1
  72. data/spec/integration/provider/service/init_spec.rb +4 -5
  73. data/spec/integration/provider/service/systemd_spec.rb +0 -2
  74. data/spec/integration/provider/service/windows_spec.rb +1 -2
  75. data/spec/integration/reference/providers_spec.rb +1 -2
  76. data/spec/integration/reports_spec.rb +1 -2
  77. data/spec/integration/resource/catalog_spec.rb +14 -17
  78. data/spec/integration/resource/type_collection_spec.rb +4 -5
  79. data/spec/integration/ssl/certificate_request_spec.rb +0 -1
  80. data/spec/integration/ssl/host_spec.rb +1 -2
  81. data/spec/integration/ssl/key_spec.rb +0 -1
  82. data/spec/integration/test/test_helper_spec.rb +0 -1
  83. data/spec/integration/transaction/report_spec.rb +6 -11
  84. data/spec/integration/transaction_spec.rb +18 -19
  85. data/spec/integration/type/exec_spec.rb +0 -1
  86. data/spec/integration/type/file_spec.rb +13 -14
  87. data/spec/integration/type/package_spec.rb +19 -23
  88. data/spec/integration/type/tidy_spec.rb +1 -2
  89. data/spec/integration/type_spec.rb +0 -1
  90. data/spec/integration/util/autoload_spec.rb +1 -2
  91. data/spec/integration/util/rdoc/parser_spec.rb +0 -1
  92. data/spec/integration/util/settings_spec.rb +0 -1
  93. data/spec/integration/util/windows/adsi_spec.rb +3 -5
  94. data/spec/integration/util/windows/principal_spec.rb +0 -1
  95. data/spec/integration/util/windows/process_spec.rb +4 -6
  96. data/spec/integration/util/windows/registry_spec.rb +41 -51
  97. data/spec/integration/util/windows/security_spec.rb +2 -4
  98. data/spec/integration/util/windows/user_spec.rb +18 -20
  99. data/spec/integration/util_spec.rb +4 -7
  100. data/spec/lib/puppet_spec/compiler.rb +1 -1
  101. data/spec/lib/puppet_spec/files.rb +0 -1
  102. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
  103. data/spec/lib/puppet_spec/scope.rb +1 -2
  104. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  105. data/spec/shared_behaviours/file_server_terminus.rb +8 -9
  106. data/spec/shared_behaviours/file_serving.rb +6 -8
  107. data/spec/shared_behaviours/file_serving_model.rb +3 -5
  108. data/spec/shared_behaviours/hiera_indirections.rb +3 -4
  109. data/spec/shared_behaviours/iterative_functions.rb +0 -1
  110. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  111. data/spec/shared_examples/rhel_package_provider.rb +112 -70
  112. data/spec/spec_helper.rb +10 -1
  113. data/spec/unit/agent/disabler_spec.rb +4 -5
  114. data/spec/unit/agent/locker_spec.rb +12 -13
  115. data/spec/unit/agent_spec.rb +80 -85
  116. data/spec/unit/application/agent_spec.rb +88 -93
  117. data/spec/unit/application/apply_spec.rb +82 -83
  118. data/spec/unit/application/config_spec.rb +0 -1
  119. data/spec/unit/application/describe_spec.rb +6 -7
  120. data/spec/unit/application/device_spec.rb +395 -419
  121. data/spec/unit/application/doc_spec.rb +44 -46
  122. data/spec/unit/application/face_base_spec.rb +61 -62
  123. data/spec/unit/application/facts_spec.rb +3 -4
  124. data/spec/unit/application/filebucket_spec.rb +66 -74
  125. data/spec/unit/application/indirection_base_spec.rb +8 -6
  126. data/spec/unit/application/lookup_spec.rb +26 -26
  127. data/spec/unit/application/resource_spec.rb +42 -48
  128. data/spec/unit/application/ssl_spec.rb +3 -3
  129. data/spec/unit/application_spec.rb +82 -92
  130. data/spec/unit/capability_spec.rb +6 -6
  131. data/spec/unit/certificate_factory_spec.rb +3 -5
  132. data/spec/unit/configurer/downloader_spec.rb +20 -21
  133. data/spec/unit/configurer/fact_handler_spec.rb +2 -3
  134. data/spec/unit/configurer/plugin_handler_spec.rb +41 -8
  135. data/spec/unit/configurer_spec.rb +189 -192
  136. data/spec/unit/confine/exists_spec.rb +17 -15
  137. data/spec/unit/confine/false_spec.rb +5 -6
  138. data/spec/unit/confine/feature_spec.rb +7 -5
  139. data/spec/unit/confine/true_spec.rb +5 -6
  140. data/spec/unit/confine/variable_spec.rb +14 -15
  141. data/spec/unit/confine_collection_spec.rb +28 -29
  142. data/spec/unit/confine_spec.rb +13 -14
  143. data/spec/unit/confiner_spec.rb +10 -11
  144. data/spec/unit/context/trusted_information_spec.rb +1 -1
  145. data/spec/unit/daemon_spec.rb +35 -36
  146. data/spec/unit/data_providers/function_data_provider_spec.rb +0 -1
  147. data/spec/unit/data_providers/hiera_data_provider_spec.rb +0 -1
  148. data/spec/unit/datatypes_spec.rb +3 -4
  149. data/spec/unit/defaults_spec.rb +18 -13
  150. data/spec/unit/environments_spec.rb +7 -7
  151. data/spec/unit/etc_spec.rb +30 -32
  152. data/spec/unit/external/pson_spec.rb +0 -1
  153. data/spec/unit/face/catalog_spec.rb +0 -1
  154. data/spec/unit/face/config_spec.rb +31 -35
  155. data/spec/unit/face/epp_face_spec.rb +3 -4
  156. data/spec/unit/face/facts_spec.rb +5 -6
  157. data/spec/unit/face/generate_spec.rb +4 -5
  158. data/spec/unit/face/help_spec.rb +7 -8
  159. data/spec/unit/face/key_spec.rb +0 -1
  160. data/spec/unit/face/man_spec.rb +1 -2
  161. data/spec/unit/face/module/install_spec.rb +3 -5
  162. data/spec/unit/face/module/list_spec.rb +2 -12
  163. data/spec/unit/face/module/search_spec.rb +11 -9
  164. data/spec/unit/face/module/uninstall_spec.rb +4 -8
  165. data/spec/unit/face/node_spec.rb +23 -24
  166. data/spec/unit/face/parser_spec.rb +3 -3
  167. data/spec/unit/face/plugin_spec.rb +36 -9
  168. data/spec/unit/face/status_spec.rb +0 -1
  169. data/spec/unit/file_bucket/dipper_spec.rb +24 -20
  170. data/spec/unit/file_bucket/file_spec.rb +0 -2
  171. data/spec/unit/file_serving/base_spec.rb +14 -15
  172. data/spec/unit/file_serving/configuration/parser_spec.rb +27 -28
  173. data/spec/unit/file_serving/configuration_spec.rb +63 -66
  174. data/spec/unit/file_serving/content_spec.rb +10 -11
  175. data/spec/unit/file_serving/fileset_spec.rb +63 -58
  176. data/spec/unit/file_serving/http_metadata_spec.rb +8 -7
  177. data/spec/unit/file_serving/metadata_spec.rb +36 -36
  178. data/spec/unit/file_serving/mount/file_spec.rb +31 -32
  179. data/spec/unit/file_serving/mount/locales_spec.rb +23 -24
  180. data/spec/unit/file_serving/mount/modules_spec.rb +14 -15
  181. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +23 -24
  182. data/spec/unit/file_serving/mount/plugins_spec.rb +23 -24
  183. data/spec/unit/file_serving/mount/tasks_spec.rb +14 -15
  184. data/spec/unit/file_serving/mount_spec.rb +0 -1
  185. data/spec/unit/file_serving/terminus_helper_spec.rb +37 -42
  186. data/spec/unit/file_serving/terminus_selector_spec.rb +12 -13
  187. data/spec/unit/file_system/uniquefile_spec.rb +4 -4
  188. data/spec/unit/file_system_spec.rb +2 -2
  189. data/spec/unit/forge/errors_spec.rb +1 -1
  190. data/spec/unit/forge/forge_spec.rb +13 -14
  191. data/spec/unit/forge/module_release_spec.rb +18 -18
  192. data/spec/unit/forge/repository_spec.rb +29 -30
  193. data/spec/unit/forge_spec.rb +15 -11
  194. data/spec/unit/functions/binary_file_spec.rb +3 -3
  195. data/spec/unit/functions/contain_spec.rb +0 -2
  196. data/spec/unit/functions/defined_spec.rb +0 -1
  197. data/spec/unit/functions/epp_spec.rb +2 -2
  198. data/spec/unit/functions/find_file_spec.rb +7 -7
  199. data/spec/unit/functions/include_spec.rb +0 -4
  200. data/spec/unit/functions/lookup_fixture_spec.rb +0 -1
  201. data/spec/unit/functions/lookup_spec.rb +1 -2
  202. data/spec/unit/functions/module_directory_spec.rb +12 -12
  203. data/spec/unit/functions/require_spec.rb +0 -3
  204. data/spec/unit/functions/shared.rb +5 -8
  205. data/spec/unit/functions/versioncmp_spec.rb +1 -2
  206. data/spec/unit/functions4_spec.rb +9 -10
  207. data/spec/unit/gettext/config_spec.rb +4 -4
  208. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  209. data/spec/unit/graph/rb_tree_map_spec.rb +0 -2
  210. data/spec/unit/graph/relationship_graph_spec.rb +1 -2
  211. data/spec/unit/graph/simple_graph_spec.rb +9 -10
  212. data/spec/unit/hiera_puppet_spec.rb +20 -20
  213. data/spec/unit/indirector/catalog/compiler_spec.rb +147 -149
  214. data/spec/unit/indirector/catalog/json_spec.rb +1 -2
  215. data/spec/unit/indirector/catalog/msgpack_spec.rb +0 -1
  216. data/spec/unit/indirector/catalog/rest_spec.rb +0 -1
  217. data/spec/unit/indirector/catalog/store_configs_spec.rb +0 -1
  218. data/spec/unit/indirector/catalog/yaml_spec.rb +0 -1
  219. data/spec/unit/indirector/certificate/file_spec.rb +0 -1
  220. data/spec/unit/indirector/certificate/rest_spec.rb +8 -10
  221. data/spec/unit/indirector/certificate_request/file_spec.rb +0 -1
  222. data/spec/unit/indirector/certificate_request/rest_spec.rb +0 -1
  223. data/spec/unit/indirector/direct_file_server_spec.rb +17 -18
  224. data/spec/unit/indirector/envelope_spec.rb +1 -2
  225. data/spec/unit/indirector/exec_spec.rb +4 -5
  226. data/spec/unit/indirector/face_spec.rb +9 -9
  227. data/spec/unit/indirector/facts/facter_spec.rb +37 -43
  228. data/spec/unit/indirector/facts/network_device_spec.rb +8 -9
  229. data/spec/unit/indirector/facts/rest_spec.rb +7 -8
  230. data/spec/unit/indirector/facts/store_configs_spec.rb +0 -1
  231. data/spec/unit/indirector/facts/yaml_spec.rb +0 -1
  232. data/spec/unit/indirector/file_bucket_file/file_spec.rb +3 -4
  233. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +0 -1
  234. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +4 -5
  235. data/spec/unit/indirector/file_content/file_server_spec.rb +0 -1
  236. data/spec/unit/indirector/file_content/file_spec.rb +0 -1
  237. data/spec/unit/indirector/file_content/rest_spec.rb +0 -1
  238. data/spec/unit/indirector/file_content/selector_spec.rb +0 -1
  239. data/spec/unit/indirector/file_metadata/file_server_spec.rb +0 -1
  240. data/spec/unit/indirector/file_metadata/file_spec.rb +12 -13
  241. data/spec/unit/indirector/file_metadata/rest_spec.rb +0 -1
  242. data/spec/unit/indirector/file_metadata/selector_spec.rb +0 -1
  243. data/spec/unit/indirector/file_server_spec.rb +87 -87
  244. data/spec/unit/indirector/indirection_spec.rb +242 -226
  245. data/spec/unit/indirector/json_spec.rb +7 -9
  246. data/spec/unit/indirector/key/file_spec.rb +21 -22
  247. data/spec/unit/indirector/memory_spec.rb +6 -7
  248. data/spec/unit/indirector/msgpack_spec.rb +7 -9
  249. data/spec/unit/indirector/node/exec_spec.rb +2 -3
  250. data/spec/unit/indirector/node/memory_spec.rb +2 -4
  251. data/spec/unit/indirector/node/msgpack_spec.rb +0 -1
  252. data/spec/unit/indirector/node/plain_spec.rb +2 -4
  253. data/spec/unit/indirector/node/rest_spec.rb +0 -1
  254. data/spec/unit/indirector/node/store_configs_spec.rb +0 -1
  255. data/spec/unit/indirector/node/yaml_spec.rb +0 -1
  256. data/spec/unit/indirector/none_spec.rb +5 -5
  257. data/spec/unit/indirector/plain_spec.rb +7 -8
  258. data/spec/unit/indirector/report/msgpack_spec.rb +0 -1
  259. data/spec/unit/indirector/report/processor_spec.rb +21 -22
  260. data/spec/unit/indirector/report/rest_spec.rb +11 -12
  261. data/spec/unit/indirector/report/yaml_spec.rb +0 -1
  262. data/spec/unit/indirector/request_spec.rb +11 -12
  263. data/spec/unit/indirector/resource/ral_spec.rb +46 -54
  264. data/spec/unit/indirector/resource/store_configs_spec.rb +0 -1
  265. data/spec/unit/indirector/rest_spec.rb +113 -110
  266. data/spec/unit/indirector/ssl_file_spec.rb +64 -65
  267. data/spec/unit/indirector/status/local_spec.rb +0 -1
  268. data/spec/unit/indirector/status/rest_spec.rb +0 -1
  269. data/spec/unit/indirector/store_configs_spec.rb +0 -1
  270. data/spec/unit/indirector/terminus_spec.rb +27 -27
  271. data/spec/unit/indirector/yaml_spec.rb +5 -6
  272. data/spec/unit/indirector_spec.rb +1 -2
  273. data/spec/unit/info_service_spec.rb +1 -1
  274. data/spec/unit/interface/action_builder_spec.rb +0 -1
  275. data/spec/unit/interface/action_manager_spec.rb +0 -1
  276. data/spec/unit/interface/action_spec.rb +2 -3
  277. data/spec/unit/interface/documentation_spec.rb +0 -1
  278. data/spec/unit/interface/face_collection_spec.rb +19 -12
  279. data/spec/unit/interface_spec.rb +3 -3
  280. data/spec/unit/man_spec.rb +3 -4
  281. data/spec/unit/module_spec.rb +46 -51
  282. data/spec/unit/module_tool/applications/installer_spec.rb +10 -11
  283. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  284. data/spec/unit/module_tool/applications/uninstaller_spec.rb +1 -2
  285. data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
  286. data/spec/unit/module_tool/applications/upgrader_spec.rb +5 -5
  287. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  288. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  289. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  290. data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
  291. data/spec/unit/module_tool/tar_spec.rb +12 -13
  292. data/spec/unit/module_tool_spec.rb +7 -12
  293. data/spec/unit/network/auth_config_parser_spec.rb +11 -13
  294. data/spec/unit/network/authconfig_spec.rb +17 -18
  295. data/spec/unit/network/authorization_spec.rb +4 -5
  296. data/spec/unit/network/authstore_spec.rb +0 -1
  297. data/spec/unit/network/format_handler_spec.rb +0 -1
  298. data/spec/unit/network/format_spec.rb +9 -10
  299. data/spec/unit/network/format_support_spec.rb +28 -29
  300. data/spec/unit/network/formats_spec.rb +4 -5
  301. data/spec/unit/network/http/api/indirected_routes_spec.rb +24 -29
  302. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +2 -2
  303. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -1
  304. data/spec/unit/network/http/api/master/v3/environments_spec.rb +6 -7
  305. data/spec/unit/network/http/api_spec.rb +0 -2
  306. data/spec/unit/network/http/compression_spec.rb +21 -22
  307. data/spec/unit/network/http/connection_spec.rb +41 -36
  308. data/spec/unit/network/http/factory_spec.rb +5 -6
  309. data/spec/unit/network/http/handler_spec.rb +9 -18
  310. data/spec/unit/network/http/nocache_pool_spec.rb +6 -7
  311. data/spec/unit/network/http/pool_spec.rb +28 -29
  312. data/spec/unit/network/http/request_spec.rb +0 -2
  313. data/spec/unit/network/http/response_spec.rb +11 -13
  314. data/spec/unit/network/http/route_spec.rb +0 -1
  315. data/spec/unit/network/http/session_spec.rb +1 -2
  316. data/spec/unit/network/http/site_spec.rb +0 -1
  317. data/spec/unit/network/http_pool_spec.rb +18 -9
  318. data/spec/unit/network/http_spec.rb +0 -1
  319. data/spec/unit/network/resolver_spec.rb +25 -26
  320. data/spec/unit/network/rights_spec.rb +52 -53
  321. data/spec/unit/node/environment_spec.rb +14 -15
  322. data/spec/unit/node/facts_spec.rb +5 -7
  323. data/spec/unit/node_spec.rb +4 -10
  324. data/spec/unit/other/selinux_spec.rb +0 -1
  325. data/spec/unit/parameter/boolean_spec.rb +1 -2
  326. data/spec/unit/parameter/package_options_spec.rb +1 -2
  327. data/spec/unit/parameter/path_spec.rb +0 -1
  328. data/spec/unit/parameter/value_collection_spec.rb +0 -1
  329. data/spec/unit/parameter/value_spec.rb +0 -1
  330. data/spec/unit/parameter_spec.rb +9 -9
  331. data/spec/unit/parser/ast/block_expression_spec.rb +6 -8
  332. data/spec/unit/parser/ast/leaf_spec.rb +20 -21
  333. data/spec/unit/parser/compiler_spec.rb +84 -96
  334. data/spec/unit/parser/environment_compiler_spec.rb +7 -8
  335. data/spec/unit/parser/files_spec.rb +0 -1
  336. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  337. data/spec/unit/parser/functions/digest_spec.rb +0 -1
  338. data/spec/unit/parser/functions/fail_spec.rb +1 -2
  339. data/spec/unit/parser/functions/file_spec.rb +13 -14
  340. data/spec/unit/parser/functions/fqdn_rand_spec.rb +5 -6
  341. data/spec/unit/parser/functions/generate_spec.rb +7 -8
  342. data/spec/unit/parser/functions/inline_template_spec.rb +0 -1
  343. data/spec/unit/parser/functions/regsubst_spec.rb +0 -1
  344. data/spec/unit/parser/functions/scanf_spec.rb +0 -1
  345. data/spec/unit/parser/functions/shellquote_spec.rb +0 -1
  346. data/spec/unit/parser/functions/split_spec.rb +0 -1
  347. data/spec/unit/parser/functions/sprintf_spec.rb +0 -1
  348. data/spec/unit/parser/functions/tag_spec.rb +1 -2
  349. data/spec/unit/parser/functions/tagged_spec.rb +2 -3
  350. data/spec/unit/parser/functions/template_spec.rb +13 -13
  351. data/spec/unit/parser/functions/versioncmp_spec.rb +1 -2
  352. data/spec/unit/parser/functions_spec.rb +6 -7
  353. data/spec/unit/parser/relationship_spec.rb +0 -1
  354. data/spec/unit/parser/resource_spec.rb +42 -42
  355. data/spec/unit/parser/scope_spec.rb +39 -35
  356. data/spec/unit/parser/templatewrapper_spec.rb +11 -12
  357. data/spec/unit/parser/type_loader_spec.rb +17 -19
  358. data/spec/unit/pops/adaptable_spec.rb +0 -1
  359. data/spec/unit/pops/benchmark_spec.rb +0 -1
  360. data/spec/unit/pops/evaluator/access_ops_spec.rb +0 -1
  361. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +0 -1
  362. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +0 -1
  363. data/spec/unit/pops/evaluator/collections_ops_spec.rb +0 -1
  364. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +0 -1
  365. data/spec/unit/pops/evaluator/conditionals_spec.rb +0 -1
  366. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +10 -11
  367. data/spec/unit/pops/evaluator/logical_ops_spec.rb +0 -1
  368. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +0 -1
  369. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +0 -1
  370. data/spec/unit/pops/evaluator/variables_spec.rb +0 -1
  371. data/spec/unit/pops/factory_spec.rb +3 -4
  372. data/spec/unit/pops/issues_spec.rb +19 -20
  373. data/spec/unit/pops/loaders/loader_spec.rb +8 -4
  374. data/spec/unit/pops/loaders/loaders_spec.rb +31 -28
  375. data/spec/unit/pops/lookup/context_spec.rb +0 -1
  376. data/spec/unit/pops/lookup/interpolation_spec.rb +2 -3
  377. data/spec/unit/pops/merge_strategy_spec.rb +0 -1
  378. data/spec/unit/pops/migration_spec.rb +3 -5
  379. data/spec/unit/pops/model/model_spec.rb +0 -1
  380. data/spec/unit/pops/model/pn_transformer_spec.rb +0 -1
  381. data/spec/unit/pops/parser/locator_spec.rb +3 -6
  382. data/spec/unit/pops/parser/parse_application_spec.rb +0 -1
  383. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +0 -1
  384. data/spec/unit/pops/parser/parse_calls_spec.rb +0 -1
  385. data/spec/unit/pops/parser/parse_capabilities_spec.rb +0 -1
  386. data/spec/unit/pops/parser/parse_conditionals_spec.rb +0 -1
  387. data/spec/unit/pops/parser/parse_containers_spec.rb +0 -1
  388. data/spec/unit/pops/parser/parse_plan_spec.rb +0 -1
  389. data/spec/unit/pops/parser/parse_resource_spec.rb +0 -1
  390. data/spec/unit/pops/parser/parse_site_spec.rb +0 -1
  391. data/spec/unit/pops/parser/pn_parser_spec.rb +0 -1
  392. data/spec/unit/pops/pn_spec.rb +0 -1
  393. data/spec/unit/pops/resource/resource_type_impl_spec.rb +0 -1
  394. data/spec/unit/pops/serialization/serialization_spec.rb +1 -1
  395. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  396. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  397. data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
  398. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  399. data/spec/unit/pops/types/type_calculator_spec.rb +30 -30
  400. data/spec/unit/pops/types/type_parser_spec.rb +13 -13
  401. data/spec/unit/pops/validator/validator_spec.rb +1 -2
  402. data/spec/unit/pops/visitor_spec.rb +0 -1
  403. data/spec/unit/property/boolean_spec.rb +1 -1
  404. data/spec/unit/property/ensure_spec.rb +0 -1
  405. data/spec/unit/property/keyvalue_spec.rb +32 -34
  406. data/spec/unit/property/list_spec.rb +26 -27
  407. data/spec/unit/property/ordered_list_spec.rb +10 -14
  408. data/spec/unit/property_spec.rb +42 -43
  409. data/spec/unit/provider/aix_object_spec.rb +47 -45
  410. data/spec/unit/provider/command_spec.rb +9 -9
  411. data/spec/unit/provider/exec/posix_spec.rb +6 -7
  412. data/spec/unit/provider/exec/shell_spec.rb +0 -1
  413. data/spec/unit/provider/exec/windows_spec.rb +2 -4
  414. data/spec/unit/provider/exec_spec.rb +0 -1
  415. data/spec/unit/provider/file/posix_spec.rb +22 -24
  416. data/spec/unit/provider/file/windows_spec.rb +15 -17
  417. data/spec/unit/provider/group/aix_spec.rb +3 -2
  418. data/spec/unit/provider/group/groupadd_spec.rb +30 -26
  419. data/spec/unit/provider/group/ldap_spec.rb +18 -18
  420. data/spec/unit/provider/group/pw_spec.rb +11 -11
  421. data/spec/unit/provider/group/windows_adsi_spec.rb +54 -54
  422. data/spec/unit/provider/ldap_spec.rb +61 -62
  423. data/spec/unit/provider/nameservice/directoryservice_spec.rb +35 -36
  424. data/spec/unit/provider/nameservice_spec.rb +38 -40
  425. data/spec/unit/provider/package/aix_spec.rb +15 -15
  426. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  427. data/spec/unit/provider/package/apt_spec.rb +44 -27
  428. data/spec/unit/provider/package/aptitude_spec.rb +6 -7
  429. data/spec/unit/provider/package/aptrpm_spec.rb +7 -12
  430. data/spec/unit/provider/package/base_spec.rb +4 -4
  431. data/spec/unit/provider/package/dnf_spec.rb +18 -20
  432. data/spec/unit/provider/package/dpkg_spec.rb +52 -52
  433. data/spec/unit/provider/package/freebsd_spec.rb +11 -11
  434. data/spec/unit/provider/package/gem_spec.rb +51 -43
  435. data/spec/unit/provider/package/hpux_spec.rb +8 -8
  436. data/spec/unit/provider/package/macports_spec.rb +46 -42
  437. data/spec/unit/provider/package/nim_spec.rb +30 -39
  438. data/spec/unit/provider/package/openbsd_spec.rb +36 -39
  439. data/spec/unit/provider/package/opkg_spec.rb +23 -26
  440. data/spec/unit/provider/package/pacman_spec.rb +97 -118
  441. data/spec/unit/provider/package/pip_spec.rb +71 -72
  442. data/spec/unit/provider/package/pkg_spec.rb +109 -109
  443. data/spec/unit/provider/package/pkgdmg_spec.rb +65 -63
  444. data/spec/unit/provider/package/pkgin_spec.rb +10 -8
  445. data/spec/unit/provider/package/pkgng_spec.rb +17 -18
  446. data/spec/unit/provider/package/pkgutil_spec.rb +45 -49
  447. data/spec/unit/provider/package/portage_spec.rb +70 -74
  448. data/spec/unit/provider/package/puppet_gem_spec.rb +28 -8
  449. data/spec/unit/provider/package/rpm_spec.rb +53 -64
  450. data/spec/unit/provider/package/sun_spec.rb +16 -18
  451. data/spec/unit/provider/package/tdnf_spec.rb +2 -2
  452. data/spec/unit/provider/package/up2date_spec.rb +2 -4
  453. data/spec/unit/provider/package/urpmi_spec.rb +15 -17
  454. data/spec/unit/provider/package/windows/exe_package_spec.rb +12 -15
  455. data/spec/unit/provider/package/windows/msi_package_spec.rb +19 -22
  456. data/spec/unit/provider/package/windows/package_spec.rb +37 -42
  457. data/spec/unit/provider/package/windows_spec.rb +36 -32
  458. data/spec/unit/provider/package/yum_spec.rb +7 -7
  459. data/spec/unit/provider/package/zypper_spec.rb +87 -87
  460. data/spec/unit/provider/parsedfile_spec.rb +44 -45
  461. data/spec/unit/provider/service/base_spec.rb +4 -5
  462. data/spec/unit/provider/service/bsd_spec.rb +27 -29
  463. data/spec/unit/provider/service/daemontools_spec.rb +35 -35
  464. data/spec/unit/provider/service/debian_spec.rb +38 -38
  465. data/spec/unit/provider/service/freebsd_spec.rb +18 -18
  466. data/spec/unit/provider/service/gentoo_spec.rb +50 -55
  467. data/spec/unit/provider/service/init_spec.rb +53 -52
  468. data/spec/unit/provider/service/launchd_spec.rb +138 -116
  469. data/spec/unit/provider/service/openbsd_spec.rb +50 -50
  470. data/spec/unit/provider/service/openrc_spec.rb +43 -45
  471. data/spec/unit/provider/service/openwrt_spec.rb +26 -31
  472. data/spec/unit/provider/service/rcng_spec.rb +14 -14
  473. data/spec/unit/provider/service/redhat_spec.rb +45 -43
  474. data/spec/unit/provider/service/runit_spec.rb +29 -27
  475. data/spec/unit/provider/service/smf_spec.rb +74 -66
  476. data/spec/unit/provider/service/src_spec.rb +46 -47
  477. data/spec/unit/provider/service/systemd_spec.rb +104 -113
  478. data/spec/unit/provider/service/upstart_spec.rb +74 -71
  479. data/spec/unit/provider/service/windows_spec.rb +33 -41
  480. data/spec/unit/provider/user/aix_spec.rb +31 -31
  481. data/spec/unit/provider/user/directoryservice_spec.rb +109 -114
  482. data/spec/unit/provider/user/hpux_spec.rb +16 -16
  483. data/spec/unit/provider/user/ldap_spec.rb +57 -57
  484. data/spec/unit/provider/user/openbsd_spec.rb +10 -12
  485. data/spec/unit/provider/user/pw_spec.rb +37 -35
  486. data/spec/unit/provider/user/user_role_add_spec.rb +93 -93
  487. data/spec/unit/provider/user/useradd_spec.rb +93 -92
  488. data/spec/unit/provider/user/windows_adsi_spec.rb +59 -60
  489. data/spec/unit/provider_spec.rb +35 -35
  490. data/spec/unit/puppet_pal_2pec.rb +4 -5
  491. data/spec/unit/puppet_pal_spec.rb +0 -1
  492. data/spec/unit/puppet_spec.rb +6 -7
  493. data/spec/unit/relationship_spec.rb +0 -1
  494. data/spec/unit/reports/http_spec.rb +21 -23
  495. data/spec/unit/reports/store_spec.rb +3 -4
  496. data/spec/unit/reports_spec.rb +12 -14
  497. data/spec/unit/resource/capability_finder_spec.rb +15 -17
  498. data/spec/unit/resource/catalog_spec.rb +72 -68
  499. data/spec/unit/resource/status_spec.rb +6 -8
  500. data/spec/unit/resource/type_collection_spec.rb +17 -18
  501. data/spec/unit/resource/type_spec.rb +34 -35
  502. data/spec/unit/resource_spec.rb +36 -32
  503. data/spec/unit/rest/client_spec.rb +58 -27
  504. data/spec/unit/rest/route_spec.rb +5 -5
  505. data/spec/unit/scheduler/job_spec.rb +0 -1
  506. data/spec/unit/scheduler/scheduler_spec.rb +0 -1
  507. data/spec/unit/scheduler/splay_job_spec.rb +1 -2
  508. data/spec/unit/settings/array_setting_spec.rb +1 -1
  509. data/spec/unit/settings/autosign_setting_spec.rb +9 -9
  510. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  511. data/spec/unit/settings/config_file_spec.rb +0 -1
  512. data/spec/unit/settings/directory_setting_spec.rb +2 -7
  513. data/spec/unit/settings/duration_setting_spec.rb +1 -2
  514. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  515. data/spec/unit/settings/environment_conf_spec.rb +4 -6
  516. data/spec/unit/settings/file_setting_spec.rb +44 -46
  517. data/spec/unit/settings/path_setting_spec.rb +1 -2
  518. data/spec/unit/settings/priority_setting_spec.rb +1 -2
  519. data/spec/unit/settings/string_setting_spec.rb +14 -15
  520. data/spec/unit/settings/terminus_setting_spec.rb +1 -2
  521. data/spec/unit/settings/value_translator_spec.rb +0 -1
  522. data/spec/unit/settings_spec.rb +228 -235
  523. data/spec/unit/ssl/base_spec.rb +14 -15
  524. data/spec/unit/ssl/certificate_request_spec.rb +62 -58
  525. data/spec/unit/ssl/certificate_spec.rb +23 -25
  526. data/spec/unit/ssl/digest_spec.rb +0 -1
  527. data/spec/unit/ssl/host_spec.rb +166 -149
  528. data/spec/unit/ssl/key_spec.rb +30 -31
  529. data/spec/unit/ssl/validator_spec.rb +38 -39
  530. data/spec/unit/task_spec.rb +44 -45
  531. data/spec/unit/transaction/additional_resource_generator_spec.rb +3 -5
  532. data/spec/unit/transaction/event_manager_spec.rb +87 -88
  533. data/spec/unit/transaction/event_spec.rb +16 -15
  534. data/spec/unit/transaction/persistence_spec.rb +16 -17
  535. data/spec/unit/transaction/report_spec.rb +11 -12
  536. data/spec/unit/transaction/resource_harness_spec.rb +28 -33
  537. data/spec/unit/transaction_spec.rb +100 -101
  538. data/spec/unit/type/component_spec.rb +0 -1
  539. data/spec/unit/type/exec_spec.rb +60 -56
  540. data/spec/unit/type/file/checksum_spec.rb +9 -10
  541. data/spec/unit/type/file/checksum_value_spec.rb +31 -32
  542. data/spec/unit/type/file/content_spec.rb +58 -61
  543. data/spec/unit/type/file/ctime_spec.rb +0 -1
  544. data/spec/unit/type/file/ensure_spec.rb +12 -13
  545. data/spec/unit/type/file/group_spec.rb +5 -7
  546. data/spec/unit/type/file/mode_spec.rb +4 -6
  547. data/spec/unit/type/file/mtime_spec.rb +0 -1
  548. data/spec/unit/type/file/owner_spec.rb +6 -8
  549. data/spec/unit/type/file/selinux_spec.rb +17 -19
  550. data/spec/unit/type/file/source_spec.rb +104 -101
  551. data/spec/unit/type/file/type_spec.rb +0 -1
  552. data/spec/unit/type/file_spec.rb +195 -185
  553. data/spec/unit/type/filebucket_spec.rb +4 -5
  554. data/spec/unit/type/group_spec.rb +6 -8
  555. data/spec/unit/type/noop_metaparam_spec.rb +1 -2
  556. data/spec/unit/type/package/package_settings_spec.rb +44 -23
  557. data/spec/unit/type/package_spec.rb +56 -57
  558. data/spec/unit/type/resources_spec.rb +72 -74
  559. data/spec/unit/type/schedule_spec.rb +24 -26
  560. data/spec/unit/type/service_spec.rb +48 -48
  561. data/spec/unit/type/stage_spec.rb +0 -1
  562. data/spec/unit/type/tidy_spec.rb +61 -62
  563. data/spec/unit/type/user_spec.rb +24 -25
  564. data/spec/unit/type/whit_spec.rb +0 -1
  565. data/spec/unit/type_spec.rb +55 -54
  566. data/spec/unit/util/at_fork_spec.rb +18 -19
  567. data/spec/unit/util/autoload_spec.rb +55 -56
  568. data/spec/unit/util/backups_spec.rb +34 -35
  569. data/spec/unit/util/character_encoding_spec.rb +5 -5
  570. data/spec/unit/util/checksums_spec.rb +38 -39
  571. data/spec/unit/util/colors_spec.rb +1 -2
  572. data/spec/unit/util/command_line_spec.rb +24 -25
  573. data/spec/unit/util/constant_inflector_spec.rb +0 -1
  574. data/spec/unit/util/diff_spec.rb +7 -8
  575. data/spec/unit/util/errors_spec.rb +0 -1
  576. data/spec/unit/util/execution_spec.rb +185 -161
  577. data/spec/unit/util/execution_stub_spec.rb +0 -1
  578. data/spec/unit/util/feature_spec.rb +21 -14
  579. data/spec/unit/util/filetype_spec.rb +49 -49
  580. data/spec/unit/util/http_proxy_spec.rb +12 -12
  581. data/spec/unit/util/inifile_spec.rb +26 -31
  582. data/spec/unit/util/json_lockfile_spec.rb +3 -5
  583. data/spec/unit/util/ldap/connection_spec.rb +26 -25
  584. data/spec/unit/util/ldap/generator_spec.rb +0 -1
  585. data/spec/unit/util/ldap/manager_spec.rb +102 -101
  586. data/spec/unit/util/lockfile_spec.rb +0 -1
  587. data/spec/unit/util/log/destinations_spec.rb +30 -33
  588. data/spec/unit/util/log_spec.rb +35 -36
  589. data/spec/unit/util/logging_spec.rb +58 -72
  590. data/spec/unit/util/metric_spec.rb +0 -1
  591. data/spec/unit/util/monkey_patches_spec.rb +7 -9
  592. data/spec/unit/util/multi_match_spec.rb +0 -1
  593. data/spec/unit/util/network_device/config_spec.rb +0 -1
  594. data/spec/unit/util/network_device/transport/base_spec.rb +5 -6
  595. data/spec/unit/util/network_device_spec.rb +7 -9
  596. data/spec/unit/util/package_spec.rb +0 -1
  597. data/spec/unit/util/pidlock_spec.rb +21 -22
  598. data/spec/unit/util/plist_spec.rb +40 -33
  599. data/spec/unit/util/posix_spec.rb +54 -51
  600. data/spec/unit/util/rdoc_spec.rb +9 -10
  601. data/spec/unit/util/reference_spec.rb +0 -1
  602. data/spec/unit/util/resource_template_spec.rb +20 -20
  603. data/spec/unit/util/retry_action_spec.rb +7 -8
  604. data/spec/unit/util/rubygems_spec.rb +7 -8
  605. data/spec/unit/util/run_mode_spec.rb +3 -4
  606. data/spec/unit/util/selinux_spec.rb +79 -72
  607. data/spec/unit/util/splayer_spec.rb +8 -9
  608. data/spec/unit/util/ssl_spec.rb +0 -1
  609. data/spec/unit/util/storage_spec.rb +3 -4
  610. data/spec/unit/util/suidmanager_spec.rb +45 -54
  611. data/spec/unit/util/symbolic_file_mode_spec.rb +0 -1
  612. data/spec/unit/util/tag_set_spec.rb +0 -1
  613. data/spec/unit/util/tagging_spec.rb +0 -1
  614. data/spec/unit/util/terminal_spec.rb +9 -10
  615. data/spec/unit/util/user_attr_spec.rb +1 -2
  616. data/spec/unit/util/warnings_spec.rb +3 -4
  617. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  618. data/spec/unit/util/watcher_spec.rb +51 -21
  619. data/spec/unit/util/windows/access_control_entry_spec.rb +0 -1
  620. data/spec/unit/util/windows/access_control_list_spec.rb +0 -1
  621. data/spec/unit/util/windows/adsi_spec.rb +136 -138
  622. data/spec/unit/util/windows/api_types_spec.rb +0 -1
  623. data/spec/unit/util/windows/eventlog_spec.rb +9 -12
  624. data/spec/unit/util/windows/file_spec.rb +0 -1
  625. data/spec/unit/util/windows/root_certs_spec.rb +0 -1
  626. data/spec/unit/util/windows/security_descriptor_spec.rb +0 -2
  627. data/spec/unit/util/windows/service_spec.rb +66 -68
  628. data/spec/unit/util/windows/sid_spec.rb +11 -13
  629. data/spec/unit/util/windows/string_spec.rb +0 -1
  630. data/spec/unit/util_spec.rb +55 -57
  631. data/spec/unit/version_spec.rb +6 -6
  632. metadata +2 -2
@@ -1,4 +1,3 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
  require 'puppet/application/config'
4
3
 
@@ -1,4 +1,3 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
3
  require 'puppet/application/describe'
@@ -22,7 +21,7 @@ describe Puppet::Application::Describe do
22
21
  end
23
22
 
24
23
  it "should store argument value when calling handle_#{option}" do
25
- @describe.options.expects(:[]=).with("#{option}".to_sym, 'arg')
24
+ expect(@describe.options).to receive(:[]=).with("#{option}".to_sym, 'arg')
26
25
  @describe.send("handle_#{option}".to_sym, 'arg')
27
26
  end
28
27
  end
@@ -46,7 +45,7 @@ describe Puppet::Application::Describe do
46
45
 
47
46
  describe "during setup" do
48
47
  it "should collect arguments in options[:types]" do
49
- @describe.command_line.stubs(:args).returns(['1','2'])
48
+ allow(@describe.command_line).to receive(:args).and_return(['1','2'])
50
49
  @describe.setup
51
50
 
52
51
  expect(@describe.options[:types]).to eq(['1','2'])
@@ -56,14 +55,14 @@ describe Puppet::Application::Describe do
56
55
  describe "when running" do
57
56
 
58
57
  before :each do
59
- @typedoc = stub 'type_doc'
60
- TypeDoc.stubs(:new).returns(@typedoc)
58
+ @typedoc = double('type_doc')
59
+ allow(TypeDoc).to receive(:new).and_return(@typedoc)
61
60
  end
62
61
 
63
62
  it "should call list_types if options list is set" do
64
63
  @describe.options[:list] = true
65
64
 
66
- @typedoc.expects(:list_types)
65
+ expect(@typedoc).to receive(:list_types)
67
66
 
68
67
  @describe.run_command
69
68
  end
@@ -72,7 +71,7 @@ describe Puppet::Application::Describe do
72
71
  @describe.options[:list] = false
73
72
  @describe.options[:types] = ['type']
74
73
 
75
- @typedoc.expects(:format_type).with('type', @describe.options)
74
+ expect(@typedoc).to receive(:format_type).with('type', @describe.options)
76
75
  @describe.run_command
77
76
  end
78
77
  end
@@ -1,625 +1,601 @@
1
- #! /usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
 
4
- require 'puppet/application/device'
5
- require 'puppet/util/network_device/config'
6
3
  require 'ostruct'
7
- require 'puppet/configurer'
8
4
  require 'puppet/application/apply'
5
+ require 'puppet/application/device'
6
+ require 'puppet/configurer'
7
+ require 'puppet/util/network_device/config'
9
8
 
10
9
  describe Puppet::Application::Device do
11
10
  include PuppetSpec::Files
12
11
 
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=)
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)
21
39
  end
22
40
 
23
- it "should operate in agent run_mode" do
24
- expect(@device.class.run_mode.name).to eq(:agent)
41
+ it "operates in agent run_mode" do
42
+ expect(device.class.run_mode.name).to eq(:agent)
25
43
  end
26
44
 
27
- it "should declare a main command" do
28
- expect(@device).to respond_to(:main)
45
+ it "declares a main command" do
46
+ expect(device).to respond_to(:main)
29
47
  end
30
48
 
31
- it "should declare a preinit block" do
32
- expect(@device).to respond_to(:preinit)
49
+ it "declares a preinit block" do
50
+ expect(device).to respond_to(:preinit)
33
51
  end
34
52
 
35
53
  describe "in preinit" do
36
- before :each do
37
- @device.stubs(:trap)
54
+ before do
38
55
  end
39
56
 
40
- it "should catch INT" do
41
- Signal.expects(:trap).with { |arg,block| arg == :INT }
57
+ it "catches INT" do
58
+ device
42
59
 
43
- @device.preinit
60
+ expect(Signal).to have_received(:trap).with(:INT)
44
61
  end
45
62
 
46
- it "should init waitforcert to nil" do
47
- @device.preinit
48
-
49
- expect(@device.options[:waitforcert]).to be_nil
63
+ it "inits waitforcert to nil" do
64
+ expect(device.options[:waitforcert]).to be_nil
50
65
  end
51
66
 
52
- it "should init target to nil" do
53
- @device.preinit
54
-
55
- expect(@device.options[:target]).to be_nil
67
+ it "inits target to nil" do
68
+ expect(device.options[:target]).to be_nil
56
69
  end
57
70
  end
58
71
 
59
72
  describe "when handling options" do
60
73
  before do
61
- @device.command_line.stubs(:args).returns([])
74
+ Puppet[:certname] = 'device.example.com'
75
+ allow(device.command_line).to receive(:args).and_return([])
62
76
  end
63
77
 
64
78
  [:centrallogging, :debug, :verbose,].each do |option|
65
79
  it "should declare handle_#{option} method" do
66
- expect(@device).to respond_to("handle_#{option}".to_sym)
80
+ expect(device).to respond_to("handle_#{option}".to_sym)
67
81
  end
68
82
 
69
83
  it "should store argument value when calling handle_#{option}" do
70
- @device.options.expects(:[]=).with(option, 'arg')
71
- @device.send("handle_#{option}".to_sym, 'arg')
84
+ allow(device.options).to receive(:[]=).with(option, 'arg')
85
+ device.send("handle_#{option}".to_sym, 'arg')
72
86
  end
73
87
  end
74
88
 
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')
79
- end
89
+ context 'when setting --onetime' do
90
+ before do
91
+ Puppet[:onetime] = true
92
+ end
80
93
 
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
94
+ context 'without --waitforcert' do
95
+ it "defaults waitforcert to 0" do
96
+ device.setup_host('device.example.com')
87
97
 
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')
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
91
110
  end
92
111
 
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')
112
+ context 'without setting --onetime' do
113
+ before do
114
+ Puppet[:onetime] = false
115
+ end
116
+
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
121
+
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
97
127
  end
98
128
 
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")
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")
102
132
 
103
- @device.handle_logdest("console")
133
+ device.handle_logdest("console")
104
134
  end
105
135
 
106
- it "should put the setdest options to true" do
107
- @device.options.expects(:[]=).with(:setdest,true)
136
+ it "puts the setdest options to true" do
137
+ expect(device.options).to receive(:[]=).with(:setdest, true)
108
138
 
109
- @device.handle_logdest("console")
139
+ device.handle_logdest("console")
110
140
  end
111
141
 
112
- it "should parse the log destination from the command line" do
113
- @device.command_line.stubs(:args).returns(%w{--logdest /my/file})
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})
114
144
 
115
- Puppet::Util::Log.expects(:newdestination).with("/my/file")
145
+ expect(Puppet::Util::Log).to receive(:newdestination).with("/my/file")
116
146
 
117
- @device.parse_options
147
+ device.parse_options
118
148
  end
119
149
 
120
- it "should store the waitforcert options with --waitforcert" do
121
- @device.options.expects(:[]=).with(:waitforcert,42)
150
+ it "stores the waitforcert options with --waitforcert" do
151
+ expect(device.options).to receive(:[]=).with(:waitforcert,42)
122
152
 
123
- @device.handle_waitforcert("42")
153
+ device.handle_waitforcert("42")
124
154
  end
125
155
 
126
- it "should set args[:Port] with --port" do
127
- @device.handle_port("42")
128
- expect(@device.args[:Port]).to eq("42")
156
+ it "sets args[:Port] with --port" do
157
+ device.handle_port("42")
158
+ expect(device.args[:Port]).to eq("42")
129
159
  end
130
160
 
131
- it "should store the target options with --target" do
132
- @device.options.expects(:[]=).with(:target,'test123')
161
+ it "stores the target options with --target" do
162
+ expect(device.options).to receive(:[]=).with(:target,'test123')
133
163
 
134
- @device.handle_target('test123')
164
+ device.handle_target('test123')
135
165
  end
136
166
 
137
- it "should store the resource options with --resource" do
138
- @device.options.expects(:[]=).with(:resource,true)
167
+ it "stores the resource options with --resource" do
168
+ expect(device.options).to receive(:[]=).with(:resource,true)
139
169
 
140
- @device.handle_resource(true)
170
+ device.handle_resource(true)
141
171
  end
142
172
 
143
- it "should store the facts options with --facts" do
144
- @device.options.expects(:[]=).with(:facts,true)
173
+ it "stores the facts options with --facts" do
174
+ expect(device.options).to receive(:[]=).with(:facts,true)
145
175
 
146
- @device.handle_facts(true)
176
+ device.handle_facts(true)
147
177
  end
148
178
  end
149
179
 
150
180
  describe "during setup" do
151
- before :each do
152
- @device.options.stubs(:[])
181
+ before do
182
+ allow(device.options).to receive(:[])
153
183
  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)
161
184
  end
162
185
 
163
- it "should call setup_logs" do
164
- @device.expects(:setup_logs)
165
- @device.setup
186
+ it "calls setup_logs" do
187
+ expect(device).to receive(:setup_logs)
188
+ device.setup
166
189
  end
167
190
 
168
191
  describe "when setting up logs" do
169
- before :each do
170
- Puppet::Util::Log.stubs(:newdestination)
192
+ before do
193
+ allow(Puppet::Util::Log).to receive(:newdestination)
171
194
  end
172
195
 
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
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
176
199
  expect(Puppet::Util::Log.level).to eq(:debug)
177
200
  end
178
201
 
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
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
182
205
  expect(Puppet::Util::Log.level).to eq(:info)
183
206
  end
184
207
 
185
208
  [:verbose, :debug].each do |level|
186
209
  it "should set console as the log destination with level #{level}" do
187
- @device.options.stubs(:[]).with(level).returns(true)
210
+ allow(device.options).to receive(:[]).with(level).and_return(true)
188
211
 
189
- Puppet::Util::Log.expects(:newdestination).with(:console)
212
+ expect(Puppet::Util::Log).to receive(:newdestination).with(:console)
190
213
 
191
- @device.setup_logs
214
+ device.setup_logs
192
215
  end
193
216
  end
194
217
 
195
- it "should set a default log destination if no --logdest" do
196
- @device.options.stubs(:[]).with(:setdest).returns(false)
218
+ it "sets a default log destination if no --logdest" do
219
+ allow(device.options).to receive(:[]).with(:setdest).and_return(false)
197
220
 
198
- Puppet::Util::Log.expects(:setup_default)
221
+ expect(Puppet::Util::Log).to receive(:setup_default)
199
222
 
200
- @device.setup_logs
223
+ device.setup_logs
201
224
  end
202
-
203
225
  end
204
226
 
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)
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)
209
231
 
210
- Puppet::Util::Log.expects(:newdestination).with("puppet.reductivelabs.com")
232
+ expect(Puppet::Util::Log).to receive(:newdestination).with("puppet.example.com")
211
233
 
212
- @device.setup
234
+ device.setup
213
235
  end
214
236
 
215
- it "should use :main, :agent, :device and :ssl config" do
216
- Puppet.settings.expects(:use).with(:main, :agent, :device, :ssl)
237
+ it "uses :main, :agent, :device and :ssl config" do
238
+ expect(Puppet.settings).to receive(:use).with(:main, :agent, :device, :ssl)
217
239
 
218
- @device.setup
240
+ device.setup
219
241
  end
220
242
 
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
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)
225
246
  end
226
247
 
227
- it "should default the catalog_terminus setting to 'rest'" do
228
- @device.initialize_app_defaults
248
+ it "defaults the catalog_terminus setting to 'rest'" do
249
+ device.initialize_app_defaults
229
250
  expect(Puppet[:catalog_terminus]).to eq(:rest)
230
251
  end
231
252
 
232
- it "should default the node_terminus setting to 'rest'" do
233
- @device.initialize_app_defaults
253
+ it "defaults the node_terminus setting to 'rest'" do
254
+ device.initialize_app_defaults
234
255
  expect(Puppet[:node_terminus]).to eq(:rest)
235
256
  end
236
257
 
237
258
  it "has an application default :catalog_cache_terminus setting of 'json'" do
238
- Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(:json)
259
+ expect(Puppet::Resource::Catalog.indirection).to receive(:cache_class=).with(:json)
239
260
 
240
- @device.initialize_app_defaults
241
- @device.setup
261
+ device.initialize_app_defaults
262
+ device.setup
242
263
  end
243
264
 
244
- it "should tell the catalog cache class based on the :catalog_cache_terminus setting" do
265
+ it "tells the catalog cache class based on the :catalog_cache_terminus setting" do
245
266
  Puppet[:catalog_cache_terminus] = "yaml"
246
- Puppet::Resource::Catalog.indirection.expects(:cache_class=).with(:yaml)
267
+ expect(Puppet::Resource::Catalog.indirection).to receive(:cache_class=).with(:yaml)
247
268
 
248
- @device.initialize_app_defaults
249
- @device.setup
269
+ device.initialize_app_defaults
270
+ device.setup
250
271
  end
251
272
 
252
- it "should not set catalog cache class if :catalog_cache_terminus is explicitly nil" do
273
+ it "does not set catalog cache class if :catalog_cache_terminus is explicitly nil" do
253
274
  Puppet[:catalog_cache_terminus] = nil
254
- Puppet::Resource::Catalog.indirection.expects(:cache_class=).never
275
+ expect(Puppet::Resource::Catalog.indirection).not_to receive(:cache_class=)
255
276
 
256
- @device.initialize_app_defaults
257
- @device.setup
277
+ device.initialize_app_defaults
278
+ device.setup
258
279
  end
259
280
 
260
- it "should default the facts_terminus setting to 'network_device'" do
261
- @device.initialize_app_defaults
281
+ it "defaults the facts_terminus setting to 'network_device'" do
282
+ device.initialize_app_defaults
262
283
  expect(Puppet[:facts_terminus]).to eq(:network_device)
263
284
  end
264
285
  end
265
286
 
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
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')
271
291
 
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
292
+ expect(Puppet::SSL::Host).to have_received(:new).with('device.example.com', true)
293
+ end
276
294
 
277
- it "should wait for a certificate" do
278
- @device.options.stubs(:[]).with(:waitforcert).returns(123)
279
- @host.expects(:wait_for_cert).with(123)
295
+ it "waits for a certificate" do
296
+ allow(device.options).to receive(:[]).with(:waitforcert).and_return(123)
280
297
 
281
- @device.setup_host('device.example.com')
298
+ device.setup_host('device.example.com')
299
+ expect(ssl_host).to have_received(:wait_for_cert).with(123)
300
+ end
282
301
  end
283
302
  end
284
303
 
285
304
  describe "when running" do
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({})
299
- end
305
+ let(:device_hash) { {} }
306
+ let(:plugin_handler) { instance_double(Puppet::Configurer::PluginHandler, 'plugin_handler') }
300
307
 
301
- it "should dispatch to main" do
302
- @device.stubs(:main)
303
- @device.run_command
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)
304
322
  end
305
323
 
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")
324
+ it "dispatches to main" do
325
+ allow(device).to receive(:main)
326
+ device.run_command
309
327
  end
310
328
 
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")
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")
314
332
  end
315
333
 
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
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")
320
337
  end
321
338
 
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
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
334
342
  end
335
343
 
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
- }
341
-
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/)
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/)
345
348
  end
346
349
 
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
+ 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')
350
353
 
351
- File.expects(:file?).returns(false)
352
- expect { @device.main }.to raise_error(RuntimeError, /does not exist, cannot apply/)
354
+ expect(File).to receive(:file?).and_return(false)
355
+ expect { device.main }.to raise_error(RuntimeError, /does not exist, cannot apply/)
353
356
  end
354
357
 
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"),
360
- }
361
- Puppet::Util::NetworkDevice::Config.expects(:devices).returns(device_hash)
362
- Puppet::Util::NetworkDevice.stubs(:init)
363
- File.expects(:file?).returns(true)
364
-
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
370
-
371
- Puppet::Util::CommandLine.expects(:new).once
372
- Puppet::Application::Apply.expects(:new).once
373
-
374
- Puppet::Configurer.expects(:new).never
375
- expect { @device.main }.to exit_with 1
358
+ it "exits if the device list is empty" do
359
+ expect { device.main }.to exit_with 1
376
360
  end
377
361
 
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"),
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
+ }
383
369
  }
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
388
370
 
389
- Puppet::Util::CommandLine.expects(:new).once
390
- Puppet::Application::Apply.expects(:new).once
391
-
392
- Puppet::Configurer.expects(:new).never
393
- expect { @device.main }.to exit_with 1
394
- end
395
-
396
- it "should exit if the device list is empty" do
397
- expect { @device.main }.to exit_with 1
398
- end
399
-
400
- describe "for each device" do
401
- before(:each) do
371
+ before do
402
372
  Puppet[:vardir] = make_absolute("/dummy")
403
373
  Puppet[:confdir] = make_absolute("/dummy")
404
374
  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)
416
- end
417
375
 
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
421
- end
376
+ allow(Puppet).to receive(:[]=)
377
+ allow(Puppet.settings).to receive(:use)
422
378
 
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
379
+ allow(device).to receive(:setup_host)
380
+ allow(Puppet::Util::NetworkDevice).to receive(:init)
427
381
 
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
382
+ allow(configurer).to receive(:run)
383
+ allow(Puppet::Configurer).to receive(:new).and_return(configurer)
433
384
 
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
385
+ allow(plugin_handler).to receive(:download_plugins)
440
386
  end
441
387
 
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
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
448
391
  end
449
392
 
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
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
456
396
  end
457
397
 
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
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
466
402
  end
467
403
 
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
404
+ context 'with --target=device1' do
405
+ it "manages the specified target" do
406
+ allow(device.options).to receive(:[]).with(:target).and_return('device1')
480
407
 
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
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
489
412
  end
490
413
 
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
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
495
419
 
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
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
500
425
 
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
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
508
431
 
509
- it "should setup the SSL context" do
510
- @device.expects(:setup_host).twice
511
- expect { @device.main }.to exit_with 1
512
- end
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
513
437
 
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
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
518
445
 
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
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
522
456
  end
523
457
 
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
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
528
463
 
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
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
535
471
  end
536
472
 
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
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
542
478
 
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
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
550
484
 
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
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
558
492
 
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()
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
563
500
 
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)
567
- found_devices.add(my_value)
568
- true
569
- else
570
- false
571
- end
572
- end
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
573
505
 
574
- seq = sequence("clean up dirs")
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
575
511
 
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)
581
- end
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
582
516
 
583
- expect { @device.main }.to exit_with 1
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
584
524
 
585
- expect(found_devices).to eq(all_devices)
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
586
529
  end
587
- end
588
530
 
589
- it "should cleanup the certname setting after the run" do
590
- all_devices = Set.new(@device_hash.keys)
591
- found_devices = Set.new()
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
592
537
 
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)
596
- found_devices.add(my_value)
597
- true
598
- else
599
- false
600
- end
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
601
543
  end
602
544
 
603
- seq = sequence("clean up certname")
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()
549
+
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)
553
+ found_devices.add(my_value)
554
+ end
555
+
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
604
564
 
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)
565
+ expect(found_devices).to eq(all_devices)
566
+ end
610
567
  end
611
568
 
569
+ it "resets the certname setting after the run" do
570
+ all_devices = Set.new(device_hash.keys)
571
+ found_devices = Set.new()
612
572
 
613
- expect { @device.main }.to exit_with 1
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)
576
+ found_devices.add(my_value)
577
+ end
578
+
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
614
586
 
615
- # make sure that we were called with each of the defined devices
616
- expect(found_devices).to eq(all_devices)
617
- end
618
587
 
619
- it "should expire all cached attributes" do
620
- Puppet::SSL::Host.expects(:reset).twice
588
+ expect { device.main }.to exit_with 1
621
589
 
622
- expect { @device.main }.to exit_with 1
590
+ # make sure that we were called with each of the defined devices
591
+ expect(found_devices).to eq(all_devices)
592
+ end
593
+
594
+ it "expires all cached attributes" do
595
+ expect(Puppet::SSL::Host).to receive(:reset).twice
596
+
597
+ expect { device.main }.to exit_with 1
598
+ end
623
599
  end
624
600
  end
625
601
  end