chef 16.1.16-universal-mingw32 → 16.3.45-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -7
  3. data/README.md +3 -3
  4. data/Rakefile +3 -16
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +7 -6
  7. data/lib/chef/application.rb +12 -0
  8. data/lib/chef/application/apply.rb +2 -1
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/windows_service_manager.rb +1 -1
  12. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  13. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  18. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +1 -1
  21. data/lib/chef/client.rb +3 -3
  22. data/lib/chef/cookbook/chefignore.rb +1 -1
  23. data/lib/chef/cookbook/metadata.rb +1 -1
  24. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  25. data/lib/chef/cookbook/syntax_check.rb +1 -2
  26. data/lib/chef/cookbook_loader.rb +15 -29
  27. data/lib/chef/cookbook_version.rb +2 -2
  28. data/lib/chef/data_bag.rb +5 -6
  29. data/lib/chef/deprecated.rb +12 -0
  30. data/lib/chef/digester.rb +3 -2
  31. data/lib/chef/dsl/platform_introspection.rb +2 -0
  32. data/lib/chef/environment.rb +1 -2
  33. data/lib/chef/exceptions.rb +3 -0
  34. data/lib/chef/file_access_control.rb +1 -1
  35. data/lib/chef/file_access_control/windows.rb +2 -2
  36. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  37. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  38. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  39. data/lib/chef/handler.rb +2 -0
  40. data/lib/chef/http.rb +27 -13
  41. data/lib/chef/http/authenticator.rb +3 -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/knife.rb +5 -5
  46. data/lib/chef/knife/bootstrap.rb +19 -19
  47. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  48. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  49. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  50. data/lib/chef/knife/config_get.rb +2 -1
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/config_use_profile.rb +15 -5
  53. data/lib/chef/knife/configure.rb +1 -1
  54. data/lib/chef/knife/cookbook_delete.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +6 -14
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  58. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +1 -0
  60. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  61. data/lib/chef/knife/core/ui.rb +8 -2
  62. data/lib/chef/knife/core/windows_bootstrap_context.rb +2 -3
  63. data/lib/chef/knife/data_bag_create.rb +1 -1
  64. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  65. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  66. data/lib/chef/knife/rehash.rb +3 -21
  67. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  68. data/lib/chef/knife/ssh.rb +6 -2
  69. data/lib/chef/knife/supermarket_share.rb +1 -1
  70. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  71. data/lib/chef/log.rb +8 -3
  72. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +27 -5
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/securable.rb +2 -2
  77. data/lib/chef/mixin/shell_out.rb +4 -188
  78. data/lib/chef/mixin/template.rb +1 -0
  79. data/lib/chef/mixin/which.rb +6 -3
  80. data/lib/chef/mixins.rb +1 -0
  81. data/lib/chef/node.rb +36 -12
  82. data/lib/chef/node_map.rb +21 -18
  83. data/lib/chef/platform/service_helpers.rb +31 -28
  84. data/lib/chef/powershell.rb +1 -1
  85. data/lib/chef/provider/batch.rb +3 -10
  86. data/lib/chef/provider/cron.rb +2 -14
  87. data/lib/chef/provider/execute.rb +2 -1
  88. data/lib/chef/provider/git.rb +12 -4
  89. data/lib/chef/provider/group/dscl.rb +2 -2
  90. data/lib/chef/provider/group/windows.rb +1 -1
  91. data/lib/chef/provider/ifconfig.rb +7 -7
  92. data/lib/chef/provider/mount/aix.rb +1 -1
  93. data/lib/chef/provider/mount/solaris.rb +0 -1
  94. data/lib/chef/provider/mount/windows.rb +2 -2
  95. data/lib/chef/provider/noop.rb +1 -1
  96. data/lib/chef/provider/package/openbsd.rb +1 -1
  97. data/lib/chef/provider/package/portage.rb +2 -2
  98. data/lib/chef/provider/package/powershell.rb +6 -2
  99. data/lib/chef/provider/package/rubygems.rb +2 -2
  100. data/lib/chef/provider/package/snap.rb +97 -29
  101. data/lib/chef/provider/package/windows.rb +9 -4
  102. data/lib/chef/provider/package/windows/msi.rb +3 -3
  103. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  104. data/lib/chef/provider/package/zypper.rb +0 -1
  105. data/lib/chef/provider/powershell_script.rb +10 -14
  106. data/lib/chef/provider/remote_file/http.rb +4 -1
  107. data/lib/chef/provider/script.rb +4 -75
  108. data/lib/chef/provider/service.rb +2 -2
  109. data/lib/chef/provider/service/arch.rb +1 -1
  110. data/lib/chef/provider/service/debian.rb +2 -2
  111. data/lib/chef/provider/service/openbsd.rb +4 -4
  112. data/lib/chef/provider/service/redhat.rb +1 -1
  113. data/lib/chef/provider/service/windows.rb +1 -1
  114. data/lib/chef/provider/subversion.rb +2 -2
  115. data/lib/chef/provider/user/dscl.rb +4 -4
  116. data/lib/chef/provider/user/linux.rb +3 -3
  117. data/lib/chef/provider/user/mac.rb +5 -5
  118. data/lib/chef/provider/windows_script.rb +87 -25
  119. data/lib/chef/provider/yum_repository.rb +1 -1
  120. data/lib/chef/provider/zypper_repository.rb +31 -11
  121. data/lib/chef/resource.rb +24 -11
  122. data/lib/chef/resource/alternatives.rb +1 -1
  123. data/lib/chef/resource/apt_package.rb +1 -1
  124. data/lib/chef/resource/archive_file.rb +28 -8
  125. data/lib/chef/resource/bash.rb +0 -1
  126. data/lib/chef/resource/batch.rb +4 -2
  127. data/lib/chef/resource/build_essential.rb +2 -2
  128. data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
  129. data/lib/chef/resource/chef_gem.rb +57 -21
  130. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  131. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  132. data/lib/chef/resource/cron/cron.rb +46 -0
  133. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  134. data/lib/chef/resource/cron_access.rb +13 -5
  135. data/lib/chef/resource/csh.rb +0 -1
  136. data/lib/chef/resource/dmg_package.rb +2 -2
  137. data/lib/chef/resource/execute.rb +479 -9
  138. data/lib/chef/resource/file.rb +1 -1
  139. data/lib/chef/resource/freebsd_package.rb +1 -1
  140. data/lib/chef/resource/gem_package.rb +35 -2
  141. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  142. data/lib/chef/resource/homebrew_package.rb +30 -1
  143. data/lib/chef/resource/homebrew_update.rb +107 -0
  144. data/lib/chef/resource/hostname.rb +23 -36
  145. data/lib/chef/resource/kernel_module.rb +14 -1
  146. data/lib/chef/resource/launchd.rb +1 -1
  147. data/lib/chef/resource/lwrp_base.rb +1 -0
  148. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  149. data/lib/chef/resource/mount.rb +1 -1
  150. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  151. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  152. data/lib/chef/resource/perl.rb +0 -1
  153. data/lib/chef/resource/plist.rb +23 -4
  154. data/lib/chef/resource/powershell_script.rb +4 -2
  155. data/lib/chef/resource/python.rb +0 -1
  156. data/lib/chef/resource/remote_file.rb +26 -10
  157. data/lib/chef/resource/ruby.rb +0 -1
  158. data/lib/chef/resource/service.rb +2 -2
  159. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  160. data/lib/chef/resource/sudo.rb +30 -3
  161. data/lib/chef/resource/swap_file.rb +17 -0
  162. data/lib/chef/resource/template.rb +1 -1
  163. data/lib/chef/resource/timezone.rb +15 -0
  164. data/lib/chef/resource/user_ulimit.rb +1 -1
  165. data/lib/chef/resource/windows_ad_join.rb +30 -1
  166. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  167. data/lib/chef/resource/windows_auto_run.rb +11 -0
  168. data/lib/chef/resource/windows_certificate.rb +26 -0
  169. data/lib/chef/resource/windows_dns_record.rb +17 -0
  170. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  171. data/lib/chef/resource/windows_font.rb +3 -3
  172. data/lib/chef/resource/windows_package.rb +1 -1
  173. data/lib/chef/resource/windows_pagefile.rb +1 -1
  174. data/lib/chef/resource/windows_script.rb +2 -16
  175. data/lib/chef/resource/windows_security_policy.rb +67 -36
  176. data/lib/chef/resource/windows_shortcut.rb +1 -2
  177. data/lib/chef/resource/windows_task.rb +4 -4
  178. data/lib/chef/resource/windows_user_privilege.rb +30 -7
  179. data/lib/chef/resource/yum_repository.rb +9 -9
  180. data/lib/chef/resource_inspector.rb +7 -1
  181. data/lib/chef/resources.rb +5 -2
  182. data/lib/chef/role.rb +1 -2
  183. data/lib/chef/search/query.rb +1 -1
  184. data/lib/chef/server_api_versions.rb +4 -0
  185. data/lib/chef/shell/shell_session.rb +2 -0
  186. data/lib/chef/util/diff.rb +2 -3
  187. data/lib/chef/util/windows/net_user.rb +1 -1
  188. data/lib/chef/util/windows/volume.rb +1 -1
  189. data/lib/chef/version.rb +2 -2
  190. data/lib/chef/win32/file.rb +1 -1
  191. data/lib/chef/win32/registry.rb +3 -4
  192. data/lib/chef/win32/security.rb +1 -1
  193. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  194. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  195. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  196. data/spec/functional/knife/configure_spec.rb +1 -1
  197. data/spec/functional/knife/ssh_spec.rb +5 -16
  198. data/spec/functional/resource/aix_service_spec.rb +9 -2
  199. data/spec/functional/resource/aixinit_service_spec.rb +1 -2
  200. data/spec/functional/resource/apt_package_spec.rb +0 -1
  201. data/spec/functional/resource/bash_spec.rb +3 -2
  202. data/spec/functional/resource/bff_spec.rb +1 -1
  203. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  204. data/spec/functional/resource/cron_spec.rb +20 -2
  205. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  206. data/spec/functional/resource/execute_spec.rb +1 -1
  207. data/spec/functional/resource/git_spec.rb +23 -1
  208. data/spec/functional/resource/group_spec.rb +15 -3
  209. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  210. data/spec/functional/resource/insserv_spec.rb +3 -3
  211. data/spec/functional/resource/link_spec.rb +2 -5
  212. data/spec/functional/resource/mount_spec.rb +9 -1
  213. data/spec/functional/resource/msu_package_spec.rb +9 -3
  214. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  215. data/spec/functional/resource/remote_file_spec.rb +9 -15
  216. data/spec/functional/resource/rpm_spec.rb +1 -1
  217. data/spec/functional/resource/timezone_spec.rb +2 -0
  218. data/spec/functional/resource/windows_package_spec.rb +0 -1
  219. data/spec/functional/resource/windows_path_spec.rb +4 -0
  220. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  221. data/spec/functional/resource/windows_service_spec.rb +4 -0
  222. data/spec/functional/resource/windows_task_spec.rb +12 -11
  223. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  224. data/spec/functional/resource/yum_package_spec.rb +4 -1
  225. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  226. data/spec/functional/run_lock_spec.rb +2 -1
  227. data/spec/functional/shell_spec.rb +5 -6
  228. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  229. data/spec/functional/version_spec.rb +1 -1
  230. data/spec/functional/win32/crypto_spec.rb +1 -1
  231. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  232. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  233. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  234. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  235. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  236. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  237. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  238. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  239. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  240. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  241. data/spec/integration/recipes/notifies_spec.rb +1 -1
  242. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  243. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  244. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  245. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  246. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  247. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  248. data/spec/scripts/ssl-serve.rb +1 -1
  249. data/spec/spec_helper.rb +10 -4
  250. data/spec/support/chef_helpers.rb +1 -20
  251. data/spec/support/platform_helpers.rb +1 -3
  252. data/spec/support/platforms/win32/spec_service.rb +1 -1
  253. data/spec/support/shared/functional/execute_resource.rb +1 -1
  254. data/spec/support/shared/functional/file_resource.rb +0 -1
  255. data/spec/support/shared/functional/securable_resource.rb +1 -2
  256. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  257. data/spec/support/shared/functional/windows_script.rb +2 -2
  258. data/spec/support/shared/integration/knife_support.rb +2 -9
  259. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  260. data/spec/support/shared/unit/execute_resource.rb +1 -1
  261. data/spec/support/shared/unit/provider/file.rb +12 -8
  262. data/spec/unit/application/solo_spec.rb +4 -2
  263. data/spec/unit/application_spec.rb +11 -2
  264. data/spec/unit/chef_fs/config_spec.rb +2 -2
  265. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  266. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  267. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  268. data/spec/unit/client_spec.rb +4 -1
  269. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  270. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  271. data/spec/unit/data_bag_spec.rb +6 -3
  272. data/spec/unit/data_collector_spec.rb +1 -1
  273. data/spec/unit/decorator_spec.rb +23 -23
  274. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  275. data/spec/unit/environment_spec.rb +5 -1
  276. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  277. data/spec/unit/guard_interpreter_spec.rb +1 -1
  278. data/spec/unit/http/api_versions_spec.rb +20 -2
  279. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  280. data/spec/unit/json_compat_spec.rb +1 -1
  281. data/spec/unit/knife/bootstrap_spec.rb +5 -8
  282. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  283. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  284. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  285. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  286. data/spec/unit/log/syslog_spec.rb +6 -10
  287. data/spec/unit/log/winevt_spec.rb +21 -13
  288. data/spec/unit/lwrp_spec.rb +9 -6
  289. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  290. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  291. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  292. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  293. data/spec/unit/mixin/securable_spec.rb +0 -1
  294. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  295. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  296. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  297. data/spec/unit/mixin/uris_spec.rb +1 -1
  298. data/spec/unit/mixin/user_context_spec.rb +1 -9
  299. data/spec/unit/mixin/which.rb +8 -0
  300. data/spec/unit/node_spec.rb +98 -11
  301. data/spec/unit/property_spec.rb +6 -6
  302. data/spec/unit/provider/batch_spec.rb +130 -0
  303. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  304. data/spec/unit/provider/cron_spec.rb +9 -49
  305. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  306. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  307. data/spec/unit/provider/execute_spec.rb +1 -8
  308. data/spec/unit/provider/git_spec.rb +3 -3
  309. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  310. data/spec/unit/provider/mdadm_spec.rb +1 -3
  311. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  312. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  313. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  314. data/spec/unit/provider/package/powershell_spec.rb +95 -86
  315. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  316. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  317. data/spec/unit/provider/package/snap_spec.rb +1 -1
  318. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  319. data/spec/unit/provider/package/windows_spec.rb +30 -53
  320. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  321. data/spec/unit/provider/script_spec.rb +20 -110
  322. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  323. data/spec/unit/provider/service/windows_spec.rb +2 -6
  324. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  325. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  326. data/spec/unit/provider/windows_env_spec.rb +5 -4
  327. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  328. data/spec/unit/provider_spec.rb +1 -0
  329. data/spec/unit/resource/archive_file_spec.rb +11 -2
  330. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  331. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  332. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  333. data/spec/unit/resource/cron_spec.rb +2 -2
  334. data/spec/unit/resource/execute_spec.rb +10 -0
  335. data/spec/unit/resource/file/verification_spec.rb +2 -1
  336. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  337. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  338. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  339. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  340. data/spec/unit/resource/timezone_spec.rb +1 -1
  341. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  342. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  343. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  344. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  345. data/spec/unit/resource/windows_package_spec.rb +1 -0
  346. data/spec/unit/resource/windows_task_spec.rb +1 -1
  347. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  348. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  349. data/spec/unit/resource_reporter_spec.rb +1 -1
  350. data/spec/unit/resource_spec.rb +84 -1
  351. data/spec/unit/role_spec.rb +23 -21
  352. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  353. data/spec/unit/run_lock_spec.rb +1 -1
  354. data/spec/unit/scan_access_control_spec.rb +1 -1
  355. data/spec/unit/server_api_spec.rb +43 -16
  356. data/spec/unit/util/backup_spec.rb +1 -1
  357. data/spec/unit/util/diff_spec.rb +1 -15
  358. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  359. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  360. data/spec/unit/util/selinux_spec.rb +2 -1
  361. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  362. data/spec/unit/win32/security_spec.rb +4 -3
  363. metadata +68 -40
  364. data/lib/chef/resource/cron.rb +0 -157
@@ -112,7 +112,8 @@ describe Chef::Resource::File::Verification do
112
112
  end
113
113
 
114
114
  it "returns true if the command succeeds" do
115
- v = Chef::Resource::File::Verification.new(parent_resource, "true", {})
115
+ test_command = platform_specific_verify_command("path")
116
+ v = Chef::Resource::File::Verification.new(parent_resource, test_command, {})
116
117
  expect(v.verify(temp_path)).to eq(true)
117
118
  end
118
119
 
@@ -34,8 +34,12 @@ describe Chef::ResourceHelpers::CronValidations do
34
34
  expect(Chef::ResourceHelpers::CronValidations.validate_dow(8)).to be false
35
35
  end
36
36
 
37
+ it "it accepts the string day with full name" do
38
+ expect(Chef::ResourceHelpers::CronValidations.validate_dow("monday")).to be true
39
+ end
40
+
37
41
  it "returns false for an invalid string" do
38
- expect(Chef::ResourceHelpers::CronValidations.validate_dow("monday")).to be false
42
+ expect(Chef::ResourceHelpers::CronValidations.validate_dow("funday")).to be false
39
43
  end
40
44
  end
41
45
 
@@ -0,0 +1,30 @@
1
+ require "spec_helper"
2
+
3
+ describe Chef::Resource::HomebrewUpdate do
4
+ let(:node) { Chef::Node.new }
5
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
6
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
7
+ let(:resource) { Chef::Resource::HomebrewUpdate.new("update", run_context) }
8
+
9
+ let(:stamp_dir) { Dir.mktmpdir("brew_update_periodic") }
10
+ let(:stamp_file) { Dir.mktmpdir("apt_update_periodic") }
11
+ let(:brew_update_cmd) { %w{homebrew update} }
12
+
13
+ it "sets the default action as :periodic" do
14
+ expect(resource.action).to eql([:periodic])
15
+ end
16
+
17
+ it "supports :periodic, :update actions" do
18
+ expect { resource.action :periodic }.not_to raise_error
19
+ expect { resource.action :update }.not_to raise_error
20
+ end
21
+
22
+ it "default frequency is set to be 1 da1y" do
23
+ expect(resource.frequency).to eql(86_400)
24
+ end
25
+
26
+ it "frequency accepts integers" do
27
+ resource.frequency(400)
28
+ expect(resource.frequency).to eql(400)
29
+ end
30
+ end
@@ -20,16 +20,117 @@ require "spec_helper"
20
20
  describe Chef::Resource::MacosUserDefaults do
21
21
 
22
22
  let(:resource) { Chef::Resource::MacosUserDefaults.new("foo") }
23
+ let(:provider) { resource.provider_for_action(:write) }
23
24
 
24
25
  it "has a resource name of :macos_userdefaults" do
25
- expect(resource.resource_name).to eql(:macos_userdefaults)
26
+ expect(resource.resource_name).to eq(:macos_userdefaults)
27
+ end
28
+
29
+ it "the domain property defaults to NSGlobalDomain" do
30
+ expect(resource.domain).to eq("NSGlobalDomain")
31
+ end
32
+
33
+ it "the value property coerces keys in hashes to strings so we can compare them with plist data" do
34
+ resource.value "User": "/Library/Managed Installs/way_fake.log"
35
+ expect(resource.value).to eq({ "User" => "/Library/Managed Installs/way_fake.log" })
36
+ end
37
+
38
+ it "the host property defaults to nil" do
39
+ expect(resource.host).to be_nil
40
+ end
41
+
42
+ it "the sudo property defaults to false" do
43
+ expect(resource.sudo).to be false
26
44
  end
27
45
 
28
46
  it "sets the default action as :write" do
29
- expect(resource.action).to eql([:write])
47
+ expect(resource.action).to eq([:write])
30
48
  end
31
49
 
32
50
  it "supports :write action" do
33
51
  expect { resource.action :write }.not_to raise_error
34
52
  end
53
+
54
+ describe "#defaults_export_cmd" do
55
+ it "exports NSGlobalDomain if no domain is set" do
56
+ expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "export", "NSGlobalDomain", "-"])
57
+ end
58
+
59
+ it "exports a provided domain" do
60
+ resource.domain "com.tim"
61
+ expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "export", "com.tim", "-"])
62
+ end
63
+
64
+ it "sets -currentHost if host is 'current'" do
65
+ resource.host "current"
66
+ expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "-currentHost", "export", "NSGlobalDomain", "-"])
67
+ end
68
+
69
+ it "sets -host 'tim-laptop if host is 'tim-laptop'" do
70
+ resource.host "tim-laptop"
71
+ expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "-host", "tim-laptop", "export", "NSGlobalDomain", "-"])
72
+ end
73
+ end
74
+
75
+ describe "#defaults_modify_cmd" do
76
+ # avoid needing to set these required values over and over. We'll overwrite them where necessary
77
+ before do
78
+ resource.key = "foo"
79
+ resource.value = "bar"
80
+ end
81
+
82
+ it "writes to NSGlobalDomain if domain isn't specified" do
83
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-string", "bar"])
84
+ end
85
+
86
+ it "uses the domain property if set" do
87
+ resource.domain = "MyCustomDomain"
88
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "MyCustomDomain", "foo", "-string", "bar"])
89
+ end
90
+
91
+ it "sets host specific values using host property" do
92
+ resource.host = "tims_laptop"
93
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "-host", "tims_laptop", "write", "NSGlobalDomain", "foo", "-string", "bar"])
94
+ end
95
+
96
+ it "if host is set to :current it passes CurrentHost" do
97
+ resource.host = :current
98
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "-currentHost", "write", "NSGlobalDomain", "foo", "-string", "bar"])
99
+ end
100
+
101
+ it "raises ArgumentError if bool is specified, but the value can't be made into a bool" do
102
+ resource.type "bool"
103
+ expect { provider.defaults_modify_cmd }.to raise_error(ArgumentError)
104
+ end
105
+
106
+ it "autodetects array type and passes individual values" do
107
+ resource.value = %w{one two three}
108
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-array", "one", "two", "three"])
109
+ end
110
+
111
+ it "autodetects string type and passes a single value" do
112
+ resource.value = "one"
113
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-string", "one"])
114
+ end
115
+
116
+ it "autodetects integer type and passes a single value" do
117
+ resource.value = 1
118
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-int", 1])
119
+ end
120
+
121
+ it "autodetects boolean type from TrueClass value and passes a 'TRUE' string" do
122
+ resource.value = true
123
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-bool", "TRUE"])
124
+ end
125
+
126
+ it "autodetects boolean type from FalseClass value and passes a 'FALSE' string" do
127
+ resource.value = false
128
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-bool", "FALSE"])
129
+ end
130
+
131
+ it "autodetects dict type from Hash value and flattens keys & values" do
132
+ resource.value = { "foo" => "bar" }
133
+ expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-dict", "foo", "bar"])
134
+ end
135
+ end
35
136
  end
@@ -136,23 +136,18 @@ describe Chef::Resource::PowershellScript do
136
136
  it_behaves_like "a Windows script resource"
137
137
  end
138
138
 
139
- context "Attribute: flags" do
139
+ describe "#flags" do
140
140
  let(:resource) { @resource }
141
- let(:default) { "FLAGS" }
142
- before(:each) do
143
- allow(@resource).to receive(:default_flags).and_return(default)
144
- end
145
- context "When User input given" do
146
- it "Appands user input after the default flags" do
147
- flags = "USER FLAGS"
148
- resource.flags flags
149
- expect(resource.flags).to eql(default + " " + flags)
150
- end
141
+
142
+ it "appends user's flags to the defaults" do
143
+ flags = %q{-Lunch "tacos"}
144
+ resource.flags = flags
145
+
146
+ expect(resource.flags).to eq("#{resource.default_flags} #{flags}")
151
147
  end
152
- context "When User input is not given" do
153
- it "Uses default flags" do
154
- expect(resource.flags).to eql(default)
155
- end
148
+
149
+ it "uses the defaults when user doesn't provide flags" do
150
+ expect(resource.flags).to eq(resource.default_flags)
156
151
  end
157
152
  end
158
153
  end
@@ -34,6 +34,6 @@ describe Chef::Resource::Timezone do
34
34
 
35
35
  it "supports the :set action only" do
36
36
  expect { resource.action :set }.not_to raise_error
37
- expect { resource.action :unset }.to raise_error
37
+ expect { resource.action :unset }.to raise_error(Chef::Exceptions::ValidationFailed)
38
38
  end
39
39
  end
@@ -0,0 +1,64 @@
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+
20
+ describe Chef::Resource::WindowsAuditPolicy do
21
+ let(:resource) { Chef::Resource::WindowsAuditPolicy.new("fakey_fakerton") }
22
+
23
+ it "sets resource name as :windows_audit_policy" do
24
+ expect(resource.resource_name).to eql(:windows_audit_policy)
25
+ end
26
+
27
+ it "expects crash_on_audit_fail to have a true or false value if entered" do
28
+ expect { resource.crash_on_audit_fail "not_a_true_or_false" }.to raise_error(Chef::Exceptions::ValidationFailed)
29
+ end
30
+
31
+ it "expects full_privilege_auditing to have a true or false value if entered" do
32
+ expect { resource.full_privilege_auditing "not_a_true_or_false" }.to raise_error(Chef::Exceptions::ValidationFailed)
33
+ end
34
+
35
+ it "expects audit_base_objects to have a true or false value if entered" do
36
+ expect { resource.audit_base_objects "not_a_true_or_false" }.to raise_error(Chef::Exceptions::ValidationFailed)
37
+ end
38
+
39
+ it "expects audit_base_directories to have a true or false value if entered" do
40
+ expect { resource.audit_base_directories "not_a_true_or_false" }.to raise_error(Chef::Exceptions::ValidationFailed)
41
+ end
42
+
43
+ it "expects success property to have a true or false value if entered" do
44
+ expect { resource.success "not_a_true_or_false" }.to raise_error(Chef::Exceptions::ValidationFailed)
45
+ end
46
+
47
+ it "expects failure property to have a true or false value if entered" do
48
+ expect { resource.failure "not_a_true_or_false" }.to raise_error(Chef::Exceptions::ValidationFailed)
49
+ end
50
+
51
+ Chef::Resource::WindowsAuditPolicy::WIN_AUDIT_SUBCATEGORIES.each do |val|
52
+ it "the subcategory property accepts :#{val}" do
53
+ expect { resource.subcategory val }.not_to raise_error
54
+ end
55
+ end
56
+
57
+ it "the resource raises an ArgumentError if invalid subcategory property is set" do
58
+ expect { resource.subcategory "Logount" }.to raise_error(ArgumentError)
59
+ end
60
+
61
+ it "sets the default action as :set" do
62
+ expect(resource.action).to eql([:set])
63
+ end
64
+ end
@@ -29,15 +29,15 @@ describe Chef::Resource::WindowsDnsRecord do
29
29
  end
30
30
 
31
31
  it "the record_type property accepts 'CNAME'" do
32
- expect { resource.record_type "CNAME" }.not_to raise_error(ArgumentError)
32
+ expect { resource.record_type "CNAME" }.not_to raise_error
33
33
  end
34
34
 
35
35
  it "the record_type property accepts 'ARecord'" do
36
- expect { resource.record_type "ARecord" }.not_to raise_error(ArgumentError)
36
+ expect { resource.record_type "ARecord" }.not_to raise_error
37
37
  end
38
38
 
39
39
  it "the record_type property accepts 'PTR'" do
40
- expect { resource.record_type "PTR" }.not_to raise_error(ArgumentError)
40
+ expect { resource.record_type "PTR" }.not_to raise_error
41
41
  end
42
42
 
43
43
  it "the resource raises an ArgumentError if invalid record_type is set" do
@@ -29,11 +29,11 @@ describe Chef::Resource::WindowsDnsZone do
29
29
  end
30
30
 
31
31
  it "the server_type property accepts 'Standalone'" do
32
- expect { resource.server_type "Standalone" }.not_to raise_error(ArgumentError)
32
+ expect { resource.server_type "Standalone" }.not_to raise_error
33
33
  end
34
34
 
35
35
  it "the server_type property accepts 'Domain'" do
36
- expect { resource.server_type "Domain" }.not_to raise_error(ArgumentError)
36
+ expect { resource.server_type "Domain" }.not_to raise_error
37
37
  end
38
38
 
39
39
  it "the resource raises an ArgumentError if invalid server_type is set" do
@@ -0,0 +1,77 @@
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+
20
+ describe Chef::Resource::WindowsFirewallProfile do
21
+ let(:resource) { Chef::Resource::WindowsFirewallProfile.new("fakey_fakerton") }
22
+
23
+ it "sets resource name as :windows_firewall_profile" do
24
+ expect(resource.resource_name).to eql(:windows_firewall_profile)
25
+ end
26
+
27
+ %w{ Domain Private Public }.each do |this_profile|
28
+ it "The profile accepts values for the \"#{this_profile}\" Profile" do
29
+ expect { resource.profile this_profile }.not_to raise_error
30
+ end
31
+ end
32
+
33
+ it "the profile property does not accept bad profile names" do
34
+ expect { resource.profile "Special" }.to raise_error(Chef::Exceptions::ValidationFailed)
35
+ end
36
+
37
+ it "the resource's default_inbound_action property only strings Block, Allow, or NotConfigured" do
38
+ expect { resource.default_inbound_action "AllowSome" }.to raise_error(ArgumentError)
39
+ expect { resource.default_inbound_action "Block" }.not_to raise_error
40
+ end
41
+ it "the resource's default_outbound_action property only accepts strings Block, Allow, or NotConfigured" do
42
+ expect { resource.default_outbound_action "BlockMost" }.to raise_error(ArgumentError)
43
+ expect { resource.default_outbound_action "Allow" }.not_to raise_error
44
+ end
45
+ it "the resource's allow_inbound_rules property only accepts strings true, false, or NotConfigured" do
46
+ expect { resource.allow_inbound_rules "Yes" }.to raise_error(ArgumentError)
47
+ expect { resource.allow_inbound_rules true }.not_to raise_error
48
+ end
49
+ it "the resource's allow_local_firewall_rules property only accepts strings true, false, or NotConfigured" do
50
+ expect { resource.allow_local_firewall_rules "No" }.to raise_error(ArgumentError)
51
+ expect { resource.allow_local_firewall_rules false }.not_to raise_error
52
+ end
53
+ it "the resource's allow_local_ipsec_rules property only accepts strings true, false, or NotConfigured" do
54
+ expect { resource.allow_local_ipsec_rules "Yes" }.to raise_error(ArgumentError)
55
+ expect { resource.allow_local_ipsec_rules true }.not_to raise_error
56
+ end
57
+ it "the resource's allow_user_apps property only accepts strings true, false, or NotConfigured" do
58
+ expect { resource.allow_user_apps "No" }.to raise_error(ArgumentError)
59
+ expect { resource.allow_user_apps false }.not_to raise_error
60
+ end
61
+ it "the resource's allow_user_ports property only accepts strings true, false, or NotConfigured" do
62
+ expect { resource.allow_user_ports "Nope" }.to raise_error(ArgumentError)
63
+ expect { resource.allow_user_ports "NotConfigured" }.not_to raise_error
64
+ end
65
+ it "the resource's allow_unicast_response property only accepts strings true, false, or NotConfigured" do
66
+ expect { resource.allow_unicast_response "True" }.to raise_error(ArgumentError)
67
+ expect { resource.allow_unicast_response true }.not_to raise_error
68
+ end
69
+ it "the resource's display_notification property only accepts strings true, false, or NotConfigured" do
70
+ expect { resource.display_notification "False" }.to raise_error(ArgumentError)
71
+ expect { resource.display_notification false }.not_to raise_error
72
+ end
73
+
74
+ it "sets the default action as :configure" do
75
+ expect(resource.action).to eql([:enable])
76
+ end
77
+ end
@@ -58,6 +58,7 @@ describe Chef::Resource::WindowsPackage, "initialize" do
58
58
  expect { resource.installer_type :msi }.not_to raise_error
59
59
  expect { resource.installer_type :nsis }.not_to raise_error
60
60
  expect { resource.installer_type :wise }.not_to raise_error
61
+ expect { resource.installer_type :something_else_entirely }.to raise_error(Chef::Exceptions::ValidationFailed)
61
62
  expect { resource.installer_type "msi" }.to raise_error(Chef::Exceptions::ValidationFailed)
62
63
  end
63
64
 
@@ -144,7 +144,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
144
144
  resource.frequency :once
145
145
  resource.random_delay "20"
146
146
  resource.start_time "15:00"
147
- expect { resource.after_created }.to_not raise_error(ArgumentError, "`random_delay` property is supported only for frequency :once, :minute, :hourly, :daily, :weekly and :monthly")
147
+ expect { resource.after_created }.to_not raise_error
148
148
  end
149
149
 
150
150
  it "raises error for invalid random_delay" do
@@ -26,7 +26,7 @@ describe Chef::Resource::WindowsUac do
26
26
 
27
27
  %i{no_prompt secure_prompt_for_creds secure_prompt_for_consent prompt_for_creds prompt_for_consent prompt_for_consent_non_windows_binaries}.each do |val|
28
28
  it "the consent_behavior_admins property accepts :#{val}" do
29
- expect { resource.consent_behavior_admins val }.not_to raise_error(ArgumentError)
29
+ expect { resource.consent_behavior_admins val }.not_to raise_error
30
30
  end
31
31
  end
32
32
 
@@ -36,7 +36,7 @@ describe Chef::Resource::WindowsUac do
36
36
 
37
37
  %i{auto_deny secure_prompt_for_creds prompt_for_creds}.each do |val|
38
38
  it "the consent_behavior_users property accepts :#{val}" do
39
- expect { resource.consent_behavior_users val }.not_to raise_error(ArgumentError)
39
+ expect { resource.consent_behavior_users val }.not_to raise_error
40
40
  end
41
41
  end
42
42
 
@@ -73,52 +73,52 @@ describe Chef::Resource::YumRepository do
73
73
  end
74
74
 
75
75
  it "the timeout property expects numeric Strings" do
76
- expect { resource.timeout "123" }.not_to raise_error(ArgumentError)
76
+ expect { resource.timeout "123" }.not_to raise_error
77
77
  expect { resource.timeout "123foo" }.to raise_error(ArgumentError)
78
78
  end
79
79
 
80
80
  it "the priority property expects numeric Strings from '1' to '99'" do
81
- expect { resource.priority "99" }.not_to raise_error(ArgumentError)
82
- expect { resource.priority "1" }.not_to raise_error(ArgumentError)
81
+ expect { resource.priority "99" }.not_to raise_error
82
+ expect { resource.priority "1" }.not_to raise_error
83
83
  expect { resource.priority "100" }.to raise_error(ArgumentError)
84
84
  expect { resource.priority "0" }.to raise_error(ArgumentError)
85
85
  end
86
86
 
87
87
  it "the failovermethod property accepts 'priority' or 'roundrobin'" do
88
- expect { resource.failovermethod "priority" }.not_to raise_error(ArgumentError)
89
- expect { resource.failovermethod "roundrobin" }.not_to raise_error(ArgumentError)
88
+ expect { resource.failovermethod "priority" }.not_to raise_error
89
+ expect { resource.failovermethod "roundrobin" }.not_to raise_error
90
90
  expect { resource.failovermethod "bob" }.to raise_error(ArgumentError)
91
91
  end
92
92
 
93
93
  it "the http_caching property accepts 'packages', 'all', or 'none'" do
94
- expect { resource.http_caching "packages" }.not_to raise_error(ArgumentError)
95
- expect { resource.http_caching "all" }.not_to raise_error(ArgumentError)
96
- expect { resource.http_caching "none" }.not_to raise_error(ArgumentError)
94
+ expect { resource.http_caching "packages" }.not_to raise_error
95
+ expect { resource.http_caching "all" }.not_to raise_error
96
+ expect { resource.http_caching "none" }.not_to raise_error
97
97
  expect { resource.http_caching "bob" }.to raise_error(ArgumentError)
98
98
  end
99
99
 
100
100
  it "the metadata_expire property accepts a time value or 'never'" do
101
- expect { resource.metadata_expire "100" }.not_to raise_error(ArgumentError)
102
- expect { resource.metadata_expire "100d" }.not_to raise_error(ArgumentError)
103
- expect { resource.metadata_expire "100h" }.not_to raise_error(ArgumentError)
104
- expect { resource.metadata_expire "100m" }.not_to raise_error(ArgumentError)
105
- expect { resource.metadata_expire "never" }.not_to raise_error(ArgumentError)
101
+ expect { resource.metadata_expire "100" }.not_to raise_error
102
+ expect { resource.metadata_expire "100d" }.not_to raise_error
103
+ expect { resource.metadata_expire "100h" }.not_to raise_error
104
+ expect { resource.metadata_expire "100m" }.not_to raise_error
105
+ expect { resource.metadata_expire "never" }.not_to raise_error
106
106
  expect { resource.metadata_expire "100s" }.to raise_error(ArgumentError)
107
107
  end
108
108
 
109
109
  it "the mirror_expire property accepts a time value" do
110
- expect { resource.mirror_expire "100" }.not_to raise_error(ArgumentError)
111
- expect { resource.mirror_expire "100d" }.not_to raise_error(ArgumentError)
112
- expect { resource.mirror_expire "100h" }.not_to raise_error(ArgumentError)
113
- expect { resource.mirror_expire "100m" }.not_to raise_error(ArgumentError)
110
+ expect { resource.mirror_expire "100" }.not_to raise_error
111
+ expect { resource.mirror_expire "100d" }.not_to raise_error
112
+ expect { resource.mirror_expire "100h" }.not_to raise_error
113
+ expect { resource.mirror_expire "100m" }.not_to raise_error
114
114
  expect { resource.mirror_expire "never" }.to raise_error(ArgumentError)
115
115
  end
116
116
 
117
117
  it "the mirrorlist_expire property accepts a time value" do
118
- expect { resource.mirrorlist_expire "100" }.not_to raise_error(ArgumentError)
119
- expect { resource.mirrorlist_expire "100d" }.not_to raise_error(ArgumentError)
120
- expect { resource.mirrorlist_expire "100h" }.not_to raise_error(ArgumentError)
121
- expect { resource.mirrorlist_expire "100m" }.not_to raise_error(ArgumentError)
118
+ expect { resource.mirrorlist_expire "100" }.not_to raise_error
119
+ expect { resource.mirrorlist_expire "100d" }.not_to raise_error
120
+ expect { resource.mirrorlist_expire "100h" }.not_to raise_error
121
+ expect { resource.mirrorlist_expire "100m" }.not_to raise_error
122
122
  expect { resource.mirrorlist_expire "never" }.to raise_error(ArgumentError)
123
123
  end
124
124