puppet 6.4.0-universal-darwin → 6.4.1-universal-darwin

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

Potentially problematic release.


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

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