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
 
4
3
  require 'puppet/util/watcher'
@@ -13,44 +12,75 @@ describe Puppet::Util::Watcher do
13
12
 
14
13
  let(:filename) { "fake" }
15
14
 
16
- def after_reading_the_sequence(initial, *results)
17
- expectation = Puppet::FileSystem.expects(:stat).with(filename).at_least(1)
18
- ([initial] + results).each do |result|
19
- expectation = if result.is_a? Class
20
- expectation.raises(result)
21
- else
22
- expectation.returns(result)
23
- end.then
24
- end
15
+ it "is initially unchanged" do
16
+ expect(Puppet::FileSystem).to receive(:stat).with(filename).and_return(ctime(20)).at_least(:once)
25
17
 
26
18
  watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
27
- results.size.times { watcher = watcher.next_reading }
28
19
 
29
- watcher
30
- end
31
-
32
- it "is initially unchanged" do
33
- expect(after_reading_the_sequence(ctime(20))).to_not be_changed
20
+ expect(watcher).to_not be_changed
34
21
  end
35
22
 
36
23
  it "has not changed if a section of the file path continues to not exist" do
37
- expect(after_reading_the_sequence(Errno::ENOTDIR, Errno::ENOTDIR)).to_not be_changed
24
+ expect(Puppet::FileSystem).to receive(:stat).with(filename).and_raise(Errno::ENOTDIR).at_least(:once)
25
+
26
+ watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
27
+ watcher = watcher.next_reading
28
+
29
+ expect(watcher).to_not be_changed
38
30
  end
39
31
 
40
32
  it "has not changed if the file continues to not exist" do
41
- expect(after_reading_the_sequence(Errno::ENOENT, Errno::ENOENT)).to_not be_changed
33
+ expect(Puppet::FileSystem).to receive(:stat).with(filename).and_raise(Errno::ENOENT).at_least(:once)
34
+
35
+ watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
36
+ watcher = watcher.next_reading
37
+
38
+ expect(watcher).to_not be_changed
42
39
  end
43
40
 
44
41
  it "has changed if the file is created" do
45
- expect(after_reading_the_sequence(Errno::ENOENT, ctime(20))).to be_changed
42
+ times_stat_called = 0
43
+ expect(Puppet::FileSystem).to receive(:stat).with(filename) do
44
+ times_stat_called += 1
45
+ raise Errno::ENOENT if times_stat_called == 1
46
+ ctime(20)
47
+ end.at_least(:once)
48
+
49
+ watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
50
+ watcher = watcher.next_reading
51
+
52
+ expect(watcher).to be_changed
46
53
  end
47
54
 
48
55
  it "is marked as changed if the file is deleted" do
49
- expect(after_reading_the_sequence(ctime(20), Errno::ENOENT)).to be_changed
56
+ times_stat_called = 0
57
+ expect(Puppet::FileSystem).to receive(:stat).with(filename) do
58
+ times_stat_called += 1
59
+ raise Errno::ENOENT if times_stat_called > 1
60
+ ctime(20)
61
+ end.at_least(:once)
62
+
63
+ watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
64
+ watcher = watcher.next_reading
65
+
66
+ expect(watcher).to be_changed
50
67
  end
51
68
 
52
69
  it "is marked as changed if the file modified" do
53
- expect(after_reading_the_sequence(ctime(20), ctime(21))).to be_changed
70
+ times_stat_called = 0
71
+ expect(Puppet::FileSystem).to receive(:stat).with(filename) do
72
+ times_stat_called += 1
73
+ if times_stat_called == 1
74
+ ctime(20)
75
+ else
76
+ ctime(21)
77
+ end
78
+ end.at_least(:once)
79
+
80
+ watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
81
+ watcher = watcher.next_reading
82
+
83
+ expect(watcher).to be_changed
54
84
  end
55
85
  end
56
86
  end
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
  require 'puppet/util/windows'
4
3
 
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env ruby
2
1
  require 'spec_helper'
3
2
  require 'puppet/util/windows'
4
3
 
@@ -1,11 +1,9 @@
1
- #!/usr/bin/env ruby
2
-
3
1
  require 'spec_helper'
4
2
 
5
3
  require 'puppet/util/windows'
6
4
 
7
5
  describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
8
- let(:connection) { stub 'connection' }
6
+ let(:connection) { double('connection') }
9
7
  let(:builtin_localized) { Puppet::Util::Windows::SID.sid_to_name('S-1-5-32') }
10
8
  # SYSTEM is special as English can retrieve it via Windows API
11
9
  # but will return localized names
@@ -13,7 +11,7 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
13
11
 
14
12
  before(:each) do
15
13
  Puppet::Util::Windows::ADSI.instance_variable_set(:@computer_name, 'testcomputername')
16
- Puppet::Util::Windows::ADSI.stubs(:connect).returns connection
14
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_return(connection)
17
15
  end
18
16
 
19
17
  after(:each) do
@@ -94,10 +92,10 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
94
92
  end
95
93
 
96
94
  it "should be able to create a user" do
97
- adsi_user = stub('adsi')
95
+ adsi_user = double('adsi')
98
96
 
99
- connection.expects(:Create).with('user', username).returns(adsi_user)
100
- Puppet::Util::Windows::ADSI::Group.expects(:exists?).with(username).returns(false)
97
+ expect(connection).to receive(:Create).with('user', username).and_return(adsi_user)
98
+ expect(Puppet::Util::Windows::ADSI::Group).to receive(:exists?).with(username).and_return(false)
101
99
 
102
100
  user = Puppet::Util::Windows::ADSI::User.create(username)
103
101
 
@@ -106,56 +104,55 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
106
104
  end
107
105
 
108
106
  it "should be able to check the existence of a user" do
109
- Puppet::Util::Windows::SID.expects(:name_to_principal).with(username).returns nil
110
- Puppet::Util::Windows::ADSI.expects(:connect).with("WinNT://./#{username},user").returns connection
111
- connection.expects(:Class).returns('User')
107
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with(username).and_return(nil)
108
+ expect(Puppet::Util::Windows::ADSI).to receive(:connect).with("WinNT://./#{username},user").and_return(connection)
109
+ expect(connection).to receive(:Class).and_return('User')
112
110
  expect(Puppet::Util::Windows::ADSI::User.exists?(username)).to be_truthy
113
111
  end
114
112
 
115
113
  it "should be able to check the existence of a domain user" do
116
- Puppet::Util::Windows::SID.expects(:name_to_principal).with("#{domain}\\#{username}").returns nil
117
- Puppet::Util::Windows::ADSI.expects(:connect).with("WinNT://#{domain}/#{username},user").returns connection
118
- connection.expects(:Class).returns('User')
114
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with("#{domain}\\#{username}").and_return(nil)
115
+ expect(Puppet::Util::Windows::ADSI).to receive(:connect).with("WinNT://#{domain}/#{username},user").and_return(connection)
116
+ expect(connection).to receive(:Class).and_return('User')
119
117
  expect(Puppet::Util::Windows::ADSI::User.exists?(domain_username)).to be_truthy
120
118
  end
121
119
 
122
120
  it "should be able to confirm the existence of a user with a well-known SID" do
123
121
  system_user = Puppet::Util::Windows::SID::LocalSystem
124
122
  # ensure that the underlying OS is queried here
125
- Puppet::Util::Windows::ADSI.unstub(:connect)
123
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
126
124
  expect(Puppet::Util::Windows::ADSI::User.exists?(system_user)).to be_truthy
127
125
  end
128
126
 
129
127
  it "should return false with a well-known Group SID" do
130
128
  group = Puppet::Util::Windows::SID::BuiltinAdministrators
131
129
  # ensure that the underlying OS is queried here
132
- Puppet::Util::Windows::ADSI.unstub(:connect)
130
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
133
131
  expect(Puppet::Util::Windows::ADSI::User.exists?(group)).to be_falsey
134
132
  end
135
133
 
136
134
  it "should return nil with an unknown SID" do
137
-
138
135
  bogus_sid = 'S-1-2-3-4'
139
136
  # ensure that the underlying OS is queried here
140
- Puppet::Util::Windows::ADSI.unstub(:connect)
137
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
141
138
  expect(Puppet::Util::Windows::ADSI::User.exists?(bogus_sid)).to be_falsey
142
139
  end
143
140
 
144
141
  it "should be able to delete a user" do
145
- connection.expects(:Delete).with('user', username)
142
+ expect(connection).to receive(:Delete).with('user', username)
146
143
 
147
144
  Puppet::Util::Windows::ADSI::User.delete(username)
148
145
  end
149
146
 
150
147
  it "should return an enumeration of IADsUser wrapped objects" do
151
148
  name = 'Administrator'
152
- wmi_users = [stub('WMI', :name => name)]
153
- Puppet::Util::Windows::ADSI.expects(:execquery).with('select name from win32_useraccount where localaccount = "TRUE"').returns(wmi_users)
149
+ wmi_users = [double('WMI', :name => name)]
150
+ expect(Puppet::Util::Windows::ADSI).to receive(:execquery).with('select name from win32_useraccount where localaccount = "TRUE"').and_return(wmi_users)
154
151
 
155
- native_object = stub('IADsUser')
152
+ native_object = double('IADsUser')
156
153
  homedir = "C:\\Users\\#{name}"
157
- native_object.expects(:Get).with('HomeDirectory').returns(homedir)
158
- Puppet::Util::Windows::ADSI.expects(:connect).with("WinNT://./#{name},user").returns(native_object)
154
+ expect(native_object).to receive(:Get).with('HomeDirectory').and_return(homedir)
155
+ expect(Puppet::Util::Windows::ADSI).to receive(:connect).with("WinNT://./#{name},user").and_return(native_object)
159
156
 
160
157
  users = Puppet::Util::Windows::ADSI::User.to_a
161
158
  expect(users.length).to eq(1)
@@ -164,83 +161,86 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
164
161
  end
165
162
 
166
163
  describe "an instance" do
167
- let(:adsi_user) { stub('user', :objectSID => []) }
168
- let(:sid) { stub(:account => username, :domain => 'testcomputername') }
164
+ let(:adsi_user) { double('user', :objectSID => []) }
165
+ let(:sid) { double(:account => username, :domain => 'testcomputername') }
169
166
  let(:user) { Puppet::Util::Windows::ADSI::User.new(username, adsi_user) }
170
167
 
171
168
  it "should provide its groups as a list of names" do
172
169
  names = ["group1", "group2"]
173
170
 
174
- groups = names.map { |name| stub('group', :Name => name) }
171
+ groups = names.map { |name| double('group', :Name => name) }
175
172
 
176
- adsi_user.expects(:Groups).returns(groups)
173
+ expect(adsi_user).to receive(:Groups).and_return(groups)
177
174
 
178
175
  expect(user.groups).to match(names)
179
176
  end
180
177
 
181
178
  it "should be able to test whether a given password is correct" do
182
- Puppet::Util::Windows::ADSI::User.expects(:logon).with(username, 'pwdwrong').returns(false)
183
- Puppet::Util::Windows::ADSI::User.expects(:logon).with(username, 'pwdright').returns(true)
179
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:logon).with(username, 'pwdwrong').and_return(false)
180
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:logon).with(username, 'pwdright').and_return(true)
184
181
 
185
182
  expect(user.password_is?('pwdwrong')).to be_falsey
186
183
  expect(user.password_is?('pwdright')).to be_truthy
187
184
  end
188
185
 
189
186
  it "should be able to set a password" do
190
- adsi_user.expects(:SetPassword).with('pwd')
191
- adsi_user.expects(:SetInfo).at_least_once
187
+ expect(adsi_user).to receive(:SetPassword).with('pwd')
188
+ expect(adsi_user).to receive(:SetInfo).at_least(:once)
192
189
 
193
190
  flagname = "UserFlags"
194
191
  fADS_UF_DONT_EXPIRE_PASSWD = 0x10000
195
192
 
196
- adsi_user.expects(:Get).with(flagname).returns(0)
197
- adsi_user.expects(:Put).with(flagname, fADS_UF_DONT_EXPIRE_PASSWD)
193
+ expect(adsi_user).to receive(:Get).with(flagname).and_return(0)
194
+ expect(adsi_user).to receive(:Put).with(flagname, fADS_UF_DONT_EXPIRE_PASSWD)
198
195
 
199
196
  user.password = 'pwd'
200
197
  end
201
198
 
202
199
  it "should be able manage a user without a password" do
203
- adsi_user.expects(:SetPassword).with('pwd').never
204
- adsi_user.expects(:SetInfo).at_least_once
200
+ expect(adsi_user).not_to receive(:SetPassword).with('pwd')
201
+ expect(adsi_user).to receive(:SetInfo).at_least(:once)
205
202
 
206
203
  flagname = "UserFlags"
207
204
  fADS_UF_DONT_EXPIRE_PASSWD = 0x10000
208
205
 
209
- adsi_user.expects(:Get).with(flagname).returns(0)
210
- adsi_user.expects(:Put).with(flagname, fADS_UF_DONT_EXPIRE_PASSWD)
206
+ expect(adsi_user).to receive(:Get).with(flagname).and_return(0)
207
+ expect(adsi_user).to receive(:Put).with(flagname, fADS_UF_DONT_EXPIRE_PASSWD)
211
208
 
212
209
  user.password = nil
213
210
  end
214
211
 
215
212
  it "should generate the correct URI" do
216
- Puppet::Util::Windows::SID.stubs(:octet_string_to_principal).returns(sid)
213
+ allow(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).and_return(sid)
217
214
  expect(user.uri).to eq("WinNT://testcomputername/#{username},user")
218
215
  end
219
216
 
220
217
  describe "when given a set of groups to which to add the user" do
221
218
  let(:existing_groups) { ['group2','group3'] }
222
- let(:group_sids) { existing_groups.each_with_index.map{|n,i| stub(:Name => n, :objectSID => stub(:sid => i))} }
219
+ let(:group_sids) { existing_groups.each_with_index.map{|n,i| double(:Name => n, :objectSID => double(:sid => i))} }
223
220
 
224
221
  let(:groups_to_set) { 'group1,group2' }
225
- let(:desired_sids) { groups_to_set.split(',').each_with_index.map{|n,i| stub(:Name => n, :objectSID => stub(:sid => i-1))} }
222
+ let(:desired_sids) { groups_to_set.split(',').each_with_index.map{|n,i| double(:Name => n, :objectSID => double(:sid => i-1))} }
226
223
 
227
224
  before(:each) do
228
- user.expects(:group_sids).returns(group_sids.map {|s| s.objectSID })
225
+ expect(user).to receive(:group_sids).and_return(group_sids.map {|s| s.objectSID })
229
226
  end
230
227
 
231
228
  describe "if membership is specified as inclusive" do
232
229
  it "should add the user to those groups, and remove it from groups not in the list" do
233
- Puppet::Util::Windows::ADSI::User.expects(:name_sid_hash).returns(Hash[ desired_sids.map { |s| [s.objectSID.sid, s.objectSID] }])
234
- user.expects(:add_group_sids).with { |value| value.sid == -1 }
235
- user.expects(:remove_group_sids).with { |value| value.sid == 1 }
230
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:name_sid_hash).and_return(Hash[ desired_sids.map { |s| [s.objectSID.sid, s.objectSID] }])
231
+ expect(user).to receive(:add_group_sids) { |value| expect(value.sid).to eq(-1) }
232
+ expect(user).to receive(:remove_group_sids) { |value| expect(value.sid).to eq(1) }
236
233
 
237
234
  user.set_groups(groups_to_set, false)
238
235
  end
239
236
 
240
237
  it "should remove all users from a group if desired is empty" do
241
- Puppet::Util::Windows::ADSI::User.expects(:name_sid_hash).returns({})
242
- user.expects(:add_group_sids).never
243
- user.expects(:remove_group_sids).with { |user1, user2| user1.sid == 0 && user2.sid == 1 }
238
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:name_sid_hash).and_return({})
239
+ expect(user).not_to receive(:add_group_sids)
240
+ expect(user).to receive(:remove_group_sids) do |user1, user2|
241
+ expect(user1.sid).to eq(0)
242
+ expect(user2.sid).to eq(1)
243
+ end
244
244
 
245
245
  user.set_groups('', false)
246
246
  end
@@ -248,17 +248,17 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
248
248
 
249
249
  describe "if membership is specified as minimum" do
250
250
  it "should add the user to the specified groups without affecting its other memberships" do
251
- Puppet::Util::Windows::ADSI::User.expects(:name_sid_hash).returns(Hash[ desired_sids.map { |s| [s.objectSID.sid, s.objectSID] }])
252
- user.expects(:add_group_sids).with { |value| value.sid == -1 }
253
- user.expects(:remove_group_sids).never
251
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:name_sid_hash).and_return(Hash[ desired_sids.map { |s| [s.objectSID.sid, s.objectSID] }])
252
+ expect(user).to receive(:add_group_sids) { |value| expect(value.sid).to eq(-1) }
253
+ expect(user).not_to receive(:remove_group_sids)
254
254
 
255
255
  user.set_groups(groups_to_set, true)
256
256
  end
257
257
 
258
258
  it "should do nothing if desired is empty" do
259
- Puppet::Util::Windows::ADSI::User.expects(:name_sid_hash).returns({})
260
- user.expects(:remove_group_sids).never
261
- user.expects(:add_group_sids).never
259
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:name_sid_hash).and_return({})
260
+ expect(user).not_to receive(:remove_group_sids)
261
+ expect(user).not_to receive(:add_group_sids)
262
262
 
263
263
  user.set_groups('', true)
264
264
  end
@@ -282,7 +282,7 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
282
282
  flags | ads_userflags(flag)
283
283
  end
284
284
 
285
- user.stubs(:[]).with('UserFlags').returns(userflags)
285
+ allow(user).to receive(:[]).with('UserFlags').and_return(userflags)
286
286
  end
287
287
 
288
288
  describe '#userflag_set?' do
@@ -316,8 +316,8 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
316
316
  end
317
317
 
318
318
  it 'noops if no userflags are passed-in' do
319
- user.expects(:[]=).never
320
- user.expects(:commit).never
319
+ expect(user).not_to receive(:[]=)
320
+ expect(user).not_to receive(:commit)
321
321
 
322
322
  user.send(method)
323
323
  end
@@ -335,7 +335,7 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
335
335
  userflags = user['UserFlags']
336
336
  expected_userflags = userflags | ads_userflags(input_flags[0]) | ads_userflags(input_flags[1])
337
337
 
338
- user.expects(:[]=).with('UserFlags', expected_userflags)
338
+ expect(user).to receive(:[]=).with('UserFlags', expected_userflags)
339
339
 
340
340
  user.set_userflags(*input_flags)
341
341
  end
@@ -353,7 +353,7 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
353
353
  # ADS_UF_HOMEDIR_REQUIRED and ADS_UF_LOCKOUT should be the only flags set.
354
354
  expected_userflags = 0 | ads_userflags(:ADS_UF_HOMEDIR_REQUIRED) | ads_userflags(:ADS_UF_LOCKOUT)
355
355
 
356
- user.expects(:[]=).with('UserFlags', expected_userflags)
356
+ expect(user).to receive(:[]=).with('UserFlags', expected_userflags)
357
357
 
358
358
  user.unset_userflags(*input_flags)
359
359
  end
@@ -366,16 +366,16 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
366
366
  let(:groupname) { 'testgroup' }
367
367
 
368
368
  describe "an instance" do
369
- let(:adsi_group) { stub 'group' }
369
+ let(:adsi_group) { double('group') }
370
370
  let(:group) { Puppet::Util::Windows::ADSI::Group.new(groupname, adsi_group) }
371
- let(:someone_sid){ stub(:account => 'someone', :domain => 'testcomputername')}
371
+ let(:someone_sid){ double(:account => 'someone', :domain => 'testcomputername')}
372
372
 
373
373
  describe "should be able to use SID objects" do
374
374
  let(:system) { Puppet::Util::Windows::SID.name_to_principal('SYSTEM') }
375
375
  let(:invalid) { Puppet::Util::Windows::SID.name_to_principal('foobar') }
376
376
 
377
377
  it "to add a member" do
378
- adsi_group.expects(:Add).with("WinNT://S-1-5-18")
378
+ expect(adsi_group).to receive(:Add).with("WinNT://S-1-5-18")
379
379
 
380
380
  group.add_member_sids(system)
381
381
  end
@@ -385,7 +385,7 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
385
385
  end
386
386
 
387
387
  it "to remove a member" do
388
- adsi_group.expects(:Remove).with("WinNT://S-1-5-18")
388
+ expect(adsi_group).to receive(:Remove).with("WinNT://S-1-5-18")
389
389
 
390
390
  group.remove_member_sids(system)
391
391
  end
@@ -398,12 +398,12 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
398
398
  it "should provide its groups as a list of names" do
399
399
  names = ['user1', 'user2']
400
400
 
401
- users = names.map { |name| stub('user', :Name => name, :objectSID => name, :ole_respond_to? => true) }
401
+ users = names.map { |name| double('user', :Name => name, :objectSID => name, :ole_respond_to? => true) }
402
402
 
403
- adsi_group.expects(:Members).returns(users)
403
+ expect(adsi_group).to receive(:Members).and_return(users)
404
404
 
405
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with('user1').returns(stub(:domain_account => 'HOSTNAME\user1'))
406
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with('user2').returns(stub(:domain_account => 'HOSTNAME\user2'))
405
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with('user1').and_return(double(:domain_account => 'HOSTNAME\user1'))
406
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with('user2').and_return(double(:domain_account => 'HOSTNAME\user2'))
407
407
 
408
408
  expect(group.members.map(&:domain_account)).to match(['HOSTNAME\user1', 'HOSTNAME\user2'])
409
409
  end
@@ -412,26 +412,26 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
412
412
  it "should set the members of a group to only desired_members when inclusive" do
413
413
  names = ['DOMAIN\user1', 'user2']
414
414
  sids = [
415
- stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
416
- stub(:account => 'user2', :domain => 'testcomputername', :sid => 2),
417
- stub(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
415
+ double(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
416
+ double(:account => 'user2', :domain => 'testcomputername', :sid => 2),
417
+ double(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
418
418
  ]
419
419
 
420
420
  # use stubbed objectSid on member to return stubbed SID
421
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([0]).returns(sids[0])
422
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([1]).returns(sids[1])
421
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([0]).and_return(sids[0])
422
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([1]).and_return(sids[1])
423
423
 
424
- Puppet::Util::Windows::SID.expects(:name_to_principal).with('user2').returns(sids[1])
425
- Puppet::Util::Windows::SID.expects(:name_to_principal).with('DOMAIN2\user3').returns(sids[2])
424
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('user2').and_return(sids[1])
425
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('DOMAIN2\user3').and_return(sids[2])
426
426
 
427
- Puppet::Util::Windows::ADSI.expects(:sid_uri).with(sids[0]).returns("WinNT://DOMAIN/user1,user")
428
- Puppet::Util::Windows::ADSI.expects(:sid_uri).with(sids[2]).returns("WinNT://DOMAIN2/user3,user")
427
+ expect(Puppet::Util::Windows::ADSI).to receive(:sid_uri).with(sids[0]).and_return("WinNT://DOMAIN/user1,user")
428
+ expect(Puppet::Util::Windows::ADSI).to receive(:sid_uri).with(sids[2]).and_return("WinNT://DOMAIN2/user3,user")
429
429
 
430
- members = names.each_with_index.map{|n,i| stub(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
431
- adsi_group.expects(:Members).returns members
430
+ members = names.each_with_index.map{|n,i| double(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
431
+ expect(adsi_group).to receive(:Members).and_return(members)
432
432
 
433
- adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user')
434
- adsi_group.expects(:Add).with('WinNT://DOMAIN2/user3,user')
433
+ expect(adsi_group).to receive(:Remove).with('WinNT://DOMAIN/user1,user')
434
+ expect(adsi_group).to receive(:Add).with('WinNT://DOMAIN2/user3,user')
435
435
 
436
436
  group.set_members(['user2', 'DOMAIN2\user3'])
437
437
  end
@@ -439,35 +439,35 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
439
439
  it "should add the desired_members to an existing group when not inclusive" do
440
440
  names = ['DOMAIN\user1', 'user2']
441
441
  sids = [
442
- stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
443
- stub(:account => 'user2', :domain => 'testcomputername', :sid => 2),
444
- stub(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
442
+ double(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
443
+ double(:account => 'user2', :domain => 'testcomputername', :sid => 2),
444
+ double(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
445
445
  ]
446
446
 
447
447
  # use stubbed objectSid on member to return stubbed SID
448
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([0]).returns(sids[0])
449
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([1]).returns(sids[1])
448
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([0]).and_return(sids[0])
449
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([1]).and_return(sids[1])
450
450
 
451
- Puppet::Util::Windows::SID.expects(:name_to_principal).with('user2').returns(sids[1])
452
- Puppet::Util::Windows::SID.expects(:name_to_principal).with('DOMAIN2\user3').returns(sids[2])
451
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('user2').and_return(sids[1])
452
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with('DOMAIN2\user3').and_return(sids[2])
453
453
 
454
- Puppet::Util::Windows::ADSI.expects(:sid_uri).with(sids[2]).returns("WinNT://DOMAIN2/user3,user")
454
+ expect(Puppet::Util::Windows::ADSI).to receive(:sid_uri).with(sids[2]).and_return("WinNT://DOMAIN2/user3,user")
455
455
 
456
- members = names.each_with_index.map{|n,i| stub(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
457
- adsi_group.expects(:Members).returns members
456
+ members = names.each_with_index.map {|n,i| double(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
457
+ expect(adsi_group).to receive(:Members).and_return(members)
458
458
 
459
- adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user').never
459
+ expect(adsi_group).not_to receive(:Remove).with('WinNT://DOMAIN/user1,user')
460
460
 
461
- adsi_group.expects(:Add).with('WinNT://DOMAIN2/user3,user')
461
+ expect(adsi_group).to receive(:Add).with('WinNT://DOMAIN2/user3,user')
462
462
 
463
463
  group.set_members(['user2', 'DOMAIN2\user3'],false)
464
464
  end
465
465
 
466
466
  it "should return immediately when desired_members is nil" do
467
- adsi_group.expects(:Members).never
467
+ expect(adsi_group).not_to receive(:Members)
468
468
 
469
- adsi_group.expects(:Remove).never
470
- adsi_group.expects(:Add).never
469
+ expect(adsi_group).not_to receive(:Remove)
470
+ expect(adsi_group).not_to receive(:Add)
471
471
 
472
472
  group.set_members(nil)
473
473
  end
@@ -475,22 +475,22 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
475
475
  it "should remove all members when desired_members is empty and inclusive" do
476
476
  names = ['DOMAIN\user1', 'user2']
477
477
  sids = [
478
- stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
479
- stub(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
478
+ double(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
479
+ double(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
480
480
  ]
481
481
 
482
482
  # use stubbed objectSid on member to return stubbed SID
483
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([0]).returns(sids[0])
484
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([1]).returns(sids[1])
483
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([0]).and_return(sids[0])
484
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([1]).and_return(sids[1])
485
485
 
486
- Puppet::Util::Windows::ADSI.expects(:sid_uri).with(sids[0]).returns("WinNT://DOMAIN/user1,user")
487
- Puppet::Util::Windows::ADSI.expects(:sid_uri).with(sids[1]).returns("WinNT://testcomputername/user2,user")
486
+ expect(Puppet::Util::Windows::ADSI).to receive(:sid_uri).with(sids[0]).and_return("WinNT://DOMAIN/user1,user")
487
+ expect(Puppet::Util::Windows::ADSI).to receive(:sid_uri).with(sids[1]).and_return("WinNT://testcomputername/user2,user")
488
488
 
489
- members = names.each_with_index.map{|n,i| stub(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
490
- adsi_group.expects(:Members).returns members
489
+ members = names.each_with_index.map{|n,i| double(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
490
+ expect(adsi_group).to receive(:Members).and_return(members)
491
491
 
492
- adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user')
493
- adsi_group.expects(:Remove).with('WinNT://testcomputername/user2,user')
492
+ expect(adsi_group).to receive(:Remove).with('WinNT://DOMAIN/user1,user')
493
+ expect(adsi_group).to receive(:Remove).with('WinNT://testcomputername/user2,user')
494
494
 
495
495
  group.set_members([])
496
496
  end
@@ -498,35 +498,35 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
498
498
  it "should do nothing when desired_members is empty and not inclusive" do
499
499
  names = ['DOMAIN\user1', 'user2']
500
500
  sids = [
501
- stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
502
- stub(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
501
+ double(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
502
+ double(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
503
503
  ]
504
504
  # use stubbed objectSid on member to return stubbed SID
505
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([0]).returns(sids[0])
506
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([1]).returns(sids[1])
505
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([0]).and_return(sids[0])
506
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([1]).and_return(sids[1])
507
507
 
508
- members = names.each_with_index.map{|n,i| stub(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
509
- adsi_group.expects(:Members).returns members
508
+ members = names.each_with_index.map{|n,i| double(:Name => n, :objectSID => [i], :ole_respond_to? => true)}
509
+ expect(adsi_group).to receive(:Members).and_return(members)
510
510
 
511
- adsi_group.expects(:Remove).never
512
- adsi_group.expects(:Add).never
511
+ expect(adsi_group).not_to receive(:Remove)
512
+ expect(adsi_group).not_to receive(:Add)
513
513
 
514
514
  group.set_members([],false)
515
515
  end
516
516
 
517
517
  it "should raise an error when a username does not resolve to a SID" do
518
518
  expect {
519
- adsi_group.expects(:Members).returns []
519
+ expect(adsi_group).to receive(:Members).and_return([])
520
520
  group.set_members(['foobar'])
521
521
  }.to raise_error(Puppet::Error, /Could not resolve name: foobar/)
522
522
  end
523
523
  end
524
524
 
525
525
  it "should generate the correct URI" do
526
- adsi_group.expects(:objectSID).returns([0])
527
- Socket.expects(:gethostname).returns('TESTcomputerNAME')
528
- computer_sid = stub(:account => groupname,:domain => 'testcomputername')
529
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([0]).returns(computer_sid)
526
+ expect(adsi_group).to receive(:objectSID).and_return([0])
527
+ expect(Socket).to receive(:gethostname).and_return('TESTcomputerNAME')
528
+ computer_sid = double(:account => groupname,:domain => 'testcomputername')
529
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([0]).and_return(computer_sid)
530
530
  expect(group.uri).to eq("WinNT://./#{groupname},group")
531
531
  end
532
532
  end
@@ -544,10 +544,10 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
544
544
  end
545
545
 
546
546
  it "should be able to create a group" do
547
- adsi_group = stub("adsi")
547
+ adsi_group = double("adsi")
548
548
 
549
- connection.expects(:Create).with('group', groupname).returns(adsi_group)
550
- Puppet::Util::Windows::ADSI::User.expects(:exists?).with(groupname).returns(false)
549
+ expect(connection).to receive(:Create).with('group', groupname).and_return(adsi_group)
550
+ expect(Puppet::Util::Windows::ADSI::User).to receive(:exists?).with(groupname).and_return(false)
551
551
 
552
552
  group = Puppet::Util::Windows::ADSI::Group.create(groupname)
553
553
 
@@ -556,51 +556,49 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
556
556
  end
557
557
 
558
558
  it "should be able to confirm the existence of a group" do
559
- Puppet::Util::Windows::SID.expects(:name_to_principal).with(groupname).returns nil
560
- Puppet::Util::Windows::ADSI.expects(:connect).with("WinNT://./#{groupname},group").returns connection
561
- connection.expects(:Class).returns('Group')
559
+ expect(Puppet::Util::Windows::SID).to receive(:name_to_principal).with(groupname).and_return(nil)
560
+ expect(Puppet::Util::Windows::ADSI).to receive(:connect).with("WinNT://./#{groupname},group").and_return(connection)
561
+ expect(connection).to receive(:Class).and_return('Group')
562
562
 
563
563
  expect(Puppet::Util::Windows::ADSI::Group.exists?(groupname)).to be_truthy
564
564
  end
565
565
 
566
566
  it "should be able to confirm the existence of a group with a well-known SID" do
567
-
568
567
  service_group = Puppet::Util::Windows::SID::Service
569
568
  # ensure that the underlying OS is queried here
570
- Puppet::Util::Windows::ADSI.unstub(:connect)
569
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
571
570
  expect(Puppet::Util::Windows::ADSI::Group.exists?(service_group)).to be_truthy
572
571
  end
573
572
 
574
573
  it "will return true with a well-known User SID, as there is no way to resolve it with a WinNT:// style moniker" do
575
574
  user = Puppet::Util::Windows::SID::NtLocal
576
575
  # ensure that the underlying OS is queried here
577
- Puppet::Util::Windows::ADSI.unstub(:connect)
576
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
578
577
  expect(Puppet::Util::Windows::ADSI::Group.exists?(user)).to be_truthy
579
578
  end
580
579
 
581
580
  it "should return nil with an unknown SID" do
582
-
583
581
  bogus_sid = 'S-1-2-3-4'
584
582
  # ensure that the underlying OS is queried here
585
- Puppet::Util::Windows::ADSI.unstub(:connect)
583
+ allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
586
584
  expect(Puppet::Util::Windows::ADSI::Group.exists?(bogus_sid)).to be_falsey
587
585
  end
588
586
 
589
587
  it "should be able to delete a group" do
590
- connection.expects(:Delete).with('group', groupname)
588
+ expect(connection).to receive(:Delete).with('group', groupname)
591
589
 
592
590
  Puppet::Util::Windows::ADSI::Group.delete(groupname)
593
591
  end
594
592
 
595
593
  it "should return an enumeration of IADsGroup wrapped objects" do
596
594
  name = 'Administrators'
597
- wmi_groups = [stub('WMI', :name => name)]
598
- Puppet::Util::Windows::ADSI.expects(:execquery).with('select name from win32_group where localaccount = "TRUE"').returns(wmi_groups)
595
+ wmi_groups = [double('WMI', :name => name)]
596
+ expect(Puppet::Util::Windows::ADSI).to receive(:execquery).with('select name from win32_group where localaccount = "TRUE"').and_return(wmi_groups)
599
597
 
600
- native_object = stub('IADsGroup')
601
- Puppet::Util::Windows::SID.expects(:octet_string_to_principal).with([]).returns(stub(:domain_account => '.\Administrator'))
602
- native_object.expects(:Members).returns([stub(:Name => 'Administrator', :objectSID => [], :ole_respond_to? => true)])
603
- Puppet::Util::Windows::ADSI.expects(:connect).with("WinNT://./#{name},group").returns(native_object)
598
+ native_object = double('IADsGroup')
599
+ expect(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).with([]).and_return(double(:domain_account => '.\Administrator'))
600
+ expect(native_object).to receive(:Members).and_return([double(:Name => 'Administrator', :objectSID => [], :ole_respond_to? => true)])
601
+ expect(Puppet::Util::Windows::ADSI).to receive(:connect).with("WinNT://./#{name},group").and_return(native_object)
604
602
 
605
603
  groups = Puppet::Util::Windows::ADSI::Group.to_a
606
604
  expect(groups.length).to eq(1)
@@ -611,19 +609,19 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
611
609
 
612
610
  describe Puppet::Util::Windows::ADSI::UserProfile do
613
611
  it "should be able to delete a user profile" do
614
- connection.expects(:Delete).with("Win32_UserProfile.SID='S-A-B-C'")
612
+ expect(connection).to receive(:Delete).with("Win32_UserProfile.SID='S-A-B-C'")
615
613
  Puppet::Util::Windows::ADSI::UserProfile.delete('S-A-B-C')
616
614
  end
617
615
 
618
616
  it "should warn on 2003" do
619
- connection.expects(:Delete).raises(WIN32OLERuntimeError,
617
+ expect(connection).to receive(:Delete).and_raise(WIN32OLERuntimeError,
620
618
  "Delete (WIN32OLERuntimeError)
621
619
  OLE error code:80041010 in SWbemServicesEx
622
620
  Invalid class
623
621
  HRESULT error code:0x80020009
624
622
  Exception occurred.")
625
623
 
626
- Puppet.expects(:warning).with("Cannot delete user profile for 'S-A-B-C' prior to Vista SP1")
624
+ expect(Puppet).to receive(:warning).with("Cannot delete user profile for 'S-A-B-C' prior to Vista SP1")
627
625
  Puppet::Util::Windows::ADSI::UserProfile.delete('S-A-B-C')
628
626
  end
629
627
  end