chef 16.0.275-universal-mingw32 → 16.2.50-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (293) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -1
  3. data/README.md +3 -3
  4. data/Rakefile +15 -1
  5. data/chef.gemspec +3 -3
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/application/apply.rb +2 -2
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/exit_code.rb +2 -2
  12. data/lib/chef/application/windows_service_manager.rb +1 -1
  13. data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
  18. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  20. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  21. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  22. data/lib/chef/chef_fs/path_utils.rb +4 -4
  23. data/lib/chef/cookbook/chefignore.rb +1 -1
  24. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +2 -2
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +7 -7
  30. data/lib/chef/data_bag.rb +4 -4
  31. data/lib/chef/data_collector.rb +1 -1
  32. data/lib/chef/data_collector/error_handlers.rb +1 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +5 -1
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dsl/declare_resource.rb +1 -1
  37. data/lib/chef/dsl/platform_introspection.rb +1 -1
  38. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  39. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  40. data/lib/chef/file_access_control.rb +1 -1
  41. data/lib/chef/formatters/base.rb +1 -1
  42. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  43. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  44. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  45. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  46. data/lib/chef/http.rb +18 -3
  47. data/lib/chef/http/decompressor.rb +1 -1
  48. data/lib/chef/http/http_request.rb +1 -1
  49. data/lib/chef/http/json_output.rb +1 -1
  50. data/lib/chef/http/ssl_policies.rb +18 -0
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -2
  54. data/lib/chef/knife/bootstrap.rb +13 -16
  55. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  56. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  57. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  58. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  59. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  60. data/lib/chef/knife/config_get.rb +1 -1
  61. data/lib/chef/knife/config_use_profile.rb +15 -5
  62. data/lib/chef/knife/cookbook_delete.rb +1 -1
  63. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  64. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  65. data/lib/chef/knife/core/node_presenter.rb +1 -1
  66. data/lib/chef/knife/core/status_presenter.rb +1 -1
  67. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  68. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
  69. data/lib/chef/knife/data_bag_create.rb +1 -1
  70. data/lib/chef/knife/key_create_base.rb +1 -1
  71. data/lib/chef/knife/key_edit_base.rb +1 -1
  72. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  73. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  74. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  75. data/lib/chef/knife/ssh.rb +2 -2
  76. data/lib/chef/knife/supermarket_share.rb +1 -1
  77. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  78. data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
  79. data/lib/chef/log.rb +1 -1
  80. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  81. data/lib/chef/mixin/checksum.rb +0 -1
  82. data/lib/chef/mixin/create_path.rb +8 -8
  83. data/lib/chef/mixin/openssl_helper.rb +4 -4
  84. data/lib/chef/mixin/properties.rb +4 -2
  85. data/lib/chef/mixin/securable.rb +2 -2
  86. data/lib/chef/mixin/shell_out.rb +1 -1
  87. data/lib/chef/node/attribute.rb +2 -2
  88. data/lib/chef/node/immutable_collections.rb +1 -1
  89. data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
  90. data/lib/chef/policy_builder/policyfile.rb +1 -1
  91. data/lib/chef/powershell.rb +1 -1
  92. data/lib/chef/property.rb +2 -2
  93. data/lib/chef/provider.rb +3 -3
  94. data/lib/chef/provider/batch.rb +3 -10
  95. data/lib/chef/provider/cron.rb +2 -14
  96. data/lib/chef/provider/directory.rb +1 -1
  97. data/lib/chef/provider/execute.rb +2 -1
  98. data/lib/chef/provider/file.rb +1 -1
  99. data/lib/chef/provider/group/dscl.rb +2 -2
  100. data/lib/chef/provider/group/windows.rb +1 -1
  101. data/lib/chef/provider/ifconfig.rb +7 -7
  102. data/lib/chef/provider/launchd.rb +28 -32
  103. data/lib/chef/provider/mount/aix.rb +1 -1
  104. data/lib/chef/provider/mount/windows.rb +2 -2
  105. data/lib/chef/provider/noop.rb +1 -1
  106. data/lib/chef/provider/package/cab.rb +1 -1
  107. data/lib/chef/provider/package/chocolatey.rb +1 -1
  108. data/lib/chef/provider/package/dpkg.rb +1 -1
  109. data/lib/chef/provider/package/openbsd.rb +1 -1
  110. data/lib/chef/provider/package/portage.rb +3 -2
  111. data/lib/chef/provider/package/powershell.rb +6 -2
  112. data/lib/chef/provider/package/rubygems.rb +3 -3
  113. data/lib/chef/provider/package/snap.rb +96 -27
  114. data/lib/chef/provider/package/windows.rb +2 -2
  115. data/lib/chef/provider/package/windows/msi.rb +3 -3
  116. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  117. data/lib/chef/provider/package/yum.rb +1 -1
  118. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  119. data/lib/chef/provider/powershell_script.rb +11 -15
  120. data/lib/chef/provider/remote_directory.rb +2 -2
  121. data/lib/chef/provider/remote_file/http.rb +4 -1
  122. data/lib/chef/provider/script.rb +4 -75
  123. data/lib/chef/provider/service/arch.rb +2 -2
  124. data/lib/chef/provider/service/debian.rb +2 -2
  125. data/lib/chef/provider/service/macosx.rb +13 -2
  126. data/lib/chef/provider/service/openbsd.rb +4 -4
  127. data/lib/chef/provider/service/redhat.rb +1 -1
  128. data/lib/chef/provider/service/simple.rb +3 -3
  129. data/lib/chef/provider/service/upstart.rb +1 -1
  130. data/lib/chef/provider/service/windows.rb +1 -1
  131. data/lib/chef/provider/subversion.rb +2 -2
  132. data/lib/chef/provider/user/aix.rb +1 -1
  133. data/lib/chef/provider/user/dscl.rb +6 -6
  134. data/lib/chef/provider/user/linux.rb +3 -3
  135. data/lib/chef/provider/user/mac.rb +15 -11
  136. data/lib/chef/provider/windows_script.rb +87 -25
  137. data/lib/chef/provider/windows_task.rb +5 -3
  138. data/lib/chef/provider/zypper_repository.rb +30 -10
  139. data/lib/chef/resource.rb +25 -14
  140. data/lib/chef/resource/alternatives.rb +1 -1
  141. data/lib/chef/resource/apt_package.rb +1 -1
  142. data/lib/chef/resource/archive_file.rb +28 -8
  143. data/lib/chef/resource/bash.rb +0 -1
  144. data/lib/chef/resource/batch.rb +4 -2
  145. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  146. data/lib/chef/resource/chef_gem.rb +57 -21
  147. data/lib/chef/resource/chef_handler.rb +2 -2
  148. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  149. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  150. data/lib/chef/resource/cron/cron.rb +46 -0
  151. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  152. data/lib/chef/resource/cron_access.rb +11 -3
  153. data/lib/chef/resource/csh.rb +0 -1
  154. data/lib/chef/resource/dmg_package.rb +1 -1
  155. data/lib/chef/resource/execute.rb +478 -8
  156. data/lib/chef/resource/file.rb +10 -8
  157. data/lib/chef/resource/freebsd_package.rb +1 -1
  158. data/lib/chef/resource/gem_package.rb +35 -2
  159. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  160. data/lib/chef/resource/homebrew_package.rb +30 -1
  161. data/lib/chef/resource/homebrew_update.rb +107 -0
  162. data/lib/chef/resource/hostname.rb +7 -20
  163. data/lib/chef/resource/kernel_module.rb +14 -1
  164. data/lib/chef/resource/launchd.rb +4 -4
  165. data/lib/chef/resource/locale.rb +3 -3
  166. data/lib/chef/resource/macos_userdefaults.rb +14 -9
  167. data/lib/chef/resource/mount.rb +1 -1
  168. data/lib/chef/resource/msu_package.rb +1 -1
  169. data/lib/chef/resource/perl.rb +0 -1
  170. data/lib/chef/resource/plist.rb +23 -4
  171. data/lib/chef/resource/powershell_script.rb +4 -2
  172. data/lib/chef/resource/python.rb +0 -1
  173. data/lib/chef/resource/remote_file.rb +26 -10
  174. data/lib/chef/resource/ruby.rb +0 -1
  175. data/lib/chef/resource/scm/git.rb +1 -1
  176. data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
  177. data/lib/chef/resource/sudo.rb +29 -2
  178. data/lib/chef/resource/swap_file.rb +17 -0
  179. data/lib/chef/resource/template.rb +1 -1
  180. data/lib/chef/resource/timezone.rb +15 -0
  181. data/lib/chef/resource/windows_ad_join.rb +30 -1
  182. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  183. data/lib/chef/resource/windows_auto_run.rb +11 -0
  184. data/lib/chef/resource/windows_certificate.rb +27 -1
  185. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  186. data/lib/chef/resource/windows_firewall_rule.rb +2 -2
  187. data/lib/chef/resource/windows_font.rb +3 -3
  188. data/lib/chef/resource/windows_package.rb +3 -3
  189. data/lib/chef/resource/windows_pagefile.rb +2 -2
  190. data/lib/chef/resource/windows_printer.rb +1 -1
  191. data/lib/chef/resource/windows_script.rb +2 -16
  192. data/lib/chef/resource/windows_security_policy.rb +47 -16
  193. data/lib/chef/resource/windows_share.rb +2 -2
  194. data/lib/chef/resource/windows_shortcut.rb +1 -2
  195. data/lib/chef/resource/windows_task.rb +21 -21
  196. data/lib/chef/resource/windows_user_privilege.rb +45 -3
  197. data/lib/chef/resource/yum_repository.rb +9 -9
  198. data/lib/chef/resource_inspector.rb +4 -3
  199. data/lib/chef/resources.rb +4 -2
  200. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  201. data/lib/chef/search/query.rb +1 -1
  202. data/lib/chef/shell/ext.rb +1 -1
  203. data/lib/chef/util/diff.rb +2 -2
  204. data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
  205. data/lib/chef/util/windows/net_user.rb +1 -1
  206. data/lib/chef/util/windows/volume.rb +1 -1
  207. data/lib/chef/version.rb +1 -1
  208. data/lib/chef/win32/api.rb +2 -2
  209. data/lib/chef/win32/api/error.rb +3 -1
  210. data/lib/chef/win32/api/file.rb +18 -18
  211. data/lib/chef/win32/api/net.rb +1 -0
  212. data/lib/chef/win32/file.rb +1 -1
  213. data/lib/chef/win32/mutex.rb +1 -1
  214. data/lib/chef/win32/net.rb +1 -0
  215. data/lib/chef/win32/process.rb +2 -2
  216. data/lib/chef/win32/registry.rb +2 -2
  217. data/lib/chef/win32/security.rb +1 -1
  218. data/lib/chef/win32/security/sid.rb +4 -4
  219. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  220. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  221. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  222. data/spec/functional/resource/cron_spec.rb +10 -0
  223. data/spec/functional/resource/dnf_package_spec.rb +2 -2
  224. data/spec/functional/resource/git_spec.rb +6 -6
  225. data/spec/functional/resource/launchd_spec.rb +232 -0
  226. data/spec/functional/resource/remote_file_spec.rb +2 -2
  227. data/spec/functional/resource/user/dscl_spec.rb +1 -1
  228. data/spec/functional/resource/user/mac_user_spec.rb +1 -1
  229. data/spec/functional/resource/windows_task_spec.rb +12 -12
  230. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  231. data/spec/support/chef_helpers.rb +1 -1
  232. data/spec/support/platform_helpers.rb +1 -1
  233. data/spec/support/platforms/win32/spec_service.rb +1 -1
  234. data/spec/support/shared/functional/execute_resource.rb +1 -1
  235. data/spec/support/shared/functional/file_resource.rb +1 -1
  236. data/spec/support/shared/functional/windows_script.rb +1 -1
  237. data/spec/support/shared/unit/execute_resource.rb +1 -1
  238. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  239. data/spec/unit/application_spec.rb +7 -0
  240. data/spec/unit/data_bag_spec.rb +1 -1
  241. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  242. data/spec/unit/knife/bootstrap_spec.rb +2 -2
  243. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  244. data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
  245. data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
  246. data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
  247. data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
  248. data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
  249. data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
  250. data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
  251. data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
  252. data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
  253. data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
  254. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  255. data/spec/unit/mixin/user_context_spec.rb +1 -9
  256. data/spec/unit/node/attribute_spec.rb +1 -1
  257. data/spec/unit/property_spec.rb +1 -1
  258. data/spec/unit/provider/batch_spec.rb +130 -0
  259. data/spec/unit/provider/cron_spec.rb +9 -49
  260. data/spec/unit/provider/git_spec.rb +3 -3
  261. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  262. data/spec/unit/provider/launchd_spec.rb +8 -50
  263. data/spec/unit/provider/osx_profile_spec.rb +2 -2
  264. data/spec/unit/provider/package/msu_spec.rb +3 -3
  265. data/spec/unit/provider/package/portage_spec.rb +2 -2
  266. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  267. data/spec/unit/provider/package/snap_spec.rb +1 -1
  268. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  269. data/spec/unit/provider/script_spec.rb +20 -110
  270. data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
  271. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  272. data/spec/unit/provider_resolver_spec.rb +9 -9
  273. data/spec/unit/resource/archive_file_spec.rb +11 -2
  274. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  275. data/spec/unit/resource/cron_spec.rb +2 -2
  276. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  277. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  278. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  279. data/spec/unit/resource/timezone_spec.rb +1 -1
  280. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  281. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  282. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  283. data/spec/unit/resource/windows_package_spec.rb +10 -0
  284. data/spec/unit/resource/windows_task_spec.rb +1 -1
  285. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  286. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  287. data/spec/unit/resource_spec.rb +67 -1
  288. data/spec/unit/run_context_spec.rb +1 -1
  289. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  290. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  291. data/spec/unit/win32/registry_spec.rb +1 -1
  292. metadata +24 -23
  293. data/lib/chef/resource/cron.rb +0 -157
@@ -95,7 +95,7 @@ class Chef
95
95
  description: "URL pointing to the ASCII-armored GPG key file for the repository. This is used if Yum needs a public key to verify a package and the required key hasn't been imported into the RPM database. If this option is set, Yum will automatically import the key from the specified URL. Multiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed.\nMultiple URLs may be specified in the same manner as the baseurl option. If a GPG key is required to install a package from a repository, all keys specified for that repository will be installed."
96
96
 
97
97
  property :http_caching, String, equal_to: %w{packages all none},
98
- description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values: all (all HTTP downloads should be cached), packages (only RPM package downloads should be cached, but not repository metadata downloads), or none (no HTTP downloads should be cached)"
98
+ description: "Determines how upstream HTTP caches are instructed to handle any HTTP downloads that Yum does. This option can take the following values:\n - `all` means all HTTP downloads should be cached\n - `packages` means only RPM package downloads should be cached, but not repository metadata downloads\n - `none` means no HTTP downloads should be cached.\n\nThe default value of `all` is recommended unless you are experiencing caching related issues."
99
99
 
100
100
  property :include_config, String,
101
101
  description: "An external configuration file using the format `url://to/some/location`."
@@ -114,25 +114,25 @@ class Chef
114
114
  description: "Number of times any attempt to retrieve a file should retry before returning an error. Setting this to `0` makes Yum try forever."
115
115
 
116
116
  property :metadata_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/, /never/],
117
- description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
118
- validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
117
+ description: "Time (in seconds) after which the metadata will expire. If the current metadata downloaded is less than the value specified, then Yum will not update the metadata against the repository. If you find that Yum is not downloading information on updates as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively. The default is six hours to compliment yum-updates running once per hour. It is also possible to use the word `never`, meaning that the metadata will never expire. Note: When using a metalink file, the metalink must always be newer than the metadata for the repository due to the validation, so this timeout also applies to the metalink file.",
118
+ validation_message: "The metadata_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
119
119
 
120
120
  property :metalink, String,
121
121
  description: "Specifies a URL to a metalink file for the repomd.xml, a list of mirrors for the entire repository are generated by converting the mirrors for the repomd.xml file to a baseurl."
122
122
 
123
123
  property :mirror_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
124
- description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively.",
125
- validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
124
+ description: "Time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than this many seconds old then Yum will not download another copy of the mirrorlist, it has the same extra format as metadata_expire. If you find that Yum is not downloading the mirrorlists as often as you would like lower the value of this option. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
125
+ validation_message: "The mirror_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
126
126
 
127
127
  property :mirrorlist_expire, String, regex: [/^\d+$/, /^\d+[mhd]$/],
128
- description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a 'd', 'h' or 'm' respectively.",
129
- validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with 'd', 'h', or 'm'!"
128
+ description: "Specifies the time (in seconds) after which the mirrorlist locally cached will expire. If the current mirrorlist is less than the value specified, then Yum will not download another copy of the mirrorlist. You can also change from the default of using seconds to using days, hours or minutes by appending a `d`, `h` or `m` respectively.",
129
+ validation_message: "The mirrorlist_expire property must be a numeric value for time in seconds, the string 'never', or a numeric value appended with with `d`, `h`, or `m`!"
130
130
 
131
131
  property :mirrorlist, String,
132
132
  description: "URL to a file containing a list of baseurls. This can be used instead of or with the baseurl option. Substitution variables, described below, can be used with this option."
133
133
 
134
134
  property :mode, [String, Integer],
135
- description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to '600', normal users will not be able to use Yum search, Yum info, etc.",
135
+ description: "Permissions mode of .repo file on disk. This is useful for scenarios where secrets are in the repo file. If this value is set to `600`, normal users will not be able to use Yum search, Yum info, etc.",
136
136
  default: "0644"
137
137
 
138
138
  property :options, Hash,
@@ -142,7 +142,7 @@ class Chef
142
142
  description: "Password to use with the username for basic authentication."
143
143
 
144
144
  property :priority, String, regex: /^(\d?[1-9]|[0-9][0-9])$/,
145
- description: "Assigns a priority to a repository where the priority value is between '1' and '99' inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
145
+ description: "Assigns a priority to a repository where the priority value is between `1` and `99` inclusive. Priorities are used to enforce ordered protection of repositories. Packages from repositories with a lower priority (higher numerical value) will never be used to upgrade packages that were installed from a repository with a higher priority (lower numerical value). The repositories with the lowest numerical priority number have the highest priority.",
146
146
  validation_message: "The priority property must be a numeric value from 1-99!"
147
147
 
148
148
  property :proxy_password, String,
@@ -69,8 +69,8 @@ module ResourceInspector
69
69
  dir, name = File.split(path)
70
70
  Chef::Cookbook::FileVendor.fetch_from_disk(path)
71
71
  loader = Chef::CookbookLoader.new(dir)
72
- cookbooks = loader.load_cookbooks
73
- resources = cookbooks[name].files_for(:resources)
72
+ cookbook = loader.load_cookbook(name)
73
+ resources = cookbook.files_for(:resources)
74
74
 
75
75
  resources.each_with_object({}) do |r, res|
76
76
  pth = r["full_path"]
@@ -83,13 +83,14 @@ module ResourceInspector
83
83
  # otherwise, if we have a path then extract all the resources from the cookbook
84
84
  # or else do a list of built in resources
85
85
  #
86
+ # @param arguments [Array, String] One of more paths to a cookbook or a resource file to inspect
86
87
  # @param complete [TrueClass, FalseClass] Whether to show properties defined in the base Resource class
87
88
  # @return [String] JSON formatting of all resources
88
89
  def self.inspect(arguments = [], complete: false)
89
90
  output = if arguments.empty?
90
91
  ObjectSpace.each_object(Class).select { |k| k < Chef::Resource }.each_with_object({}) { |klass, acc| acc[klass.resource_name] = extract_resource(klass) }
91
92
  else
92
- arguments.each_with_object({}) do |arg, acc|
93
+ Array(arguments).each_with_object({}) do |arg, acc|
93
94
  if File.directory?(arg)
94
95
  extract_cookbook(arg, complete).each { |k, v| acc[k] = v }
95
96
  else
@@ -38,9 +38,9 @@ require_relative "resource/chocolatey_config"
38
38
  require_relative "resource/chocolatey_feature"
39
39
  require_relative "resource/chocolatey_package"
40
40
  require_relative "resource/chocolatey_source"
41
- require_relative "resource/cron"
41
+ require_relative "resource/cron/cron"
42
42
  require_relative "resource/cron_access"
43
- require_relative "resource/cron_d"
43
+ require_relative "resource/cron/cron_d"
44
44
  require_relative "resource/csh"
45
45
  require_relative "resource/directory"
46
46
  require_relative "resource/dmg_package"
@@ -60,6 +60,7 @@ require_relative "resource/hostname"
60
60
  require_relative "resource/homebrew_cask"
61
61
  require_relative "resource/homebrew_package"
62
62
  require_relative "resource/homebrew_tap"
63
+ require_relative "resource/homebrew_update"
63
64
  require_relative "resource/ifconfig"
64
65
  require_relative "resource/kernel_module"
65
66
  require_relative "resource/ksh"
@@ -141,6 +142,7 @@ require_relative "resource/cab_package"
141
142
  require_relative "resource/powershell_package"
142
143
  require_relative "resource/msu_package"
143
144
  require_relative "resource/windows_ad_join"
145
+ require_relative "resource/windows_audit_policy"
144
146
  require_relative "resource/windows_auto_run"
145
147
  require_relative "resource/windows_certificate"
146
148
  require_relative "resource/windows_dfs_folder"
@@ -101,7 +101,7 @@ class Chef
101
101
  @events.library_load_start(count_files_by_segment(:libraries))
102
102
  cookbook_order.each do |cookbook|
103
103
  eager_load_libraries = cookbook_collection[cookbook].metadata.eager_load_libraries
104
- if eager_load_libraries == true # actully true, not truthy
104
+ if eager_load_libraries == true # actually true, not truthy
105
105
  load_libraries_from_cookbook(cookbook)
106
106
  else
107
107
  $LOAD_PATH.unshift File.expand_path("libraries", cookbook_collection[cookbook].root_dir)
@@ -105,7 +105,7 @@ class Chef
105
105
  private
106
106
 
107
107
  def fuzzify_node_query(query)
108
- if query !~ /:/
108
+ if !/:/.match?(query)
109
109
  "tags:*#{query}* OR roles:*#{query}* OR fqdn:*#{query}* OR addresses:*#{query}* OR policy_name:*#{query}* OR policy_group:*#{query}*"
110
110
  else
111
111
  query
@@ -37,7 +37,7 @@ module Shell
37
37
  module ObjectCoreExtensions
38
38
 
39
39
  def ensure_session_select_defined
40
- # irb breaks if you prematurely define IRB::JobMangager
40
+ # irb breaks if you prematurely define IRB::JobManager
41
41
  # so these methods need to be defined at the latest possible time.
42
42
  unless jobs.respond_to?(:select_session_by_context)
43
43
  def jobs.select_session_by_context(&block) # rubocop:disable Lint/NestedMethodDefinition
@@ -136,7 +136,7 @@ class Chef
136
136
  return "(file sizes exceed #{diff_filesize_threshold} bytes, diff output suppressed)"
137
137
  end
138
138
 
139
- # MacOSX(BSD?) diff will *sometimes* happily spit out nasty binary diffs
139
+ # macOS(BSD?) diff will *sometimes* happily spit out nasty binary diffs
140
140
  return "(current file is binary, diff output suppressed)" if is_binary?(old_file)
141
141
  return "(new content is binary, diff output suppressed)" if is_binary?(new_file)
142
142
 
@@ -171,7 +171,7 @@ class Chef
171
171
  begin
172
172
  return buff !~ /\A[\s[:print:]]*\z/m
173
173
  rescue ArgumentError => e
174
- return true if e.message =~ /invalid byte sequence/
174
+ return true if /invalid byte sequence/.match?(e.message)
175
175
 
176
176
  raise
177
177
  end
@@ -160,9 +160,9 @@ class Chef
160
160
 
161
161
  def self.parse_line(line)
162
162
  if match = line.match(/^.*?:.*?:\s*LCM:\s*\[(.*?)\](.*)/)
163
- # If the line looks like
164
- # What If: [machinename]: LCM: [op_action op_type] message
165
- # extract op_action, op_type, and message
163
+ # If the line looks like
164
+ # What If: [machinename]: LCM: [op_action op_type] message
165
+ # extract op_action, op_type, and message
166
166
  operation, info = match.captures
167
167
  op_action, op_type = operation.strip.split(" ").map { |m| m.downcase.to_sym }
168
168
  else
@@ -100,7 +100,7 @@ class Chef::Util::Windows::NetUser < Chef::Util::Windows
100
100
  rescue Chef::Exceptions::Win32APIError => e
101
101
  Chef::Log.trace(e)
102
102
  # we're only interested in the incorrect password failures
103
- if e.to_s =~ /System Error Code: 1326/
103
+ if /System Error Code: 1326/.match?(e.to_s)
104
104
  return false
105
105
  end
106
106
 
@@ -25,7 +25,7 @@ class Chef::Util::Windows::Volume < Chef::Util::Windows
25
25
  attr_reader :mount_point
26
26
 
27
27
  def initialize(name)
28
- name += "\\" unless name =~ /\\$/ # trailing slash required
28
+ name += "\\" unless /\\$/.match?(name) # trailing slash required
29
29
  @mount_point = name
30
30
  end
31
31
 
@@ -23,7 +23,7 @@ require_relative "version_string"
23
23
 
24
24
  class Chef
25
25
  CHEF_ROOT = File.expand_path("../..", __FILE__)
26
- VERSION = Chef::VersionString.new("16.0.275")
26
+ VERSION = Chef::VersionString.new("16.2.50")
27
27
  end
28
28
 
29
29
  #
@@ -94,7 +94,7 @@ class Chef
94
94
  host.typedef :ulong, :HMENU # (L) Handle to a menu. http://msdn.microsoft.com/en-us/library/ms646977%28VS.85%29.aspx
95
95
  host.typedef :ulong, :HMETAFILE # (L) Handle to a metafile. http://msdn.microsoft.com/en-us/library/dd145051%28VS.85%29.aspx
96
96
  host.typedef :ulong, :HMODULE # (L) Handle to an instance. Same as HINSTANCE today, but was different in 16-bit Windows.
97
- host.typedef :ulong, :HMONITOR # (L) Рandle to a display monitor. WinDef.h: if(WINVER >= 0x0500) host.typedef HANDLE HMONITOR;
97
+ host.typedef :ulong, :HMONITOR # (L) Handle to a display monitor. WinDef.h: if(WINVER >= 0x0500) host.typedef HANDLE HMONITOR;
98
98
  host.typedef :ulong, :HPALETTE # (L) Handle to a palette.
99
99
  host.typedef :ulong, :HPEN # (L) Handle to a pen. http://msdn.microsoft.com/en-us/library/dd162786%28VS.85%29.aspx
100
100
  host.typedef :long, :HRESULT # Return code used by COM interfaces. For more info, Structure of the COM Error Codes.
@@ -115,7 +115,7 @@ class Chef
115
115
  host.typedef :uint32, :LCID # Locale identifier. For more information, see Locales.
116
116
  host.typedef :uint32, :LCTYPE # Locale information type. For a list, see Locale Information Constants.
117
117
  host.typedef :uint32, :LGRPID # Language group identifier. For a list, see EnumLanguageGroupLocales.
118
- host.typedef :pointer, :LMSTR # Pointer to null termiated string of unicode characters
118
+ host.typedef :pointer, :LMSTR # Pointer to null terminated string of unicode characters
119
119
  host.typedef :long, :LONG # 32-bit signed integer. The range is -2,147,483,648 through +...647 decimal.
120
120
  host.typedef :int32, :LONG32 # 32-bit signed integer. The range is -2,147,483,648 through +...647 decimal.
121
121
  host.typedef :int64, :LONG64 # 64-bit signed integer. The range is –9,223,372,036,854,775,808 through +...807
@@ -64,7 +64,7 @@ class Chef
64
64
  ERROR_SHARING_VIOLATION = 32
65
65
  ERROR_LOCK_VIOLATION = 33
66
66
  ERROR_WRONG_DISK = 34
67
- ERROR_FCB_UNAVAILABLE = 35 # gets returned for some unsuccessful DeviceIoControl calls
67
+ ERROR_FCB_UNAVAILABLE = 35 # gets returned for some unsuccessful DeviceIoControl calls
68
68
  ERROR_SHARING_BUFFER_EXCEEDED = 36
69
69
  ERROR_HANDLE_EOF = 38
70
70
  ERROR_HANDLE_DISK_FULL = 39
@@ -90,6 +90,7 @@ class Chef
90
90
  ERROR_TOO_MANY_NAMES = 68
91
91
  ERROR_TOO_MANY_SESS = 69
92
92
  ERROR_SHARING_PAUSED = 70
93
+ # cspell:disable-next-line
93
94
  ERROR_REQ_NOT_ACCEP = 71
94
95
  ERROR_REDIR_PAUSED = 72
95
96
 
@@ -876,6 +877,7 @@ class Chef
876
877
 
877
878
  # Flags for LoadLibraryEx
878
879
 
880
+ # cspell:disable-next-line
879
881
  DONT_RESOLVE_DLL_REFERENCES = 0x00000001
880
882
  LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x00000010
881
883
  LOAD_LIBRARY_AS_DATAFILE = 0x00000002
@@ -461,22 +461,22 @@ BOOL WINAPI DeviceIoControl(
461
461
  =end
462
462
  safe_attach_function :DeviceIoControl, %i{HANDLE DWORD LPVOID DWORD LPVOID DWORD LPDWORD pointer}, :BOOL
463
463
 
464
- # BOOL WINAPI DeleteVolumeMountPoint(
465
- # _In_ LPCTSTR lpszVolumeMountPoint
466
- # );
464
+ # BOOL WINAPI DeleteVolumeMountPoint(
465
+ # _In_ LPCTSTR lpszVolumeMountPoint
466
+ # );
467
467
  safe_attach_function :DeleteVolumeMountPointW, [:LPCTSTR], :BOOL
468
468
 
469
- # BOOL WINAPI SetVolumeMountPoint(
470
- # _In_ LPCTSTR lpszVolumeMountPoint,
471
- # _In_ LPCTSTR lpszVolumeName
472
- # );
469
+ # BOOL WINAPI SetVolumeMountPoint(
470
+ # _In_ LPCTSTR lpszVolumeMountPoint,
471
+ # _In_ LPCTSTR lpszVolumeName
472
+ # );
473
473
  safe_attach_function :SetVolumeMountPointW, %i{LPCTSTR LPCTSTR}, :BOOL
474
474
 
475
- # BOOL WINAPI GetVolumeNameForVolumeMountPoint(
476
- # _In_ LPCTSTR lpszVolumeMountPoint,
477
- # _Out_ LPTSTR lpszVolumeName,
478
- # _In_ DWORD cchBufferLength
479
- # );
475
+ # BOOL WINAPI GetVolumeNameForVolumeMountPoint(
476
+ # _In_ LPCTSTR lpszVolumeMountPoint,
477
+ # _Out_ LPTSTR lpszVolumeName,
478
+ # _In_ DWORD cchBufferLength
479
+ # );
480
480
  safe_attach_function :GetVolumeNameForVolumeMountPointW, %i{LPCTSTR LPTSTR DWORD}, :BOOL
481
481
 
482
482
  =begin
@@ -538,12 +538,12 @@ BOOL WINAPI VerQueryValue(
538
538
  # ensures the handle is closed on exit of the block
539
539
  # FIXME: yard with @yield
540
540
  def file_search_handle(path)
541
- # Workaround for CHEF-4419:
542
- # Make sure paths starting with "/" has a drive letter
543
- # assigned from the current working diretory.
544
- # Note: With CHEF-4427 this issue will be fixed with a
545
- # broader fix to map all the paths starting with "/" to
546
- # SYSTEM_DRIVE on windows.
541
+ # Workaround for CHEF-4419:
542
+ # Make sure paths starting with "/" has a drive letter
543
+ # assigned from the current working directory.
544
+ # Note: With CHEF-4427 this issue will be fixed with a
545
+ # broader fix to map all the paths starting with "/" to
546
+ # SYSTEM_DRIVE on windows.
547
547
  path = ::File.expand_path(path) if path.start_with? "/"
548
548
  path = canonical_encode_path(path)
549
549
  find_data = WIN32_FIND_DATA.new
@@ -39,6 +39,7 @@ class Chef
39
39
  UF_ACCOUNTDISABLE = 0x000002
40
40
  UF_PASSWD_CANT_CHANGE = 0x000040
41
41
  UF_NORMAL_ACCOUNT = 0x000200
42
+ # cspell:disable-next-line
42
43
  UF_DONT_EXPIRE_PASSWD = 0x010000
43
44
 
44
45
  USE_NOFORCE = 0
@@ -123,7 +123,7 @@ class Chef
123
123
 
124
124
  # Return the link destination (strip off \??\ at the beginning, which is a local filesystem thing)
125
125
  link_dest = reparse_buffer.reparse_buffer.substitute_name
126
- if link_dest =~ /^\\\?\?\\/
126
+ if /^\\\?\?\\/.match?(link_dest)
127
127
  link_dest = link_dest[4..-1]
128
128
  end
129
129
  link_dest
@@ -95,7 +95,7 @@ if other threads attempt to acquire the mutex.")
95
95
  @handle = OpenMutexW(SYNCHRONIZE, true, name.to_wstring)
96
96
 
97
97
  if @handle == 0
98
- # Mutext doesn't exist so create one.
98
+ # Mutex doesn't exist so create one.
99
99
  # In the initial creation of the mutex initial_owner is set to
100
100
  # false so that mutex will not be acquired until someone calls
101
101
  # acquire.
@@ -40,6 +40,7 @@ class Chef
40
40
  usri3_priv: 0,
41
41
  usri3_home_dir: nil,
42
42
  usri3_comment: nil,
43
+ # cspell:disable-next-line
43
44
  usri3_flags: UF_SCRIPT | UF_DONT_EXPIRE_PASSWD | UF_NORMAL_ACCOUNT,
44
45
  usri3_script_path: nil,
45
46
  usri3_auth_flags: 0,
@@ -82,8 +82,8 @@ class Chef
82
82
  (call_succeeded != 0) && (is_64_bit_process_result.get_int(0) != 0)
83
83
  end
84
84
 
85
- # Must have PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION rights,
86
- # AND the PROCESS_VM_READ right
85
+ # Must have PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION rights,
86
+ # AND the PROCESS_VM_READ right
87
87
  def self.get_process_memory_info(handle)
88
88
  memory_info = PROCESS_MEMORY_COUNTERS.new
89
89
  unless GetProcessMemoryInfo(handle.handle, memory_info, memory_info.size)
@@ -20,7 +20,7 @@ require_relative "../reserved_names"
20
20
  require_relative "api"
21
21
  require_relative "../mixin/wide_string"
22
22
 
23
- if RUBY_PLATFORM =~ /mswin|mingw32|windows/
23
+ if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
24
24
  require_relative "../monkey_patches/win32/registry"
25
25
  require_relative "api/registry"
26
26
  require "win32/registry" unless defined?(Win32::Registry)
@@ -31,7 +31,7 @@ class Chef
31
31
  class Win32
32
32
  class Registry
33
33
 
34
- if RUBY_PLATFORM =~ /mswin|mingw32|windows/
34
+ if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
35
35
  include Chef::ReservedNames::Win32::API::Registry
36
36
  extend Chef::ReservedNames::Win32::API::Registry
37
37
  end
@@ -694,7 +694,7 @@ class Chef
694
694
  begin
695
695
  process_token = open_current_process_token(TOKEN_READ)
696
696
  rescue Exception => run_error
697
- return false if run_error.message =~ /Access is denied/
697
+ return false if /Access is denied/.match?(run_error.message)
698
698
 
699
699
  Chef::ReservedNames::Win32::Error.raise!
700
700
  end
@@ -261,7 +261,7 @@ class Chef
261
261
 
262
262
  SYSTEM_USER = SERVICE_ACCOUNT_USERS + BUILT_IN_GROUPS
263
263
 
264
- # Сheck if the user belongs to service accounts category
264
+ # Check if the user belongs to service accounts category
265
265
  #
266
266
  # @return [Boolean] True or False
267
267
  #
@@ -269,7 +269,7 @@ class Chef
269
269
  SERVICE_ACCOUNT_USERS.include?(user.to_s.upcase)
270
270
  end
271
271
 
272
- # Сheck if the user is in builtin system group
272
+ # Check if the user is in builtin system group
273
273
  #
274
274
  # @return [Boolean] True or False
275
275
  #
@@ -277,7 +277,7 @@ class Chef
277
277
  BUILT_IN_GROUPS.include?(user.to_s.upcase)
278
278
  end
279
279
 
280
- # Сheck if the user belongs to system users category
280
+ # Check if the user belongs to system users category
281
281
  #
282
282
  # @return [Boolean] True or False
283
283
  #
@@ -325,7 +325,7 @@ class Chef
325
325
  Array.new(entriesread.read_long) do |i|
326
326
  user_info = USER_INFO_3.new(bufptr.read_pointer + i * USER_INFO_3.size)
327
327
  # Check if the account is the Administrator account
328
- # RID for the Administrator account is always 500 and it's privilage is set to USER_PRIV_ADMIN
328
+ # RID for the Administrator account is always 500 and it's privilege is set to USER_PRIV_ADMIN
329
329
  if user_info[:usri3_user_id] == 500 && user_info[:usri3_priv] == 2 # USER_PRIV_ADMIN (2) - Administrator
330
330
  admin_account_name = user_info[:usri3_name].read_wstring
331
331
  break
@@ -4,7 +4,7 @@ def without_deprecation_warnings(&block)
4
4
  old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
5
5
  Chef::Config[:treat_deprecation_warnings_as_errors] = false
6
6
  begin
7
- block.call
7
+ yield
8
8
  ensure
9
9
  Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
10
10
  end
@@ -2,7 +2,7 @@ def without_deprecation_warnings(&block)
2
2
  old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
3
3
  Chef::Config[:treat_deprecation_warnings_as_errors] = false
4
4
  begin
5
- block.call
5
+ yield
6
6
  ensure
7
7
  Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
8
8
  end
@@ -7,7 +7,7 @@ def without_deprecation_warnings(&block)
7
7
  old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
8
8
  Chef::Config[:treat_deprecation_warnings_as_errors] = false
9
9
  begin
10
- block.call
10
+ yield
11
11
  ensure
12
12
  Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
13
13
  end
@@ -80,6 +80,16 @@ describe Chef::Resource::Cron, :requires_root, :unix_only do
80
80
  5.times { new_resource.run_action(:create) }
81
81
  cron_should_exists(new_resource.name, new_resource.command)
82
82
  end
83
+
84
+ # Test cron for day of week
85
+ weekdays = { Mon: 1, tuesday: 2, '3': 3, 'thursday': 4, 'Fri': 5, 6 => 6 }
86
+ weekdays.each do |key, value|
87
+ it "should create crontab entry and set #{value} for #{key} as weekday" do
88
+ new_resource.weekday key
89
+ expect { new_resource.run_action(:create) }.not_to raise_error
90
+ cron_should_exists(new_resource.name, new_resource.command)
91
+ end
92
+ end
83
93
  end
84
94
 
85
95
  describe "delete action" do