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.
@@ -16,9 +16,10 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require 'spec_helper'
19
+ require 'functional/resource/base'
20
20
  require 'chef/version'
21
21
  require 'chef/shell'
22
+ require 'chef/mixin/command/unix'
22
23
 
23
24
  describe Shell do
24
25
 
@@ -26,6 +27,7 @@ describe Shell do
26
27
  # not catch cases where chef-shell fails to boot because of changes in
27
28
  # chef/client.rb
28
29
  describe "smoke tests", :unix_only => true do
30
+ include Chef::Mixin::Command::Unix
29
31
 
30
32
  def read_until(io, expected_value)
31
33
  start = Time.new
@@ -59,32 +61,52 @@ describe Shell do
59
61
  end
60
62
 
61
63
  def run_chef_shell_with(options)
62
- # Windows ruby installs don't (always?) have PTY,
63
- # so hide the require here
64
- require 'pty'
65
- config = File.expand_path("shef-config.rb", CHEF_SPEC_DATA)
66
- path_to_chef_shell = File.expand_path("../../../bin/chef-shell", __FILE__)
67
- reader, writer, pid = PTY.spawn("#{path_to_chef_shell} -c #{config} #{options}")
68
- read_until(reader, "chef >")
69
- yield reader, writer if block_given?
70
- writer.puts('"done"')
71
- output = read_until(reader, '=> "done"')
72
- writer.print("exit\n")
73
- read_until(reader, "exit")
74
- read_until(reader, "\n")
75
- read_until(reader, "\n")
76
- writer.close
64
+ case ohai[:platform]
65
+ when "aix"
66
+ config = File.expand_path("shef-config.rb", CHEF_SPEC_DATA)
67
+ path_to_chef_shell = File.expand_path("../../../bin/chef-shell", __FILE__)
68
+ output = ''
69
+ status = popen4("#{path_to_chef_shell} -c #{config} #{options}", :waitlast => true) do |pid, stdin, stdout, stderr|
70
+ read_until(stdout, "chef >")
71
+ yield stdout, stdin if block_given?
72
+ stdin.write("'done'\n")
73
+ output = read_until(stdout, '=> "done"')
74
+ stdin.print("exit\n")
75
+ read_until(stdout, "\n")
76
+ end
77
+
78
+ [output, status.exitstatus]
79
+ else
80
+ # Windows ruby installs don't (always?) have PTY,
81
+ # so hide the require here
82
+ begin
83
+ require 'pty'
84
+ config = File.expand_path("shef-config.rb", CHEF_SPEC_DATA)
85
+ path_to_chef_shell = File.expand_path("../../../bin/chef-shell", __FILE__)
86
+ reader, writer, pid = PTY.spawn("#{path_to_chef_shell} -c #{config} #{options}")
87
+ read_until(reader, "chef >")
88
+ yield reader, writer if block_given?
89
+ writer.puts('"done"')
90
+ output = read_until(reader, '=> "done"')
91
+ writer.print("exit\n")
92
+ read_until(reader, "exit")
93
+ read_until(reader, "\n")
94
+ read_until(reader, "\n")
95
+ writer.close
77
96
 
78
- exitstatus = wait_or_die(pid)
97
+ exitstatus = wait_or_die(pid)
79
98
 
80
- [output, exitstatus]
81
- rescue PTY::ChildExited => e
82
- [output, e.status]
99
+ [output, exitstatus]
100
+ rescue PTY::ChildExited => e
101
+ [output, e.status]
102
+ end
103
+ end
83
104
  end
84
105
 
85
106
  it "boots correctly with -lauto" do
86
107
  output, exitstatus = run_chef_shell_with("-lauto")
87
- exitstatus.should be_success
108
+ output.should include("done")
109
+ expect(exitstatus).to eq(0)
88
110
  end
89
111
 
90
112
  it "sets the log_level from the command line" do
@@ -94,9 +116,7 @@ describe Shell do
94
116
  read_until(out, show_log_level_code)
95
117
  end
96
118
  output.should include("===fatal===")
97
- exitstatus.should be_success
119
+ expect(exitstatus).to eq(0)
98
120
  end
99
-
100
121
  end
101
-
102
122
  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.
@@ -0,0 +1,35 @@
1
+ #
2
+ # Author:: Serdar Sutay (<dan@opscode.com>)
3
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ require File.expand_path('../../spec_helper', __FILE__)
19
+ require 'chef/mixin/shell_out'
20
+ require 'chef/version'
21
+ require 'ohai/version'
22
+
23
+ describe "Chef Versions" do
24
+ include Chef::Mixin::ShellOut
25
+ let(:chef_dir) { File.join(File.dirname(__FILE__), "..", "..") }
26
+
27
+ binaries = [ "chef-client", "chef-shell", "chef-apply", "knife", "chef-solo" ]
28
+
29
+ binaries.each do |binary|
30
+ it "#{binary} version should be sane" do
31
+ shell_out!("ruby #{File.join("bin", binary)} -v", :cwd => chef_dir).stdout.chomp.should == "Chef: #{Chef::VERSION}"
32
+ end
33
+ end
34
+
35
+ end
@@ -44,7 +44,7 @@ describe "Chef::ReservedNames::Win32::Version", :windows_only do
44
44
  # The name from WMI is actually what we want in Win2k8R2+.
45
45
  # So this expectation sould continue to hold without modification
46
46
  # as new versions of Windows are released.
47
- @current_os_version = host.caption
47
+ @current_os_version = host.caption
48
48
  end
49
49
 
50
50
  @version = Chef::ReservedNames::Win32::Version.new
@@ -55,10 +55,10 @@ describe "Chef::ReservedNames::Win32::Version", :windows_only do
55
55
  @current_os_version.should include(@version.marketing_name)
56
56
  end
57
57
  end
58
-
58
+
59
59
  def is_windows_server_2008?(wmi_host)
60
60
  is_win2k8 = false
61
-
61
+
62
62
  os_version = wmi_host.send('Version')
63
63
 
64
64
  # The operating system version is a string in the following form
@@ -0,0 +1,146 @@
1
+ require 'support/shared/integration/integration_helper'
2
+ require 'chef/mixin/shell_out'
3
+
4
+ describe "chef-client" do
5
+ extend IntegrationSupport
6
+ include Chef::Mixin::ShellOut
7
+
8
+ when_the_repository "has a cookbook with a no-op recipe" do
9
+ file 'cookbooks/x/recipes/default.rb', ''
10
+
11
+ it "should complete with success" do
12
+ file 'config/client.rb', <<EOM
13
+ local_mode true
14
+ cookbook_path "#{path_to('cookbooks')}"
15
+ EOM
16
+
17
+ chef_dir = File.join(File.dirname(__FILE__), "..", "..", "..", "bin")
18
+ result = shell_out("chef-client -c \"#{path_to('config/client.rb')}\" -o 'x::default'", :cwd => chef_dir)
19
+ result.error!
20
+ end
21
+
22
+ context 'and no config file' do
23
+ it 'should complete with success when cwd is just above cookbooks and paths are not specified' do
24
+ chef_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "bin"))
25
+ result = shell_out("#{chef_dir}/chef-client -z -o 'x::default' --config-file-jail \"#{path_to('')}\"", :cwd => path_to(''))
26
+ result.error!
27
+ end
28
+
29
+ it 'should complete with success when cwd is below cookbooks and paths are not specified' do
30
+ chef_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "bin"))
31
+ result = shell_out("#{chef_dir}/chef-client -z -o 'x::default' --config-file-jail \"#{path_to('')}\"", :cwd => path_to('cookbooks/x'))
32
+ result.error!
33
+ end
34
+
35
+ it 'should fail when cwd is below high above and paths are not specified' do
36
+ chef_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "bin"))
37
+ result = shell_out("#{chef_dir}/chef-client -z -o 'x::default' --config-file-jail \"#{path_to('')}\"", :cwd => File.expand_path('..', path_to('')))
38
+ result.exitstatus.should == 1
39
+ end
40
+ end
41
+
42
+ context 'and a config file under .chef/knife.rb' do
43
+ file '.chef/knife.rb', 'xxx.xxx'
44
+
45
+ it 'should load .chef/knife.rb when -z is specified' do
46
+ chef_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "bin"))
47
+ result = shell_out("#{chef_dir}/chef-client -z -o 'x::default' --config-file-jail \"#{path_to('')}\"", :cwd => path_to(''))
48
+ result.exitstatus.should == 2
49
+ end
50
+
51
+ it 'fails to load .chef/knife.rb when -z is specified and --config-file-jail does not include the .chef/knife.rb' do
52
+ chef_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "bin"))
53
+ result = shell_out("#{chef_dir}/chef-client -z -o 'x::default' --config-file-jail \"#{path_to('roles')}\"", :cwd => path_to(''))
54
+ result.error!
55
+ end
56
+ end
57
+
58
+ it "should complete with success" do
59
+ file 'config/client.rb', <<EOM
60
+ local_mode true
61
+ cookbook_path "#{path_to('cookbooks')}"
62
+ EOM
63
+
64
+ chef_dir = File.join(File.dirname(__FILE__), "..", "..", "..", "bin")
65
+ result = shell_out("chef-client -c \"#{path_to('config/client.rb')}\" -o 'x::default'", :cwd => chef_dir)
66
+ result.error!
67
+ end
68
+
69
+ context 'and a private key' do
70
+ file 'mykey.pem', <<EOM
71
+ -----BEGIN RSA PRIVATE KEY-----
72
+ MIIEogIBAAKCAQEApubutqtYYQ5UiA9QhWP7UvSmsfHsAoPKEVVPdVW/e8Svwpyf
73
+ 0Xef6OFWVmBE+W442ZjLOe2y6p2nSnaq4y7dg99NFz6X+16mcKiCbj0RCiGqCvCk
74
+ NftHhTgO9/RFvCbmKZ1RKNob1YzLrFpxBHaSh9po+DGWhApcd+I+op+ZzvDgXhNn
75
+ 0nauZu3rZmApI/r7EEAOjFedAXs7VPNXhhtZAiLSAVIrwU3ZajtSzgXOxbNzgj5O
76
+ AAAMmThK+71qPdffAdO4J198H6/MY04qgtFo7vumzCq0UCaGZfmeI1UNE4+xQWwP
77
+ HJ3pDAP61C6Ebx2snI2kAd9QMx9Y78nIedRHPwIDAQABAoIBAHssRtPM1GacWsom
78
+ 8zfeN6ZbI4KDlbetZz0vhnqDk9NVrpijWlcOP5dwZXVNitnB/HaqCqFvyPDY9JNB
79
+ zI/pEFW4QH59FVDP42mVEt0keCTP/1wfiDDGh1vLqVBYl/ZphscDcNgDTzNkuxMx
80
+ k+LFVxKnn3w7rGc59lALSkpeGvbbIDjp3LUMlUeCF8CIFyYZh9ZvXe4OCxYdyjxb
81
+ i8tnMLKvJ4Psbh5jMapsu3rHQkfPdqzztQUz8vs0NYwP5vWge46FUyk+WNm/IhbJ
82
+ G3YM22nwUS8Eu2bmTtADSJolATbCSkOwQ1D+Fybz/4obfYeGaCdOqB05ttubhenV
83
+ ShsAb7ECgYEA20ecRVxw2S7qA7sqJ4NuYOg9TpfGooptYNA1IP971eB6SaGAelEL
84
+ awYkGNuu2URmm5ElZpwJFFTDLGA7t2zB2xI1FeySPPIVPvJGSiZoFQOVlIg9WQzK
85
+ 7jTtFQ/tOMrF+bigEUJh5bP1/7HzqSpuOsPjEUb2aoCTp+tpiRGL7TUCgYEAwtns
86
+ g3ysrSEcTzpSv7fQRJRk1lkBhatgNd0oc+ikzf74DaVLhBg1jvSThDhiDCdB59mr
87
+ Jh41cnR1XqE8jmdQbCDRiFrI1Pq6TPaDZFcovDVE1gue9x86v3FOH2ukPG4d2/Xy
88
+ HevXjThtpMMsWFi0JYXuzXuV5HOvLZiP8sN3lSMCgYANpdxdGM7RRbE9ADY0dWK2
89
+ V14ReTLcxP7fyrWz0xLzEeCqmomzkz3BsIUoouu0DCTSw+rvAwExqcDoDylIVlWO
90
+ fAifz7SeZHbcDxo+3TsXK7zwnLYsx7YNs2+aIv6hzUUbMNmNmXMcZ+IEwx+mRMTN
91
+ lYmZdrA5mr0V83oDFPt/jQKBgC74RVE03pMlZiObFZNtheDiPKSG9Bz6wMh7NWMr
92
+ c37MtZLkg52mEFMTlfPLe6ceV37CM8WOhqe+dwSGrYhOU06dYqUR7VOZ1Qr0aZvo
93
+ fsNPu/Y0+u7rMkgv0fs1AXQnvz7kvKaF0YITVirfeXMafuKEtJoH7owRbur42cpV
94
+ YCAtAoGAP1rHOc+w0RUcBK3sY7aErrih0OPh9U5bvJsrw1C0FIZhCEoDVA+fNIQL
95
+ syHLXYFNy0OxMtH/bBAXBGNHd9gf5uOnqh0pYcbe/uRAxumC7Rl0cL509eURiA2T
96
+ +vFmf54y9YdnLXaqv+FhJT6B6V7WX7IpU9BMqJY1cJYXHuHG2KA=
97
+ -----END RSA PRIVATE KEY-----
98
+ EOM
99
+
100
+ it "should complete with success even with a client key" do
101
+ file 'config/client.rb', <<EOM
102
+ local_mode true
103
+ client_key "#{path_to('mykey.pem')}"
104
+ cookbook_path "#{path_to('cookbooks')}"
105
+ EOM
106
+
107
+ chef_dir = File.join(File.dirname(__FILE__), "..", "..", "..", "bin")
108
+ result = shell_out("chef-client -c \"#{path_to('config/client.rb')}\" -o 'x::default'", :cwd => chef_dir)
109
+ result.error!
110
+ end
111
+ end
112
+
113
+ it "should complete with success when passed the -z flag" do
114
+ file 'config/client.rb', <<EOM
115
+ chef_server_url 'http://omg.com/blah'
116
+ cookbook_path "#{path_to('cookbooks')}"
117
+ EOM
118
+
119
+ chef_dir = File.join(File.dirname(__FILE__), "..", "..", "..", "bin")
120
+ result = shell_out("chef-client -c \"#{path_to('config/client.rb')}\" -o 'x::default' -z", :cwd => chef_dir)
121
+ result.error!
122
+ end
123
+
124
+ it "should complete with success when passed the --local-mode flag" do
125
+ file 'config/client.rb', <<EOM
126
+ chef_server_url 'http://omg.com/blah'
127
+ cookbook_path "#{path_to('cookbooks')}"
128
+ EOM
129
+
130
+ chef_dir = File.join(File.dirname(__FILE__), "..", "..", "..", "bin")
131
+ result = shell_out("chef-client -c \"#{path_to('config/client.rb')}\" -o 'x::default' --local-mode", :cwd => chef_dir)
132
+ result.error!
133
+ end
134
+
135
+ it "should complete with success when passed -z and --chef-zero-port" do
136
+ file 'config/client.rb', <<EOM
137
+ chef_server_url 'http://omg.com/blah'
138
+ cookbook_path "#{path_to('cookbooks')}"
139
+ EOM
140
+
141
+ chef_dir = File.join(File.dirname(__FILE__), "..", "..", "..", "bin")
142
+ result = shell_out("chef-client -c \"#{path_to('config/client.rb')}\" -o 'x::default' -z", :cwd => chef_dir)
143
+ result.error!
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,353 @@
1
+ #
2
+ # Author:: John Keiser (<jkeiser@opscode.com>)
3
+ # Copyright:: Copyright (c) 2013 Opscode, Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+
18
+ require 'support/shared/integration/integration_helper'
19
+ require 'chef/knife/list'
20
+ require 'chef/knife/delete'
21
+ require 'chef/knife/show'
22
+ require 'chef/knife/raw'
23
+ require 'chef/knife/cookbook_upload'
24
+
25
+ describe 'knife raw -z' do
26
+ extend IntegrationSupport
27
+ include KnifeSupport
28
+
29
+ when_the_repository "has one of each thing" do
30
+ file 'clients/x.json', {}
31
+ file 'cookbooks/x/metadata.rb', 'version "1.0.0"'
32
+ file 'data_bags/x/y.json', {}
33
+ file 'environments/x.json', {}
34
+ file 'nodes/x.json', {}
35
+ file 'roles/x.json', {}
36
+ file 'users/x.json', {}
37
+
38
+ context 'GET /TYPE' do
39
+ it 'knife list -z -R returns everything' do
40
+ knife('list -z -Rfp /').should_succeed <<EOM
41
+ /clients/
42
+ /clients/x.json
43
+ /cookbooks/
44
+ /cookbooks/x/
45
+ /cookbooks/x/metadata.rb
46
+ /data_bags/
47
+ /data_bags/x/
48
+ /data_bags/x/y.json
49
+ /environments/
50
+ /environments/x.json
51
+ /nodes/
52
+ /nodes/x.json
53
+ /roles/
54
+ /roles/x.json
55
+ /users/
56
+ /users/x.json
57
+ EOM
58
+ end
59
+ end
60
+
61
+ context 'DELETE /TYPE/NAME' do
62
+ it 'knife delete -z /clients/x.json works' do
63
+ knife('delete -z /clients/x.json').should_succeed "Deleted /clients/x.json\n"
64
+ knife('list -z -Rfp /clients').should_succeed ''
65
+ end
66
+
67
+ it 'knife delete -z -r /cookbooks/x works' do
68
+ knife('delete -z -r /cookbooks/x').should_succeed "Deleted /cookbooks/x\n"
69
+ knife('list -z -Rfp /cookbooks').should_succeed ''
70
+ end
71
+
72
+ it 'knife delete -z -r /data_bags/x works' do
73
+ knife('delete -z -r /data_bags/x').should_succeed "Deleted /data_bags/x\n"
74
+ knife('list -z -Rfp /data_bags').should_succeed ''
75
+ end
76
+
77
+ it 'knife delete -z /data_bags/x/y.json works' do
78
+ knife('delete -z /data_bags/x/y.json').should_succeed "Deleted /data_bags/x/y.json\n"
79
+ knife('list -z -Rfp /data_bags').should_succeed "/data_bags/x/\n"
80
+ end
81
+
82
+ it 'knife delete -z /environments/x.json works' do
83
+ knife('delete -z /environments/x.json').should_succeed "Deleted /environments/x.json\n"
84
+ knife('list -z -Rfp /environments').should_succeed ''
85
+ end
86
+
87
+ it 'knife delete -z /nodes/x.json works' do
88
+ knife('delete -z /nodes/x.json').should_succeed "Deleted /nodes/x.json\n"
89
+ knife('list -z -Rfp /nodes').should_succeed ''
90
+ end
91
+
92
+ it 'knife delete -z /roles/x.json works' do
93
+ knife('delete -z /roles/x.json').should_succeed "Deleted /roles/x.json\n"
94
+ knife('list -z -Rfp /roles').should_succeed ''
95
+ end
96
+
97
+ it 'knife delete -z /users/x.json works' do
98
+ knife('delete -z /users/x.json').should_succeed "Deleted /users/x.json\n"
99
+ knife('list -z -Rfp /users').should_succeed ''
100
+ end
101
+ end
102
+
103
+ context 'GET /TYPE/NAME' do
104
+ it 'knife show -z /clients/x.json works' do
105
+ knife('show -z /clients/x.json').should_succeed /"x"/
106
+ end
107
+
108
+ it 'knife show -z /cookbooks/x/metadata.rb works' do
109
+ knife('show -z /cookbooks/x/metadata.rb').should_succeed "/cookbooks/x/metadata.rb:\nversion \"1.0.0\"\n"
110
+ end
111
+
112
+ it 'knife show -z /data_bags/x/y.json works' do
113
+ knife('show -z /data_bags/x/y.json').should_succeed /"y"/
114
+ end
115
+
116
+ it 'knife show -z /environments/x.json works' do
117
+ knife('show -z /environments/x.json').should_succeed /"x"/
118
+ end
119
+
120
+ it 'knife show -z /nodes/x.json works' do
121
+ knife('show -z /nodes/x.json').should_succeed /"x"/
122
+ end
123
+
124
+ it 'knife show -z /roles/x.json works' do
125
+ knife('show -z /roles/x.json').should_succeed /"x"/
126
+ end
127
+
128
+ it 'knife show -z /users/x.json works' do
129
+ knife('show -z /users/x.json').should_succeed /"x"/
130
+ end
131
+ end
132
+
133
+ context 'PUT /TYPE/NAME' do
134
+ file 'empty.json', {}
135
+ file 'rolestuff.json', '{"description":"hi there","name":"x"}'
136
+ file 'cookbooks_to_upload/x/metadata.rb', "version '1.0.0'\n\n"
137
+
138
+ it 'knife raw -z -i empty.json -m PUT /clients/x' do
139
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /clients/x").should_succeed /"x"/
140
+ knife('list --local /clients').should_succeed "/clients/x.json\n"
141
+ end
142
+
143
+ it 'knife cookbook upload works' do
144
+ knife("cookbook upload -z --cookbook-path #{path_to('cookbooks_to_upload')} x").should_succeed <<EOM
145
+ Uploading x [1.0.0]
146
+ Uploaded 1 cookbook.
147
+ EOM
148
+ knife('list --local -Rfp /cookbooks').should_succeed "/cookbooks/x/\n/cookbooks/x/metadata.rb\n"
149
+ end
150
+
151
+ it 'knife raw -z -i empty.json -m PUT /data/x/y' do
152
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /data/x/y").should_succeed /"y"/
153
+ knife('list --local -Rfp /data_bags').should_succeed "/data_bags/x/\n/data_bags/x/y.json\n"
154
+ end
155
+
156
+ it 'knife raw -z -i empty.json -m PUT /environments/x' do
157
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /environments/x").should_succeed /"x"/
158
+ knife('list --local /environments').should_succeed "/environments/x.json\n"
159
+ end
160
+
161
+ it 'knife raw -z -i empty.json -m PUT /nodes/x' do
162
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /nodes/x").should_succeed /"x"/
163
+ knife('list --local /nodes').should_succeed "/nodes/x.json\n"
164
+ end
165
+
166
+ it 'knife raw -z -i empty.json -m PUT /roles/x' do
167
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /roles/x").should_succeed /"x"/
168
+ knife('list --local /roles').should_succeed "/roles/x.json\n"
169
+ end
170
+
171
+ it 'knife raw -z -i empty.json -m PUT /users/x' do
172
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /users/x").should_succeed /"x"/
173
+ knife('list --local /users').should_succeed "/users/x.json\n"
174
+ end
175
+
176
+ it 'After knife raw -z -i rolestuff.json -m PUT /roles/x, the output is pretty', :pending => (RUBY_VERSION < "1.9") do
177
+ knife("raw -z -i #{path_to('rolestuff.json')} -m PUT /roles/x").should_succeed /"x"/
178
+ IO.read(path_to('roles/x.json')).should == <<EOM.strip
179
+ {
180
+ "name": "x",
181
+ "description": "hi there"
182
+ }
183
+ EOM
184
+ end
185
+ end
186
+ end
187
+
188
+ when_the_repository 'is empty' do
189
+ context 'POST /TYPE/NAME' do
190
+ file 'empty.json', { 'name' => 'z' }
191
+ file 'empty_id.json', { 'id' => 'z' }
192
+ file 'rolestuff.json', '{"description":"hi there","name":"x"}'
193
+ file 'cookbooks_to_upload/z/metadata.rb', "version '1.0.0'"
194
+
195
+ it 'knife raw -z -i empty.json -m POST /clients' do
196
+ knife("raw -z -i #{path_to('empty.json')} -m POST /clients").should_succeed /uri/
197
+ knife('list --local /clients').should_succeed "/clients/z.json\n"
198
+ end
199
+
200
+ it 'knife cookbook upload works' do
201
+ knife("cookbook upload -z --cookbook-path #{path_to('cookbooks_to_upload')} z").should_succeed <<EOM
202
+ Uploading z [1.0.0]
203
+ Uploaded 1 cookbook.
204
+ EOM
205
+ knife('list --local -Rfp /cookbooks').should_succeed "/cookbooks/z/\n/cookbooks/z/metadata.rb\n"
206
+ end
207
+
208
+ it 'knife raw -z -i empty.json -m POST /data' do
209
+ knife("raw -z -i #{path_to('empty.json')} -m POST /data").should_succeed /uri/
210
+ knife('list --local -Rfp /data_bags').should_succeed "/data_bags/z/\n"
211
+ end
212
+
213
+ it 'knife raw -z -i empty.json -m POST /data/x' do
214
+ knife("raw -z -i #{path_to('empty_id.json')} -m POST /data/x").should_succeed /"z"/
215
+ knife('list --local -Rfp /data_bags').should_succeed "/data_bags/x/\n/data_bags/x/z.json\n"
216
+ end
217
+
218
+ it 'knife raw -z -i empty.json -m POST /environments' do
219
+ knife("raw -z -i #{path_to('empty.json')} -m POST /environments").should_succeed /uri/
220
+ knife('list --local /environments').should_succeed "/environments/z.json\n"
221
+ end
222
+
223
+ it 'knife raw -z -i empty.json -m POST /nodes' do
224
+ knife("raw -z -i #{path_to('empty.json')} -m POST /nodes").should_succeed /uri/
225
+ knife('list --local /nodes').should_succeed "/nodes/z.json\n"
226
+ end
227
+
228
+ it 'knife raw -z -i empty.json -m POST /roles' do
229
+ knife("raw -z -i #{path_to('empty.json')} -m POST /roles").should_succeed /uri/
230
+ knife('list --local /roles').should_succeed "/roles/z.json\n"
231
+ end
232
+
233
+ it 'knife raw -z -i empty.json -m POST /users' do
234
+ knife("raw -z -i #{path_to('empty.json')} -m POST /users").should_succeed /uri/
235
+ knife('list --local /users').should_succeed "/users/z.json\n"
236
+ end
237
+
238
+ it 'After knife raw -z -i rolestuff.json -m POST /roles, the output is pretty', :pending => (RUBY_VERSION < "1.9") do
239
+ knife("raw -z -i #{path_to('rolestuff.json')} -m POST /roles").should_succeed /uri/
240
+ IO.read(path_to('roles/x.json')).should == <<EOM.strip
241
+ {
242
+ "name": "x",
243
+ "description": "hi there"
244
+ }
245
+ EOM
246
+ end
247
+ end
248
+
249
+ it 'knife list -z -R returns nothing' do
250
+ knife('list -z -Rfp /').should_succeed <<EOM
251
+ /clients/
252
+ /cookbooks/
253
+ /data_bags/
254
+ /environments/
255
+ /nodes/
256
+ /roles/
257
+ /users/
258
+ EOM
259
+ end
260
+
261
+ context 'DELETE /TYPE/NAME' do
262
+ it 'knife delete -z /clients/x.json fails with an error' do
263
+ knife('delete -z /clients/x.json').should_fail "ERROR: /clients/x.json: No such file or directory\n"
264
+ end
265
+
266
+ it 'knife delete -z -r /cookbooks/x fails with an error' do
267
+ knife('delete -z -r /cookbooks/x').should_fail "ERROR: /cookbooks/x: No such file or directory\n"
268
+ end
269
+
270
+ it 'knife delete -z -r /data_bags/x fails with an error' do
271
+ knife('delete -z -r /data_bags/x').should_fail "ERROR: /data_bags/x: No such file or directory\n"
272
+ end
273
+
274
+ it 'knife delete -z /data_bags/x/y.json fails with an error' do
275
+ knife('delete -z /data_bags/x/y.json').should_fail "ERROR: /data_bags/x/y.json: No such file or directory\n"
276
+ end
277
+
278
+ it 'knife delete -z /environments/x.json fails with an error' do
279
+ knife('delete -z /environments/x.json').should_fail "ERROR: /environments/x.json: No such file or directory\n"
280
+ end
281
+
282
+ it 'knife delete -z /nodes/x.json fails with an error' do
283
+ knife('delete -z /nodes/x.json').should_fail "ERROR: /nodes/x.json: No such file or directory\n"
284
+ end
285
+
286
+ it 'knife delete -z /roles/x.json fails with an error' do
287
+ knife('delete -z /roles/x.json').should_fail "ERROR: /roles/x.json: No such file or directory\n"
288
+ end
289
+
290
+ it 'knife delete -z /users/x.json fails with an error' do
291
+ knife('delete -z /users/x.json').should_fail "ERROR: /users/x.json: No such file or directory\n"
292
+ end
293
+ end
294
+
295
+ context 'GET /TYPE/NAME' do
296
+ it 'knife show -z /clients/x.json fails with an error' do
297
+ knife('show -z /clients/x.json').should_fail "ERROR: /clients/x.json: No such file or directory\n"
298
+ end
299
+
300
+ it 'knife show -z /cookbooks/x/metadata.rb fails with an error' do
301
+ knife('show -z /cookbooks/x/metadata.rb').should_fail "ERROR: /cookbooks/x/metadata.rb: No such file or directory\n"
302
+ end
303
+
304
+ it 'knife show -z /data_bags/x/y.json fails with an error' do
305
+ knife('show -z /data_bags/x/y.json').should_fail "ERROR: /data_bags/x/y.json: No such file or directory\n"
306
+ end
307
+
308
+ it 'knife show -z /environments/x.json fails with an error' do
309
+ knife('show -z /environments/x.json').should_fail "ERROR: /environments/x.json: No such file or directory\n"
310
+ end
311
+
312
+ it 'knife show -z /nodes/x.json fails with an error' do
313
+ knife('show -z /nodes/x.json').should_fail "ERROR: /nodes/x.json: No such file or directory\n"
314
+ end
315
+
316
+ it 'knife show -z /roles/x.json fails with an error' do
317
+ knife('show -z /roles/x.json').should_fail "ERROR: /roles/x.json: No such file or directory\n"
318
+ end
319
+
320
+ it 'knife show -z /users/x.json fails with an error' do
321
+ knife('show -z /users/x.json').should_fail "ERROR: /users/x.json: No such file or directory\n"
322
+ end
323
+ end
324
+
325
+ context 'PUT /TYPE/NAME' do
326
+ file 'empty.json', {}
327
+
328
+ it 'knife raw -z -i empty.json -m PUT /clients/x fails with 404' do
329
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /clients/x").should_fail /404/
330
+ end
331
+
332
+ it 'knife raw -z -i empty.json -m PUT /data/x/y fails with 404' do
333
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /data/x/y").should_fail /404/
334
+ end
335
+
336
+ it 'knife raw -z -i empty.json -m PUT /environments/x fails with 404' do
337
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /environments/x").should_fail /404/
338
+ end
339
+
340
+ it 'knife raw -z -i empty.json -m PUT /nodes/x fails with 404' do
341
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /nodes/x").should_fail /404/
342
+ end
343
+
344
+ it 'knife raw -z -i empty.json -m PUT /roles/x fails with 404' do
345
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /roles/x").should_fail /404/
346
+ end
347
+
348
+ it 'knife raw -z -i empty.json -m PUT /users/x fails with 404' do
349
+ knife("raw -z -i #{path_to('empty.json')} -m PUT /users/x").should_fail /404/
350
+ end
351
+ end
352
+ end
353
+ end