chef 11.6.2-x86-mingw32 → 11.8.0.rc.1-x86-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 (628) hide show
  1. data/CONTRIBUTING.md +12 -12
  2. data/Rakefile +11 -14
  3. data/bin/chef-apply +2 -2
  4. data/bin/chef-client +2 -2
  5. data/bin/chef-service-manager +2 -2
  6. data/bin/chef-shell +3 -0
  7. data/bin/chef-solo +2 -2
  8. data/bin/knife +3 -3
  9. data/distro/arch/etc/rc.d/chef-client +2 -2
  10. data/distro/arch/etc/rc.d/chef-server +2 -2
  11. data/distro/arch/etc/rc.d/chef-server-webui +2 -2
  12. data/distro/arch/etc/rc.d/chef-solr +2 -2
  13. data/distro/common/html/chef-client.8.html +3 -3
  14. data/distro/common/html/chef-expander.8.html +3 -3
  15. data/distro/common/html/chef-expanderctl.8.html +3 -3
  16. data/distro/common/html/chef-server-webui.8.html +3 -3
  17. data/distro/common/html/chef-server.8.html +3 -3
  18. data/distro/common/html/chef-shell.1.html +3 -3
  19. data/distro/common/html/chef-solo.8.html +3 -3
  20. data/distro/common/html/chef-solr.8.html +4 -4
  21. data/distro/common/html/knife-bootstrap.1.html +3 -3
  22. data/distro/common/html/knife-client.1.html +3 -3
  23. data/distro/common/html/knife-configure.1.html +13 -13
  24. data/distro/common/html/knife-cookbook-site.1.html +3 -3
  25. data/distro/common/html/knife-cookbook.1.html +7 -7
  26. data/distro/common/html/knife-data-bag.1.html +3 -3
  27. data/distro/common/html/knife-environment.1.html +3 -3
  28. data/distro/common/html/knife-exec.1.html +3 -3
  29. data/distro/common/html/knife-index.1.html +3 -3
  30. data/distro/common/html/knife-node.1.html +3 -3
  31. data/distro/common/html/knife-role.1.html +3 -3
  32. data/distro/common/html/knife-search.1.html +3 -3
  33. data/distro/common/html/knife-ssh.1.html +3 -3
  34. data/distro/common/html/knife-status.1.html +3 -3
  35. data/distro/common/html/knife-tag.1.html +3 -3
  36. data/distro/common/html/knife.1.html +3 -3
  37. data/distro/common/man/man1/README.md +58 -0
  38. data/distro/common/man/man1/chef-shell.1 +114 -219
  39. data/distro/common/man/man1/knife-bootstrap.1 +176 -180
  40. data/distro/common/man/man1/knife-client.1 +368 -0
  41. data/distro/common/man/man1/knife-configure.1 +147 -85
  42. data/distro/common/man/man1/knife-cookbook-site.1 +465 -133
  43. data/distro/common/man/man1/knife-cookbook.1 +614 -304
  44. data/distro/common/man/man1/knife-data-bag.1 +476 -113
  45. data/distro/common/man/man1/knife-delete.1 +132 -0
  46. data/distro/common/man/man1/knife-deps.1 +219 -0
  47. data/distro/common/man/man1/knife-diff.1 +212 -0
  48. data/distro/common/man/man1/knife-download.1 +220 -0
  49. data/distro/common/man/man1/knife-edit.1 +126 -0
  50. data/distro/common/man/man1/knife-environment.1 +324 -0
  51. data/distro/common/man/man1/knife-exec.1 +317 -35
  52. data/distro/common/man/man1/knife-index-rebuild.1 +115 -0
  53. data/distro/common/man/man1/knife-list.1 +167 -0
  54. data/distro/common/man/man1/knife-node.1 +567 -123
  55. data/distro/common/man/man1/knife-raw.1 +170 -0
  56. data/distro/common/man/man1/knife-recipe-list.1 +133 -0
  57. data/distro/common/man/man1/knife-role.1 +367 -81
  58. data/distro/common/man/man1/knife-search.1 +267 -243
  59. data/distro/common/man/man1/knife-show.1 +138 -0
  60. data/distro/common/man/man1/knife-ssh.1 +241 -66
  61. data/distro/common/man/man1/knife-status.1 +202 -24
  62. data/distro/common/man/man1/knife-tag.1 +176 -39
  63. data/distro/common/man/man1/knife-upload.1 +239 -0
  64. data/distro/common/man/man1/knife-user.1 +317 -0
  65. data/distro/common/man/man1/knife-xargs.1 +166 -0
  66. data/distro/common/man/man1/knife.1 +227 -284
  67. data/distro/common/man/man8/chef-client.8 +247 -81
  68. data/distro/common/man/man8/chef-solo.8 +142 -110
  69. data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
  70. data/distro/common/markdown/man1/knife-configure.mkd +11 -11
  71. data/distro/common/markdown/man1/knife-cookbook.mkd +4 -4
  72. data/distro/common/markdown/man8/chef-expander.mkd +1 -1
  73. data/distro/common/markdown/man8/chef-expanderctl.mkd +1 -1
  74. data/distro/debian/etc/init.d/chef-client +1 -1
  75. data/distro/debian/etc/init.d/chef-expander +1 -1
  76. data/distro/debian/etc/init.d/chef-server +1 -1
  77. data/distro/debian/etc/init.d/chef-server-webui +1 -1
  78. data/distro/debian/etc/init.d/chef-solr +1 -1
  79. data/distro/debian/etc/init/chef-client.conf +1 -1
  80. data/distro/debian/etc/init/chef-expander.conf +1 -1
  81. data/distro/debian/etc/init/chef-server-webui.conf +1 -1
  82. data/distro/debian/etc/init/chef-server.conf +1 -1
  83. data/distro/debian/etc/init/chef-solr.conf +1 -1
  84. data/distro/redhat/etc/init.d/chef-client +1 -1
  85. data/distro/redhat/etc/init.d/chef-server +2 -2
  86. data/distro/redhat/etc/init.d/chef-server-webui +2 -2
  87. data/distro/redhat/etc/init.d/chef-solr +2 -2
  88. data/lib/chef/api_client.rb +20 -5
  89. data/lib/chef/application.rb +53 -22
  90. data/lib/chef/application/agent.rb +2 -2
  91. data/lib/chef/application/client.rb +34 -24
  92. data/lib/chef/application/knife.rb +10 -0
  93. data/lib/chef/application/solo.rb +9 -27
  94. data/lib/chef/application/windows_service.rb +24 -10
  95. data/lib/chef/application/windows_service_manager.rb +8 -0
  96. data/lib/chef/checksum/storage.rb +2 -2
  97. data/lib/chef/checksum/storage/filesystem.rb +2 -2
  98. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  99. data/lib/chef/chef_fs/command_line.rb +2 -1
  100. data/lib/chef/chef_fs/config.rb +19 -64
  101. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -2
  102. data/lib/chef/chef_fs/file_system.rb +2 -2
  103. data/lib/chef/chef_fs/file_system/acl_entry.rb +1 -1
  104. data/lib/chef/chef_fs/file_system/chef_repository_file_system_acls_dir.rb +37 -0
  105. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_dir.rb +16 -8
  106. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +19 -4
  107. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbooks_dir.rb +27 -12
  108. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +31 -3
  109. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +12 -5
  110. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +12 -2
  111. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +3 -2
  112. data/lib/chef/chef_fs/file_system/cookbook_file.rb +2 -5
  113. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +21 -6
  114. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +1 -1
  115. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +3 -2
  116. data/lib/chef/chef_fs/file_system/file_system_entry.rb +15 -5
  117. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +2 -1
  118. data/lib/chef/chef_fs/file_system/nodes_dir.rb +1 -1
  119. data/lib/chef/chef_fs/file_system/operation_failed_error.rb +8 -0
  120. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +4 -2
  121. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +4 -6
  122. data/lib/chef/chef_fs/knife.rb +39 -22
  123. data/lib/chef/chef_fs/path_utils.rb +5 -0
  124. data/lib/chef/client.rb +9 -3
  125. data/lib/chef/config.rb +306 -115
  126. data/lib/chef/config_fetcher.rb +79 -0
  127. data/lib/chef/cookbook/file_vendor.rb +5 -5
  128. data/lib/chef/cookbook/metadata.rb +2 -2
  129. data/lib/chef/cookbook/syntax_check.rb +6 -16
  130. data/lib/chef/cookbook_site_streaming_uploader.rb +8 -4
  131. data/lib/chef/cookbook_uploader.rb +10 -8
  132. data/lib/chef/cookbook_version.rb +24 -8
  133. data/lib/chef/daemon.rb +14 -75
  134. data/lib/chef/data_bag.rb +2 -3
  135. data/lib/chef/dsl/include_recipe.rb +2 -2
  136. data/lib/chef/event_dispatch/base.rb +1 -1
  137. data/lib/chef/event_dispatch/dispatcher.rb +1 -1
  138. data/lib/chef/file_access_control/windows.rb +1 -1
  139. data/lib/chef/formatters/doc.rb +5 -5
  140. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +2 -2
  141. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
  142. data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +2 -2
  143. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  144. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
  145. data/lib/chef/handler/json_file.rb +2 -2
  146. data/lib/chef/http.rb +386 -0
  147. data/lib/chef/{rest → http}/auth_credentials.rb +1 -1
  148. data/lib/chef/http/authenticator.rb +89 -0
  149. data/lib/chef/http/basic_client.rb +114 -0
  150. data/lib/chef/{rest → http}/cookie_jar.rb +1 -1
  151. data/lib/chef/http/cookie_manager.rb +56 -0
  152. data/lib/chef/http/decompressor.rb +137 -0
  153. data/lib/chef/{rest/rest_request.rb → http/http_request.rb} +13 -74
  154. data/lib/chef/http/json_input.rb +53 -0
  155. data/lib/chef/http/json_output.rb +69 -0
  156. data/lib/chef/http/json_to_model_output.rb +34 -0
  157. data/lib/chef/http/simple.rb +16 -0
  158. data/lib/chef/http/ssl_policies.rb +129 -0
  159. data/lib/chef/knife.rb +45 -23
  160. data/lib/chef/knife/bootstrap.rb +10 -3
  161. data/lib/chef/knife/bootstrap/chef-full.erb +10 -1
  162. data/lib/chef/knife/client_create.rb +1 -1
  163. data/lib/chef/knife/configure.rb +1 -1
  164. data/lib/chef/knife/cookbook_create.rb +7 -7
  165. data/lib/chef/knife/cookbook_download.rb +2 -2
  166. data/lib/chef/knife/cookbook_metadata_from_file.rb +2 -2
  167. data/lib/chef/knife/cookbook_show.rb +3 -3
  168. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  169. data/lib/chef/knife/cookbook_site_list.rb +2 -2
  170. data/lib/chef/knife/cookbook_site_search.rb +3 -3
  171. data/lib/chef/knife/cookbook_site_show.rb +5 -5
  172. data/lib/chef/knife/core/bootstrap_context.rb +7 -3
  173. data/lib/chef/knife/core/node_editor.rb +16 -36
  174. data/lib/chef/knife/core/node_presenter.rb +1 -1
  175. data/lib/chef/knife/core/subcommand_loader.rb +5 -5
  176. data/lib/chef/knife/core/ui.rb +9 -13
  177. data/lib/chef/knife/data_bag_create.rb +7 -5
  178. data/lib/chef/knife/data_bag_delete.rb +3 -3
  179. data/lib/chef/knife/data_bag_edit.rb +9 -7
  180. data/lib/chef/knife/data_bag_from_file.rb +10 -8
  181. data/lib/chef/knife/data_bag_list.rb +2 -2
  182. data/lib/chef/knife/data_bag_show.rb +9 -7
  183. data/lib/chef/knife/delete.rb +2 -0
  184. data/lib/chef/knife/deps.rb +2 -0
  185. data/lib/chef/knife/diff.rb +6 -0
  186. data/lib/chef/knife/download.rb +6 -0
  187. data/lib/chef/knife/edit.rb +5 -8
  188. data/lib/chef/knife/environment_from_file.rb +2 -2
  189. data/lib/chef/knife/help_topics.rb +1 -1
  190. data/lib/chef/knife/index_rebuild.rb +2 -2
  191. data/lib/chef/knife/list.rb +2 -0
  192. data/lib/chef/knife/raw.rb +31 -5
  193. data/lib/chef/knife/show.rb +2 -0
  194. data/lib/chef/knife/ssh.rb +21 -7
  195. data/lib/chef/knife/status.rb +1 -1
  196. data/lib/chef/knife/upload.rb +2 -0
  197. data/lib/chef/knife/xargs.rb +2 -0
  198. data/lib/chef/mixin/checksum.rb +2 -2
  199. data/lib/chef/mixin/command.rb +46 -17
  200. data/lib/chef/mixin/convert_to_class_name.rb +8 -8
  201. data/lib/chef/mixin/create_path.rb +9 -9
  202. data/lib/chef/mixin/deep_merge.rb +2 -2
  203. data/lib/chef/mixin/from_file.rb +6 -6
  204. data/lib/chef/mixin/language_include_recipe.rb +2 -2
  205. data/lib/chef/mixin/params_validate.rb +21 -21
  206. data/lib/chef/mixin/shell_out.rb +9 -0
  207. data/lib/chef/mixin/template.rb +13 -16
  208. data/lib/chef/mixin/why_run.rb +16 -16
  209. data/lib/chef/mixin/windows_architecture_helper.rb +5 -5
  210. data/lib/chef/mixin/xml_escape.rb +10 -10
  211. data/lib/chef/monkey_patches/numeric.rb +1 -1
  212. data/lib/chef/monkey_patches/regexp.rb +4 -4
  213. data/lib/chef/monkey_patches/string.rb +3 -3
  214. data/lib/chef/monkey_patches/tempfile.rb +2 -2
  215. data/lib/chef/node.rb +8 -0
  216. data/lib/chef/node/attribute.rb +1 -1
  217. data/lib/chef/platform/provider_mapping.rb +26 -1
  218. data/lib/chef/provider/batch.rb +3 -3
  219. data/lib/chef/provider/cron.rb +27 -13
  220. data/lib/chef/provider/cron/aix.rb +48 -0
  221. data/lib/chef/provider/cron/solaris.rb +6 -40
  222. data/lib/chef/provider/cron/unix.rb +76 -0
  223. data/lib/chef/provider/deploy/timestamped.rb +4 -4
  224. data/lib/chef/provider/erl_call.rb +1 -1
  225. data/lib/chef/provider/execute.rb +2 -2
  226. data/lib/chef/provider/git.rb +1 -0
  227. data/lib/chef/provider/group.rb +21 -21
  228. data/lib/chef/provider/group/dscl.rb +9 -9
  229. data/lib/chef/provider/group/gpasswd.rb +5 -5
  230. data/lib/chef/provider/group/groupadd.rb +11 -10
  231. data/lib/chef/provider/group/pw.rb +11 -11
  232. data/lib/chef/provider/group/suse.rb +4 -4
  233. data/lib/chef/provider/group/usermod.rb +8 -8
  234. data/lib/chef/provider/group/windows.rb +9 -9
  235. data/lib/chef/provider/http_request.rb +8 -8
  236. data/lib/chef/provider/ifconfig.rb +57 -37
  237. data/lib/chef/provider/ifconfig/aix.rb +99 -0
  238. data/lib/chef/provider/log.rb +3 -3
  239. data/lib/chef/provider/mdadm.rb +5 -4
  240. data/lib/chef/provider/mount.rb +12 -12
  241. data/lib/chef/provider/mount/aix.rb +179 -0
  242. data/lib/chef/provider/mount/mount.rb +29 -15
  243. data/lib/chef/provider/package.rb +26 -16
  244. data/lib/chef/provider/package/aix.rb +146 -0
  245. data/lib/chef/provider/package/apt.rb +16 -31
  246. data/lib/chef/provider/package/dpkg.rb +9 -9
  247. data/lib/chef/provider/package/freebsd.rb +2 -2
  248. data/lib/chef/provider/package/ips.rb +3 -3
  249. data/lib/chef/provider/package/macports.rb +1 -1
  250. data/lib/chef/provider/package/pacman.rb +8 -8
  251. data/lib/chef/provider/package/rpm.rb +14 -14
  252. data/lib/chef/provider/package/rubygems.rb +1 -1
  253. data/lib/chef/provider/package/smartos.rb +3 -3
  254. data/lib/chef/provider/package/solaris.rb +16 -6
  255. data/lib/chef/provider/package/yum-dump.py +4 -4
  256. data/lib/chef/provider/package/yum.rb +3 -3
  257. data/lib/chef/provider/powershell_script.rb +7 -7
  258. data/lib/chef/provider/remote_file/ftp.rb +1 -0
  259. data/lib/chef/provider/remote_file/http.rb +6 -13
  260. data/lib/chef/provider/remote_file/local_file.rb +1 -0
  261. data/lib/chef/provider/resource_update.rb +9 -9
  262. data/lib/chef/provider/ruby_block.rb +3 -3
  263. data/lib/chef/provider/script.rb +1 -1
  264. data/lib/chef/provider/service.rb +2 -2
  265. data/lib/chef/provider/service/debian.rb +35 -15
  266. data/lib/chef/provider/service/freebsd.rb +9 -9
  267. data/lib/chef/provider/service/gentoo.rb +4 -4
  268. data/lib/chef/provider/service/init.rb +1 -1
  269. data/lib/chef/provider/service/insserv.rb +2 -2
  270. data/lib/chef/provider/service/invokercd.rb +1 -1
  271. data/lib/chef/provider/service/redhat.rb +2 -2
  272. data/lib/chef/provider/service/simple.rb +6 -6
  273. data/lib/chef/provider/service/solaris.rb +1 -1
  274. data/lib/chef/provider/service/systemd.rb +3 -3
  275. data/lib/chef/provider/service/upstart.rb +15 -15
  276. data/lib/chef/provider/subversion.rb +6 -5
  277. data/lib/chef/provider/user.rb +13 -9
  278. data/lib/chef/provider/user/dscl.rb +28 -28
  279. data/lib/chef/provider/user/pw.rb +11 -11
  280. data/lib/chef/provider/user/useradd.rb +1 -1
  281. data/lib/chef/provider/user/windows.rb +7 -7
  282. data/lib/chef/provider/windows_script.rb +7 -7
  283. data/lib/chef/providers.rb +4 -0
  284. data/lib/chef/recipe.rb +2 -19
  285. data/lib/chef/resource/apt_package.rb +3 -3
  286. data/lib/chef/resource/bash.rb +3 -3
  287. data/lib/chef/resource/batch.rb +4 -4
  288. data/lib/chef/resource/bff_package.rb +36 -0
  289. data/lib/chef/resource/breakpoint.rb +3 -3
  290. data/lib/chef/resource/cron.rb +5 -5
  291. data/lib/chef/resource/csh.rb +3 -3
  292. data/lib/chef/resource/deploy.rb +16 -3
  293. data/lib/chef/resource/deploy_revision.rb +6 -6
  294. data/lib/chef/resource/directory.rb +2 -2
  295. data/lib/chef/resource/dpkg_package.rb +4 -4
  296. data/lib/chef/resource/easy_install_package.rb +1 -1
  297. data/lib/chef/resource/erl_call.rb +1 -1
  298. data/lib/chef/resource/freebsd_package.rb +4 -4
  299. data/lib/chef/resource/group.rb +15 -6
  300. data/lib/chef/resource/http_request.rb +6 -6
  301. data/lib/chef/resource/ifconfig.rb +4 -4
  302. data/lib/chef/resource/ips_package.rb +2 -2
  303. data/lib/chef/resource/log.rb +12 -11
  304. data/lib/chef/resource/macports_package.rb +2 -2
  305. data/lib/chef/resource/mount.rb +11 -12
  306. data/lib/chef/resource/ohai.rb +3 -3
  307. data/lib/chef/resource/pacman_package.rb +4 -4
  308. data/lib/chef/resource/perl.rb +3 -3
  309. data/lib/chef/resource/portage_package.rb +4 -4
  310. data/lib/chef/resource/powershell_script.rb +3 -3
  311. data/lib/chef/resource/python.rb +3 -3
  312. data/lib/chef/resource/route.rb +4 -4
  313. data/lib/chef/resource/rpm_package.rb +2 -2
  314. data/lib/chef/resource/ruby.rb +3 -3
  315. data/lib/chef/resource/ruby_block.rb +3 -3
  316. data/lib/chef/resource/scm.rb +10 -2
  317. data/lib/chef/resource/script.rb +5 -5
  318. data/lib/chef/resource/service.rb +5 -5
  319. data/lib/chef/resource/smartos_package.rb +8 -6
  320. data/lib/chef/resource/solaris_package.rb +8 -7
  321. data/lib/chef/resource/subversion.rb +3 -3
  322. data/lib/chef/resource/timestamped_deploy.rb +4 -4
  323. data/lib/chef/resource/user.rb +13 -13
  324. data/lib/chef/resource/windows_script.rb +6 -6
  325. data/lib/chef/resource/yum_package.rb +2 -2
  326. data/lib/chef/resource_collection.rb +1 -1
  327. data/lib/chef/resource_collection/stepable_iterator.rb +22 -22
  328. data/lib/chef/resource_definition.rb +8 -8
  329. data/lib/chef/resource_definition_list.rb +2 -2
  330. data/lib/chef/resource_reporter.rb +8 -2
  331. data/lib/chef/resources.rb +2 -0
  332. data/lib/chef/rest.rb +70 -334
  333. data/lib/chef/role.rb +17 -13
  334. data/lib/chef/run_context.rb +14 -0
  335. data/lib/chef/run_context/cookbook_compiler.rb +3 -3
  336. data/lib/chef/run_lock.rb +73 -20
  337. data/lib/chef/server_api.rb +41 -0
  338. data/lib/chef/shell.rb +3 -19
  339. data/lib/chef/shell/shell_session.rb +1 -1
  340. data/lib/chef/streaming_cookbook_uploader.rb +30 -26
  341. data/lib/chef/tasks/chef_repo.rake +17 -17
  342. data/lib/chef/util/backup.rb +2 -1
  343. data/lib/chef/util/diff.rb +76 -33
  344. data/lib/chef/util/windows.rb +2 -2
  345. data/lib/chef/util/windows/net_group.rb +2 -2
  346. data/lib/chef/util/windows/net_use.rb +2 -2
  347. data/lib/chef/util/windows/net_user.rb +3 -3
  348. data/lib/chef/util/windows/volume.rb +3 -3
  349. data/lib/chef/version.rb +1 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/synchronization.rb +89 -0
  352. data/lib/chef/win32/handle.rb +1 -1
  353. data/lib/chef/win32/mutex.rb +94 -0
  354. data/lib/chef/win32/security/ace.rb +1 -1
  355. data/lib/chef/win32/security/sid.rb +1 -1
  356. data/lib/chef/win32/version.rb +5 -3
  357. data/spec/data/bootstrap/no_proxy.erb +2 -0
  358. data/spec/data/cookbooks/openldap/metadata.rb +8 -0
  359. data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -0
  360. data/spec/data/trusted_certs/example.crt +22 -0
  361. data/spec/data/trusted_certs/intermediate.pem +27 -0
  362. data/spec/data/trusted_certs/opscode.pem +38 -0
  363. data/spec/data/trusted_certs/root.pem +22 -0
  364. data/spec/functional/assets/PkgA.1.0.0.0.bff +0 -0
  365. data/spec/functional/assets/PkgA.2.0.0.0.bff +0 -0
  366. data/spec/functional/assets/dummy-1-0.aix6.1.noarch.rpm +0 -0
  367. data/spec/functional/assets/dummy-2-0.aix6.1.noarch.rpm +0 -0
  368. data/spec/functional/assets/mytest-1.0-1.noarch.rpm +0 -0
  369. data/spec/functional/assets/mytest-2.0-1.noarch.rpm +0 -0
  370. data/spec/functional/knife/cookbook_delete_spec.rb +4 -7
  371. data/spec/functional/knife/exec_spec.rb +0 -3
  372. data/spec/functional/knife/ssh_spec.rb +2 -6
  373. data/spec/functional/resource/base.rb +41 -0
  374. data/spec/functional/resource/batch_spec.rb +6 -33
  375. data/spec/functional/resource/bff_spec.rb +122 -0
  376. data/spec/functional/resource/cron_spec.rb +147 -0
  377. data/spec/functional/resource/group_spec.rb +204 -0
  378. data/spec/functional/resource/ifconfig_spec.rb +163 -0
  379. data/spec/functional/resource/link_spec.rb +4 -4
  380. data/spec/functional/resource/mount_spec.rb +207 -0
  381. data/spec/functional/resource/package_spec.rb +95 -17
  382. data/spec/functional/resource/powershell_spec.rb +21 -22
  383. data/spec/functional/resource/registry_spec.rb +5 -19
  384. data/spec/functional/resource/remote_file_spec.rb +14 -0
  385. data/spec/functional/resource/rpm_spec.rb +122 -0
  386. data/spec/functional/resource/template_spec.rb +11 -44
  387. data/spec/functional/resource/user_spec.rb +2 -1
  388. data/spec/functional/run_lock_spec.rb +48 -5
  389. data/spec/functional/shell_spec.rb +46 -26
  390. data/spec/functional/tiny_server_spec.rb +2 -2
  391. data/spec/functional/version_spec.rb +35 -0
  392. data/spec/functional/win32/versions_spec.rb +3 -3
  393. data/spec/integration/client/client_spec.rb +146 -0
  394. data/spec/integration/knife/chef_fs_data_store_spec.rb +353 -0
  395. data/spec/integration/knife/chef_repo_path_spec.rb +72 -19
  396. data/spec/integration/knife/common_options_spec.rb +103 -0
  397. data/spec/integration/knife/download_spec.rb +38 -2
  398. data/spec/integration/knife/raw_spec.rb +63 -0
  399. data/spec/integration/knife/upload_spec.rb +20 -4
  400. data/spec/integration/solo/solo_spec.rb +78 -25
  401. data/spec/spec_helper.rb +35 -1
  402. data/spec/support/lib/chef/provider/easy.rb +4 -4
  403. data/spec/support/lib/chef/provider/snakeoil.rb +4 -4
  404. data/spec/support/lib/chef/resource/cat.rb +5 -5
  405. data/spec/support/lib/chef/resource/with_state.rb +37 -0
  406. data/spec/support/lib/library_load_order.rb +22 -0
  407. data/spec/support/platform_helpers.rb +8 -0
  408. data/spec/support/shared/functional/file_resource.rb +4 -22
  409. data/spec/support/shared/functional/windows_script.rb +48 -0
  410. data/spec/support/shared/integration/integration_helper.rb +5 -22
  411. data/spec/support/shared/integration/knife_support.rb +3 -3
  412. data/spec/support/shared/unit/script_resource.rb +7 -7
  413. data/spec/support/shared/unit/windows_script_resource.rb +7 -7
  414. data/spec/tiny_server.rb +2 -2
  415. data/spec/unit/api_client/registration_spec.rb +1 -1
  416. data/spec/unit/api_client_spec.rb +25 -2
  417. data/spec/unit/application/apply.rb +1 -9
  418. data/spec/unit/application/client_spec.rb +19 -44
  419. data/spec/unit/application/solo_spec.rb +10 -50
  420. data/spec/unit/application_spec.rb +51 -80
  421. data/spec/unit/checksum/storage/filesystem_spec.rb +3 -2
  422. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +47 -0
  423. data/spec/unit/chef_spec.rb +2 -2
  424. data/spec/unit/client_spec.rb +2 -18
  425. data/spec/unit/config_fetcher_spec.rb +98 -0
  426. data/spec/unit/config_spec.rb +107 -29
  427. data/spec/unit/cookbook/metadata_spec.rb +50 -50
  428. data/spec/unit/cookbook/synchronizer_spec.rb +3 -3
  429. data/spec/unit/cookbook/syntax_check_spec.rb +1 -2
  430. data/spec/unit/cookbook_loader_spec.rb +28 -12
  431. data/spec/unit/cookbook_manifest_spec.rb +11 -11
  432. data/spec/unit/cookbook_site_streaming_uploader.rb +200 -0
  433. data/spec/unit/cookbook_version_spec.rb +16 -0
  434. data/spec/unit/daemon_spec.rb +0 -132
  435. data/spec/unit/data_bag_item_spec.rb +6 -6
  436. data/spec/unit/data_bag_spec.rb +6 -8
  437. data/spec/unit/digester_spec.rb +2 -2
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +0 -15
  439. data/spec/unit/file_cache_spec.rb +1 -1
  440. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +4 -4
  441. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +2 -2
  442. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +2 -2
  443. data/spec/unit/formatters/error_inspectors/node_load_error_inspector_spec.rb +2 -2
  444. data/spec/unit/formatters/error_inspectors/registration_error_inspector_spec.rb +2 -2
  445. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +4 -4
  446. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +2 -2
  447. data/spec/unit/handler_spec.rb +5 -5
  448. data/spec/unit/http/ssl_policies_spec.rb +170 -0
  449. data/spec/unit/knife/bootstrap_spec.rb +31 -14
  450. data/spec/unit/knife/client_bulk_delete_spec.rb +8 -8
  451. data/spec/unit/knife/client_create_spec.rb +2 -2
  452. data/spec/unit/knife/client_delete_spec.rb +2 -2
  453. data/spec/unit/knife/client_edit_spec.rb +2 -2
  454. data/spec/unit/knife/client_list_spec.rb +2 -2
  455. data/spec/unit/knife/client_reregister_spec.rb +2 -2
  456. data/spec/unit/knife/client_show_spec.rb +2 -2
  457. data/spec/unit/knife/config_file_selection_spec.rb +53 -36
  458. data/spec/unit/knife/configure_spec.rb +0 -6
  459. data/spec/unit/knife/cookbook_create_spec.rb +1 -12
  460. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +2 -2
  461. data/spec/unit/knife/cookbook_show_spec.rb +3 -3
  462. data/spec/unit/knife/cookbook_site_install_spec.rb +1 -1
  463. data/spec/unit/knife/core/bootstrap_context_spec.rb +10 -2
  464. data/spec/unit/knife/core/ui_spec.rb +118 -0
  465. data/spec/unit/knife/data_bag_show_spec.rb +2 -2
  466. data/spec/unit/knife/environment_from_file_spec.rb +2 -2
  467. data/spec/unit/knife/index_rebuild_spec.rb +1 -1
  468. data/spec/unit/knife/node_delete_spec.rb +3 -3
  469. data/spec/unit/knife/node_edit_spec.rb +35 -8
  470. data/spec/unit/knife/node_list_spec.rb +3 -3
  471. data/spec/unit/knife/node_run_list_add_spec.rb +3 -3
  472. data/spec/unit/knife/node_show_spec.rb +3 -3
  473. data/spec/unit/knife/role_create_spec.rb +3 -3
  474. data/spec/unit/knife/role_delete_spec.rb +3 -3
  475. data/spec/unit/knife/role_list_spec.rb +2 -2
  476. data/spec/unit/knife/ssh_spec.rb +1 -8
  477. data/spec/unit/knife_spec.rb +0 -2
  478. data/spec/unit/log_spec.rb +2 -2
  479. data/spec/unit/mash_spec.rb +2 -2
  480. data/spec/unit/mixin/checksum_spec.rb +3 -3
  481. data/spec/unit/mixin/command_spec.rb +1 -1
  482. data/spec/unit/mixin/convert_to_class_name_spec.rb +7 -7
  483. data/spec/unit/mixin/deprecation_spec.rb +2 -2
  484. data/spec/unit/mixin/params_validate_spec.rb +72 -72
  485. data/spec/unit/mixin/securable_spec.rb +0 -14
  486. data/spec/unit/mixin/shell_out_spec.rb +1 -1
  487. data/spec/unit/mixin/template_spec.rb +34 -0
  488. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  489. data/spec/unit/mixin/xml_escape_spec.rb +2 -2
  490. data/spec/unit/node/attribute_spec.rb +11 -11
  491. data/spec/unit/node/immutable_collections_spec.rb +2 -2
  492. data/spec/unit/node_spec.rb +5 -0
  493. data/spec/unit/platform_spec.rb +36 -35
  494. data/spec/unit/provider/cron/{solaris_spec.rb → unix_spec.rb} +6 -6
  495. data/spec/unit/provider/cron_spec.rb +21 -3
  496. data/spec/unit/provider/deploy/timestamped_spec.rb +5 -5
  497. data/spec/unit/provider/deploy_spec.rb +21 -7
  498. data/spec/unit/provider/env_spec.rb +2 -2
  499. data/spec/unit/provider/execute_spec.rb +2 -2
  500. data/spec/unit/provider/file/content_spec.rb +0 -8
  501. data/spec/unit/provider/git_spec.rb +29 -9
  502. data/spec/unit/provider/group/dscl_spec.rb +12 -12
  503. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  504. data/spec/unit/provider/group/groupadd_spec.rb +14 -0
  505. data/spec/unit/provider/group/groupmod_spec.rb +13 -13
  506. data/spec/unit/provider/group/pw_spec.rb +16 -16
  507. data/spec/unit/provider/group/usermod_spec.rb +10 -9
  508. data/spec/unit/provider/group/windows_spec.rb +14 -0
  509. data/spec/unit/provider/group_spec.rb +29 -29
  510. data/spec/unit/provider/http_request_spec.rb +15 -15
  511. data/spec/unit/provider/ifconfig/aix_spec.rb +180 -0
  512. data/spec/unit/provider/ifconfig_spec.rb +9 -9
  513. data/spec/unit/provider/link_spec.rb +2 -2
  514. data/spec/unit/provider/log_spec.rb +8 -8
  515. data/spec/unit/provider/mdadm_spec.rb +14 -11
  516. data/spec/unit/provider/mount/aix_spec.rb +237 -0
  517. data/spec/unit/provider/mount/mount_spec.rb +2 -0
  518. data/spec/unit/provider/mount/windows_spec.rb +2 -2
  519. data/spec/unit/provider/mount_spec.rb +6 -6
  520. data/spec/unit/provider/package/aix_spec.rb +171 -0
  521. data/spec/unit/provider/package/apt_spec.rb +130 -171
  522. data/spec/unit/provider/package/dpkg_spec.rb +3 -3
  523. data/spec/unit/provider/package/freebsd_spec.rb +28 -0
  524. data/spec/unit/provider/package/ips_spec.rb +1 -1
  525. data/spec/unit/provider/package/rpm_spec.rb +15 -15
  526. data/spec/unit/provider/package/smartos_spec.rb +21 -3
  527. data/spec/unit/provider/package_spec.rb +4 -2
  528. data/spec/unit/provider/powershell_spec.rb +3 -3
  529. data/spec/unit/provider/remote_directory_spec.rb +2 -2
  530. data/spec/unit/provider/remote_file/ftp_spec.rb +0 -5
  531. data/spec/unit/provider/remote_file/http_spec.rb +12 -28
  532. data/spec/unit/provider/remote_file/local_file_spec.rb +2 -1
  533. data/spec/unit/provider/route_spec.rb +2 -2
  534. data/spec/unit/provider/ruby_block_spec.rb +2 -2
  535. data/spec/unit/provider/service/arch_service_spec.rb +17 -17
  536. data/spec/unit/provider/service/debian_service_spec.rb +242 -152
  537. data/spec/unit/provider/service/freebsd_service_spec.rb +9 -9
  538. data/spec/unit/provider/service/gentoo_service_spec.rb +9 -9
  539. data/spec/unit/provider/service/init_service_spec.rb +11 -11
  540. data/spec/unit/provider/service/insserv_service_spec.rb +5 -5
  541. data/spec/unit/provider/service/invokercd_service_spec.rb +10 -10
  542. data/spec/unit/provider/service/redhat_spec.rb +6 -6
  543. data/spec/unit/provider/service/simple_service_spec.rb +6 -6
  544. data/spec/unit/provider/service/solaris_smf_service_spec.rb +4 -4
  545. data/spec/unit/provider/service/systemd_service_spec.rb +3 -3
  546. data/spec/unit/provider/service/upstart_service_spec.rb +5 -5
  547. data/spec/unit/provider/service/windows_spec.rb +7 -7
  548. data/spec/unit/provider/subversion_spec.rb +1 -1
  549. data/spec/unit/provider/user/dscl_spec.rb +21 -21
  550. data/spec/unit/provider/user/pw_spec.rb +2 -2
  551. data/spec/unit/provider/user/windows_spec.rb +5 -5
  552. data/spec/unit/provider/user_spec.rb +39 -47
  553. data/spec/unit/resource/apt_package_spec.rb +6 -6
  554. data/spec/unit/resource/bash_spec.rb +5 -5
  555. data/spec/unit/resource/batch_spec.rb +7 -7
  556. data/spec/unit/resource/breakpoint_spec.rb +8 -8
  557. data/spec/unit/resource/chef_gem_spec.rb +6 -6
  558. data/spec/unit/resource/cookbook_file_spec.rb +11 -11
  559. data/spec/unit/resource/cron_spec.rb +15 -15
  560. data/spec/unit/resource/csh_spec.rb +5 -5
  561. data/spec/unit/resource/deploy_revision_spec.rb +6 -6
  562. data/spec/unit/resource/deploy_spec.rb +50 -36
  563. data/spec/unit/resource/directory_spec.rb +1 -1
  564. data/spec/unit/resource/dpkg_package_spec.rb +6 -6
  565. data/spec/unit/resource/env_spec.rb +1 -1
  566. data/spec/unit/resource/erl_call_spec.rb +1 -1
  567. data/spec/unit/resource/freebsd_package_spec.rb +6 -6
  568. data/spec/unit/resource/gem_package_spec.rb +6 -6
  569. data/spec/unit/resource/git_spec.rb +8 -8
  570. data/spec/unit/resource/group_spec.rb +11 -11
  571. data/spec/unit/resource/http_request_spec.rb +7 -7
  572. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  573. data/spec/unit/resource/ips_package_spec.rb +6 -6
  574. data/spec/unit/resource/link_spec.rb +1 -1
  575. data/spec/unit/resource/log_spec.rb +13 -10
  576. data/spec/unit/resource/macports_package_spec.rb +2 -2
  577. data/spec/unit/resource/mdadm_spec.rb +3 -3
  578. data/spec/unit/resource/mount_spec.rb +13 -13
  579. data/spec/unit/resource/ohai_spec.rb +1 -1
  580. data/spec/unit/resource/package_spec.rb +6 -6
  581. data/spec/unit/resource/pacman_package_spec.rb +6 -6
  582. data/spec/unit/resource/perl_spec.rb +5 -5
  583. data/spec/unit/resource/portage_package_spec.rb +6 -6
  584. data/spec/unit/resource/powershell_spec.rb +5 -5
  585. data/spec/unit/resource/python_spec.rb +5 -5
  586. data/spec/unit/resource/registry_key_spec.rb +2 -2
  587. data/spec/unit/resource/remote_directory_spec.rb +9 -9
  588. data/spec/unit/resource/remote_file_spec.rb +4 -4
  589. data/spec/unit/resource/route_spec.rb +13 -13
  590. data/spec/unit/resource/rpm_package_spec.rb +2 -2
  591. data/spec/unit/resource/ruby_block_spec.rb +4 -4
  592. data/spec/unit/resource/ruby_spec.rb +5 -5
  593. data/spec/unit/resource/scm_spec.rb +14 -1
  594. data/spec/unit/resource/script_spec.rb +5 -5
  595. data/spec/unit/resource/service_spec.rb +18 -18
  596. data/spec/unit/resource/smartos_package_spec.rb +6 -6
  597. data/spec/unit/resource/solaris_package_spec.rb +57 -0
  598. data/spec/unit/resource/subversion_spec.rb +6 -6
  599. data/spec/unit/resource/timestamped_deploy_spec.rb +4 -4
  600. data/spec/unit/resource/user_spec.rb +13 -13
  601. data/spec/unit/resource/yum_package_spec.rb +7 -7
  602. data/spec/unit/resource_collection/stepable_iterator_spec.rb +21 -21
  603. data/spec/unit/resource_definition_spec.rb +23 -23
  604. data/spec/unit/resource_reporter_spec.rb +27 -0
  605. data/spec/unit/rest/auth_credentials_spec.rb +0 -94
  606. data/spec/unit/rest_spec.rb +117 -99
  607. data/spec/unit/role_spec.rb +57 -4
  608. data/spec/unit/run_context/cookbook_compiler_spec.rb +4 -20
  609. data/spec/unit/run_context_spec.rb +44 -3
  610. data/spec/unit/run_list/run_list_item_spec.rb +1 -1
  611. data/spec/unit/run_lock_spec.rb +6 -3
  612. data/spec/unit/scan_access_control_spec.rb +2 -2
  613. data/spec/unit/search/query_spec.rb +3 -3
  614. data/spec/unit/util/backup_spec.rb +6 -13
  615. data/spec/unit/util/diff_spec.rb +36 -53
  616. data/spec/unit/version/platform_spec.rb +3 -3
  617. data/spec/unit/version_class_spec.rb +5 -5
  618. data/spec/unit/version_constraint/platform_spec.rb +2 -2
  619. data/spec/unit/windows_service_spec.rb +54 -0
  620. metadata +290 -108
  621. checksums.yaml +0 -7
  622. data/distro/common/man/man1/knife-index.1 +0 -29
  623. data/distro/common/man/man8/chef-expander.8 +0 -97
  624. data/distro/common/man/man8/chef-expanderctl.8 +0 -62
  625. data/distro/common/man/man8/chef-server-webui.8 +0 -155
  626. data/distro/common/man/man8/chef-server.8 +0 -147
  627. data/distro/common/man/man8/chef-solr.8 +0 -122
  628. data/lib/chef/chef_fs/raw_request.rb +0 -79
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,19 +19,19 @@
19
19
  require 'spec_helper'
20
20
 
21
21
  describe Chef::Resource::YumPackage, "initialize" do
22
-
22
+
23
23
  before(:each) do
24
24
  @resource = Chef::Resource::YumPackage.new("foo")
25
25
  end
26
-
26
+
27
27
  it "should return a Chef::Resource::YumPackage" do
28
28
  @resource.should be_a_kind_of(Chef::Resource::YumPackage)
29
29
  end
30
-
30
+
31
31
  it "should set the resource_name to :yum_package" do
32
32
  @resource.resource_name.should eql(:yum_package)
33
33
  end
34
-
34
+
35
35
  it "should set the provider to Chef::Provider::Package::Yum" do
36
36
  @resource.provider.should eql(Chef::Provider::Package::Yum)
37
37
  end
@@ -56,7 +56,7 @@ describe Chef::Resource::YumPackage, "flush_cache" do
56
56
  it "should default the flush timing to false" do
57
57
  flush_hash = { :before => false, :after => false }
58
58
  @resource.flush_cache.should == flush_hash
59
- end
59
+ end
60
60
 
61
61
  it "should allow you to set the flush timing with an array" do
62
62
  flush_array = [ :before, :after ]
@@ -5,9 +5,9 @@
5
5
  # Licensed under the Apache License, Version 2.0 (the "License");
6
6
  # you may not use this file except in compliance with the License.
7
7
  # You may obtain a copy of the License at
8
- #
8
+ #
9
9
  # http://www.apache.org/licenses/LICENSE-2.0
10
- #
10
+ #
11
11
  # Unless required by applicable law or agreed to in writing, software
12
12
  # distributed under the License is distributed on an "AS IS" BASIS,
13
13
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -19,17 +19,17 @@ require 'spec_helper'
19
19
 
20
20
  describe Chef::ResourceCollection::StepableIterator do
21
21
  CRSI = Chef::ResourceCollection::StepableIterator
22
-
22
+
23
23
  it "has an empty array for its collection by default" do
24
24
  CRSI.new.collection.should == []
25
25
  end
26
-
26
+
27
27
  describe "doing basic iteration" do
28
28
  before do
29
29
  @simple_collection = [1,2,3,4]
30
30
  @iterator = CRSI.for_collection(@simple_collection)
31
31
  end
32
-
32
+
33
33
  it "re-initializes the instance with a collection" do
34
34
  @iterator.collection.should equal(@simple_collection)
35
35
  @iterator.size.should == 4
@@ -51,7 +51,7 @@ describe Chef::ResourceCollection::StepableIterator do
51
51
  collected_by_index.should == @simple_collection
52
52
  collected_by_index.should_not equal(@simple_collection)
53
53
  end
54
-
54
+
55
55
  it "iterates over the collection with index and element" do
56
56
  collected = {}
57
57
  @iterator.each_with_index do |element, index|
@@ -59,32 +59,32 @@ describe Chef::ResourceCollection::StepableIterator do
59
59
  end
60
60
  collected.should == {0=>1, 1=>2, 2=>3, 3=>4}
61
61
  end
62
-
62
+
63
63
  end
64
-
64
+
65
65
  describe "pausing and resuming iteration" do
66
-
66
+
67
67
  before do
68
68
  @collection = []
69
69
  @snitch_var = nil
70
70
  @collection << lambda { @snitch_var = 23 }
71
71
  @collection << lambda { @iterator.pause }
72
72
  @collection << lambda { @snitch_var = 42 }
73
-
73
+
74
74
  @iterator = CRSI.for_collection(@collection)
75
75
  @iterator.each { |proc| proc.call }
76
76
  end
77
-
77
+
78
78
  it "allows the iteration to be paused" do
79
79
  @snitch_var.should == 23
80
80
  end
81
-
81
+
82
82
  it "allows the iteration to be resumed" do
83
83
  @snitch_var.should == 23
84
84
  @iterator.resume
85
85
  @snitch_var.should == 42
86
86
  end
87
-
87
+
88
88
  it "allows iteration to be rewound" do
89
89
  @iterator.skip_back(2)
90
90
  @iterator.resume
@@ -92,13 +92,13 @@ describe Chef::ResourceCollection::StepableIterator do
92
92
  @iterator.resume
93
93
  @snitch_var.should == 42
94
94
  end
95
-
95
+
96
96
  it "allows iteration to be fast forwarded" do
97
97
  @iterator.skip_forward
98
98
  @iterator.resume
99
99
  @snitch_var.should == 23
100
100
  end
101
-
101
+
102
102
  it "allows iteration to be rewound" do
103
103
  @snitch_var = nil
104
104
  @iterator.rewind
@@ -106,7 +106,7 @@ describe Chef::ResourceCollection::StepableIterator do
106
106
  @iterator.resume
107
107
  @snitch_var.should == 23
108
108
  end
109
-
109
+
110
110
  it "allows iteration to be stepped" do
111
111
  @snitch_var = nil
112
112
  @iterator.rewind
@@ -114,13 +114,13 @@ describe Chef::ResourceCollection::StepableIterator do
114
114
  @iterator.position.should == 1
115
115
  @snitch_var.should == 23
116
116
  end
117
-
117
+
118
118
  it "doesn't step if there are no more steps" do
119
119
  @iterator.step.should == 3
120
120
  lambda {@iterator.step}.should_not raise_error
121
121
  @iterator.step.should be_nil
122
122
  end
123
-
123
+
124
124
  it "allows the iteration to start by being stepped" do
125
125
  @snitch_var = nil
126
126
  @iterator = CRSI.for_collection(@collection)
@@ -129,7 +129,7 @@ describe Chef::ResourceCollection::StepableIterator do
129
129
  @iterator.position.should == 1
130
130
  @snitch_var.should == 23
131
131
  end
132
-
132
+
133
133
  it "should work correctly when elements are added to the collection during iteration" do
134
134
  @collection.insert(2, lambda { @snitch_var = 815})
135
135
  @collection.insert(3, lambda { @iterator.pause })
@@ -138,7 +138,7 @@ describe Chef::ResourceCollection::StepableIterator do
138
138
  @iterator.resume
139
139
  @snitch_var.should == 42
140
140
  end
141
-
141
+
142
142
  end
143
-
143
+
144
144
  end
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -22,16 +22,16 @@ describe Chef::ResourceDefinition do
22
22
  before(:each) do
23
23
  @def = Chef::ResourceDefinition.new()
24
24
  end
25
-
25
+
26
26
  describe "initialize" do
27
27
  it "should be a Chef::ResourceDefinition" do
28
28
  @def.should be_a_kind_of(Chef::ResourceDefinition)
29
29
  end
30
-
30
+
31
31
  it "should not initialize a new node if one is not provided" do
32
32
  @def.node.should eql(nil)
33
33
  end
34
-
34
+
35
35
  it "should accept a node as an argument" do
36
36
  node = Chef::Node.new
37
37
  node.name("bobo")
@@ -39,7 +39,7 @@ describe Chef::ResourceDefinition do
39
39
  @def.node.name.should == "bobo"
40
40
  end
41
41
  end
42
-
42
+
43
43
  describe "node" do
44
44
  it "should set the node with node=" do
45
45
  node = Chef::Node.new
@@ -47,32 +47,32 @@ describe Chef::ResourceDefinition do
47
47
  @def.node = node
48
48
  @def.node.name.should == "bobo"
49
49
  end
50
-
50
+
51
51
  it "should return the node" do
52
52
  @def.node = Chef::Node.new
53
53
  @def.node.should be_a_kind_of(Chef::Node)
54
54
  end
55
55
  end
56
-
56
+
57
57
  it "should accept a new definition with a symbol for a name" do
58
- lambda {
59
- @def.define :smoke do
58
+ lambda {
59
+ @def.define :smoke do
60
60
  end
61
61
  }.should_not raise_error(ArgumentError)
62
- lambda {
62
+ lambda {
63
63
  @def.define "george washington" do
64
- end
64
+ end
65
65
  }.should raise_error(ArgumentError)
66
66
  @def.name.should eql(:smoke)
67
67
  end
68
-
68
+
69
69
  it "should accept a new definition with a hash" do
70
- lambda {
70
+ lambda {
71
71
  @def.define :smoke, :cigar => "cuban", :cigarette => "marlboro" do
72
72
  end
73
73
  }.should_not raise_error(ArgumentError)
74
74
  end
75
-
75
+
76
76
  it "should expose the prototype hash params in the params hash" do
77
77
  @def.define :smoke, :cigar => "cuban", :cigarette => "marlboro" do; end
78
78
  @def.params[:cigar].should eql("cuban")
@@ -86,34 +86,34 @@ describe Chef::ResourceDefinition do
86
86
  @def.recipe.should be_a_kind_of(Proc)
87
87
  @def.recipe.call.should eql("I am what I am")
88
88
  end
89
-
89
+
90
90
  it "should set paramaters based on method_missing" do
91
91
  @def.mind "to fly"
92
92
  @def.params[:mind].should eql("to fly")
93
93
  end
94
-
94
+
95
95
  it "should raise an exception if prototype_params is not a hash" do
96
96
  lambda {
97
97
  @def.define :monkey, Array.new do
98
98
  end
99
99
  }.should raise_error(ArgumentError)
100
100
  end
101
-
101
+
102
102
  it "should raise an exception if define is called without a block" do
103
- lambda {
103
+ lambda {
104
104
  @def.define :monkey
105
105
  }.should raise_error(ArgumentError)
106
106
  end
107
-
107
+
108
108
  it "should load a description from a file" do
109
109
  @def.from_file(File.join(CHEF_SPEC_DATA, "definitions", "test.rb"))
110
110
  @def.name.should eql(:rico_suave)
111
111
  @def.params[:rich].should eql("smooth")
112
- end
113
-
112
+ end
113
+
114
114
  it "should turn itself into a string based on the name with to_s" do
115
115
  @def.name = :woot
116
116
  @def.to_s.should eql("woot")
117
117
  end
118
-
118
+
119
119
  end
@@ -464,6 +464,33 @@ describe Chef::ResourceReporter do
464
464
  end
465
465
  end
466
466
 
467
+ context "when including a resource that overrides Resource#state" do
468
+ before do
469
+ @current_state_resource = Chef::Resource::WithState.new("Stateful", @run_context)
470
+ @current_state_resource.state = nil
471
+
472
+ @new_state_resource = Chef::Resource::WithState.new("Stateful", @run_context)
473
+ @new_state_resource.state = "Running"
474
+ @resource_reporter.resource_action_start(@new_state_resource, :create)
475
+ @resource_reporter.resource_current_state_loaded(@new_state_resource, :create, @current_state_resource)
476
+ @resource_reporter.resource_updated(@new_state_resource, :create)
477
+ @resource_reporter.resource_completed(@new_state_resource)
478
+ @run_status.stop_clock
479
+ @report = @resource_reporter.prepare_run_data
480
+ @first_update_report = @report["resources"].first
481
+ end
482
+
483
+ it "sets before to {} instead of nil" do
484
+ @first_update_report.should have_key("before")
485
+ @first_update_report['before'].should eq({})
486
+ end
487
+
488
+ it "sets after to {} instead of 'Running'" do
489
+ @first_update_report.should have_key("after")
490
+ @first_update_report['after'].should eq({})
491
+ end
492
+ end
493
+
467
494
  end
468
495
 
469
496
  describe "when updating resource history on the server" do
@@ -199,100 +199,6 @@ describe Chef::REST::RESTRequest do
199
199
  new_request.http_client.read_timeout.should == 9001
200
200
  end
201
201
 
202
- describe "for SSL" do
203
- before do
204
- Chef::Config[:ssl_client_cert] = nil
205
- Chef::Config[:ssl_client_key] = nil
206
- Chef::Config[:ssl_ca_path] = nil
207
- Chef::Config[:ssl_ca_file] = nil
208
- end
209
-
210
- after do
211
- Chef::Config[:ssl_client_cert] = nil
212
- Chef::Config[:ssl_client_key] = nil
213
- Chef::Config[:ssl_ca_path] = nil
214
- Chef::Config[:ssl_verify_mode] = :verify_none
215
- Chef::Config[:ssl_ca_file] = nil
216
- end
217
-
218
- describe "when configured with :ssl_verify_mode set to :verify peer" do
219
- before do
220
- @url = URI.parse("https://chef.example.com:4443/")
221
- Chef::Config[:ssl_verify_mode] = :verify_peer
222
- @request = new_request
223
- end
224
-
225
- it "configures the HTTP client to use SSL when given a URL with the https protocol" do
226
- @request.http_client.use_ssl?.should be_true
227
- end
228
-
229
- it "sets the OpenSSL verify mode to verify_peer" do
230
- @request.http_client.verify_mode.should == OpenSSL::SSL::VERIFY_PEER
231
- end
232
-
233
- it "raises a ConfigurationError if :ssl_ca_path is set to a path that doesn't exist" do
234
- Chef::Config[:ssl_ca_path] = "/dev/null/nothing_here"
235
- lambda {new_request}.should raise_error(Chef::Exceptions::ConfigurationError)
236
- end
237
-
238
- it "should set the CA path if that is set in the configuration" do
239
- Chef::Config[:ssl_ca_path] = File.join(CHEF_SPEC_DATA, "ssl")
240
- new_request.http_client.ca_path.should == File.join(CHEF_SPEC_DATA, "ssl")
241
- end
242
-
243
- it "raises a ConfigurationError if :ssl_ca_file is set to a file that does not exist" do
244
- Chef::Config[:ssl_ca_file] = "/dev/null/nothing_here"
245
- lambda {new_request}.should raise_error(Chef::Exceptions::ConfigurationError)
246
- end
247
-
248
- it "should set the CA file if that is set in the configuration" do
249
- Chef::Config[:ssl_ca_file] = CHEF_SPEC_DATA + '/ssl/5e707473.0'
250
- new_request.http_client.ca_file.should == CHEF_SPEC_DATA + '/ssl/5e707473.0'
251
- end
252
- end
253
-
254
- describe "when configured with :ssl_verify_mode set to :verify peer" do
255
- before do
256
- @url = URI.parse("https://chef.example.com:4443/")
257
- Chef::Config[:ssl_verify_mode] = :verify_none
258
- end
259
-
260
- it "sets the OpenSSL verify mode to :verify_none" do
261
- new_request.http_client.verify_mode.should == OpenSSL::SSL::VERIFY_NONE
262
- end
263
- end
264
-
265
- describe "when configured with a client certificate" do
266
- before {@url = URI.parse("https://chef.example.com:4443/")}
267
-
268
- it "raises ConfigurationError if the certificate file doesn't exist" do
269
- Chef::Config[:ssl_client_cert] = "/dev/null/nothing_here"
270
- Chef::Config[:ssl_client_key] = CHEF_SPEC_DATA + '/ssl/chef-rspec.key'
271
- lambda {new_request}.should raise_error(Chef::Exceptions::ConfigurationError)
272
- end
273
-
274
- it "raises ConfigurationError if the certificate file doesn't exist" do
275
- Chef::Config[:ssl_client_cert] = CHEF_SPEC_DATA + '/ssl/chef-rspec.cert'
276
- Chef::Config[:ssl_client_key] = "/dev/null/nothing_here"
277
- lambda {new_request}.should raise_error(Chef::Exceptions::ConfigurationError)
278
- end
279
-
280
- it "raises a ConfigurationError if one of :ssl_client_cert and :ssl_client_key is set but not both" do
281
- Chef::Config[:ssl_client_cert] = "/dev/null/nothing_here"
282
- Chef::Config[:ssl_client_key] = nil
283
- lambda {new_request}.should raise_error(Chef::Exceptions::ConfigurationError)
284
- end
285
-
286
- it "configures the HTTP client's cert and private key" do
287
- Chef::Config[:ssl_client_cert] = CHEF_SPEC_DATA + '/ssl/chef-rspec.cert'
288
- Chef::Config[:ssl_client_key] = CHEF_SPEC_DATA + '/ssl/chef-rspec.key'
289
- http_client = new_request.http_client
290
- http_client.cert.to_s.should == OpenSSL::X509::Certificate.new(IO.read(CHEF_SPEC_DATA + '/ssl/chef-rspec.cert')).to_s
291
- http_client.key.to_s.should == IO.read(CHEF_SPEC_DATA + '/ssl/chef-rspec.key')
292
- end
293
- end
294
- end
295
-
296
202
  describe "for proxy" do
297
203
  before do
298
204
  Chef::Config[:http_proxy] = "http://proxy.example.com:3128"
@@ -57,7 +57,7 @@ describe Chef::REST do
57
57
  @log_stringio = StringIO.new
58
58
  Chef::Log.init(@log_stringio)
59
59
 
60
- Chef::REST::CookieJar.stub!(:instance).and_return({})
60
+ Chef::REST::CookieJar.stub(:instance).and_return({})
61
61
  @base_url = "http://chef.example.com:4000"
62
62
  @monkey_uri = URI.parse("http://chef.example.com:4000/monkey")
63
63
  @rest = Chef::REST.new(@base_url, nil, nil)
@@ -65,6 +65,13 @@ describe Chef::REST do
65
65
  Chef::REST::CookieJar.instance.clear
66
66
  end
67
67
 
68
+ describe "legacy API" do
69
+ it 'responds to raw_http_request as a public method' do
70
+ @rest.public_methods.map(&:to_s).should include("raw_http_request")
71
+ end
72
+
73
+ end
74
+
68
75
 
69
76
  describe "calling an HTTP verb on a path or absolute URL" do
70
77
  it "adds a relative URL to the base url it was initialized with" do
@@ -76,27 +83,46 @@ describe Chef::REST do
76
83
  end
77
84
 
78
85
  it "makes a :GET request with the composed url object" do
79
- @rest.should_receive(:api_request).with(:GET, @monkey_uri, {})
86
+ @rest.should_receive(:send_http_request).
87
+ with(:GET, @monkey_uri, STANDARD_READ_HEADERS, false).
88
+ and_return([1,2,3])
89
+ @rest.should_receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
90
+ @rest.should_receive('success_response?'.to_sym).with(1).and_return(true)
80
91
  @rest.get_rest("monkey")
81
92
  end
82
93
 
83
94
  it "makes a :GET reqest for a streaming download with the composed url" do
84
- @rest.should_receive(:streaming_request).with(@monkey_uri, {})
95
+ @rest.should_receive(:streaming_request).with('monkey', {})
85
96
  @rest.get_rest("monkey", true)
86
97
  end
87
98
 
88
- it "makes a :DELETE request with the composed url object" do
89
- @rest.should_receive(:api_request).with(:DELETE, @monkey_uri, {})
99
+ STANDARD_READ_HEADERS = {"Accept"=>"application/json", "Accept"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3"}
100
+ STANDARD_WRITE_HEADERS = {"Accept"=>"application/json", "Content-Type"=>"application/json", "Accept"=>"application/json", "Accept-Encoding"=>"gzip;q=1.0,deflate;q=0.6,identity;q=0.3"}
101
+
102
+ it "makes a :DELETE request with the composed url object" do
103
+ @rest.should_receive(:send_http_request).
104
+ with(:DELETE, @monkey_uri, STANDARD_READ_HEADERS, false).
105
+ and_return([1,2,3])
106
+ @rest.should_receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
107
+ @rest.should_receive('success_response?'.to_sym).with(1).and_return(true)
90
108
  @rest.delete_rest("monkey")
91
109
  end
92
110
 
93
111
  it "makes a :POST request with the composed url object and data" do
94
- @rest.should_receive(:api_request).with(:POST, @monkey_uri, {}, "data")
112
+ @rest.should_receive(:send_http_request).
113
+ with(:POST, @monkey_uri, STANDARD_WRITE_HEADERS, "\"data\"").
114
+ and_return([1,2,3])
115
+ @rest.should_receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
116
+ @rest.should_receive('success_response?'.to_sym).with(1).and_return(true)
95
117
  @rest.post_rest("monkey", "data")
96
118
  end
97
119
 
98
120
  it "makes a :PUT request with the composed url object and data" do
99
- @rest.should_receive(:api_request).with(:PUT, @monkey_uri, {}, "data")
121
+ @rest.should_receive(:send_http_request).
122
+ with(:PUT, @monkey_uri, STANDARD_WRITE_HEADERS, "\"data\"").
123
+ and_return([1,2,3])
124
+ @rest.should_receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
125
+ @rest.should_receive('success_response?'.to_sym).with(1).and_return(true)
100
126
  @rest.put_rest("monkey", "data")
101
127
  end
102
128
  end
@@ -156,13 +182,13 @@ describe Chef::REST do
156
182
  @url = URI.parse("https://one:80/?foo=bar")
157
183
 
158
184
  @http_response = Net::HTTPSuccess.new("1.1", "200", "successful rest req")
159
- @http_response.stub!(:read_body)
160
- @http_response.stub!(:body).and_return("ninja")
185
+ @http_response.stub(:read_body)
186
+ @http_response.stub(:body).and_return("ninja")
161
187
  @http_response.add_field("Content-Length", "5")
162
188
 
163
189
  @http_client = Net::HTTP.new(@url.host, @url.port)
164
- Net::HTTP.stub!(:new).and_return(@http_client)
165
- @http_client.stub!(:request).and_yield(@http_response).and_return(@http_response)
190
+ Net::HTTP.stub(:new).and_return(@http_client)
191
+ @http_client.stub(:request).and_yield(@http_response).and_return(@http_response)
166
192
 
167
193
  @base_headers = { 'Accept' => 'application/json',
168
194
  'X-Chef-Version' => Chef::VERSION,
@@ -172,23 +198,18 @@ describe Chef::REST do
172
198
 
173
199
  describe "streaming downloads to a tempfile" do
174
200
  before do
175
- @tempfile = Tempfile.open("chef-rspec-rest_spec-line-#{__LINE__}--")
176
- Tempfile.stub!(:new).with("chef-rest").and_return(@tempfile)
177
- Tempfile.stub!(:open).and_return(@tempfile)
201
+ @tempfile = StringIO.new
202
+ @tempfile.stub(:close!)
203
+ @tempfile.stub(:path).and_return("/a-temporary-file")
204
+ Tempfile.stub(:new).with("chef-rest").and_return(@tempfile)
205
+ Tempfile.stub(:open).and_return(@tempfile)
178
206
 
179
207
  @request_mock = {}
180
- Net::HTTP::Get.stub!(:new).and_return(@request_mock)
181
-
182
- @http_response_mock = mock("Net::HTTP Response mock")
183
- end
184
-
185
- after do
186
- @tempfile.rspec_reset
187
- @tempfile.close!
208
+ Net::HTTP::Get.stub(:new).and_return(@request_mock)
188
209
  end
189
210
 
190
211
  it "should build a new HTTP GET request without the application/json accept header" do
191
- expected_headers = {'X-Chef-Version' => Chef::VERSION, 'Accept-Encoding' => Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE}
212
+ expected_headers = {'Accept' => "*/*", 'X-Chef-Version' => Chef::VERSION, 'Accept-Encoding' => Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE}
192
213
  Net::HTTP::Get.should_receive(:new).with("/?foo=bar", expected_headers).and_return(@request_mock)
193
214
  @rest.streaming_request(@url, {})
194
215
  end
@@ -203,9 +224,9 @@ describe Chef::REST do
203
224
  end
204
225
 
205
226
  it "should populate the tempfile with the value of the raw request" do
206
- @http_response_mock.stub!(:read_body).and_yield("ninja")
207
- @tempfile.should_receive(:write).with("ninja").once.and_return(true)
227
+ @http_response.should_receive(:read_body).and_yield("ninja")
208
228
  @rest.streaming_request(@url, {})
229
+ #@tempfile.string.should include("ninja")
209
230
  end
210
231
 
211
232
  it "should close the tempfile if we're doing a raw request" do
@@ -214,15 +235,15 @@ describe Chef::REST do
214
235
  end
215
236
 
216
237
  it "should not raise a divide by zero exception if the size is 0" do
217
- @http_response_mock.stub!(:header).and_return({ 'Content-Length' => "5" })
218
- @http_response_mock.stub!(:read_body).and_yield('')
219
- lambda { @rest.streaming_request(@url, {}) }.should_not raise_error(ZeroDivisionError)
238
+ @http_response.stub(:header).and_return({ 'Content-Length' => "5" })
239
+ @http_response.stub(:read_body).and_yield('')
240
+ lambda { @rest.streaming_request(@url, {}) }.should_not raise_error
220
241
  end
221
242
 
222
243
  it "should not raise a divide by zero exception if the Content-Length is 0" do
223
- @http_response_mock.stub!(:header).and_return({ 'Content-Length' => "0" })
224
- @http_response_mock.stub!(:read_body).and_yield("ninja")
225
- lambda { @rest.streaming_request(@url, {}) }.should_not raise_error(ZeroDivisionError)
244
+ @http_response.stub(:header).and_return({ 'Content-Length' => "0" })
245
+ @http_response.stub(:read_body).and_yield("ninja")
246
+ lambda { @rest.streaming_request(@url, {}) }.should_not raise_error
226
247
  end
227
248
 
228
249
  end
@@ -230,7 +251,7 @@ describe Chef::REST do
230
251
  describe "as JSON API requests" do
231
252
  before do
232
253
  @request_mock = {}
233
- Net::HTTP::Get.stub!(:new).and_return(@request_mock)
254
+ Net::HTTP::Get.stub(:new).and_return(@request_mock)
234
255
 
235
256
  @base_headers = {"Accept" => "application/json",
236
257
  "X-Chef-Version" => Chef::VERSION,
@@ -240,14 +261,14 @@ describe Chef::REST do
240
261
 
241
262
  it "should always include the X-Chef-Version header" do
242
263
  Net::HTTP::Get.should_receive(:new).with("/?foo=bar", @base_headers).and_return(@request_mock)
243
- @rest.api_request(:GET, @url, {})
264
+ @rest.request(:GET, @url, {})
244
265
  end
245
266
 
246
267
  it "sets the user agent to chef-client" do
247
268
  # must reset to default b/c knife changes the UA
248
269
  Chef::REST::RESTRequest.user_agent = Chef::REST::RESTRequest::DEFAULT_UA
249
- @rest.api_request(:GET, @url, {})
250
- @request_mock['User-Agent'].should match /^Chef Client\/#{Chef::VERSION}/
270
+ @rest.request(:GET, @url, {})
271
+ @request_mock['User-Agent'].should match(/^Chef Client\/#{Chef::VERSION}/)
251
272
  end
252
273
 
253
274
  # CHEF-3140
@@ -265,7 +286,7 @@ describe Chef::REST do
265
286
  request = Net::HTTP::Get.new(@url.path)
266
287
  Net::HTTP::Get.should_receive(:new).and_return(request)
267
288
  # will raise a Zlib error if incorrect
268
- @rest.api_request(:GET, @url, {}).should == "ninja"
289
+ @rest.request(:GET, @url, {}).should == "ninja"
269
290
  end
270
291
  end
271
292
  context "when configured with custom http headers" do
@@ -285,19 +306,19 @@ describe Chef::REST do
285
306
  url_string = an_instance_of(String)
286
307
  header_hash = hash_including(@custom_headers)
287
308
  Net::HTTP::Get.should_receive(:new).with(url_string, header_hash)
288
- @rest.api_request(:GET, @url, {})
309
+ @rest.request(:GET, @url, {})
289
310
  end
290
311
  end
291
312
 
292
313
  it "should set the cookie for this request if one exists for the given host:port" do
293
314
  Chef::REST::CookieJar.instance["#{@url.host}:#{@url.port}"] = "cookie monster"
294
315
  Net::HTTP::Get.should_receive(:new).with("/?foo=bar", @base_headers.merge('Cookie' => "cookie monster")).and_return(@request_mock)
295
- @rest.api_request(:GET, @url, {})
316
+ @rest.request(:GET, @url, {})
296
317
  end
297
318
 
298
319
  it "should build a new HTTP GET request" do
299
320
  Net::HTTP::Get.should_receive(:new).with("/?foo=bar", @base_headers).and_return(@request_mock)
300
- @rest.api_request(:GET, @url, {})
321
+ @rest.request(:GET, @url, {})
301
322
  end
302
323
 
303
324
  it "should build a new HTTP POST request" do
@@ -305,7 +326,7 @@ describe Chef::REST do
305
326
  expected_headers = @base_headers.merge("Content-Type" => 'application/json', 'Content-Length' => '13')
306
327
 
307
328
  Net::HTTP::Post.should_receive(:new).with("/?foo=bar", expected_headers).and_return(request)
308
- @rest.api_request(:POST, @url, {}, {:one=>:two})
329
+ @rest.request(:POST, @url, {}, {:one=>:two})
309
330
  request.body.should == '{"one":"two"}'
310
331
  end
311
332
 
@@ -313,54 +334,54 @@ describe Chef::REST do
313
334
  request = Net::HTTP::Put.new(@url.path)
314
335
  expected_headers = @base_headers.merge("Content-Type" => 'application/json', 'Content-Length' => '13')
315
336
  Net::HTTP::Put.should_receive(:new).with("/?foo=bar",expected_headers).and_return(request)
316
- @rest.api_request(:PUT, @url, {}, {:one=>:two})
337
+ @rest.request(:PUT, @url, {}, {:one=>:two})
317
338
  request.body.should == '{"one":"two"}'
318
339
  end
319
340
 
320
341
  it "should build a new HTTP DELETE request" do
321
342
  Net::HTTP::Delete.should_receive(:new).with("/?foo=bar", @base_headers).and_return(@request_mock)
322
- @rest.api_request(:DELETE, @url)
343
+ @rest.request(:DELETE, @url)
323
344
  end
324
345
 
325
346
  it "should raise an error if the method is not GET/PUT/POST/DELETE" do
326
- lambda { @rest.api_request(:MONKEY, @url) }.should raise_error(ArgumentError)
347
+ lambda { @rest.request(:MONKEY, @url) }.should raise_error(ArgumentError)
327
348
  end
328
349
 
329
350
  it "returns nil when the response is successful but content-type is not JSON" do
330
- @rest.api_request(:GET, @url).should == "ninja"
351
+ @rest.request(:GET, @url).should == "ninja"
331
352
  end
332
353
 
333
354
  it "should inflate the body as to an object if JSON is returned" do
334
355
  @http_response.add_field('content-type', "application/json")
335
- @http_response.stub!(:body).and_return('{"ohai2u":"json_api"}')
336
- @rest.api_request(:GET, @url, {}).should == {"ohai2u"=>"json_api"}
356
+ @http_response.stub(:body).and_return('{"ohai2u":"json_api"}')
357
+ @rest.request(:GET, @url, {}).should == {"ohai2u"=>"json_api"}
337
358
  end
338
359
 
339
360
  %w[ HTTPFound HTTPMovedPermanently HTTPSeeOther HTTPUseProxy HTTPTemporaryRedirect HTTPMultipleChoice ].each do |resp_name|
340
- it "should call api_request again on a #{resp_name} response" do
361
+ it "should call request again on a #{resp_name} response" do
341
362
  resp_cls = Net.const_get(resp_name)
342
363
  resp_code = Net::HTTPResponse::CODE_TO_OBJ.keys.detect { |k| Net::HTTPResponse::CODE_TO_OBJ[k] == resp_cls }
343
364
  http_response = Net::HTTPFound.new("1.1", resp_code, "bob is somewhere else again")
344
365
  http_response.add_field("location", @url.path)
345
- http_response.stub!(:read_body)
366
+ http_response.stub(:read_body)
346
367
 
347
- @http_client.stub!(:request).and_yield(http_response).and_return(http_response)
368
+ @http_client.stub(:request).and_yield(http_response).and_return(http_response)
348
369
 
349
- lambda { @rest.api_request(:GET, @url) }.should raise_error(Chef::Exceptions::RedirectLimitExceeded)
370
+ lambda { @rest.request(:GET, @url) }.should raise_error(Chef::Exceptions::RedirectLimitExceeded)
350
371
 
351
372
  [:PUT, :POST, :DELETE].each do |method|
352
- lambda { @rest.api_request(method, @url) }.should raise_error(Chef::Exceptions::InvalidRedirect)
373
+ lambda { @rest.request(method, @url) }.should raise_error(Chef::Exceptions::InvalidRedirect)
353
374
  end
354
375
  end
355
376
  end
356
377
 
357
378
  it "should return `false` when response is 304 NotModified" do
358
379
  http_response = Net::HTTPNotModified.new("1.1", "304", "it's the same as when you asked 5 minutes ago")
359
- http_response.stub!(:read_body)
380
+ http_response.stub(:read_body)
360
381
 
361
- @http_client.stub!(:request).and_yield(http_response).and_return(http_response)
382
+ @http_client.stub(:request).and_yield(http_response).and_return(http_response)
362
383
 
363
- @rest.api_request(:GET, @url).should be_false
384
+ @rest.request(:GET, @url).should be_false
364
385
  end
365
386
 
366
387
  describe "when the request fails" do
@@ -376,12 +397,12 @@ describe Chef::REST do
376
397
  it "should show the JSON error message on an unsuccessful request" do
377
398
  http_response = Net::HTTPServerError.new("1.1", "500", "drooling from inside of mouth")
378
399
  http_response.add_field("content-type", "application/json")
379
- http_response.stub!(:body).and_return('{ "error":[ "Ears get sore!", "Not even four" ] }')
380
- http_response.stub!(:read_body)
381
- @rest.stub!(:sleep)
382
- @http_client.stub!(:request).and_yield(http_response).and_return(http_response)
400
+ http_response.stub(:body).and_return('{ "error":[ "Ears get sore!", "Not even four" ] }')
401
+ http_response.stub(:read_body)
402
+ @rest.stub(:sleep)
403
+ @http_client.stub(:request).and_yield(http_response).and_return(http_response)
383
404
 
384
- lambda {@rest.api_request(:GET, @url)}.should raise_error(Net::HTTPFatalError)
405
+ lambda {@rest.request(:GET, @url)}.should raise_error(Net::HTTPFatalError)
385
406
  @log_stringio.string.should match(Regexp.escape('INFO: HTTP Request Returned 500 drooling from inside of mouth: Ears get sore!, Not even four'))
386
407
  end
387
408
 
@@ -393,23 +414,23 @@ describe Chef::REST do
393
414
  gzipped_body = Zlib::Deflate.deflate(unzipped_body)
394
415
  gzipped_body.force_encoding(Encoding::BINARY) if "strings".respond_to?(:force_encoding)
395
416
 
396
- http_response.stub!(:body).and_return gzipped_body
397
- http_response.stub!(:read_body)
398
- @rest.stub!(:sleep)
399
- @rest.stub!(:http_retry_count).and_return(0)
400
- @http_client.stub!(:request).and_yield(http_response).and_return(http_response)
417
+ http_response.stub(:body).and_return gzipped_body
418
+ http_response.stub(:read_body)
419
+ @rest.stub(:sleep)
420
+ @rest.stub(:http_retry_count).and_return(0)
421
+ @http_client.stub(:request).and_yield(http_response).and_return(http_response)
401
422
 
402
- lambda {@rest.api_request(:GET, @url)}.should raise_error(Net::HTTPFatalError)
423
+ lambda {@rest.request(:GET, @url)}.should raise_error(Net::HTTPFatalError)
403
424
  @log_stringio.string.should match(Regexp.escape('INFO: HTTP Request Returned 500 drooling from inside of mouth: Ears get sore!, Not even four'))
404
425
  end
405
426
 
406
427
  it "should raise an exception on an unsuccessful request" do
407
428
  http_response = Net::HTTPServerError.new("1.1", "500", "drooling from inside of mouth")
408
- http_response.stub!(:body)
409
- http_response.stub!(:read_body)
410
- @rest.stub!(:sleep)
411
- @http_client.stub!(:request).and_yield(http_response).and_return(http_response)
412
- lambda {@rest.api_request(:GET, @url)}.should raise_error(Net::HTTPFatalError)
429
+ http_response.stub(:body)
430
+ http_response.stub(:read_body)
431
+ @rest.stub(:sleep)
432
+ @http_client.stub(:request).and_yield(http_response).and_return(http_response)
433
+ lambda {@rest.request(:GET, @url)}.should raise_error(Net::HTTPFatalError)
413
434
  end
414
435
  end
415
436
 
@@ -419,22 +440,21 @@ describe Chef::REST do
419
440
  context "when streaming downloads to a tempfile" do
420
441
  before do
421
442
  @tempfile = Tempfile.open("chef-rspec-rest_spec-line-#{__LINE__}--")
422
- Tempfile.stub!(:new).with("chef-rest").and_return(@tempfile)
443
+ Tempfile.stub(:new).with("chef-rest").and_return(@tempfile)
423
444
  @request_mock = {}
424
- Net::HTTP::Get.stub!(:new).and_return(@request_mock)
445
+ Net::HTTP::Get.stub(:new).and_return(@request_mock)
425
446
 
426
447
  @http_response = Net::HTTPSuccess.new("1.1",200, "it-works")
427
- @http_response.stub!(:read_body)
428
- @http_client.stub!(:request).and_yield(@http_response).and_return(@http_response)
448
+ @http_response.stub(:read_body)
449
+ @http_client.stub(:request).and_yield(@http_response).and_return(@http_response)
429
450
  end
430
451
 
431
452
  after do
432
- @tempfile.rspec_reset
433
453
  @tempfile.close!
434
454
  end
435
455
 
436
456
  it " build a new HTTP GET request without the application/json accept header" do
437
- expected_headers = {'X-Chef-Version' => Chef::VERSION, 'Accept-Encoding' => Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE}
457
+ expected_headers = {'Accept' => "*/*", 'X-Chef-Version' => Chef::VERSION, 'Accept-Encoding' => Chef::REST::RESTRequest::ENCODING_GZIP_DEFLATE}
438
458
  Net::HTTP::Get.should_receive(:new).with("/?foo=bar", expected_headers).and_return(@request_mock)
439
459
  @rest.streaming_request(@url, {})
440
460
  end
@@ -444,7 +464,7 @@ describe Chef::REST do
444
464
  end
445
465
 
446
466
  it "writes the response body to a tempfile" do
447
- @http_response.stub!(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
467
+ @http_response.stub(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
448
468
  @rest.streaming_request(@url, {})
449
469
  IO.read(@tempfile.path).chomp.should == "realultimatepower"
450
470
  end
@@ -455,7 +475,7 @@ describe Chef::REST do
455
475
  end
456
476
 
457
477
  it "yields the tempfile containing the streamed response body and then unlinks it when given a block" do
458
- @http_response.stub!(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
478
+ @http_response.stub(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
459
479
  tempfile_path = nil
460
480
  @rest.streaming_request(@url, {}) do |tempfile|
461
481
  tempfile_path = tempfile.path
@@ -467,18 +487,18 @@ describe Chef::REST do
467
487
 
468
488
  it "does not raise a divide by zero exception if the content's actual size is 0" do
469
489
  @http_response.add_field('Content-Length', "5")
470
- @http_response.stub!(:read_body).and_yield('')
471
- lambda { @rest.streaming_request(@url, {}) }.should_not raise_error(ZeroDivisionError)
490
+ @http_response.stub(:read_body).and_yield('')
491
+ lambda { @rest.streaming_request(@url, {}) }.should_not raise_error
472
492
  end
473
493
 
474
494
  it "does not raise a divide by zero exception when the Content-Length is 0" do
475
495
  @http_response.add_field('Content-Length', "0")
476
- @http_response.stub!(:read_body).and_yield("ninja")
477
- lambda { @rest.streaming_request(@url, {}) }.should_not raise_error(ZeroDivisionError)
496
+ @http_response.stub(:read_body).and_yield("ninja")
497
+ lambda { @rest.streaming_request(@url, {}) }.should_not raise_error
478
498
  end
479
499
 
480
500
  it "fetches a file and yields the tempfile it is streamed to" do
481
- @http_response.stub!(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
501
+ @http_response.stub(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
482
502
  tempfile_path = nil
483
503
  @rest.fetch("cookbooks/a_cookbook") do |tempfile|
484
504
  tempfile_path = tempfile.path
@@ -490,34 +510,32 @@ describe Chef::REST do
490
510
  it "closes and unlinks the tempfile if there is an error while streaming the content to the tempfile" do
491
511
  path = @tempfile.path
492
512
  path.should_not be_nil
493
- @tempfile.stub!(:write).and_raise(IOError)
513
+ @tempfile.stub(:write).and_raise(IOError)
494
514
  @rest.fetch("cookbooks/a_cookbook") {|tmpfile| "shouldn't get here"}
495
515
  File.exists?(path).should be_false
496
516
  end
497
517
 
498
518
  it "closes and unlinks the tempfile when the response is a redirect" do
499
- Tempfile.rspec_reset
500
- tempfile = mock("die", :path => "/tmp/ragefist", :close => true, :binmode => true)
501
- tempfile.should_receive(:close!).at_least(2).times
502
- Tempfile.stub!(:new).with("chef-rest").and_return(tempfile)
519
+ tempfile = double("A tempfile", :path => "/tmp/ragefist", :close => true, :binmode => true)
520
+ tempfile.should_receive(:close!).at_least(1).times
521
+ Tempfile.stub(:new).with("chef-rest").and_return(tempfile)
503
522
 
504
- http_response = Net::HTTPFound.new("1.1", "302", "bob is taking care of that one for me today")
505
- http_response.add_field("location", @url.path)
506
- http_response.stub!(:read_body)
523
+ redirect = Net::HTTPFound.new("1.1", "302", "bob is taking care of that one for me today")
524
+ redirect.add_field("location", @url.path)
525
+ redirect.stub(:read_body)
507
526
 
508
- @http_client.stub!(:request).and_yield(http_response).and_yield(@http_response).and_return(http_response, @http_response)
527
+ @http_client.should_receive(:request).and_yield(redirect).and_return(redirect)
528
+ @http_client.should_receive(:request).and_yield(@http_response).and_return(@http_response)
509
529
  @rest.fetch("cookbooks/a_cookbook") {|tmpfile| "shouldn't get here"}
510
530
  end
511
531
 
512
532
  it "passes the original block to the redirected request" do
513
- Tempfile.rspec_reset
514
-
515
533
  http_response = Net::HTTPFound.new("1.1", "302", "bob is taking care of that one for me today")
516
534
  http_response.add_field("location","/that-thing-is-here-now")
517
- http_response.stub!(:read_body)
535
+ http_response.stub(:read_body)
518
536
 
519
537
  block_called = false
520
- @http_client.stub!(:request).and_yield(@http_response).and_return(http_response, @http_response)
538
+ @http_client.stub(:request).and_yield(@http_response).and_return(http_response, @http_response)
521
539
  @rest.fetch("cookbooks/a_cookbook") do |tmpfile|
522
540
  block_called = true
523
541
  end
@@ -546,9 +564,9 @@ describe Chef::REST do
546
564
  redirected.call unless total_redirects >= 9
547
565
  end
548
566
  end
549
- lambda {redirected.call}.should_not raise_error(Chef::Exceptions::RedirectLimitExceeded)
567
+ lambda {redirected.call}.should_not raise_error
550
568
  total_redirects = 0
551
- lambda {redirected.call}.should_not raise_error(Chef::Exceptions::RedirectLimitExceeded)
569
+ lambda {redirected.call}.should_not raise_error
552
570
  end
553
571
 
554
572
  it "does not sign the redirected request when sign_on_redirect is false" do
@@ -572,7 +590,7 @@ describe Chef::REST do
572
590
  redirected.call unless total_redirects >= 9
573
591
  end
574
592
  end
575
- lambda {redirected.call}.should_not raise_error(Chef::Exceptions::RedirectLimitExceeded)
593
+ lambda {redirected.call}.should_not raise_error
576
594
 
577
595
  total_redirects = 0
578
596
  @rest.redirect_limit = 3