chef 16.0.287 → 16.2.73

Sign up to get free protection for your applications and to get access to all the features.
Files changed (331) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/README.md +3 -3
  4. data/Rakefile +3 -2
  5. data/chef.gemspec +5 -5
  6. data/lib/chef/application/apply.rb +2 -1
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/application/client.rb +1 -1
  9. data/lib/chef/application/windows_service_manager.rb +1 -1
  10. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  11. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  12. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  13. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  14. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  15. data/lib/chef/chef_fs/path_utils.rb +4 -4
  16. data/lib/chef/cookbook/chefignore.rb +1 -1
  17. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  18. data/lib/chef/cookbook/metadata.rb +2 -2
  19. data/lib/chef/cookbook_loader.rb +1 -1
  20. data/lib/chef/cookbook_manifest.rb +1 -1
  21. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  22. data/lib/chef/cookbook_version.rb +4 -4
  23. data/lib/chef/data_bag.rb +4 -4
  24. data/lib/chef/data_collector.rb +1 -1
  25. data/lib/chef/data_collector/error_handlers.rb +1 -1
  26. data/lib/chef/decorator/lazy_array.rb +2 -2
  27. data/lib/chef/deprecated.rb +4 -0
  28. data/lib/chef/digester.rb +5 -4
  29. data/lib/chef/dsl/declare_resource.rb +1 -1
  30. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  31. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  32. data/lib/chef/file_access_control.rb +1 -1
  33. data/lib/chef/file_access_control/windows.rb +2 -2
  34. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  35. data/lib/chef/formatters/base.rb +1 -1
  36. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  37. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  38. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  39. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  40. data/lib/chef/http.rb +19 -4
  41. data/lib/chef/http/decompressor.rb +1 -1
  42. data/lib/chef/http/http_request.rb +1 -1
  43. data/lib/chef/http/json_output.rb +1 -1
  44. data/lib/chef/http/ssl_policies.rb +18 -0
  45. data/lib/chef/json_compat.rb +1 -1
  46. data/lib/chef/key.rb +1 -1
  47. data/lib/chef/knife.rb +2 -2
  48. data/lib/chef/knife/bootstrap.rb +20 -14
  49. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  50. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  51. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  52. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  53. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  54. data/lib/chef/knife/config_get.rb +1 -1
  55. data/lib/chef/knife/config_use_profile.rb +15 -5
  56. data/lib/chef/knife/cookbook_delete.rb +1 -1
  57. data/lib/chef/knife/cookbook_upload.rb +1 -4
  58. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  59. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  60. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  61. data/lib/chef/knife/core/node_presenter.rb +1 -1
  62. data/lib/chef/knife/core/status_presenter.rb +1 -1
  63. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  64. data/lib/chef/knife/core/windows_bootstrap_context.rb +19 -4
  65. data/lib/chef/knife/data_bag_create.rb +1 -1
  66. data/lib/chef/knife/key_create_base.rb +1 -1
  67. data/lib/chef/knife/key_edit_base.rb +1 -1
  68. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  69. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  70. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  71. data/lib/chef/knife/ssh.rb +2 -2
  72. data/lib/chef/knife/supermarket_share.rb +1 -1
  73. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  74. data/lib/chef/log.rb +1 -1
  75. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  76. data/lib/chef/mixin/checksum.rb +0 -1
  77. data/lib/chef/mixin/openssl_helper.rb +4 -4
  78. data/lib/chef/mixin/properties.rb +2 -2
  79. data/lib/chef/mixin/securable.rb +2 -2
  80. data/lib/chef/mixin/shell_out.rb +1 -1
  81. data/lib/chef/node/attribute.rb +2 -2
  82. data/lib/chef/node/immutable_collections.rb +1 -1
  83. data/lib/chef/policy_builder/policyfile.rb +1 -1
  84. data/lib/chef/powershell.rb +1 -1
  85. data/lib/chef/property.rb +2 -2
  86. data/lib/chef/provider.rb +3 -3
  87. data/lib/chef/provider/batch.rb +3 -10
  88. data/lib/chef/provider/cron.rb +2 -14
  89. data/lib/chef/provider/directory.rb +1 -1
  90. data/lib/chef/provider/execute.rb +2 -1
  91. data/lib/chef/provider/file.rb +1 -1
  92. data/lib/chef/provider/group/dscl.rb +2 -2
  93. data/lib/chef/provider/group/windows.rb +1 -1
  94. data/lib/chef/provider/ifconfig.rb +7 -7
  95. data/lib/chef/provider/launchd.rb +11 -9
  96. data/lib/chef/provider/mount/aix.rb +1 -1
  97. data/lib/chef/provider/mount/windows.rb +2 -2
  98. data/lib/chef/provider/noop.rb +1 -1
  99. data/lib/chef/provider/package/cab.rb +1 -1
  100. data/lib/chef/provider/package/chocolatey.rb +1 -1
  101. data/lib/chef/provider/package/dpkg.rb +1 -1
  102. data/lib/chef/provider/package/openbsd.rb +1 -1
  103. data/lib/chef/provider/package/portage.rb +3 -2
  104. data/lib/chef/provider/package/powershell.rb +6 -2
  105. data/lib/chef/provider/package/rubygems.rb +3 -3
  106. data/lib/chef/provider/package/snap.rb +96 -27
  107. data/lib/chef/provider/package/windows.rb +2 -2
  108. data/lib/chef/provider/package/windows/msi.rb +3 -3
  109. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  110. data/lib/chef/provider/package/yum.rb +1 -1
  111. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  112. data/lib/chef/provider/powershell_script.rb +11 -15
  113. data/lib/chef/provider/remote_directory.rb +2 -2
  114. data/lib/chef/provider/remote_file/http.rb +4 -1
  115. data/lib/chef/provider/script.rb +4 -75
  116. data/lib/chef/provider/service/arch.rb +2 -2
  117. data/lib/chef/provider/service/debian.rb +2 -2
  118. data/lib/chef/provider/service/macosx.rb +9 -0
  119. data/lib/chef/provider/service/openbsd.rb +4 -4
  120. data/lib/chef/provider/service/redhat.rb +1 -1
  121. data/lib/chef/provider/service/upstart.rb +1 -1
  122. data/lib/chef/provider/service/windows.rb +1 -1
  123. data/lib/chef/provider/subversion.rb +2 -2
  124. data/lib/chef/provider/user/aix.rb +1 -1
  125. data/lib/chef/provider/user/dscl.rb +6 -6
  126. data/lib/chef/provider/user/linux.rb +3 -3
  127. data/lib/chef/provider/user/mac.rb +15 -11
  128. data/lib/chef/provider/windows_script.rb +87 -25
  129. data/lib/chef/provider/windows_task.rb +4 -2
  130. data/lib/chef/provider/zypper_repository.rb +30 -10
  131. data/lib/chef/resource.rb +25 -14
  132. data/lib/chef/resource/alternatives.rb +1 -1
  133. data/lib/chef/resource/apt_package.rb +1 -1
  134. data/lib/chef/resource/archive_file.rb +28 -8
  135. data/lib/chef/resource/bash.rb +0 -1
  136. data/lib/chef/resource/batch.rb +4 -2
  137. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  138. data/lib/chef/resource/chef_gem.rb +57 -21
  139. data/lib/chef/resource/chef_handler.rb +2 -2
  140. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  141. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  142. data/lib/chef/resource/cron/cron.rb +46 -0
  143. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  144. data/lib/chef/resource/cron_access.rb +11 -3
  145. data/lib/chef/resource/csh.rb +0 -1
  146. data/lib/chef/resource/dmg_package.rb +2 -2
  147. data/lib/chef/resource/execute.rb +478 -8
  148. data/lib/chef/resource/file.rb +10 -8
  149. data/lib/chef/resource/freebsd_package.rb +1 -1
  150. data/lib/chef/resource/gem_package.rb +35 -2
  151. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  152. data/lib/chef/resource/homebrew_package.rb +30 -1
  153. data/lib/chef/resource/homebrew_update.rb +107 -0
  154. data/lib/chef/resource/hostname.rb +7 -20
  155. data/lib/chef/resource/kernel_module.rb +14 -1
  156. data/lib/chef/resource/launchd.rb +1 -1
  157. data/lib/chef/resource/locale.rb +3 -3
  158. data/lib/chef/resource/macos_userdefaults.rb +11 -6
  159. data/lib/chef/resource/mount.rb +1 -1
  160. data/lib/chef/resource/perl.rb +0 -1
  161. data/lib/chef/resource/plist.rb +23 -4
  162. data/lib/chef/resource/powershell_script.rb +4 -2
  163. data/lib/chef/resource/python.rb +0 -1
  164. data/lib/chef/resource/remote_file.rb +26 -10
  165. data/lib/chef/resource/ruby.rb +0 -1
  166. data/lib/chef/resource/scm/git.rb +1 -1
  167. data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
  168. data/lib/chef/resource/sudo.rb +29 -2
  169. data/lib/chef/resource/swap_file.rb +17 -0
  170. data/lib/chef/resource/template.rb +1 -1
  171. data/lib/chef/resource/timezone.rb +15 -0
  172. data/lib/chef/resource/windows_ad_join.rb +30 -1
  173. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  174. data/lib/chef/resource/windows_auto_run.rb +11 -0
  175. data/lib/chef/resource/windows_certificate.rb +27 -1
  176. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  177. data/lib/chef/resource/windows_font.rb +3 -3
  178. data/lib/chef/resource/windows_package.rb +1 -1
  179. data/lib/chef/resource/windows_pagefile.rb +2 -2
  180. data/lib/chef/resource/windows_script.rb +2 -16
  181. data/lib/chef/resource/windows_security_policy.rb +47 -16
  182. data/lib/chef/resource/windows_shortcut.rb +1 -2
  183. data/lib/chef/resource/windows_task.rb +10 -10
  184. data/lib/chef/resource/windows_user_privilege.rb +70 -5
  185. data/lib/chef/resource/yum_repository.rb +9 -9
  186. data/lib/chef/resource_inspector.rb +4 -3
  187. data/lib/chef/resources.rb +4 -2
  188. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  189. data/lib/chef/search/query.rb +1 -1
  190. data/lib/chef/shell/ext.rb +1 -1
  191. data/lib/chef/util/diff.rb +2 -2
  192. data/lib/chef/util/windows/net_user.rb +1 -1
  193. data/lib/chef/util/windows/volume.rb +1 -1
  194. data/lib/chef/version.rb +1 -1
  195. data/lib/chef/win32/api.rb +2 -2
  196. data/lib/chef/win32/api/error.rb +3 -1
  197. data/lib/chef/win32/api/file.rb +1 -1
  198. data/lib/chef/win32/api/net.rb +1 -0
  199. data/lib/chef/win32/file.rb +1 -1
  200. data/lib/chef/win32/mutex.rb +1 -1
  201. data/lib/chef/win32/net.rb +1 -0
  202. data/lib/chef/win32/registry.rb +2 -2
  203. data/lib/chef/win32/security.rb +1 -1
  204. data/lib/chef/win32/security/sid.rb +4 -4
  205. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  206. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  207. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  208. data/spec/functional/knife/configure_spec.rb +1 -1
  209. data/spec/functional/resource/aix_service_spec.rb +10 -1
  210. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  211. data/spec/functional/resource/bash_spec.rb +3 -2
  212. data/spec/functional/resource/bff_spec.rb +1 -1
  213. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  214. data/spec/functional/resource/cron_spec.rb +20 -1
  215. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  216. data/spec/functional/resource/execute_spec.rb +1 -1
  217. data/spec/functional/resource/git_spec.rb +6 -6
  218. data/spec/functional/resource/group_spec.rb +9 -1
  219. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  220. data/spec/functional/resource/insserv_spec.rb +3 -2
  221. data/spec/functional/resource/launchd_spec.rb +232 -0
  222. data/spec/functional/resource/link_spec.rb +2 -5
  223. data/spec/functional/resource/mount_spec.rb +9 -1
  224. data/spec/functional/resource/msu_package_spec.rb +9 -3
  225. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  226. data/spec/functional/resource/remote_file_spec.rb +8 -8
  227. data/spec/functional/resource/rpm_spec.rb +1 -1
  228. data/spec/functional/resource/timezone_spec.rb +2 -0
  229. data/spec/functional/resource/windows_package_spec.rb +0 -1
  230. data/spec/functional/resource/windows_path_spec.rb +4 -0
  231. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  232. data/spec/functional/resource/windows_service_spec.rb +4 -0
  233. data/spec/functional/resource/windows_task_spec.rb +16 -15
  234. data/spec/functional/resource/windows_user_privilege_spec.rb +0 -1
  235. data/spec/functional/resource/yum_package_spec.rb +4 -1
  236. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  237. data/spec/functional/shell_spec.rb +0 -1
  238. data/spec/functional/win32/crypto_spec.rb +1 -1
  239. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  240. data/spec/integration/knife/cookbook_upload_spec.rb +1 -1
  241. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  242. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  243. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  245. data/spec/integration/recipes/recipe_dsl_spec.rb +4 -0
  246. data/spec/integration/recipes/resource_load_spec.rb +2 -2
  247. data/spec/support/chef_helpers.rb +1 -1
  248. data/spec/support/platform_helpers.rb +1 -1
  249. data/spec/support/platforms/win32/spec_service.rb +1 -1
  250. data/spec/support/shared/functional/execute_resource.rb +1 -1
  251. data/spec/support/shared/functional/securable_resource.rb +1 -2
  252. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  253. data/spec/support/shared/functional/windows_script.rb +3 -3
  254. data/spec/support/shared/unit/execute_resource.rb +1 -1
  255. data/spec/support/shared/unit/provider/file.rb +12 -8
  256. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  257. data/spec/unit/application/solo_spec.rb +4 -2
  258. data/spec/unit/application_spec.rb +7 -0
  259. data/spec/unit/chef_fs/config_spec.rb +2 -2
  260. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  261. data/spec/unit/client_spec.rb +4 -1
  262. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  263. data/spec/unit/data_bag_spec.rb +6 -3
  264. data/spec/unit/decorator_spec.rb +23 -23
  265. data/spec/unit/environment_spec.rb +5 -1
  266. data/spec/unit/guard_interpreter_spec.rb +1 -1
  267. data/spec/unit/http/api_versions_spec.rb +1 -1
  268. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  269. data/spec/unit/knife/bootstrap_spec.rb +3 -2
  270. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  271. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  272. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  273. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  274. data/spec/unit/lwrp_spec.rb +5 -2
  275. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  276. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  277. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  278. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  279. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  280. data/spec/unit/mixin/uris_spec.rb +1 -1
  281. data/spec/unit/mixin/user_context_spec.rb +1 -9
  282. data/spec/unit/node/attribute_spec.rb +1 -1
  283. data/spec/unit/property_spec.rb +1 -1
  284. data/spec/unit/provider/batch_spec.rb +130 -0
  285. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  286. data/spec/unit/provider/cron_spec.rb +9 -49
  287. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  288. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  289. data/spec/unit/provider/execute_spec.rb +1 -1
  290. data/spec/unit/provider/git_spec.rb +3 -3
  291. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  292. data/spec/unit/provider/launchd_spec.rb +0 -42
  293. data/spec/unit/provider/mdadm_spec.rb +1 -3
  294. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  295. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  296. data/spec/unit/provider/package/portage_spec.rb +2 -2
  297. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  298. data/spec/unit/provider/package/snap_spec.rb +1 -1
  299. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  300. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  301. data/spec/unit/provider/script_spec.rb +20 -110
  302. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  303. data/spec/unit/provider/windows_env_spec.rb +5 -4
  304. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  305. data/spec/unit/resource/archive_file_spec.rb +11 -2
  306. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  307. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  308. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  309. data/spec/unit/resource/cron_spec.rb +2 -2
  310. data/spec/unit/resource/file/verification_spec.rb +2 -1
  311. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  312. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  313. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  314. data/spec/unit/resource/timezone_spec.rb +1 -1
  315. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  316. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  317. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  318. data/spec/unit/resource/windows_task_spec.rb +1 -1
  319. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  320. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  321. data/spec/unit/resource_spec.rb +84 -1
  322. data/spec/unit/role_spec.rb +23 -21
  323. data/spec/unit/util/backup_spec.rb +1 -1
  324. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  325. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  326. data/spec/unit/util/selinux_spec.rb +2 -1
  327. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  328. data/spec/unit/win32/registry_spec.rb +1 -1
  329. metadata +37 -31
  330. data/lib/chef/resource/cron.rb +0 -157
  331. data/spec/functional/resource/base.rb +0 -28
@@ -26,11 +26,17 @@ describe Chef::Resource::MsuPackage, :win2012r2_only do
26
26
  let(:package_identity) { "Package_for_KB2959977~31bf3856ad364e35~amd64~~6.3.1.1" }
27
27
  let(:timeout) { 3600 }
28
28
 
29
- let(:new_resource) { Chef::Resource::CabPackage.new("windows_test_pkg") }
30
- let(:cab_provider) do
29
+ let(:run_context) do
31
30
  node = Chef::Node.new
31
+ node.default[:platform] = ohai[:platform]
32
+ node.default[:platform_version] = ohai[:platform_version]
33
+ node.default[:os] = ohai[:os]
32
34
  events = Chef::EventDispatch::Dispatcher.new
33
- run_context = Chef::RunContext.new(node, {}, events)
35
+ Chef::RunContext.new(node, {}, events)
36
+ end
37
+
38
+ let(:new_resource) { Chef::Resource::CabPackage.new("windows_test_pkg") }
39
+ let(:cab_provider) do
34
40
  Chef::Provider::Package::Cab.new(new_resource, run_context)
35
41
  end
36
42
 
@@ -23,8 +23,8 @@ describe Chef::Resource::WindowsScript::PowershellScript, :windows_only do
23
23
 
24
24
  include_context Chef::Resource::WindowsScript
25
25
 
26
- let (:architecture_command) { "echo $env:PROCESSOR_ARCHITECTURE" }
27
- let (:output_command) { " | out-file -encoding ASCII " }
26
+ let(:architecture_command) { "echo $env:PROCESSOR_ARCHITECTURE" }
27
+ let(:output_command) { " | out-file -encoding ASCII " }
28
28
 
29
29
  it_behaves_like "a Windows script running on Windows"
30
30
 
@@ -68,8 +68,8 @@ describe Chef::Resource::WindowsScript::PowershellScript, :windows_only do
68
68
  end
69
69
  end
70
70
 
71
- let (:negative_exit_status) { -27 }
72
- let (:unsigned_exit_status) { (-negative_exit_status ^ 65535) + 1 }
71
+ let(:negative_exit_status) { -27 }
72
+ let(:unsigned_exit_status) { (-negative_exit_status ^ 65535) + 1 }
73
73
  it "returns the exit status -27 as a signed integer or an unsigned 16-bit 2's complement value of 65509 for a powershell script that exits with -27" do
74
74
 
75
75
  # Versions of PowerShell prior to 4.0 return a 16-bit unsigned value --
@@ -134,7 +134,7 @@ describe Chef::Resource::RemoteFile do
134
134
  let(:smb_file_local_file_name) { "smb_file.txt" }
135
135
  let(:smb_file_local_path) { File.join( smb_share_root_directory, smb_file_local_file_name ) }
136
136
  let(:smb_share_name) { "chef_smb_test" }
137
- let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).gsub(%r{/}, "\\") }
137
+ let(:smb_remote_path) { File.join("//#{ENV["COMPUTERNAME"]}", smb_share_name, smb_file_local_file_name).tr("/", "\\") }
138
138
  let(:smb_file_content) { "hellofun" }
139
139
  let(:local_destination_path) { File.join(Dir.tmpdir, make_tmpname("chef_remote_file")) }
140
140
  let(:windows_current_user) { ENV["USERNAME"] }
@@ -155,7 +155,7 @@ describe Chef::Resource::RemoteFile do
155
155
  before do
156
156
  shell_out("net.exe share #{smb_share_name} /delete")
157
157
  File.write(smb_file_local_path, smb_file_content )
158
- shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.gsub(%r{/}, '\\')}\" /grant:\"authenticated users\",read")
158
+ shell_out!("net.exe share #{smb_share_name}=\"#{smb_share_root_directory.tr("/", '\\')}\" /grant:\"authenticated users\",read")
159
159
  end
160
160
 
161
161
  after do
@@ -229,8 +229,8 @@ describe Chef::Resource::RemoteFile do
229
229
  end
230
230
 
231
231
  context "when the resource is accessed using an alternate user's identity with no access to the file" do
232
- let (:windows_nonadmin_user) { "chefremfile1" }
233
- let (:windows_nonadmin_user_password) { "j82ajfxK3;2Xe1" }
232
+ let(:windows_nonadmin_user) { "chefremfile1" }
233
+ let(:windows_nonadmin_user_password) { "j82ajfxK3;2Xe1" }
234
234
  include_context "a non-admin Windows user"
235
235
 
236
236
  before do
@@ -246,8 +246,8 @@ describe Chef::Resource::RemoteFile do
246
246
  end
247
247
 
248
248
  context "when the the file is only accessible as a specific alternate identity" do
249
- let (:windows_nonadmin_user) { "chefremfile2" }
250
- let (:windows_nonadmin_user_password) { "j82ajfxK3;2Xe2" }
249
+ let(:windows_nonadmin_user) { "chefremfile2" }
250
+ let(:windows_nonadmin_user_password) { "j82ajfxK3;2Xe2" }
251
251
  include_context "a non-admin Windows user"
252
252
 
253
253
  before do
@@ -279,8 +279,8 @@ describe Chef::Resource::RemoteFile do
279
279
  end
280
280
 
281
281
  context "when the resource is accessed using an alternate user's identity with no access to the file" do
282
- let (:windows_nonadmin_user) { "chefremfile3" }
283
- let (:windows_nonadmin_user_password) { "j82ajfxK3;2Xe3" }
282
+ let(:windows_nonadmin_user) { "chefremfile3" }
283
+ let(:windows_nonadmin_user_password) { "j82ajfxK3;2Xe3" }
284
284
  include_context "a non-admin Windows user"
285
285
 
286
286
  let(:remote_user) { windows_nonadmin_user_qualified }
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/shell_out"
22
21
 
23
22
  # run this test only for following platforms.
@@ -26,6 +25,7 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
26
25
  include Chef::Mixin::ShellOut
27
26
 
28
27
  let(:new_resource) do
28
+ run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
29
29
  new_resource = Chef::Resource::RpmPackage.new(@pkg_name, run_context)
30
30
  new_resource.source @pkg_path
31
31
  new_resource
@@ -21,6 +21,8 @@ describe Chef::Resource::Timezone, :windows_only do
21
21
  let(:timezone) { "GMT Standard Time" }
22
22
 
23
23
  def timezone_resource
24
+ run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
25
+
24
26
  Chef::Resource::Timezone.new(timezone, run_context)
25
27
  end
26
28
 
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
 
22
21
  describe Chef::Resource::WindowsPackage, :windows_only, :volatile do
23
22
  let(:pkg_name) { nil }
@@ -21,6 +21,10 @@ require "spec_helper"
21
21
  describe Chef::Resource::WindowsPath, :windows_only do
22
22
  let(:path) { "test_path" }
23
23
 
24
+ let(:run_context) do
25
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
26
+ end
27
+
24
28
  before(:all) do
25
29
  @old_path = ENV["PATH"].dup
26
30
  end
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/powershell_out"
22
21
 
23
22
  describe Chef::Resource::WindowsSecurityPolicy, :windows_only do
@@ -62,6 +62,10 @@ describe Chef::Resource::WindowsService, :windows_only, :system_windows_service_
62
62
  r
63
63
  end
64
64
 
65
+ let(:run_context) do
66
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
67
+ end
68
+
65
69
  before do
66
70
  user_resource.run_action(:create)
67
71
 
@@ -25,12 +25,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
25
25
  let(:task_name) { "chef-client-functional-test" }
26
26
  let(:new_resource) { Chef::Resource::WindowsTask.new(task_name) }
27
27
  let(:windows_task_provider) do
28
- node = Chef::Node.new
29
- events = Chef::EventDispatch::Dispatcher.new
30
- run_context = Chef::RunContext.new(node, {}, events)
31
28
  Chef::Provider::WindowsTask.new(new_resource, run_context)
32
29
  end
33
30
 
31
+ let(:run_context) do
32
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
33
+ end
34
+
34
35
  describe "action :create" do
35
36
  after { delete_task }
36
37
  context "when command is with arguments" do
@@ -317,12 +318,12 @@ describe Chef::Resource::WindowsTask, :windows_only do
317
318
  expect(subject).not_to be_updated_by_last_action
318
319
  end
319
320
 
320
- it "updates a scheduled task to run every 5 hrs when frequency modifer updated to 5" do
321
+ it "updates a scheduled task to run every 5 hrs when frequency modifier updated to 5" do
321
322
  subject.run_action(:create)
322
323
  current_resource = call_for_load_current_resource
323
324
  trigger_details = current_resource.task.trigger(0)
324
325
  expect(trigger_details[:minutes_interval]).to eq(180)
325
- # updating frequency modifer to 5 from 3
326
+ # updating frequency modifier to 5 from 3
326
327
  subject.frequency_modifier 5
327
328
  subject.run_action(:create)
328
329
  expect(subject).to be_updated_by_last_action
@@ -501,7 +502,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
501
502
 
502
503
  it "raises argument error if frequency_modifier is 'first, second' and day is not provided." do
503
504
  subject.frequency_modifier "first, second"
504
- expect { subject.after_created }.to raise_error("Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be seprated by comma.")
505
+ expect { subject.after_created }.to raise_error("Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma.")
505
506
  end
506
507
 
507
508
  it "raises argument error if months is passed along with frequency_modifier" do
@@ -513,13 +514,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
513
514
  it "not raises any Argument error if frequency_modifier set as 'first, second, third' and day is provided" do
514
515
  subject.frequency_modifier "first, second, third"
515
516
  subject.day "Mon, Fri"
516
- expect { subject.after_created }.not_to raise_error(ArgumentError)
517
+ expect { subject.after_created }.not_to raise_error
517
518
  end
518
519
 
519
520
  it "not raises any Argument error if frequency_modifier 2 " do
520
521
  subject.frequency_modifier 2
521
522
  subject.day "Mon, Sun"
522
- expect { subject.after_created }.not_to raise_error(ArgumentError)
523
+ expect { subject.after_created }.not_to raise_error
523
524
  end
524
525
 
525
526
  it "raises argument error if frequency_modifier > 12" do
@@ -532,10 +533,10 @@ describe Chef::Resource::WindowsTask, :windows_only do
532
533
  expect { subject.after_created }.to raise_error("frequency_modifier value 0 is invalid. Valid values for :monthly frequency are 1 - 12, 'FIRST', 'SECOND', 'THIRD', 'FOURTH', 'LAST'.")
533
534
  end
534
535
 
535
- it "creates scheduled task to run task monthly on Monday and Friday of first, second and thrid week of month" do
536
+ it "creates scheduled task to run task monthly on Monday and Friday of first, second and third week of month" do
536
537
  subject.frequency_modifier "first, second, third"
537
538
  subject.day "Mon, Fri"
538
- expect { subject.after_created }.not_to raise_error(ArgumentError)
539
+ expect { subject.after_created }.not_to raise_error
539
540
  call_for_create_action
540
541
  current_resource = call_for_load_current_resource
541
542
  expect(current_resource.exists).to eq(true)
@@ -558,7 +559,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
558
559
  it "creates scheduled task to run task monthly on every 6 months when frequency_modifier is 6 and to run on 1st and 2nd day of month" do
559
560
  subject.frequency_modifier 6
560
561
  subject.day "1, 2"
561
- expect { subject.after_created }.not_to raise_error(ArgumentError)
562
+ expect { subject.after_created }.not_to raise_error
562
563
  call_for_create_action
563
564
  current_resource = call_for_load_current_resource
564
565
  expect(current_resource.exists).to eq(true)
@@ -590,7 +591,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
590
591
 
591
592
  it "creates scheduled task to run monthly to run last day of the month" do
592
593
  subject.day "last"
593
- expect { subject.after_created }.not_to raise_error(ArgumentError)
594
+ expect { subject.after_created }.not_to raise_error
594
595
  call_for_create_action
595
596
  current_resource = call_for_load_current_resource
596
597
  expect(current_resource.exists).to eq(true)
@@ -611,7 +612,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
611
612
 
612
613
  it "day property set as 'lastday' creates scheduled task to run monthly to run last day of the month" do
613
614
  subject.day "lastday"
614
- expect { subject.after_created }.not_to raise_error(ArgumentError)
615
+ expect { subject.after_created }.not_to raise_error
615
616
  call_for_create_action
616
617
  current_resource = call_for_load_current_resource
617
618
  expect(current_resource.exists).to eq(true)
@@ -635,7 +636,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
635
636
  it "creates scheduled task to run monthly on last week of the month" do
636
637
  subject.frequency_modifier "last"
637
638
  subject.day "Mon, Fri"
638
- expect { subject.after_created }.not_to raise_error(ArgumentError)
639
+ expect { subject.after_created }.not_to raise_error
639
640
  call_for_create_action
640
641
  current_resource = call_for_load_current_resource
641
642
  expect(current_resource.exists).to eq(true)
@@ -659,7 +660,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
659
660
  context "when wild card (*) set as months" do
660
661
  it "creates the scheduled task to run on 1st day of the all months" do
661
662
  subject.months "*"
662
- expect { subject.after_created }.not_to raise_error(ArgumentError)
663
+ expect { subject.after_created }.not_to raise_error
663
664
  call_for_create_action
664
665
  current_resource = call_for_load_current_resource
665
666
  expect(current_resource.exists).to eq(true)
@@ -16,7 +16,6 @@
16
16
  #
17
17
 
18
18
  require_relative "../../spec_helper"
19
- require_relative "../../functional/resource/base"
20
19
 
21
20
  describe Chef::Resource::WindowsUserPrivilege, :windows_only do
22
21
  let(:principal) { nil }
@@ -16,7 +16,6 @@
16
16
  #
17
17
 
18
18
  require "spec_helper"
19
- require "functional/resource/base"
20
19
  require "chef/mixin/shell_out"
21
20
 
22
21
  # run this test only for following platforms.
@@ -64,6 +63,10 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
64
63
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
65
64
  end
66
65
 
66
+ let(:run_context) do
67
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
68
+ end
69
+
67
70
  let(:package_name) { "chef_rpm" }
68
71
  let(:yum_package) do
69
72
  r = Chef::Resource::YumPackage.new(package_name, run_context)
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/shell_out"
22
21
 
23
22
  describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
@@ -52,6 +51,10 @@ describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
52
51
  FileUtils.rm_f "/etc/zypp/repos.d/chef-zypp-localtesting.repo"
53
52
  end
54
53
 
54
+ let(:run_context) do
55
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
56
+ end
57
+
55
58
  let(:package_name) { "chef_rpm" }
56
59
  let(:zypper_package) do
57
60
  r = Chef::Resource::ZypperPackage.new(package_name, run_context)
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/version"
22
21
  require "chef/shell"
23
22
 
@@ -32,7 +32,7 @@ describe "Chef::ReservedNames::Win32::Crypto", :windows_only do
32
32
  @run_context = Chef::RunContext.new(new_node, {}, events)
33
33
  end
34
34
 
35
- let (:plaintext) { "p@assword" }
35
+ let(:plaintext) { "p@assword" }
36
36
 
37
37
  it "can be decrypted by powershell" do
38
38
  encrypted = Chef::ReservedNames::Win32::Crypto.encrypt(plaintext)
@@ -30,6 +30,7 @@ describe "knife config use-profile", :workstation do
30
30
  knife("config", "use-profile", *cmd_args, instance_filter: lambda { |instance|
31
31
  # Fake the failsafe check because this command doesn't actually process knife.rb.
32
32
  $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
33
+ allow(File).to receive(:file?).and_call_original
33
34
  })
34
35
  end
35
36
 
@@ -73,15 +74,56 @@ describe "knife config use-profile", :workstation do
73
74
 
74
75
  context "with an argument" do
75
76
  let(:cmd_args) { %w{production} }
77
+ before { file(".chef/credentials", <<~EOH) }
78
+ [production]
79
+ client_name = "testuser"
80
+ client_key = "testkey.pem"
81
+ chef_server_url = "https://example.com/organizations/testorg"
82
+ EOH
76
83
  it do
77
84
  is_expected.to eq "Set default profile to production\n"
78
85
  expect(File.read(path_to(".chef/context"))).to eq "production\n"
79
86
  end
80
87
  end
81
88
 
89
+ context "with no credentials file" do
90
+ let(:cmd_args) { %w{production} }
91
+ subject { knife_use_profile.stderr }
92
+ it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
93
+ end
94
+
95
+ context "with an empty credentials file" do
96
+ let(:cmd_args) { %w{production} }
97
+ before { file(".chef/credentials", "") }
98
+ subject { knife_use_profile.stderr }
99
+ it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
100
+ end
101
+
102
+ context "with an wrong argument" do
103
+ let(:cmd_args) { %w{staging} }
104
+ before { file(".chef/credentials", <<~EOH) }
105
+ [production]
106
+ client_name = "testuser"
107
+ client_key = "testkey.pem"
108
+ chef_server_url = "https://example.com/organizations/testorg"
109
+ EOH
110
+ subject { knife_use_profile }
111
+ it { expect { subject }.to raise_error ChefConfig::ConfigurationError, "Profile staging doesn't exist. Please add it to #{path_to(".chef/credentials")} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles." }
112
+ end
113
+
82
114
  context "with $CHEF_HOME" do
83
115
  let(:cmd_args) { %w{staging} }
84
- before { ENV["CHEF_HOME"] = path_to("chefhome"); file("chefhome/tmp", "") }
116
+ before do
117
+ ENV["CHEF_HOME"] = path_to("chefhome"); file("chefhome/tmp", "")
118
+ file("chefhome/.chef/credentials", <<~EOH
119
+ [staging]
120
+ client_name = "testuser"
121
+ client_key = "testkey.pem"
122
+ chef_server_url = "https://example.com/organizations/testorg"
123
+ EOH
124
+ )
125
+ end
126
+
85
127
  it do
86
128
  is_expected.to eq "Set default profile to staging\n"
87
129
  expect(File.read(path_to("chefhome/.chef/context"))).to eq "staging\n"
@@ -91,7 +133,18 @@ describe "knife config use-profile", :workstation do
91
133
 
92
134
  context "with $KNIFE_HOME" do
93
135
  let(:cmd_args) { %w{development} }
94
- before { ENV["KNIFE_HOME"] = path_to("knifehome"); file("knifehome/tmp", "") }
136
+
137
+ before do
138
+ ENV["KNIFE_HOME"] = path_to("knifehome"); file("knifehome/tmp", "")
139
+ file("knifehome/.chef/credentials", <<~EOH
140
+ [development]
141
+ client_name = "testuser"
142
+ client_key = "testkey.pem"
143
+ chef_server_url = "https://example.com/organizations/testorg"
144
+ EOH
145
+ )
146
+ end
147
+
95
148
  it do
96
149
  is_expected.to eq "Set default profile to development\n"
97
150
  expect(File.read(path_to("knifehome/.chef/context"))).to eq "development\n"
@@ -25,7 +25,7 @@ describe "knife cookbook upload", :workstation do
25
25
 
26
26
  include_context "default config options"
27
27
 
28
- let (:cb_dir) { "#{@repository_dir}/cookbooks" }
28
+ let(:cb_dir) { "#{@repository_dir}/cookbooks" }
29
29
 
30
30
  when_the_chef_server "is empty" do
31
31
  when_the_repository "has a cookbook" do
@@ -24,7 +24,7 @@ describe "knife data bag from file", :workstation do
24
24
 
25
25
  include_context "default config options"
26
26
 
27
- let (:db_dir) { "#{@repository_dir}/data_bags" }
27
+ let(:db_dir) { "#{@repository_dir}/data_bags" }
28
28
 
29
29
  when_the_chef_server "has an empty data bag" do
30
30
  before do
@@ -24,7 +24,7 @@ describe "knife environment from file", :workstation do
24
24
 
25
25
  # include_context "default config options"
26
26
 
27
- let (:env_dir) { "#{@repository_dir}/environments" }
27
+ let(:env_dir) { "#{@repository_dir}/environments" }
28
28
 
29
29
  when_the_chef_server "is empty" do
30
30
  when_the_repository "has some environments" do