puppet 6.0.10 → 6.1.0

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

Potentially problematic release.


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

Files changed (748) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -0
  3. data/Gemfile.lock +31 -27
  4. data/Guardfile.example +76 -0
  5. data/LICENSE +189 -4
  6. data/MAINTAINERS +47 -0
  7. data/README.md +3 -3
  8. data/lib/hiera/scope.rb +0 -7
  9. data/lib/puppet.rb +6 -5
  10. data/lib/puppet/application.rb +3 -3
  11. data/lib/puppet/application/cert.rb +2 -2
  12. data/lib/puppet/application/device.rb +83 -109
  13. data/lib/puppet/application/filebucket.rb +1 -10
  14. data/lib/puppet/application/ssl.rb +0 -2
  15. data/lib/puppet/configurer.rb +9 -10
  16. data/lib/puppet/confine/false.rb +1 -7
  17. data/lib/puppet/confine/true.rb +1 -7
  18. data/lib/puppet/defaults.rb +39 -51
  19. data/lib/puppet/forge.rb +1 -4
  20. data/lib/puppet/functions/abs.rb +1 -1
  21. data/lib/puppet/functions/call.rb +1 -2
  22. data/lib/puppet/functions/new.rb +1 -1
  23. data/lib/puppet/indirector/request.rb +15 -26
  24. data/lib/puppet/network/http/connection.rb +12 -32
  25. data/lib/puppet/network/http/factory.rb +0 -5
  26. data/lib/puppet/pal/catalog_compiler.rb +96 -0
  27. data/lib/puppet/pal/compiler.rb +221 -0
  28. data/lib/puppet/pal/function_signature.rb +52 -0
  29. data/lib/puppet/pal/json_catalog_encoder.rb +67 -0
  30. data/lib/puppet/pal/pal_api.rb +15 -0
  31. data/lib/puppet/pal/pal_impl.rb +523 -0
  32. data/lib/puppet/pal/plan_signature.rb +71 -0
  33. data/lib/puppet/pal/script_compiler.rb +71 -0
  34. data/lib/puppet/pal/task_signature.rb +58 -0
  35. data/lib/puppet/parser/functions/generate.rb +7 -6
  36. data/lib/puppet/plugins/configuration.rb +5 -1
  37. data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -1
  38. data/lib/puppet/pops/evaluator/external_syntax_support.rb +3 -3
  39. data/lib/puppet/pops/issues.rb +0 -4
  40. data/lib/puppet/pops/loader/ruby_legacy_function_instantiator.rb +4 -60
  41. data/lib/puppet/pops/model/factory.rb +4 -38
  42. data/lib/puppet/pops/model/pn_transformer.rb +0 -5
  43. data/lib/puppet/pops/parser/egrammar.ra +2 -2
  44. data/lib/puppet/pops/parser/heredoc_support.rb +7 -17
  45. data/lib/puppet/pops/parser/lexer2.rb +1 -6
  46. data/lib/puppet/pops/parser/locator.rb +86 -106
  47. data/lib/puppet/pops/parser/parser_support.rb +2 -11
  48. data/lib/puppet/pops/types/string_converter.rb +7 -2
  49. data/lib/puppet/pops/types/type_mismatch_describer.rb +1 -1
  50. data/lib/puppet/pops/types/types.rb +3 -5
  51. data/lib/puppet/pops/validation/checker4_0.rb +13 -0
  52. data/lib/puppet/provider.rb +2 -1
  53. data/lib/puppet/provider/exec.rb +6 -1
  54. data/lib/puppet/provider/file/windows.rb +1 -49
  55. data/lib/puppet/provider/group/windows_adsi.rb +1 -4
  56. data/lib/puppet/provider/package.rb +0 -2
  57. data/lib/puppet/provider/package/dpkg.rb +2 -15
  58. data/lib/puppet/provider/package/gem.rb +42 -102
  59. data/lib/puppet/provider/package/pip.rb +111 -135
  60. data/lib/puppet/provider/package/pip3.rb +1 -1
  61. data/lib/puppet/provider/package/pkgng.rb +37 -21
  62. data/lib/puppet/provider/package/puppet_gem.rb +1 -1
  63. data/lib/puppet/provider/package/rpm.rb +16 -27
  64. data/lib/puppet/provider/package/windows.rb +1 -5
  65. data/lib/puppet/provider/package/yum.rb +1 -2
  66. data/lib/puppet/provider/service/systemd.rb +17 -0
  67. data/lib/puppet/provider/service/upstart.rb +5 -17
  68. data/lib/puppet/provider/service/windows.rb +8 -3
  69. data/lib/puppet/provider/user/directoryservice.rb +4 -16
  70. data/lib/puppet/provider/user/useradd.rb +13 -16
  71. data/lib/puppet/resource.rb +3 -1
  72. data/lib/puppet/rest/client.rb +83 -0
  73. data/lib/puppet/rest/route.rb +1 -1
  74. data/lib/puppet/settings.rb +5 -10
  75. data/lib/puppet/settings/server_list_setting.rb +0 -9
  76. data/lib/puppet/ssl/host.rb +11 -0
  77. data/lib/puppet/ssl/validator/default_validator.rb +0 -31
  78. data/lib/puppet/syntax_checkers/epp.rb +34 -0
  79. data/lib/puppet/syntax_checkers/pp.rb +34 -0
  80. data/lib/puppet/transaction.rb +7 -12
  81. data/lib/puppet/transaction/event_manager.rb +5 -1
  82. data/lib/puppet/transaction/resource_harness.rb +0 -1
  83. data/lib/puppet/type.rb +6 -0
  84. data/lib/puppet/type/exec.rb +5 -27
  85. data/lib/puppet/type/file/mode.rb +1 -6
  86. data/lib/puppet/type/file/source.rb +1 -0
  87. data/lib/puppet/type/filebucket.rb +8 -12
  88. data/lib/puppet/type/package.rb +11 -44
  89. data/lib/puppet/type/schedule.rb +0 -4
  90. data/lib/puppet/type/service.rb +12 -0
  91. data/lib/puppet/type/user.rb +1 -1
  92. data/lib/puppet/util/command_line.rb +1 -5
  93. data/lib/puppet/util/connection.rb +6 -15
  94. data/lib/puppet/util/http_proxy.rb +2 -3
  95. data/lib/puppet/util/log.rb +2 -7
  96. data/lib/puppet/util/pidlock.rb +1 -15
  97. data/lib/puppet/util/windows/process.rb +5 -73
  98. data/lib/puppet/util/windows/registry.rb +1 -7
  99. data/lib/puppet/util/windows/security.rb +8 -29
  100. data/lib/puppet/util/windows/service.rb +33 -27
  101. data/lib/puppet/util/windows/user.rb +4 -14
  102. data/lib/puppet/version.rb +1 -1
  103. data/lib/puppet_pal.rb +5 -1132
  104. data/locales/ja/puppet.po +297 -363
  105. data/locales/puppet.pot +445 -517
  106. data/man/man5/puppet.conf.5 +12 -20
  107. data/man/man8/puppet-agent.8 +1 -1
  108. data/man/man8/puppet-apply.8 +1 -1
  109. data/man/man8/puppet-catalog.8 +1 -1
  110. data/man/man8/puppet-config.8 +1 -1
  111. data/man/man8/puppet-describe.8 +1 -1
  112. data/man/man8/puppet-device.8 +1 -1
  113. data/man/man8/puppet-doc.8 +1 -1
  114. data/man/man8/puppet-epp.8 +1 -1
  115. data/man/man8/puppet-facts.8 +1 -1
  116. data/man/man8/puppet-filebucket.8 +2 -6
  117. data/man/man8/puppet-generate.8 +1 -1
  118. data/man/man8/puppet-help.8 +1 -1
  119. data/man/man8/puppet-key.8 +1 -1
  120. data/man/man8/puppet-lookup.8 +1 -1
  121. data/man/man8/puppet-man.8 +1 -1
  122. data/man/man8/puppet-module.8 +1 -1
  123. data/man/man8/puppet-node.8 +1 -1
  124. data/man/man8/puppet-parser.8 +1 -1
  125. data/man/man8/puppet-plugin.8 +1 -1
  126. data/man/man8/puppet-report.8 +1 -1
  127. data/man/man8/puppet-resource.8 +1 -1
  128. data/man/man8/puppet-script.8 +1 -1
  129. data/man/man8/puppet-ssl.8 +1 -1
  130. data/man/man8/puppet-status.8 +1 -1
  131. data/man/man8/puppet.8 +2 -2
  132. data/spec/fixtures/unit/provider/package/pkgng/pkg.query +7 -1
  133. data/spec/fixtures/unit/provider/package/pkgng/pkg.query.zsh +1 -0
  134. data/spec/integration/agent/logging_spec.rb +7 -5
  135. data/spec/integration/application/apply_spec.rb +16 -18
  136. data/spec/integration/application/doc_spec.rb +2 -1
  137. data/spec/integration/application/lookup_spec.rb +5 -5
  138. data/spec/integration/configurer_spec.rb +6 -5
  139. data/spec/integration/defaults_spec.rb +6 -5
  140. data/spec/integration/directory_environments_spec.rb +1 -1
  141. data/spec/integration/faces/config_spec.rb +4 -3
  142. data/spec/integration/faces/documentation_spec.rb +1 -0
  143. data/spec/integration/faces/plugin_spec.rb +1 -1
  144. data/spec/integration/file_bucket/file_spec.rb +4 -2
  145. data/spec/integration/file_serving/content_spec.rb +1 -0
  146. data/spec/integration/file_serving/fileset_spec.rb +1 -0
  147. data/spec/integration/file_serving/metadata_spec.rb +1 -0
  148. data/spec/integration/file_serving/terminus_helper_spec.rb +1 -0
  149. data/spec/integration/indirector/catalog/compiler_spec.rb +11 -10
  150. data/spec/integration/indirector/direct_file_server_spec.rb +1 -1
  151. data/spec/integration/indirector/facts/facter_spec.rb +5 -4
  152. data/spec/integration/indirector/file_content/file_server_spec.rb +8 -7
  153. data/spec/integration/indirector/file_metadata/file_server_spec.rb +8 -7
  154. data/spec/integration/network/authconfig_spec.rb +24 -23
  155. data/spec/integration/network/formats_spec.rb +1 -0
  156. data/spec/integration/node/environment_spec.rb +1 -0
  157. data/spec/integration/node/facts_spec.rb +10 -9
  158. data/spec/integration/node_spec.rb +7 -6
  159. data/spec/integration/parser/catalog_spec.rb +5 -1
  160. data/spec/integration/parser/collection_spec.rb +2 -1
  161. data/spec/integration/parser/compiler_spec.rb +6 -6
  162. data/spec/integration/parser/scope_spec.rb +1 -1
  163. data/spec/integration/parser/undef_param_spec.rb +1 -1
  164. data/spec/integration/provider/service/init_spec.rb +5 -4
  165. data/spec/integration/provider/service/systemd_spec.rb +2 -0
  166. data/spec/integration/provider/service/windows_spec.rb +2 -1
  167. data/spec/integration/reference/providers_spec.rb +2 -1
  168. data/spec/integration/reports_spec.rb +2 -1
  169. data/spec/integration/resource/catalog_spec.rb +17 -14
  170. data/spec/integration/resource/type_collection_spec.rb +5 -4
  171. data/spec/integration/ssl/certificate_request_spec.rb +1 -0
  172. data/spec/integration/ssl/host_spec.rb +2 -1
  173. data/spec/integration/ssl/key_spec.rb +1 -0
  174. data/spec/integration/test/test_helper_spec.rb +1 -0
  175. data/spec/integration/transaction/report_spec.rb +11 -6
  176. data/spec/integration/transaction_spec.rb +19 -18
  177. data/spec/integration/type/exec_spec.rb +1 -0
  178. data/spec/integration/type/file_spec.rb +33 -13
  179. data/spec/integration/type/package_spec.rb +24 -20
  180. data/spec/integration/type/tidy_spec.rb +2 -1
  181. data/spec/integration/type_spec.rb +1 -0
  182. data/spec/integration/util/autoload_spec.rb +2 -1
  183. data/spec/integration/util/rdoc/parser_spec.rb +1 -0
  184. data/spec/integration/util/settings_spec.rb +1 -0
  185. data/spec/integration/util/windows/adsi_spec.rb +5 -3
  186. data/spec/integration/util/windows/principal_spec.rb +1 -0
  187. data/spec/integration/util/windows/process_spec.rb +6 -4
  188. data/spec/integration/util/windows/registry_spec.rb +51 -93
  189. data/spec/integration/util/windows/security_spec.rb +4 -2
  190. data/spec/integration/util/windows/user_spec.rb +20 -37
  191. data/spec/integration/util_spec.rb +7 -4
  192. data/spec/lib/puppet_spec/compiler.rb +1 -1
  193. data/spec/lib/puppet_spec/files.rb +1 -0
  194. data/spec/lib/puppet_spec/module_tool/shared_functions.rb +1 -1
  195. data/spec/lib/puppet_spec/scope.rb +2 -1
  196. data/spec/shared_behaviours/all_parsedfile_providers.rb +1 -1
  197. data/spec/shared_behaviours/file_server_terminus.rb +9 -8
  198. data/spec/shared_behaviours/file_serving.rb +8 -6
  199. data/spec/shared_behaviours/file_serving_model.rb +5 -3
  200. data/spec/shared_behaviours/hiera_indirections.rb +4 -3
  201. data/spec/shared_behaviours/iterative_functions.rb +1 -0
  202. data/spec/shared_behaviours/memory_terminus.rb +2 -2
  203. data/spec/shared_examples/rhel_package_provider.rb +70 -112
  204. data/spec/spec_helper.rb +2 -11
  205. data/spec/unit/agent/disabler_spec.rb +5 -4
  206. data/spec/unit/agent/locker_spec.rb +13 -12
  207. data/spec/unit/agent_spec.rb +85 -80
  208. data/spec/unit/application/agent_spec.rb +93 -88
  209. data/spec/unit/application/apply_spec.rb +83 -82
  210. data/spec/unit/application/config_spec.rb +1 -0
  211. data/spec/unit/application/describe_spec.rb +7 -6
  212. data/spec/unit/application/device_spec.rb +419 -395
  213. data/spec/unit/application/doc_spec.rb +46 -44
  214. data/spec/unit/application/face_base_spec.rb +62 -61
  215. data/spec/unit/application/facts_spec.rb +4 -3
  216. data/spec/unit/application/filebucket_spec.rb +74 -66
  217. data/spec/unit/application/indirection_base_spec.rb +6 -8
  218. data/spec/unit/application/lookup_spec.rb +26 -26
  219. data/spec/unit/application/resource_spec.rb +48 -42
  220. data/spec/unit/application/ssl_spec.rb +3 -8
  221. data/spec/unit/application_spec.rb +98 -86
  222. data/spec/unit/capability_spec.rb +6 -6
  223. data/spec/unit/certificate_factory_spec.rb +5 -3
  224. data/spec/unit/configurer/downloader_spec.rb +21 -20
  225. data/spec/unit/configurer/fact_handler_spec.rb +3 -2
  226. data/spec/unit/configurer/plugin_handler_spec.rb +8 -41
  227. data/spec/unit/configurer_spec.rb +198 -194
  228. data/spec/unit/confine/exists_spec.rb +15 -17
  229. data/spec/unit/confine/false_spec.rb +6 -32
  230. data/spec/unit/confine/feature_spec.rb +5 -7
  231. data/spec/unit/confine/true_spec.rb +6 -32
  232. data/spec/unit/confine/variable_spec.rb +15 -14
  233. data/spec/unit/confine_collection_spec.rb +29 -28
  234. data/spec/unit/confine_spec.rb +14 -13
  235. data/spec/unit/confiner_spec.rb +11 -10
  236. data/spec/unit/context/trusted_information_spec.rb +1 -1
  237. data/spec/unit/daemon_spec.rb +36 -35
  238. data/spec/unit/data_providers/function_data_provider_spec.rb +1 -0
  239. data/spec/unit/data_providers/hiera_data_provider_spec.rb +1 -0
  240. data/spec/unit/datatypes_spec.rb +4 -3
  241. data/spec/unit/defaults_spec.rb +27 -18
  242. data/spec/unit/environments_spec.rb +7 -7
  243. data/spec/unit/etc_spec.rb +32 -30
  244. data/spec/unit/external/pson_spec.rb +1 -0
  245. data/spec/unit/face/catalog_spec.rb +1 -0
  246. data/spec/unit/face/config_spec.rb +35 -31
  247. data/spec/unit/face/epp_face_spec.rb +4 -3
  248. data/spec/unit/face/facts_spec.rb +6 -5
  249. data/spec/unit/face/generate_spec.rb +5 -4
  250. data/spec/unit/face/help_spec.rb +8 -7
  251. data/spec/unit/face/key_spec.rb +1 -0
  252. data/spec/unit/face/man_spec.rb +2 -1
  253. data/spec/unit/face/module/install_spec.rb +5 -3
  254. data/spec/unit/face/module/list_spec.rb +12 -2
  255. data/spec/unit/face/module/search_spec.rb +9 -11
  256. data/spec/unit/face/module/uninstall_spec.rb +8 -4
  257. data/spec/unit/face/node_spec.rb +24 -23
  258. data/spec/unit/face/parser_spec.rb +18 -3
  259. data/spec/unit/face/plugin_spec.rb +9 -36
  260. data/spec/unit/face/status_spec.rb +1 -0
  261. data/spec/unit/file_bucket/dipper_spec.rb +20 -24
  262. data/spec/unit/file_bucket/file_spec.rb +2 -0
  263. data/spec/unit/file_serving/base_spec.rb +15 -14
  264. data/spec/unit/file_serving/configuration/parser_spec.rb +28 -27
  265. data/spec/unit/file_serving/configuration_spec.rb +66 -63
  266. data/spec/unit/file_serving/content_spec.rb +11 -10
  267. data/spec/unit/file_serving/fileset_spec.rb +58 -63
  268. data/spec/unit/file_serving/http_metadata_spec.rb +7 -8
  269. data/spec/unit/file_serving/metadata_spec.rb +36 -36
  270. data/spec/unit/file_serving/mount/file_spec.rb +32 -31
  271. data/spec/unit/file_serving/mount/locales_spec.rb +24 -23
  272. data/spec/unit/file_serving/mount/modules_spec.rb +15 -14
  273. data/spec/unit/file_serving/mount/pluginfacts_spec.rb +24 -23
  274. data/spec/unit/file_serving/mount/plugins_spec.rb +24 -23
  275. data/spec/unit/file_serving/mount/tasks_spec.rb +15 -14
  276. data/spec/unit/file_serving/mount_spec.rb +1 -0
  277. data/spec/unit/file_serving/terminus_helper_spec.rb +42 -37
  278. data/spec/unit/file_serving/terminus_selector_spec.rb +13 -12
  279. data/spec/unit/file_system/uniquefile_spec.rb +4 -4
  280. data/spec/unit/file_system_spec.rb +2 -2
  281. data/spec/unit/forge/errors_spec.rb +1 -1
  282. data/spec/unit/forge/forge_spec.rb +16 -17
  283. data/spec/unit/forge/module_release_spec.rb +18 -18
  284. data/spec/unit/forge/repository_spec.rb +30 -29
  285. data/spec/unit/forge_spec.rb +11 -15
  286. data/spec/unit/functions/binary_file_spec.rb +3 -3
  287. data/spec/unit/functions/contain_spec.rb +2 -0
  288. data/spec/unit/functions/defined_spec.rb +1 -0
  289. data/spec/unit/functions/epp_spec.rb +2 -2
  290. data/spec/unit/functions/find_file_spec.rb +7 -7
  291. data/spec/unit/functions/include_spec.rb +4 -0
  292. data/spec/unit/functions/lookup_fixture_spec.rb +1 -0
  293. data/spec/unit/functions/lookup_spec.rb +2 -1
  294. data/spec/unit/functions/module_directory_spec.rb +12 -12
  295. data/spec/unit/functions/new_spec.rb +0 -15
  296. data/spec/unit/functions/require_spec.rb +3 -0
  297. data/spec/unit/functions/shared.rb +8 -5
  298. data/spec/unit/functions/versioncmp_spec.rb +2 -1
  299. data/spec/unit/functions4_spec.rb +10 -9
  300. data/spec/unit/gettext/config_spec.rb +4 -4
  301. data/spec/unit/gettext/module_loading_spec.rb +7 -7
  302. data/spec/unit/graph/rb_tree_map_spec.rb +2 -0
  303. data/spec/unit/graph/relationship_graph_spec.rb +2 -1
  304. data/spec/unit/graph/simple_graph_spec.rb +10 -9
  305. data/spec/unit/hiera/scope_spec.rb +0 -7
  306. data/spec/unit/hiera_puppet_spec.rb +20 -20
  307. data/spec/unit/indirector/catalog/compiler_spec.rb +149 -147
  308. data/spec/unit/indirector/catalog/json_spec.rb +2 -1
  309. data/spec/unit/indirector/catalog/msgpack_spec.rb +1 -0
  310. data/spec/unit/indirector/catalog/rest_spec.rb +1 -0
  311. data/spec/unit/indirector/catalog/store_configs_spec.rb +1 -0
  312. data/spec/unit/indirector/catalog/yaml_spec.rb +1 -0
  313. data/spec/unit/indirector/certificate/file_spec.rb +1 -0
  314. data/spec/unit/indirector/certificate/rest_spec.rb +10 -8
  315. data/spec/unit/indirector/certificate_request/file_spec.rb +1 -0
  316. data/spec/unit/indirector/certificate_request/rest_spec.rb +1 -0
  317. data/spec/unit/indirector/direct_file_server_spec.rb +18 -17
  318. data/spec/unit/indirector/envelope_spec.rb +2 -1
  319. data/spec/unit/indirector/exec_spec.rb +5 -4
  320. data/spec/unit/indirector/face_spec.rb +9 -9
  321. data/spec/unit/indirector/facts/facter_spec.rb +43 -37
  322. data/spec/unit/indirector/facts/network_device_spec.rb +9 -8
  323. data/spec/unit/indirector/facts/rest_spec.rb +8 -7
  324. data/spec/unit/indirector/facts/store_configs_spec.rb +1 -0
  325. data/spec/unit/indirector/facts/yaml_spec.rb +1 -0
  326. data/spec/unit/indirector/file_bucket_file/file_spec.rb +4 -3
  327. data/spec/unit/indirector/file_bucket_file/rest_spec.rb +1 -0
  328. data/spec/unit/indirector/file_bucket_file/selector_spec.rb +5 -4
  329. data/spec/unit/indirector/file_content/file_server_spec.rb +1 -0
  330. data/spec/unit/indirector/file_content/file_spec.rb +1 -0
  331. data/spec/unit/indirector/file_content/rest_spec.rb +1 -0
  332. data/spec/unit/indirector/file_content/selector_spec.rb +1 -0
  333. data/spec/unit/indirector/file_metadata/file_server_spec.rb +1 -0
  334. data/spec/unit/indirector/file_metadata/file_spec.rb +13 -12
  335. data/spec/unit/indirector/file_metadata/rest_spec.rb +1 -0
  336. data/spec/unit/indirector/file_metadata/selector_spec.rb +1 -0
  337. data/spec/unit/indirector/file_server_spec.rb +87 -87
  338. data/spec/unit/indirector/indirection_spec.rb +226 -242
  339. data/spec/unit/indirector/json_spec.rb +9 -7
  340. data/spec/unit/indirector/key/file_spec.rb +22 -21
  341. data/spec/unit/indirector/memory_spec.rb +7 -6
  342. data/spec/unit/indirector/msgpack_spec.rb +9 -7
  343. data/spec/unit/indirector/node/exec_spec.rb +3 -2
  344. data/spec/unit/indirector/node/memory_spec.rb +4 -2
  345. data/spec/unit/indirector/node/msgpack_spec.rb +1 -0
  346. data/spec/unit/indirector/node/plain_spec.rb +4 -2
  347. data/spec/unit/indirector/node/rest_spec.rb +1 -0
  348. data/spec/unit/indirector/node/store_configs_spec.rb +1 -0
  349. data/spec/unit/indirector/node/yaml_spec.rb +1 -0
  350. data/spec/unit/indirector/none_spec.rb +5 -5
  351. data/spec/unit/indirector/plain_spec.rb +8 -7
  352. data/spec/unit/indirector/report/msgpack_spec.rb +1 -0
  353. data/spec/unit/indirector/report/processor_spec.rb +22 -21
  354. data/spec/unit/indirector/report/rest_spec.rb +12 -11
  355. data/spec/unit/indirector/report/yaml_spec.rb +1 -0
  356. data/spec/unit/indirector/request_spec.rb +12 -11
  357. data/spec/unit/indirector/resource/ral_spec.rb +54 -47
  358. data/spec/unit/indirector/resource/store_configs_spec.rb +1 -0
  359. data/spec/unit/indirector/rest_spec.rb +110 -113
  360. data/spec/unit/indirector/ssl_file_spec.rb +65 -64
  361. data/spec/unit/indirector/status/local_spec.rb +1 -0
  362. data/spec/unit/indirector/status/rest_spec.rb +1 -0
  363. data/spec/unit/indirector/store_configs_spec.rb +1 -0
  364. data/spec/unit/indirector/terminus_spec.rb +27 -27
  365. data/spec/unit/indirector/yaml_spec.rb +6 -5
  366. data/spec/unit/indirector_spec.rb +2 -1
  367. data/spec/unit/info_service_spec.rb +1 -1
  368. data/spec/unit/interface/action_builder_spec.rb +1 -0
  369. data/spec/unit/interface/action_manager_spec.rb +1 -0
  370. data/spec/unit/interface/action_spec.rb +3 -2
  371. data/spec/unit/interface/documentation_spec.rb +1 -0
  372. data/spec/unit/interface/face_collection_spec.rb +12 -19
  373. data/spec/unit/interface_spec.rb +3 -3
  374. data/spec/unit/man_spec.rb +4 -3
  375. data/spec/unit/module_spec.rb +51 -46
  376. data/spec/unit/module_tool/applications/installer_spec.rb +11 -10
  377. data/spec/unit/module_tool/applications/searcher_spec.rb +3 -3
  378. data/spec/unit/module_tool/applications/uninstaller_spec.rb +2 -1
  379. data/spec/unit/module_tool/applications/unpacker_spec.rb +13 -13
  380. data/spec/unit/module_tool/applications/upgrader_spec.rb +5 -5
  381. data/spec/unit/module_tool/install_directory_spec.rb +8 -8
  382. data/spec/unit/module_tool/installed_modules_spec.rb +3 -3
  383. data/spec/unit/module_tool/tar/gnu_spec.rb +6 -6
  384. data/spec/unit/module_tool/tar/mini_spec.rb +12 -12
  385. data/spec/unit/module_tool/tar_spec.rb +13 -12
  386. data/spec/unit/module_tool_spec.rb +12 -7
  387. data/spec/unit/network/auth_config_parser_spec.rb +13 -11
  388. data/spec/unit/network/authconfig_spec.rb +18 -17
  389. data/spec/unit/network/authorization_spec.rb +5 -4
  390. data/spec/unit/network/authstore_spec.rb +1 -0
  391. data/spec/unit/network/format_handler_spec.rb +1 -0
  392. data/spec/unit/network/format_spec.rb +10 -9
  393. data/spec/unit/network/format_support_spec.rb +29 -28
  394. data/spec/unit/network/formats_spec.rb +5 -4
  395. data/spec/unit/network/http/api/indirected_routes_spec.rb +29 -24
  396. data/spec/unit/network/http/api/master/v3/authorization_spec.rb +2 -2
  397. data/spec/unit/network/http/api/master/v3/environment_spec.rb +1 -1
  398. data/spec/unit/network/http/api/master/v3/environments_spec.rb +7 -6
  399. data/spec/unit/network/http/api_spec.rb +2 -0
  400. data/spec/unit/network/http/compression_spec.rb +22 -21
  401. data/spec/unit/network/http/connection_spec.rb +121 -30
  402. data/spec/unit/network/http/factory_spec.rb +6 -11
  403. data/spec/unit/network/http/handler_spec.rb +18 -9
  404. data/spec/unit/network/http/nocache_pool_spec.rb +7 -6
  405. data/spec/unit/network/http/pool_spec.rb +29 -28
  406. data/spec/unit/network/http/request_spec.rb +2 -0
  407. data/spec/unit/network/http/response_spec.rb +13 -11
  408. data/spec/unit/network/http/route_spec.rb +1 -0
  409. data/spec/unit/network/http/session_spec.rb +2 -1
  410. data/spec/unit/network/http/site_spec.rb +1 -0
  411. data/spec/unit/network/http_pool_spec.rb +9 -18
  412. data/spec/unit/network/http_spec.rb +1 -0
  413. data/spec/unit/network/resolver_spec.rb +26 -25
  414. data/spec/unit/network/rights_spec.rb +53 -52
  415. data/spec/unit/node/environment_spec.rb +15 -14
  416. data/spec/unit/node/facts_spec.rb +7 -5
  417. data/spec/unit/node_spec.rb +10 -4
  418. data/spec/unit/other/selinux_spec.rb +1 -0
  419. data/spec/unit/parameter/boolean_spec.rb +2 -1
  420. data/spec/unit/parameter/package_options_spec.rb +2 -1
  421. data/spec/unit/parameter/path_spec.rb +1 -0
  422. data/spec/unit/parameter/value_collection_spec.rb +1 -0
  423. data/spec/unit/parameter/value_spec.rb +1 -0
  424. data/spec/unit/parameter_spec.rb +9 -9
  425. data/spec/unit/parser/ast/block_expression_spec.rb +8 -6
  426. data/spec/unit/parser/ast/leaf_spec.rb +21 -20
  427. data/spec/unit/parser/compiler_spec.rb +96 -84
  428. data/spec/unit/parser/environment_compiler_spec.rb +8 -7
  429. data/spec/unit/parser/files_spec.rb +1 -0
  430. data/spec/unit/parser/functions/create_resources_spec.rb +1 -1
  431. data/spec/unit/parser/functions/digest_spec.rb +1 -0
  432. data/spec/unit/parser/functions/fail_spec.rb +2 -1
  433. data/spec/unit/parser/functions/file_spec.rb +14 -13
  434. data/spec/unit/parser/functions/fqdn_rand_spec.rb +6 -5
  435. data/spec/unit/parser/functions/generate_spec.rb +8 -7
  436. data/spec/unit/parser/functions/inline_template_spec.rb +1 -0
  437. data/spec/unit/parser/functions/regsubst_spec.rb +1 -0
  438. data/spec/unit/parser/functions/scanf_spec.rb +1 -0
  439. data/spec/unit/parser/functions/shellquote_spec.rb +1 -0
  440. data/spec/unit/parser/functions/split_spec.rb +1 -0
  441. data/spec/unit/parser/functions/sprintf_spec.rb +1 -0
  442. data/spec/unit/parser/functions/tag_spec.rb +2 -1
  443. data/spec/unit/parser/functions/tagged_spec.rb +3 -2
  444. data/spec/unit/parser/functions/template_spec.rb +13 -13
  445. data/spec/unit/parser/functions/versioncmp_spec.rb +2 -1
  446. data/spec/unit/parser/functions_spec.rb +7 -6
  447. data/spec/unit/parser/relationship_spec.rb +1 -0
  448. data/spec/unit/parser/resource_spec.rb +42 -42
  449. data/spec/unit/parser/scope_spec.rb +35 -39
  450. data/spec/unit/parser/templatewrapper_spec.rb +12 -11
  451. data/spec/unit/parser/type_loader_spec.rb +19 -17
  452. data/spec/unit/pops/adaptable_spec.rb +1 -0
  453. data/spec/unit/pops/benchmark_spec.rb +1 -0
  454. data/spec/unit/pops/evaluator/access_ops_spec.rb +1 -0
  455. data/spec/unit/pops/evaluator/arithmetic_ops_spec.rb +1 -0
  456. data/spec/unit/pops/evaluator/basic_expressions_spec.rb +1 -0
  457. data/spec/unit/pops/evaluator/collections_ops_spec.rb +1 -0
  458. data/spec/unit/pops/evaluator/comparison_ops_spec.rb +1 -0
  459. data/spec/unit/pops/evaluator/conditionals_spec.rb +1 -0
  460. data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +47 -10
  461. data/spec/unit/pops/evaluator/logical_ops_spec.rb +1 -0
  462. data/spec/unit/pops/evaluator/runtime3_converter_spec.rb +1 -0
  463. data/spec/unit/pops/evaluator/string_interpolation_spec.rb +1 -0
  464. data/spec/unit/pops/evaluator/variables_spec.rb +1 -0
  465. data/spec/unit/pops/factory_spec.rb +4 -3
  466. data/spec/unit/pops/issues_spec.rb +20 -19
  467. data/spec/unit/pops/loaders/loader_spec.rb +4 -8
  468. data/spec/unit/pops/loaders/loaders_spec.rb +31 -101
  469. data/spec/unit/pops/lookup/context_spec.rb +1 -0
  470. data/spec/unit/pops/lookup/interpolation_spec.rb +3 -2
  471. data/spec/unit/pops/merge_strategy_spec.rb +1 -0
  472. data/spec/unit/pops/migration_spec.rb +5 -3
  473. data/spec/unit/pops/model/model_spec.rb +1 -0
  474. data/spec/unit/pops/model/pn_transformer_spec.rb +1 -4
  475. data/spec/unit/pops/parser/locator_spec.rb +6 -48
  476. data/spec/unit/pops/parser/parse_application_spec.rb +1 -0
  477. data/spec/unit/pops/parser/parse_basic_expressions_spec.rb +1 -0
  478. data/spec/unit/pops/parser/parse_calls_spec.rb +1 -0
  479. data/spec/unit/pops/parser/parse_capabilities_spec.rb +1 -0
  480. data/spec/unit/pops/parser/parse_conditionals_spec.rb +1 -0
  481. data/spec/unit/pops/parser/parse_containers_spec.rb +1 -0
  482. data/spec/unit/pops/parser/parse_heredoc_spec.rb +15 -111
  483. data/spec/unit/pops/parser/parse_plan_spec.rb +1 -0
  484. data/spec/unit/pops/parser/parse_resource_spec.rb +1 -0
  485. data/spec/unit/pops/parser/parse_site_spec.rb +1 -0
  486. data/spec/unit/pops/parser/pn_parser_spec.rb +1 -0
  487. data/spec/unit/pops/pn_spec.rb +1 -0
  488. data/spec/unit/pops/resource/resource_type_impl_spec.rb +1 -0
  489. data/spec/unit/pops/serialization/serialization_spec.rb +1 -1
  490. data/spec/unit/pops/serialization/to_from_hr_spec.rb +1 -1
  491. data/spec/unit/pops/types/recursion_guard_spec.rb +10 -10
  492. data/spec/unit/pops/types/ruby_generator_spec.rb +2 -2
  493. data/spec/unit/pops/types/string_converter_spec.rb +5 -1
  494. data/spec/unit/pops/types/type_asserter_spec.rb +2 -2
  495. data/spec/unit/pops/types/type_calculator_spec.rb +30 -30
  496. data/spec/unit/pops/types/type_mismatch_describer_spec.rb +0 -9
  497. data/spec/unit/pops/types/type_parser_spec.rb +13 -13
  498. data/spec/unit/pops/validator/validator_spec.rb +2 -1
  499. data/spec/unit/pops/visitor_spec.rb +1 -0
  500. data/spec/unit/property/boolean_spec.rb +1 -1
  501. data/spec/unit/property/ensure_spec.rb +1 -0
  502. data/spec/unit/property/keyvalue_spec.rb +34 -32
  503. data/spec/unit/property/list_spec.rb +27 -26
  504. data/spec/unit/property/ordered_list_spec.rb +14 -10
  505. data/spec/unit/property_spec.rb +43 -42
  506. data/spec/unit/provider/aix_object_spec.rb +45 -47
  507. data/spec/unit/provider/command_spec.rb +9 -9
  508. data/spec/unit/provider/exec/posix_spec.rb +31 -6
  509. data/spec/unit/provider/exec/shell_spec.rb +1 -0
  510. data/spec/unit/provider/exec/windows_spec.rb +4 -2
  511. data/spec/unit/provider/exec_spec.rb +1 -0
  512. data/spec/unit/provider/file/posix_spec.rb +24 -22
  513. data/spec/unit/provider/file/windows_spec.rb +17 -15
  514. data/spec/unit/provider/group/aix_spec.rb +2 -3
  515. data/spec/unit/provider/group/groupadd_spec.rb +26 -30
  516. data/spec/unit/provider/group/ldap_spec.rb +18 -18
  517. data/spec/unit/provider/group/pw_spec.rb +11 -11
  518. data/spec/unit/provider/group/windows_adsi_spec.rb +53 -59
  519. data/spec/unit/provider/ldap_spec.rb +62 -61
  520. data/spec/unit/provider/nameservice/directoryservice_spec.rb +36 -35
  521. data/spec/unit/provider/nameservice_spec.rb +40 -38
  522. data/spec/unit/provider/package/aix_spec.rb +15 -15
  523. data/spec/unit/provider/package/appdmg_spec.rb +13 -13
  524. data/spec/unit/provider/package/apt_spec.rb +27 -44
  525. data/spec/unit/provider/package/aptitude_spec.rb +7 -6
  526. data/spec/unit/provider/package/aptrpm_spec.rb +12 -7
  527. data/spec/unit/provider/package/base_spec.rb +4 -4
  528. data/spec/unit/provider/package/dnf_spec.rb +20 -18
  529. data/spec/unit/provider/package/dpkg_spec.rb +53 -70
  530. data/spec/unit/provider/package/freebsd_spec.rb +11 -11
  531. data/spec/unit/provider/package/gem_spec.rb +55 -132
  532. data/spec/unit/provider/package/hpux_spec.rb +8 -8
  533. data/spec/unit/provider/package/macports_spec.rb +42 -46
  534. data/spec/unit/provider/package/nim_spec.rb +39 -30
  535. data/spec/unit/provider/package/openbsd_spec.rb +39 -36
  536. data/spec/unit/provider/package/opkg_spec.rb +26 -23
  537. data/spec/unit/provider/package/pacman_spec.rb +118 -97
  538. data/spec/unit/provider/package/pip3_spec.rb +0 -17
  539. data/spec/unit/provider/package/pip_spec.rb +106 -95
  540. data/spec/unit/provider/package/pkg_spec.rb +109 -109
  541. data/spec/unit/provider/package/pkgdmg_spec.rb +63 -65
  542. data/spec/unit/provider/package/pkgin_spec.rb +8 -10
  543. data/spec/unit/provider/package/pkgng_spec.rb +31 -22
  544. data/spec/unit/provider/package/pkgutil_spec.rb +49 -45
  545. data/spec/unit/provider/package/portage_spec.rb +74 -70
  546. data/spec/unit/provider/package/puppet_gem_spec.rb +13 -37
  547. data/spec/unit/provider/package/rpm_spec.rb +76 -154
  548. data/spec/unit/provider/package/sun_spec.rb +18 -16
  549. data/spec/unit/provider/package/tdnf_spec.rb +2 -2
  550. data/spec/unit/provider/package/up2date_spec.rb +4 -2
  551. data/spec/unit/provider/package/urpmi_spec.rb +17 -15
  552. data/spec/unit/provider/package/windows/exe_package_spec.rb +15 -12
  553. data/spec/unit/provider/package/windows/msi_package_spec.rb +22 -19
  554. data/spec/unit/provider/package/windows/package_spec.rb +42 -37
  555. data/spec/unit/provider/package/windows_spec.rb +32 -47
  556. data/spec/unit/provider/package/yum_spec.rb +7 -7
  557. data/spec/unit/provider/package/zypper_spec.rb +87 -87
  558. data/spec/unit/provider/parsedfile_spec.rb +45 -44
  559. data/spec/unit/provider/service/base_spec.rb +5 -4
  560. data/spec/unit/provider/service/bsd_spec.rb +29 -27
  561. data/spec/unit/provider/service/daemontools_spec.rb +35 -35
  562. data/spec/unit/provider/service/debian_spec.rb +38 -38
  563. data/spec/unit/provider/service/freebsd_spec.rb +18 -18
  564. data/spec/unit/provider/service/gentoo_spec.rb +55 -50
  565. data/spec/unit/provider/service/init_spec.rb +52 -53
  566. data/spec/unit/provider/service/launchd_spec.rb +116 -138
  567. data/spec/unit/provider/service/openbsd_spec.rb +50 -50
  568. data/spec/unit/provider/service/openrc_spec.rb +45 -43
  569. data/spec/unit/provider/service/openwrt_spec.rb +31 -26
  570. data/spec/unit/provider/service/rcng_spec.rb +14 -14
  571. data/spec/unit/provider/service/redhat_spec.rb +43 -45
  572. data/spec/unit/provider/service/runit_spec.rb +27 -29
  573. data/spec/unit/provider/service/smf_spec.rb +66 -74
  574. data/spec/unit/provider/service/src_spec.rb +47 -46
  575. data/spec/unit/provider/service/systemd_spec.rb +136 -109
  576. data/spec/unit/provider/service/upstart_spec.rb +93 -77
  577. data/spec/unit/provider/service/windows_spec.rb +41 -33
  578. data/spec/unit/provider/user/aix_spec.rb +31 -31
  579. data/spec/unit/provider/user/directoryservice_spec.rb +114 -146
  580. data/spec/unit/provider/user/hpux_spec.rb +16 -16
  581. data/spec/unit/provider/user/ldap_spec.rb +57 -57
  582. data/spec/unit/provider/user/openbsd_spec.rb +12 -10
  583. data/spec/unit/provider/user/pw_spec.rb +35 -37
  584. data/spec/unit/provider/user/user_role_add_spec.rb +93 -93
  585. data/spec/unit/provider/user/useradd_spec.rb +92 -93
  586. data/spec/unit/provider/user/windows_adsi_spec.rb +60 -59
  587. data/spec/unit/provider_spec.rb +35 -35
  588. data/spec/unit/puppet_pal_2pec.rb +5 -4
  589. data/spec/unit/puppet_pal_spec.rb +1 -0
  590. data/spec/unit/puppet_spec.rb +7 -6
  591. data/spec/unit/relationship_spec.rb +1 -0
  592. data/spec/unit/reports/http_spec.rb +23 -21
  593. data/spec/unit/reports/store_spec.rb +4 -3
  594. data/spec/unit/reports_spec.rb +14 -12
  595. data/spec/unit/resource/capability_finder_spec.rb +17 -15
  596. data/spec/unit/resource/catalog_spec.rb +68 -72
  597. data/spec/unit/resource/status_spec.rb +8 -6
  598. data/spec/unit/resource/type_collection_spec.rb +18 -17
  599. data/spec/unit/resource/type_spec.rb +35 -34
  600. data/spec/unit/resource_spec.rb +63 -36
  601. data/spec/unit/rest/client_spec.rb +135 -0
  602. data/spec/unit/rest/route_spec.rb +6 -6
  603. data/spec/unit/scheduler/job_spec.rb +1 -0
  604. data/spec/unit/scheduler/scheduler_spec.rb +1 -0
  605. data/spec/unit/scheduler/splay_job_spec.rb +2 -1
  606. data/spec/unit/settings/array_setting_spec.rb +1 -1
  607. data/spec/unit/settings/autosign_setting_spec.rb +9 -9
  608. data/spec/unit/settings/certificate_revocation_setting_spec.rb +1 -1
  609. data/spec/unit/settings/config_file_spec.rb +1 -0
  610. data/spec/unit/settings/directory_setting_spec.rb +7 -2
  611. data/spec/unit/settings/duration_setting_spec.rb +2 -1
  612. data/spec/unit/settings/enum_setting_spec.rb +1 -1
  613. data/spec/unit/settings/environment_conf_spec.rb +6 -4
  614. data/spec/unit/settings/file_setting_spec.rb +46 -44
  615. data/spec/unit/settings/path_setting_spec.rb +2 -1
  616. data/spec/unit/settings/priority_setting_spec.rb +2 -1
  617. data/spec/unit/settings/string_setting_spec.rb +15 -14
  618. data/spec/unit/settings/terminus_setting_spec.rb +2 -1
  619. data/spec/unit/settings/value_translator_spec.rb +1 -0
  620. data/spec/unit/settings_spec.rb +224 -253
  621. data/spec/unit/ssl/base_spec.rb +15 -14
  622. data/spec/unit/ssl/certificate_request_spec.rb +58 -62
  623. data/spec/unit/ssl/certificate_spec.rb +25 -23
  624. data/spec/unit/ssl/digest_spec.rb +1 -0
  625. data/spec/unit/ssl/host_spec.rb +149 -166
  626. data/spec/unit/ssl/key_spec.rb +31 -30
  627. data/spec/unit/ssl/validator_spec.rb +39 -40
  628. data/spec/unit/task_spec.rb +45 -44
  629. data/spec/unit/transaction/additional_resource_generator_spec.rb +5 -3
  630. data/spec/unit/transaction/event_manager_spec.rb +88 -87
  631. data/spec/unit/transaction/event_spec.rb +15 -16
  632. data/spec/unit/transaction/persistence_spec.rb +17 -16
  633. data/spec/unit/transaction/report_spec.rb +12 -11
  634. data/spec/unit/transaction/resource_harness_spec.rb +31 -52
  635. data/spec/unit/transaction_spec.rb +87 -140
  636. data/spec/unit/type/component_spec.rb +1 -0
  637. data/spec/unit/type/exec_spec.rb +50 -101
  638. data/spec/unit/type/file/checksum_spec.rb +10 -9
  639. data/spec/unit/type/file/checksum_value_spec.rb +32 -31
  640. data/spec/unit/type/file/content_spec.rb +61 -58
  641. data/spec/unit/type/file/ctime_spec.rb +1 -0
  642. data/spec/unit/type/file/ensure_spec.rb +13 -12
  643. data/spec/unit/type/file/group_spec.rb +7 -5
  644. data/spec/unit/type/file/mode_spec.rb +6 -4
  645. data/spec/unit/type/file/mtime_spec.rb +1 -0
  646. data/spec/unit/type/file/owner_spec.rb +8 -6
  647. data/spec/unit/type/file/selinux_spec.rb +19 -17
  648. data/spec/unit/type/file/source_spec.rb +101 -104
  649. data/spec/unit/type/file/type_spec.rb +1 -0
  650. data/spec/unit/type/file_spec.rb +185 -195
  651. data/spec/unit/type/filebucket_spec.rb +10 -11
  652. data/spec/unit/type/group_spec.rb +8 -6
  653. data/spec/unit/type/noop_metaparam_spec.rb +2 -1
  654. data/spec/unit/type/package/package_settings_spec.rb +23 -44
  655. data/spec/unit/type/package_spec.rb +57 -56
  656. data/spec/unit/type/resources_spec.rb +74 -72
  657. data/spec/unit/type/schedule_spec.rb +26 -24
  658. data/spec/unit/type/service_spec.rb +75 -49
  659. data/spec/unit/type/stage_spec.rb +1 -0
  660. data/spec/unit/type/tidy_spec.rb +62 -61
  661. data/spec/unit/type/user_spec.rb +25 -24
  662. data/spec/unit/type/whit_spec.rb +1 -0
  663. data/spec/unit/type_spec.rb +54 -55
  664. data/spec/unit/util/at_fork_spec.rb +19 -18
  665. data/spec/unit/util/autoload_spec.rb +56 -55
  666. data/spec/unit/util/backups_spec.rb +35 -34
  667. data/spec/unit/util/character_encoding_spec.rb +5 -5
  668. data/spec/unit/util/checksums_spec.rb +39 -38
  669. data/spec/unit/util/colors_spec.rb +2 -1
  670. data/spec/unit/util/command_line_spec.rb +20 -40
  671. data/spec/unit/util/constant_inflector_spec.rb +1 -0
  672. data/spec/unit/util/diff_spec.rb +8 -7
  673. data/spec/unit/util/errors_spec.rb +1 -0
  674. data/spec/unit/util/execution_spec.rb +163 -187
  675. data/spec/unit/util/execution_stub_spec.rb +1 -0
  676. data/spec/unit/util/feature_spec.rb +14 -21
  677. data/spec/unit/util/filetype_spec.rb +49 -49
  678. data/spec/unit/util/http_proxy_spec.rb +12 -12
  679. data/spec/unit/util/inifile_spec.rb +31 -26
  680. data/spec/unit/util/json_lockfile_spec.rb +5 -3
  681. data/spec/unit/util/ldap/connection_spec.rb +25 -26
  682. data/spec/unit/util/ldap/generator_spec.rb +1 -0
  683. data/spec/unit/util/ldap/manager_spec.rb +101 -102
  684. data/spec/unit/util/lockfile_spec.rb +1 -0
  685. data/spec/unit/util/log/destinations_spec.rb +33 -30
  686. data/spec/unit/util/log_spec.rb +34 -48
  687. data/spec/unit/util/logging_spec.rb +72 -58
  688. data/spec/unit/util/metric_spec.rb +1 -0
  689. data/spec/unit/util/monkey_patches_spec.rb +9 -7
  690. data/spec/unit/util/multi_match_spec.rb +1 -0
  691. data/spec/unit/util/network_device/config_spec.rb +1 -0
  692. data/spec/unit/util/network_device/transport/base_spec.rb +6 -5
  693. data/spec/unit/util/network_device_spec.rb +9 -7
  694. data/spec/unit/util/package_spec.rb +1 -0
  695. data/spec/unit/util/pidlock_spec.rb +15 -60
  696. data/spec/unit/util/plist_spec.rb +33 -40
  697. data/spec/unit/util/posix_spec.rb +51 -54
  698. data/spec/unit/util/rdoc_spec.rb +10 -9
  699. data/spec/unit/util/reference_spec.rb +1 -0
  700. data/spec/unit/util/resource_template_spec.rb +20 -20
  701. data/spec/unit/util/retry_action_spec.rb +8 -7
  702. data/spec/unit/util/rubygems_spec.rb +8 -7
  703. data/spec/unit/util/run_mode_spec.rb +4 -3
  704. data/spec/unit/util/selinux_spec.rb +72 -79
  705. data/spec/unit/util/splayer_spec.rb +9 -8
  706. data/spec/unit/util/ssl_spec.rb +1 -0
  707. data/spec/unit/util/storage_spec.rb +23 -22
  708. data/spec/unit/util/suidmanager_spec.rb +54 -45
  709. data/spec/unit/util/symbolic_file_mode_spec.rb +1 -0
  710. data/spec/unit/util/tag_set_spec.rb +1 -0
  711. data/spec/unit/util/tagging_spec.rb +1 -0
  712. data/spec/unit/util/terminal_spec.rb +10 -9
  713. data/spec/unit/util/user_attr_spec.rb +2 -1
  714. data/spec/unit/util/warnings_spec.rb +4 -3
  715. data/spec/unit/util/watcher/periodic_watcher_spec.rb +2 -2
  716. data/spec/unit/util/watcher_spec.rb +21 -51
  717. data/spec/unit/util/windows/access_control_entry_spec.rb +1 -0
  718. data/spec/unit/util/windows/access_control_list_spec.rb +1 -0
  719. data/spec/unit/util/windows/adsi_spec.rb +138 -136
  720. data/spec/unit/util/windows/api_types_spec.rb +1 -0
  721. data/spec/unit/util/windows/eventlog_spec.rb +12 -9
  722. data/spec/unit/util/windows/file_spec.rb +1 -0
  723. data/spec/unit/util/windows/root_certs_spec.rb +1 -0
  724. data/spec/unit/util/windows/security_descriptor_spec.rb +2 -0
  725. data/spec/unit/util/windows/service_spec.rb +103 -100
  726. data/spec/unit/util/windows/sid_spec.rb +13 -11
  727. data/spec/unit/util/windows/string_spec.rb +1 -0
  728. data/spec/unit/util_spec.rb +57 -55
  729. data/spec/unit/version_spec.rb +6 -6
  730. metadata +20 -32
  731. data/CODEOWNERS +0 -30
  732. data/ext/autotest/Rakefile +0 -8
  733. data/ext/autotest/config +0 -43
  734. data/ext/autotest/readme.rst +0 -16
  735. data/lib/puppet/confine/boolean.rb +0 -45
  736. data/lib/puppet/provider/package_targetable.rb +0 -68
  737. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load2.rb +0 -11
  738. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load3.rb +0 -11
  739. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load4.rb +0 -11
  740. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/bad_func_load5.rb +0 -12
  741. data/spec/fixtures/unit/pops/loaders/loaders/mix_4x_and_3x_functions/usee/lib/puppet/parser/functions/good_func_load.rb +0 -9
  742. data/spec/fixtures/unit/provider/package/pkgng/pkg.info +0 -7
  743. data/spec/fixtures/unit/provider/package/pkgng/pkg.query_absent +0 -1
  744. data/spec/integration/network/http_pool_spec.rb +0 -120
  745. data/spec/integration/provider/file/windows_spec.rb +0 -162
  746. data/spec/lib/puppet_spec/https.rb +0 -166
  747. data/spec/unit/settings/server_list_setting_spec.rb +0 -21
  748. data/spec/watchr.rb +0 -137
@@ -1,40 +1,41 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
  require 'puppet/util/terminal'
3
4
 
4
5
  describe Puppet::Util::Terminal do
5
6
  describe '.width' do
6
- before { allow(Puppet.features).to receive(:posix?).and_return(true) }
7
+ before { Puppet.features.stubs(:posix?).returns(true) }
7
8
 
8
9
  it 'should invoke `stty` and return the width' do
9
10
  height, width = 100, 200
10
- expect(subject).to receive(:`).with('stty size 2>/dev/null').and_return("#{height} #{width}\n")
11
+ subject.expects(:`).with('stty size 2>/dev/null').returns("#{height} #{width}\n")
11
12
  expect(subject.width).to eq(width)
12
13
  end
13
14
 
14
15
  it 'should use `tput` if `stty` is unavailable' do
15
16
  width = 200
16
- expect(subject).to receive(:`).with('stty size 2>/dev/null').and_return("\n")
17
- expect(subject).to receive(:`).with('tput cols 2>/dev/null').and_return("#{width}\n")
17
+ subject.expects(:`).with('stty size 2>/dev/null').returns("\n")
18
+ subject.expects(:`).with('tput cols 2>/dev/null').returns("#{width}\n")
18
19
  expect(subject.width).to eq(width)
19
20
  end
20
21
 
21
22
  it 'should default to 80 columns if `tput` and `stty` are unavailable' do
22
23
  width = 80
23
- expect(subject).to receive(:`).with('stty size 2>/dev/null').and_return("\n")
24
- expect(subject).to receive(:`).with('tput cols 2>/dev/null').and_return("\n")
24
+ subject.expects(:`).with('stty size 2>/dev/null').returns("\n")
25
+ subject.expects(:`).with('tput cols 2>/dev/null').returns("\n")
25
26
  expect(subject.width).to eq(width)
26
27
  end
27
28
 
28
29
  it 'should default to 80 columns if `tput` or `stty` raise exceptions' do
29
30
  width = 80
30
- expect(subject).to receive(:`).with('stty size 2>/dev/null').and_raise()
31
- allow(subject).to receive(:`).with('tput cols 2>/dev/null').and_return("#{width + 1000}\n")
31
+ subject.expects(:`).with('stty size 2>/dev/null').raises()
32
+ subject.stubs(:`).with('tput cols 2>/dev/null').returns("#{width + 1000}\n")
32
33
  expect(subject.width).to eq(width)
33
34
  end
34
35
 
35
36
  it 'should default to 80 columns if not in a POSIX environment' do
36
37
  width = 80
37
- allow(Puppet.features).to receive(:posix?).and_return(false)
38
+ Puppet.features.stubs(:posix?).returns(false)
38
39
  expect(subject.width).to eq(width)
39
40
  end
40
41
  end
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/util/user_attr'
@@ -5,7 +6,7 @@ require 'puppet/util/user_attr'
5
6
  describe UserAttr do
6
7
  before do
7
8
  user_attr = ["foo::::type=role", "bar::::type=normal;profile=foobar"]
8
- allow(File).to receive(:readlines).and_return(user_attr)
9
+ File.stubs(:readlines).returns(user_attr)
9
10
  end
10
11
 
11
12
  describe "when getting attributes by name" do
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Puppet::Util::Warnings do
@@ -21,18 +22,18 @@ describe Puppet::Util::Warnings do
21
22
  end
22
23
 
23
24
  it "should issue a warning" do
24
- expect(Puppet).to receive(log).with(@msg1)
25
+ Puppet.expects(log).with(@msg1)
25
26
  Puppet::Util::Warnings.send(method, @msg1)
26
27
  end
27
28
 
28
29
  it "should issue a warning exactly once per unique message" do
29
- expect(Puppet).to receive(log).with(@msg1).once
30
+ Puppet.expects(log).with(@msg1).once
30
31
  Puppet::Util::Warnings.send(method, @msg1)
31
32
  Puppet::Util::Warnings.send(method, @msg1)
32
33
  end
33
34
 
34
35
  it "should issue multiple warnings for multiple unique messages" do
35
- expect(Puppet).to receive(log).twice()
36
+ Puppet.expects(log).times(2)
36
37
  Puppet::Util::Warnings.send(method, @msg1)
37
38
  Puppet::Util::Warnings.send(method, @msg2)
38
39
  end
@@ -8,7 +8,7 @@ describe Puppet::Util::Watcher::PeriodicWatcher do
8
8
  let(:a_value) { 15 }
9
9
  let(:a_different_value) { 16 }
10
10
 
11
- let(:unused_watcher) { double('unused watcher') }
11
+ let(:unused_watcher) { mock('unused watcher') }
12
12
  let(:unchanged_watcher) { a_watcher_reporting(a_value) }
13
13
  let(:changed_watcher) { a_watcher_reporting(a_value, a_different_value) }
14
14
 
@@ -46,7 +46,7 @@ describe Puppet::Util::Watcher::PeriodicWatcher do
46
46
 
47
47
  def a_time_that_reports_expired_as(expired, timeout)
48
48
  timer = Puppet::Util::Watcher::Timer.new(timeout)
49
- allow(timer).to receive(:expired?).and_return(expired)
49
+ timer.stubs(:expired?).returns(expired)
50
50
  timer
51
51
  end
52
52
  end
@@ -1,3 +1,4 @@
1
+ #! /usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
 
3
4
  require 'puppet/util/watcher'
@@ -12,75 +13,44 @@ describe Puppet::Util::Watcher do
12
13
 
13
14
  let(:filename) { "fake" }
14
15
 
15
- it "is initially unchanged" do
16
- expect(Puppet::FileSystem).to receive(:stat).with(filename).and_return(ctime(20)).at_least(:once)
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
17
25
 
18
26
  watcher = Puppet::Util::Watcher::Common.file_ctime_change_watcher(filename)
27
+ results.size.times { watcher = watcher.next_reading }
19
28
 
20
- expect(watcher).to_not be_changed
29
+ watcher
21
30
  end
22
31
 
23
- it "has not changed if a section of the file path continues to not exist" do
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
32
+ it "is initially unchanged" do
33
+ expect(after_reading_the_sequence(ctime(20))).to_not be_changed
34
+ end
28
35
 
29
- expect(watcher).to_not be_changed
36
+ 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
30
38
  end
31
39
 
32
40
  it "has not changed if the file continues to not exist" do
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
41
+ expect(after_reading_the_sequence(Errno::ENOENT, Errno::ENOENT)).to_not be_changed
39
42
  end
40
43
 
41
44
  it "has changed if the file is created" do
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
45
+ expect(after_reading_the_sequence(Errno::ENOENT, ctime(20))).to be_changed
53
46
  end
54
47
 
55
48
  it "is marked as changed if the file is deleted" do
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
49
+ expect(after_reading_the_sequence(ctime(20), Errno::ENOENT)).to be_changed
67
50
  end
68
51
 
69
52
  it "is marked as changed if the file modified" do
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
53
+ expect(after_reading_the_sequence(ctime(20), ctime(21))).to be_changed
84
54
  end
85
55
  end
86
56
  end
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
  require 'puppet/util/windows'
3
4
 
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env ruby
1
2
  require 'spec_helper'
2
3
  require 'puppet/util/windows'
3
4
 
@@ -1,9 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  require 'puppet/util/windows'
4
6
 
5
7
  describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
6
- let(:connection) { double('connection') }
8
+ let(:connection) { stub 'connection' }
7
9
  let(:builtin_localized) { Puppet::Util::Windows::SID.sid_to_name('S-1-5-32') }
8
10
  # SYSTEM is special as English can retrieve it via Windows API
9
11
  # but will return localized names
@@ -11,7 +13,7 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
11
13
 
12
14
  before(:each) do
13
15
  Puppet::Util::Windows::ADSI.instance_variable_set(:@computer_name, 'testcomputername')
14
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_return(connection)
16
+ Puppet::Util::Windows::ADSI.stubs(:connect).returns connection
15
17
  end
16
18
 
17
19
  after(:each) do
@@ -92,10 +94,10 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
92
94
  end
93
95
 
94
96
  it "should be able to create a user" do
95
- adsi_user = double('adsi')
97
+ adsi_user = stub('adsi')
96
98
 
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)
99
+ connection.expects(:Create).with('user', username).returns(adsi_user)
100
+ Puppet::Util::Windows::ADSI::Group.expects(:exists?).with(username).returns(false)
99
101
 
100
102
  user = Puppet::Util::Windows::ADSI::User.create(username)
101
103
 
@@ -104,55 +106,56 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
104
106
  end
105
107
 
106
108
  it "should be able to check the existence of a user" do
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')
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')
110
112
  expect(Puppet::Util::Windows::ADSI::User.exists?(username)).to be_truthy
111
113
  end
112
114
 
113
115
  it "should be able to check the existence of a domain user" do
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')
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')
117
119
  expect(Puppet::Util::Windows::ADSI::User.exists?(domain_username)).to be_truthy
118
120
  end
119
121
 
120
122
  it "should be able to confirm the existence of a user with a well-known SID" do
121
123
  system_user = Puppet::Util::Windows::SID::LocalSystem
122
124
  # ensure that the underlying OS is queried here
123
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
125
+ Puppet::Util::Windows::ADSI.unstub(:connect)
124
126
  expect(Puppet::Util::Windows::ADSI::User.exists?(system_user)).to be_truthy
125
127
  end
126
128
 
127
129
  it "should return false with a well-known Group SID" do
128
130
  group = Puppet::Util::Windows::SID::BuiltinAdministrators
129
131
  # ensure that the underlying OS is queried here
130
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
132
+ Puppet::Util::Windows::ADSI.unstub(:connect)
131
133
  expect(Puppet::Util::Windows::ADSI::User.exists?(group)).to be_falsey
132
134
  end
133
135
 
134
136
  it "should return nil with an unknown SID" do
137
+
135
138
  bogus_sid = 'S-1-2-3-4'
136
139
  # ensure that the underlying OS is queried here
137
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
140
+ Puppet::Util::Windows::ADSI.unstub(:connect)
138
141
  expect(Puppet::Util::Windows::ADSI::User.exists?(bogus_sid)).to be_falsey
139
142
  end
140
143
 
141
144
  it "should be able to delete a user" do
142
- expect(connection).to receive(:Delete).with('user', username)
145
+ connection.expects(:Delete).with('user', username)
143
146
 
144
147
  Puppet::Util::Windows::ADSI::User.delete(username)
145
148
  end
146
149
 
147
150
  it "should return an enumeration of IADsUser wrapped objects" do
148
151
  name = 'Administrator'
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)
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)
151
154
 
152
- native_object = double('IADsUser')
155
+ native_object = stub('IADsUser')
153
156
  homedir = "C:\\Users\\#{name}"
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)
157
+ native_object.expects(:Get).with('HomeDirectory').returns(homedir)
158
+ Puppet::Util::Windows::ADSI.expects(:connect).with("WinNT://./#{name},user").returns(native_object)
156
159
 
157
160
  users = Puppet::Util::Windows::ADSI::User.to_a
158
161
  expect(users.length).to eq(1)
@@ -161,86 +164,83 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
161
164
  end
162
165
 
163
166
  describe "an instance" do
164
- let(:adsi_user) { double('user', :objectSID => []) }
165
- let(:sid) { double(:account => username, :domain => 'testcomputername') }
167
+ let(:adsi_user) { stub('user', :objectSID => []) }
168
+ let(:sid) { stub(:account => username, :domain => 'testcomputername') }
166
169
  let(:user) { Puppet::Util::Windows::ADSI::User.new(username, adsi_user) }
167
170
 
168
171
  it "should provide its groups as a list of names" do
169
172
  names = ["group1", "group2"]
170
173
 
171
- groups = names.map { |name| double('group', :Name => name) }
174
+ groups = names.map { |name| stub('group', :Name => name) }
172
175
 
173
- expect(adsi_user).to receive(:Groups).and_return(groups)
176
+ adsi_user.expects(:Groups).returns(groups)
174
177
 
175
178
  expect(user.groups).to match(names)
176
179
  end
177
180
 
178
181
  it "should be able to test whether a given password is correct" do
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)
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)
181
184
 
182
185
  expect(user.password_is?('pwdwrong')).to be_falsey
183
186
  expect(user.password_is?('pwdright')).to be_truthy
184
187
  end
185
188
 
186
189
  it "should be able to set a password" do
187
- expect(adsi_user).to receive(:SetPassword).with('pwd')
188
- expect(adsi_user).to receive(:SetInfo).at_least(:once)
190
+ adsi_user.expects(:SetPassword).with('pwd')
191
+ adsi_user.expects(:SetInfo).at_least_once
189
192
 
190
193
  flagname = "UserFlags"
191
194
  fADS_UF_DONT_EXPIRE_PASSWD = 0x10000
192
195
 
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)
196
+ adsi_user.expects(:Get).with(flagname).returns(0)
197
+ adsi_user.expects(:Put).with(flagname, fADS_UF_DONT_EXPIRE_PASSWD)
195
198
 
196
199
  user.password = 'pwd'
197
200
  end
198
201
 
199
202
  it "should be able manage a user without a password" do
200
- expect(adsi_user).not_to receive(:SetPassword).with('pwd')
201
- expect(adsi_user).to receive(:SetInfo).at_least(:once)
203
+ adsi_user.expects(:SetPassword).with('pwd').never
204
+ adsi_user.expects(:SetInfo).at_least_once
202
205
 
203
206
  flagname = "UserFlags"
204
207
  fADS_UF_DONT_EXPIRE_PASSWD = 0x10000
205
208
 
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)
209
+ adsi_user.expects(:Get).with(flagname).returns(0)
210
+ adsi_user.expects(:Put).with(flagname, fADS_UF_DONT_EXPIRE_PASSWD)
208
211
 
209
212
  user.password = nil
210
213
  end
211
214
 
212
215
  it "should generate the correct URI" do
213
- allow(Puppet::Util::Windows::SID).to receive(:octet_string_to_principal).and_return(sid)
216
+ Puppet::Util::Windows::SID.stubs(:octet_string_to_principal).returns(sid)
214
217
  expect(user.uri).to eq("WinNT://testcomputername/#{username},user")
215
218
  end
216
219
 
217
220
  describe "when given a set of groups to which to add the user" do
218
221
  let(:existing_groups) { ['group2','group3'] }
219
- let(:group_sids) { existing_groups.each_with_index.map{|n,i| double(:Name => n, :objectSID => double(:sid => i))} }
222
+ let(:group_sids) { existing_groups.each_with_index.map{|n,i| stub(:Name => n, :objectSID => stub(:sid => i))} }
220
223
 
221
224
  let(:groups_to_set) { 'group1,group2' }
222
- let(:desired_sids) { groups_to_set.split(',').each_with_index.map{|n,i| double(:Name => n, :objectSID => double(:sid => i-1))} }
225
+ let(:desired_sids) { groups_to_set.split(',').each_with_index.map{|n,i| stub(:Name => n, :objectSID => stub(:sid => i-1))} }
223
226
 
224
227
  before(:each) do
225
- expect(user).to receive(:group_sids).and_return(group_sids.map {|s| s.objectSID })
228
+ user.expects(:group_sids).returns(group_sids.map {|s| s.objectSID })
226
229
  end
227
230
 
228
231
  describe "if membership is specified as inclusive" do
229
232
  it "should add the user to those groups, and remove it from groups not in the list" do
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) }
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 }
233
236
 
234
237
  user.set_groups(groups_to_set, false)
235
238
  end
236
239
 
237
240
  it "should remove all users from a group if desired is empty" do
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
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 }
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
- 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)
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
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
- 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)
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
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
- allow(user).to receive(:[]).with('UserFlags').and_return(userflags)
285
+ user.stubs(:[]).with('UserFlags').returns(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
- expect(user).not_to receive(:[]=)
320
- expect(user).not_to receive(:commit)
319
+ user.expects(:[]=).never
320
+ user.expects(:commit).never
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
- expect(user).to receive(:[]=).with('UserFlags', expected_userflags)
338
+ user.expects(:[]=).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
- expect(user).to receive(:[]=).with('UserFlags', expected_userflags)
356
+ user.expects(:[]=).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) { double('group') }
369
+ let(:adsi_group) { stub 'group' }
370
370
  let(:group) { Puppet::Util::Windows::ADSI::Group.new(groupname, adsi_group) }
371
- let(:someone_sid){ double(:account => 'someone', :domain => 'testcomputername')}
371
+ let(:someone_sid){ stub(: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
- expect(adsi_group).to receive(:Add).with("WinNT://S-1-5-18")
378
+ adsi_group.expects(: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
- expect(adsi_group).to receive(:Remove).with("WinNT://S-1-5-18")
388
+ adsi_group.expects(: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| double('user', :Name => name, :objectSID => name, :ole_respond_to? => true) }
401
+ users = names.map { |name| stub('user', :Name => name, :objectSID => name, :ole_respond_to? => true) }
402
402
 
403
- expect(adsi_group).to receive(:Members).and_return(users)
403
+ adsi_group.expects(:Members).returns(users)
404
404
 
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'))
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'))
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
- double(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
416
- double(:account => 'user2', :domain => 'testcomputername', :sid => 2),
417
- double(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
415
+ stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
416
+ stub(:account => 'user2', :domain => 'testcomputername', :sid => 2),
417
+ stub(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
418
418
  ]
419
419
 
420
420
  # use stubbed objectSid on member to return stubbed SID
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])
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])
423
423
 
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])
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])
426
426
 
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")
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")
429
429
 
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)
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
432
432
 
433
- expect(adsi_group).to receive(:Remove).with('WinNT://DOMAIN/user1,user')
434
- expect(adsi_group).to receive(:Add).with('WinNT://DOMAIN2/user3,user')
433
+ adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user')
434
+ adsi_group.expects(: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
- double(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
443
- double(:account => 'user2', :domain => 'testcomputername', :sid => 2),
444
- double(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
442
+ stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1),
443
+ stub(:account => 'user2', :domain => 'testcomputername', :sid => 2),
444
+ stub(:account => 'user3', :domain => 'DOMAIN2', :sid => 3),
445
445
  ]
446
446
 
447
447
  # use stubbed objectSid on member to return stubbed SID
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])
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])
450
450
 
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])
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])
453
453
 
454
- expect(Puppet::Util::Windows::ADSI).to receive(:sid_uri).with(sids[2]).and_return("WinNT://DOMAIN2/user3,user")
454
+ Puppet::Util::Windows::ADSI.expects(:sid_uri).with(sids[2]).returns("WinNT://DOMAIN2/user3,user")
455
455
 
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)
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
458
458
 
459
- expect(adsi_group).not_to receive(:Remove).with('WinNT://DOMAIN/user1,user')
459
+ adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user').never
460
460
 
461
- expect(adsi_group).to receive(:Add).with('WinNT://DOMAIN2/user3,user')
461
+ adsi_group.expects(: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
- expect(adsi_group).not_to receive(:Members)
467
+ adsi_group.expects(:Members).never
468
468
 
469
- expect(adsi_group).not_to receive(:Remove)
470
- expect(adsi_group).not_to receive(:Add)
469
+ adsi_group.expects(:Remove).never
470
+ adsi_group.expects(:Add).never
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
- double(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
479
- double(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
478
+ stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
479
+ stub(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
480
480
  ]
481
481
 
482
482
  # use stubbed objectSid on member to return stubbed SID
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])
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])
485
485
 
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")
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")
488
488
 
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)
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
491
491
 
492
- expect(adsi_group).to receive(:Remove).with('WinNT://DOMAIN/user1,user')
493
- expect(adsi_group).to receive(:Remove).with('WinNT://testcomputername/user2,user')
492
+ adsi_group.expects(:Remove).with('WinNT://DOMAIN/user1,user')
493
+ adsi_group.expects(: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
- double(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
502
- double(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
501
+ stub(:account => 'user1', :domain => 'DOMAIN', :sid => 1 ),
502
+ stub(:account => 'user2', :domain => 'testcomputername', :sid => 2 ),
503
503
  ]
504
504
  # use stubbed objectSid on member to return stubbed SID
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])
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])
507
507
 
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)
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
510
510
 
511
- expect(adsi_group).not_to receive(:Remove)
512
- expect(adsi_group).not_to receive(:Add)
511
+ adsi_group.expects(:Remove).never
512
+ adsi_group.expects(:Add).never
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
- expect(adsi_group).to receive(:Members).and_return([])
519
+ adsi_group.expects(:Members).returns []
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
- 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)
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)
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 = double("adsi")
547
+ adsi_group = stub("adsi")
548
548
 
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)
549
+ connection.expects(:Create).with('group', groupname).returns(adsi_group)
550
+ Puppet::Util::Windows::ADSI::User.expects(:exists?).with(groupname).returns(false)
551
551
 
552
552
  group = Puppet::Util::Windows::ADSI::Group.create(groupname)
553
553
 
@@ -556,49 +556,51 @@ 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
- 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')
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')
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
+
567
568
  service_group = Puppet::Util::Windows::SID::Service
568
569
  # ensure that the underlying OS is queried here
569
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
570
+ Puppet::Util::Windows::ADSI.unstub(:connect)
570
571
  expect(Puppet::Util::Windows::ADSI::Group.exists?(service_group)).to be_truthy
571
572
  end
572
573
 
573
574
  it "will return true with a well-known User SID, as there is no way to resolve it with a WinNT:// style moniker" do
574
575
  user = Puppet::Util::Windows::SID::NtLocal
575
576
  # ensure that the underlying OS is queried here
576
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
577
+ Puppet::Util::Windows::ADSI.unstub(:connect)
577
578
  expect(Puppet::Util::Windows::ADSI::Group.exists?(user)).to be_truthy
578
579
  end
579
580
 
580
581
  it "should return nil with an unknown SID" do
582
+
581
583
  bogus_sid = 'S-1-2-3-4'
582
584
  # ensure that the underlying OS is queried here
583
- allow(Puppet::Util::Windows::ADSI).to receive(:connect).and_call_original()
585
+ Puppet::Util::Windows::ADSI.unstub(:connect)
584
586
  expect(Puppet::Util::Windows::ADSI::Group.exists?(bogus_sid)).to be_falsey
585
587
  end
586
588
 
587
589
  it "should be able to delete a group" do
588
- expect(connection).to receive(:Delete).with('group', groupname)
590
+ connection.expects(:Delete).with('group', groupname)
589
591
 
590
592
  Puppet::Util::Windows::ADSI::Group.delete(groupname)
591
593
  end
592
594
 
593
595
  it "should return an enumeration of IADsGroup wrapped objects" do
594
596
  name = 'Administrators'
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)
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)
597
599
 
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)
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)
602
604
 
603
605
  groups = Puppet::Util::Windows::ADSI::Group.to_a
604
606
  expect(groups.length).to eq(1)
@@ -609,19 +611,19 @@ describe Puppet::Util::Windows::ADSI, :if => Puppet::Util::Platform.windows? do
609
611
 
610
612
  describe Puppet::Util::Windows::ADSI::UserProfile do
611
613
  it "should be able to delete a user profile" do
612
- expect(connection).to receive(:Delete).with("Win32_UserProfile.SID='S-A-B-C'")
614
+ connection.expects(:Delete).with("Win32_UserProfile.SID='S-A-B-C'")
613
615
  Puppet::Util::Windows::ADSI::UserProfile.delete('S-A-B-C')
614
616
  end
615
617
 
616
618
  it "should warn on 2003" do
617
- expect(connection).to receive(:Delete).and_raise(WIN32OLERuntimeError,
619
+ connection.expects(:Delete).raises(WIN32OLERuntimeError,
618
620
  "Delete (WIN32OLERuntimeError)
619
621
  OLE error code:80041010 in SWbemServicesEx
620
622
  Invalid class
621
623
  HRESULT error code:0x80020009
622
624
  Exception occurred.")
623
625
 
624
- expect(Puppet).to receive(:warning).with("Cannot delete user profile for 'S-A-B-C' prior to Vista SP1")
626
+ Puppet.expects(:warning).with("Cannot delete user profile for 'S-A-B-C' prior to Vista SP1")
625
627
  Puppet::Util::Windows::ADSI::UserProfile.delete('S-A-B-C')
626
628
  end
627
629
  end