chef 12.0.0.alpha.2-x86-mingw32 → 12.0.0.rc.0-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 +9 -0
  2. data/README.md +1 -1
  3. data/Rakefile +12 -0
  4. data/bin/chef-service-manager +1 -1
  5. data/bin/chef-windows-service +35 -0
  6. data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
  7. data/distro/common/html/ctl_chef_client.html +3 -7
  8. data/distro/common/html/ctl_chef_server.html +609 -41
  9. data/distro/common/html/ctl_chef_shell.html +2 -2
  10. data/distro/common/html/ctl_chef_solo.html +1 -1
  11. data/distro/common/html/index.html +13 -13
  12. data/distro/common/html/knife.html +10 -10
  13. data/distro/common/html/knife_bootstrap.html +8 -8
  14. data/distro/common/html/knife_client.html +12 -12
  15. data/distro/common/html/knife_common_options.html +7 -7
  16. data/distro/common/html/knife_configure.html +3 -3
  17. data/distro/common/html/knife_cookbook.html +19 -19
  18. data/distro/common/html/knife_cookbook_site.html +28 -28
  19. data/distro/common/html/knife_data_bag.html +28 -13
  20. data/distro/common/html/knife_delete.html +2 -2
  21. data/distro/common/html/knife_deps.html +3 -3
  22. data/distro/common/html/knife_diff.html +4 -4
  23. data/distro/common/html/knife_download.html +3 -3
  24. data/distro/common/html/knife_edit.html +2 -2
  25. data/distro/common/html/knife_environment.html +14 -14
  26. data/distro/common/html/knife_exec.html +11 -11
  27. data/distro/common/html/knife_index_rebuild.html +2 -2
  28. data/distro/common/html/knife_list.html +3 -3
  29. data/distro/common/html/knife_node.html +23 -23
  30. data/distro/common/html/knife_raw.html +4 -4
  31. data/distro/common/html/knife_recipe_list.html +3 -3
  32. data/distro/common/html/knife_role.html +11 -11
  33. data/distro/common/html/knife_search.html +4 -4
  34. data/distro/common/html/knife_serve.html +3 -3
  35. data/distro/common/html/knife_show.html +3 -3
  36. data/distro/common/html/knife_ssh.html +7 -7
  37. data/distro/common/html/knife_ssl_check.html +7 -7
  38. data/distro/common/html/knife_ssl_fetch.html +9 -9
  39. data/distro/common/html/knife_status.html +3 -3
  40. data/distro/common/html/knife_tag.html +9 -9
  41. data/distro/common/html/knife_upload.html +3 -3
  42. data/distro/common/html/knife_user.html +9 -9
  43. data/distro/common/html/knife_using.html +11 -11
  44. data/distro/common/html/knife_xargs.html +14 -5
  45. data/distro/common/html/search.html +2 -2
  46. data/distro/common/html/searchindex.js +1 -1
  47. data/distro/common/man/man1/chef-shell.1 +2 -2
  48. data/distro/common/man/man1/knife-bootstrap.1 +7 -7
  49. data/distro/common/man/man1/knife-client.1 +10 -10
  50. data/distro/common/man/man1/knife-configure.1 +5 -5
  51. data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
  52. data/distro/common/man/man1/knife-cookbook.1 +12 -12
  53. data/distro/common/man/man1/knife-data-bag.1 +34 -10
  54. data/distro/common/man/man1/knife-delete.1 +5 -5
  55. data/distro/common/man/man1/knife-deps.1 +5 -5
  56. data/distro/common/man/man1/knife-diff.1 +7 -7
  57. data/distro/common/man/man1/knife-download.1 +5 -5
  58. data/distro/common/man/man1/knife-edit.1 +5 -5
  59. data/distro/common/man/man1/knife-environment.1 +11 -11
  60. data/distro/common/man/man1/knife-exec.1 +11 -11
  61. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  62. data/distro/common/man/man1/knife-list.1 +5 -5
  63. data/distro/common/man/man1/knife-node.1 +16 -16
  64. data/distro/common/man/man1/knife-raw.1 +6 -6
  65. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  66. data/distro/common/man/man1/knife-role.1 +7 -7
  67. data/distro/common/man/man1/knife-search.1 +6 -6
  68. data/distro/common/man/man1/knife-serve.1 +6 -6
  69. data/distro/common/man/man1/knife-show.1 +5 -5
  70. data/distro/common/man/man1/knife-ssh.1 +9 -9
  71. data/distro/common/man/man1/knife-ssl-check.1 +7 -7
  72. data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
  73. data/distro/common/man/man1/knife-status.1 +5 -5
  74. data/distro/common/man/man1/knife-tag.1 +8 -8
  75. data/distro/common/man/man1/knife-upload.1 +5 -5
  76. data/distro/common/man/man1/knife-user.1 +8 -8
  77. data/distro/common/man/man1/knife-xargs.1 +36 -10
  78. data/distro/common/man/man1/knife.1 +14 -14
  79. data/distro/common/man/man8/chef-client.8 +3 -10
  80. data/distro/common/man/man8/chef-solo.8 +1 -1
  81. data/ext/win32-eventlog/Rakefile +50 -0
  82. data/ext/win32-eventlog/chef-log.man +26 -0
  83. data/lib/chef/application.rb +313 -241
  84. data/lib/chef/application/apply.rb +10 -8
  85. data/lib/chef/application/client.rb +58 -33
  86. data/lib/chef/application/solo.rb +33 -12
  87. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  88. data/lib/chef/chef_fs/command_line.rb +1 -1
  89. data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
  90. data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
  91. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
  92. data/lib/chef/client.rb +18 -48
  93. data/lib/chef/config.rb +43 -11
  94. data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
  95. data/lib/chef/cookbook/metadata.rb +81 -38
  96. data/lib/chef/cookbook/syntax_check.rb +18 -52
  97. data/lib/chef/cookbook_loader.rb +1 -1
  98. data/lib/chef/cookbook_version.rb +58 -39
  99. data/lib/chef/data_bag.rb +2 -2
  100. data/lib/chef/deprecation/provider/file.rb +2 -1
  101. data/lib/chef/dsl/data_query.rb +2 -29
  102. data/lib/chef/dsl/recipe.rb +8 -22
  103. data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
  104. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
  105. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
  106. data/lib/chef/event_loggers/base.rb +62 -0
  107. data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
  108. data/lib/chef/exceptions.rb +18 -1
  109. data/lib/chef/file_cache.rb +3 -2
  110. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
  111. data/lib/chef/http.rb +20 -13
  112. data/lib/chef/http/ssl_policies.rb +2 -1
  113. data/lib/chef/json_compat.rb +9 -3
  114. data/lib/chef/knife.rb +2 -1
  115. data/lib/chef/knife/bootstrap.rb +12 -18
  116. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  117. data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
  118. data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
  119. data/lib/chef/knife/cookbook_create.rb +1 -1
  120. data/lib/chef/knife/cookbook_site_share.rb +43 -8
  121. data/lib/chef/knife/core/bootstrap_context.rb +6 -11
  122. data/lib/chef/knife/core/object_loader.rb +5 -5
  123. data/lib/chef/knife/core/status_presenter.rb +156 -0
  124. data/lib/chef/knife/core/subcommand_loader.rb +6 -5
  125. data/lib/chef/knife/core/ui.rb +4 -4
  126. data/lib/chef/knife/data_bag_create.rb +7 -32
  127. data/lib/chef/knife/data_bag_edit.rb +24 -43
  128. data/lib/chef/knife/data_bag_from_file.rb +6 -31
  129. data/lib/chef/knife/data_bag_secret_options.rb +142 -0
  130. data/lib/chef/knife/data_bag_show.rb +19 -33
  131. data/lib/chef/knife/node_from_file.rb +9 -8
  132. data/lib/chef/knife/ssh.rb +0 -7
  133. data/lib/chef/knife/ssl_check.rb +70 -6
  134. data/lib/chef/knife/status.rb +11 -58
  135. data/lib/chef/mixin/command/unix.rb +2 -2
  136. data/lib/chef/mixin/convert_to_class_name.rb +54 -0
  137. data/lib/chef/mixin/descendants_tracker.rb +82 -0
  138. data/lib/chef/mixin/homebrew_user.rb +68 -0
  139. data/lib/chef/mixin/shell_out.rb +0 -4
  140. data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
  141. data/lib/chef/mixin/windows_env_helper.rb +56 -0
  142. data/lib/chef/node.rb +2 -2
  143. data/lib/chef/node_map.rb +146 -0
  144. data/lib/chef/platform/provider_mapping.rb +11 -39
  145. data/lib/chef/platform/provider_priority_map.rb +80 -0
  146. data/lib/chef/platform/query_helpers.rb +5 -1
  147. data/lib/chef/platform/service_helpers.rb +113 -0
  148. data/lib/chef/provider.rb +24 -0
  149. data/lib/chef/provider/breakpoint.rb +2 -0
  150. data/lib/chef/provider/cookbook_file.rb +2 -0
  151. data/lib/chef/provider/cron.rb +1 -1
  152. data/lib/chef/provider/cron/unix.rb +13 -9
  153. data/lib/chef/provider/deploy.rb +3 -2
  154. data/lib/chef/provider/deploy/revision.rb +4 -2
  155. data/lib/chef/provider/deploy/timestamped.rb +2 -0
  156. data/lib/chef/provider/directory.rb +2 -0
  157. data/lib/chef/provider/dsc_script.rb +179 -0
  158. data/lib/chef/provider/env.rb +25 -10
  159. data/lib/chef/provider/env/windows.rb +9 -16
  160. data/lib/chef/provider/erl_call.rb +2 -0
  161. data/lib/chef/provider/execute.rb +5 -2
  162. data/lib/chef/provider/file.rb +2 -0
  163. data/lib/chef/provider/git.rb +51 -23
  164. data/lib/chef/provider/group/dscl.rb +2 -2
  165. data/lib/chef/provider/group/pw.rb +9 -13
  166. data/lib/chef/provider/http_request.rb +2 -0
  167. data/lib/chef/provider/link.rb +3 -0
  168. data/lib/chef/provider/log.rb +2 -0
  169. data/lib/chef/provider/lwrp_base.rb +11 -9
  170. data/lib/chef/provider/mount/mount.rb +1 -1
  171. data/lib/chef/provider/package/aix.rb +2 -0
  172. data/lib/chef/provider/package/apt.rb +2 -0
  173. data/lib/chef/provider/package/dpkg.rb +2 -0
  174. data/lib/chef/provider/package/easy_install.rb +2 -0
  175. data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
  176. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  177. data/lib/chef/provider/package/freebsd/port.rb +1 -9
  178. data/lib/chef/provider/package/homebrew.rb +127 -0
  179. data/lib/chef/provider/package/ips.rb +2 -0
  180. data/lib/chef/provider/package/macports.rb +3 -0
  181. data/lib/chef/provider/package/pacman.rb +5 -4
  182. data/lib/chef/provider/package/paludis.rb +4 -2
  183. data/lib/chef/provider/package/portage.rb +4 -1
  184. data/lib/chef/provider/package/rpm.rb +2 -0
  185. data/lib/chef/provider/package/rubygems.rb +4 -0
  186. data/lib/chef/provider/package/smartos.rb +2 -0
  187. data/lib/chef/provider/package/solaris.rb +2 -0
  188. data/lib/chef/provider/package/windows.rb +5 -2
  189. data/lib/chef/provider/package/yum.rb +2 -0
  190. data/lib/chef/provider/powershell_script.rb +3 -1
  191. data/lib/chef/provider/remote_directory.rb +25 -10
  192. data/lib/chef/provider/route.rb +2 -0
  193. data/lib/chef/provider/ruby_block.rb +2 -0
  194. data/lib/chef/provider/script.rb +6 -0
  195. data/lib/chef/provider/service/aix.rb +128 -0
  196. data/lib/chef/provider/service/aixinit.rb +117 -0
  197. data/lib/chef/provider/service/arch.rb +6 -0
  198. data/lib/chef/provider/service/debian.rb +35 -29
  199. data/lib/chef/provider/service/freebsd.rb +7 -1
  200. data/lib/chef/provider/service/gentoo.rb +5 -1
  201. data/lib/chef/provider/service/init.rb +2 -0
  202. data/lib/chef/provider/service/insserv.rb +15 -8
  203. data/lib/chef/provider/service/invokercd.rb +6 -0
  204. data/lib/chef/provider/service/macosx.rb +4 -1
  205. data/lib/chef/provider/service/redhat.rb +9 -3
  206. data/lib/chef/provider/service/simple.rb +2 -0
  207. data/lib/chef/provider/service/solaris.rb +2 -0
  208. data/lib/chef/provider/service/systemd.rb +7 -0
  209. data/lib/chef/provider/service/upstart.rb +7 -0
  210. data/lib/chef/provider/service/windows.rb +5 -0
  211. data/lib/chef/provider/subversion.rb +2 -0
  212. data/lib/chef/provider/template.rb +1 -0
  213. data/lib/chef/provider/user/dscl.rb +3 -2
  214. data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
  215. data/lib/chef/provider_resolver.rb +103 -0
  216. data/lib/chef/providers.rb +6 -2
  217. data/lib/chef/recipe.rb +2 -0
  218. data/lib/chef/resource.rb +69 -78
  219. data/lib/chef/resource/apt_package.rb +3 -1
  220. data/lib/chef/resource/bash.rb +1 -0
  221. data/lib/chef/resource/bff_package.rb +0 -1
  222. data/lib/chef/resource/breakpoint.rb +1 -1
  223. data/lib/chef/resource/chef_gem.rb +1 -2
  224. data/lib/chef/resource/conditional.rb +26 -6
  225. data/lib/chef/resource/cookbook_file.rb +2 -3
  226. data/lib/chef/resource/csh.rb +1 -0
  227. data/lib/chef/resource/deploy.rb +0 -1
  228. data/lib/chef/resource/deploy_revision.rb +6 -1
  229. data/lib/chef/resource/directory.rb +1 -2
  230. data/lib/chef/resource/dpkg_package.rb +2 -1
  231. data/lib/chef/resource/dsc_script.rb +125 -0
  232. data/lib/chef/resource/easy_install_package.rb +2 -1
  233. data/lib/chef/resource/erl_call.rb +1 -0
  234. data/lib/chef/resource/execute.rb +26 -9
  235. data/lib/chef/resource/file.rb +1 -3
  236. data/lib/chef/resource/freebsd_package.rb +10 -23
  237. data/lib/chef/resource/gem_package.rb +2 -1
  238. data/lib/chef/resource/git.rb +2 -1
  239. data/lib/chef/resource/homebrew_package.rb +46 -0
  240. data/lib/chef/resource/http_request.rb +1 -0
  241. data/lib/chef/resource/ips_package.rb +3 -1
  242. data/lib/chef/resource/link.rb +1 -2
  243. data/lib/chef/resource/log.rb +4 -0
  244. data/lib/chef/resource/lwrp_base.rb +24 -15
  245. data/lib/chef/resource/macports_package.rb +3 -1
  246. data/lib/chef/resource/pacman_package.rb +2 -1
  247. data/lib/chef/resource/paludis_package.rb +3 -1
  248. data/lib/chef/resource/perl.rb +1 -0
  249. data/lib/chef/resource/powershell_script.rb +0 -2
  250. data/lib/chef/resource/python.rb +1 -1
  251. data/lib/chef/resource/remote_directory.rb +1 -2
  252. data/lib/chef/resource/remote_file.rb +1 -1
  253. data/lib/chef/resource/rpm_package.rb +2 -1
  254. data/lib/chef/resource/ruby.rb +1 -0
  255. data/lib/chef/resource/ruby_block.rb +3 -0
  256. data/lib/chef/resource/script.rb +2 -25
  257. data/lib/chef/resource/service.rb +0 -4
  258. data/lib/chef/resource/smartos_package.rb +3 -4
  259. data/lib/chef/resource/solaris_package.rb +7 -1
  260. data/lib/chef/resource/subversion.rb +0 -1
  261. data/lib/chef/resource/template.rb +2 -3
  262. data/lib/chef/resource/timestamped_deploy.rb +1 -2
  263. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
  264. data/lib/chef/resource/windows_package.rb +3 -4
  265. data/lib/chef/resource/windows_script.rb +3 -0
  266. data/lib/chef/resource/windows_service.rb +2 -2
  267. data/lib/chef/resource/yum_package.rb +3 -1
  268. data/lib/chef/resource_collection.rb +50 -227
  269. data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
  270. data/lib/chef/resource_collection/resource_list.rb +89 -0
  271. data/lib/chef/resource_collection/resource_set.rb +170 -0
  272. data/lib/chef/resources.rb +2 -0
  273. data/lib/chef/role.rb +1 -1
  274. data/lib/chef/run_context.rb +5 -1
  275. data/lib/chef/shell/ext.rb +1 -1
  276. data/lib/chef/util/backup.rb +3 -2
  277. data/lib/chef/util/dsc/configuration_generator.rb +115 -0
  278. data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
  279. data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
  280. data/lib/chef/util/dsc/resource_info.rb +26 -0
  281. data/lib/chef/util/path_helper.rb +12 -0
  282. data/lib/chef/util/powershell/cmdlet.rb +136 -0
  283. data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
  284. data/lib/chef/version.rb +1 -1
  285. data/lib/chef/win32/api/system.rb +9 -0
  286. data/lib/chef/win32/version.rb +2 -0
  287. data/spec/.DS_Store +0 -0
  288. data/spec/data/.DS_Store +0 -0
  289. data/spec/data/bootstrap/test-hints.erb +1 -1
  290. data/spec/data/bootstrap/test.erb +1 -1
  291. data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
  292. data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
  293. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
  294. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
  295. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
  296. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
  297. data/spec/data/lwrp/.DS_Store +0 -0
  298. data/spec/data/lwrp/providers/.DS_Store +0 -0
  299. data/spec/data/lwrp/providers/buck_passer.rb +9 -2
  300. data/spec/data/lwrp/resources/.DS_Store +0 -0
  301. data/spec/data/lwrp/resources/foo.rb +3 -2
  302. data/spec/data/lwrp_override/.DS_Store +0 -0
  303. data/spec/data/lwrp_override/providers/.DS_Store +0 -0
  304. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
  305. data/spec/data/lwrp_override/resources/.DS_Store +0 -0
  306. data/spec/data/lwrp_override/resources/foo.rb +4 -3
  307. data/spec/functional/assets/chefinittest +34 -0
  308. data/spec/functional/assets/testchefsubsys +11 -0
  309. data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
  310. data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
  311. data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
  312. data/spec/functional/knife/exec_spec.rb +1 -1
  313. data/spec/functional/resource/aix_service_spec.rb +136 -0
  314. data/spec/functional/resource/aixinit_service_spec.rb +211 -0
  315. data/spec/functional/resource/base.rb +1 -0
  316. data/spec/functional/resource/batch_spec.rb +4 -11
  317. data/spec/functional/resource/cron_spec.rb +7 -1
  318. data/spec/functional/resource/dsc_script_spec.rb +382 -0
  319. data/spec/functional/resource/env_spec.rb +54 -0
  320. data/spec/functional/resource/execute_spec.rb +113 -0
  321. data/spec/functional/resource/file_spec.rb +2 -0
  322. data/spec/functional/resource/group_spec.rb +7 -4
  323. data/spec/functional/resource/powershell_spec.rb +198 -185
  324. data/spec/functional/resource/rpm_spec.rb +5 -4
  325. data/spec/functional/resource/user/dscl_spec.rb +2 -1
  326. data/spec/functional/util/path_helper_spec.rb +37 -0
  327. data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
  328. data/spec/integration/client/client_spec.rb +1 -1
  329. data/spec/integration/client/ipv6_spec.rb +1 -1
  330. data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
  331. data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
  332. data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
  333. data/spec/integration/knife/chefignore_spec.rb +1 -1
  334. data/spec/integration/knife/common_options_spec.rb +1 -1
  335. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  336. data/spec/integration/knife/delete_spec.rb +1 -1
  337. data/spec/integration/knife/deps_spec.rb +1 -1
  338. data/spec/integration/knife/diff_spec.rb +1 -1
  339. data/spec/integration/knife/download_spec.rb +1 -1
  340. data/spec/integration/knife/list_spec.rb +1 -1
  341. data/spec/integration/knife/raw_spec.rb +1 -1
  342. data/spec/integration/knife/redirection_spec.rb +1 -1
  343. data/spec/integration/knife/serve_spec.rb +1 -1
  344. data/spec/integration/knife/show_spec.rb +1 -1
  345. data/spec/integration/knife/upload_spec.rb +4 -3
  346. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  347. data/spec/spec_helper.rb +15 -0
  348. data/spec/support/chef_helpers.rb +1 -0
  349. data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
  350. data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
  351. data/spec/support/platform_helpers.rb +28 -0
  352. data/spec/support/shared/functional/file_resource.rb +6 -0
  353. data/spec/support/shared/functional/windows_script.rb +118 -0
  354. data/spec/support/shared/integration/integration_helper.rb +5 -2
  355. data/spec/support/shared/matchers/exit_with_code.rb +28 -0
  356. data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
  357. data/spec/support/shared/shared_examples.rb +14 -0
  358. data/spec/support/shared/unit/execute_resource.rb +0 -7
  359. data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
  360. data/spec/support/shared/unit/script_resource.rb +1 -1
  361. data/spec/support/shared/unit/windows_script_resource.rb +35 -2
  362. data/spec/tiny_server.rb +1 -2
  363. data/spec/unit/api_client_spec.rb +5 -1
  364. data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
  365. data/spec/unit/application/client_spec.rb +106 -13
  366. data/spec/unit/application/solo_spec.rb +25 -1
  367. data/spec/unit/client_spec.rb +1 -26
  368. data/spec/unit/config_fetcher_spec.rb +2 -1
  369. data/spec/unit/config_spec.rb +91 -2
  370. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
  371. data/spec/unit/cookbook/metadata_spec.rb +43 -6
  372. data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
  373. data/spec/unit/cookbook_loader_spec.rb +4 -2
  374. data/spec/unit/cookbook_version_spec.rb +83 -2
  375. data/spec/unit/data_bag_item_spec.rb +5 -1
  376. data/spec/unit/data_bag_spec.rb +6 -1
  377. data/spec/unit/dsl/data_query_spec.rb +8 -110
  378. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
  379. data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
  380. data/spec/unit/environment_spec.rb +6 -2
  381. data/spec/unit/exceptions_spec.rb +6 -0
  382. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
  383. data/spec/unit/json_compat_spec.rb +12 -2
  384. data/spec/unit/knife/bootstrap_spec.rb +16 -63
  385. data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
  386. data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
  387. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  388. data/spec/unit/knife/core/ui_spec.rb +28 -0
  389. data/spec/unit/knife/data_bag_create_spec.rb +63 -71
  390. data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
  391. data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
  392. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
  393. data/spec/unit/knife/data_bag_show_spec.rb +74 -72
  394. data/spec/unit/knife/environment_from_file_spec.rb +3 -2
  395. data/spec/unit/knife/ssl_check_spec.rb +46 -1
  396. data/spec/unit/knife/status_spec.rb +1 -2
  397. data/spec/unit/knife_spec.rb +18 -1
  398. data/spec/unit/lwrp_spec.rb +29 -8
  399. data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
  400. data/spec/unit/node_map_spec.rb +155 -0
  401. data/spec/unit/node_spec.rb +11 -0
  402. data/spec/unit/platform/query_helpers_spec.rb +23 -0
  403. data/spec/unit/platform_spec.rb +23 -0
  404. data/spec/unit/provider/breakpoint_spec.rb +9 -9
  405. data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
  406. data/spec/unit/provider/cookbook_file_spec.rb +1 -1
  407. data/spec/unit/provider/cron/unix_spec.rb +78 -60
  408. data/spec/unit/provider/cron_spec.rb +175 -175
  409. data/spec/unit/provider/deploy/revision_spec.rb +22 -21
  410. data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
  411. data/spec/unit/provider/deploy_spec.rb +231 -230
  412. data/spec/unit/provider/directory_spec.rb +55 -55
  413. data/spec/unit/provider/dsc_script_spec.rb +174 -0
  414. data/spec/unit/provider/env/windows_spec.rb +70 -34
  415. data/spec/unit/provider/env_spec.rb +95 -49
  416. data/spec/unit/provider/erl_call_spec.rb +9 -9
  417. data/spec/unit/provider/execute_spec.rb +43 -27
  418. data/spec/unit/provider/file/content_spec.rb +9 -9
  419. data/spec/unit/provider/file_spec.rb +1 -1
  420. data/spec/unit/provider/git_spec.rb +221 -159
  421. data/spec/unit/provider/group/dscl_spec.rb +64 -63
  422. data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
  423. data/spec/unit/provider/group/groupadd_spec.rb +33 -33
  424. data/spec/unit/provider/group/groupmod_spec.rb +23 -23
  425. data/spec/unit/provider/group/pw_spec.rb +21 -21
  426. data/spec/unit/provider/group/usermod_spec.rb +20 -20
  427. data/spec/unit/provider/group/windows_spec.rb +15 -15
  428. data/spec/unit/provider/group_spec.rb +76 -76
  429. data/spec/unit/provider/http_request_spec.rb +30 -30
  430. data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
  431. data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
  432. data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
  433. data/spec/unit/provider/ifconfig_spec.rb +43 -43
  434. data/spec/unit/provider/link_spec.rb +60 -60
  435. data/spec/unit/provider/log_spec.rb +0 -4
  436. data/spec/unit/provider/mdadm_spec.rb +23 -23
  437. data/spec/unit/provider/mount/aix_spec.rb +17 -17
  438. data/spec/unit/provider/mount/mount_spec.rb +115 -119
  439. data/spec/unit/provider/mount/solaris_spec.rb +72 -72
  440. data/spec/unit/provider/mount/windows_spec.rb +24 -24
  441. data/spec/unit/provider/ohai_spec.rb +11 -11
  442. data/spec/unit/provider/package/aix_spec.rb +34 -34
  443. data/spec/unit/provider/package/apt_spec.rb +36 -36
  444. data/spec/unit/provider/package/dpkg_spec.rb +27 -27
  445. data/spec/unit/provider/package/easy_install_spec.rb +16 -16
  446. data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
  447. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
  448. data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
  449. data/spec/unit/provider/package/homebrew_spec.rb +266 -0
  450. data/spec/unit/provider/package/ips_spec.rb +34 -34
  451. data/spec/unit/provider/package/macports_spec.rb +49 -49
  452. data/spec/unit/provider/package/pacman_spec.rb +35 -39
  453. data/spec/unit/provider/package/paludis_spec.rb +20 -20
  454. data/spec/unit/provider/package/portage_spec.rb +38 -38
  455. data/spec/unit/provider/package/rpm_spec.rb +29 -29
  456. data/spec/unit/provider/package/rubygems_spec.rb +284 -270
  457. data/spec/unit/provider/package/smartos_spec.rb +15 -15
  458. data/spec/unit/provider/package/solaris_spec.rb +35 -35
  459. data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
  460. data/spec/unit/provider/package/windows_spec.rb +6 -6
  461. data/spec/unit/provider/package/yum_spec.rb +416 -416
  462. data/spec/unit/provider/package/zypper_spec.rb +47 -47
  463. data/spec/unit/provider/package_spec.rb +107 -107
  464. data/spec/unit/provider/powershell_spec.rb +1 -1
  465. data/spec/unit/provider/registry_key_spec.rb +61 -61
  466. data/spec/unit/provider/remote_directory_spec.rb +36 -36
  467. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
  468. data/spec/unit/provider/remote_file/content_spec.rb +45 -45
  469. data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
  470. data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
  471. data/spec/unit/provider/remote_file/http_spec.rb +44 -44
  472. data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
  473. data/spec/unit/provider/remote_file_spec.rb +3 -3
  474. data/spec/unit/provider/route_spec.rb +63 -63
  475. data/spec/unit/provider/ruby_block_spec.rb +4 -4
  476. data/spec/unit/provider/script_spec.rb +12 -12
  477. data/spec/unit/provider/service/aix_service_spec.rb +181 -0
  478. data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
  479. data/spec/unit/provider/service/arch_service_spec.rb +48 -48
  480. data/spec/unit/provider/service/debian_service_spec.rb +40 -40
  481. data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
  482. data/spec/unit/provider/service/init_service_spec.rb +39 -39
  483. data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
  484. data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
  485. data/spec/unit/provider/service/macosx_spec.rb +49 -49
  486. data/spec/unit/provider/service/redhat_spec.rb +27 -27
  487. data/spec/unit/provider/service/simple_service_spec.rb +28 -28
  488. data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
  489. data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
  490. data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
  491. data/spec/unit/provider/service/windows_spec.rb +92 -92
  492. data/spec/unit/provider/service_spec.rb +40 -40
  493. data/spec/unit/provider/subversion_spec.rb +80 -80
  494. data/spec/unit/provider/template/content_spec.rb +9 -9
  495. data/spec/unit/provider/template_spec.rb +6 -6
  496. data/spec/unit/provider/user/dscl_spec.rb +170 -167
  497. data/spec/unit/provider/user/pw_spec.rb +48 -48
  498. data/spec/unit/provider/user/solaris_spec.rb +8 -8
  499. data/spec/unit/provider/user/useradd_spec.rb +1 -1
  500. data/spec/unit/provider/user/windows_spec.rb +26 -26
  501. data/spec/unit/provider/user_spec.rb +72 -72
  502. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
  503. data/spec/unit/provider_resolver_spec.rb +387 -0
  504. data/spec/unit/recipe_spec.rb +33 -12
  505. data/spec/unit/resource/apt_package_spec.rb +10 -13
  506. data/spec/unit/resource/bash_spec.rb +4 -4
  507. data/spec/unit/resource/batch_spec.rb +1 -1
  508. data/spec/unit/resource/breakpoint_spec.rb +11 -7
  509. data/spec/unit/resource/chef_gem_spec.rb +8 -15
  510. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  511. data/spec/unit/resource/conditional_spec.rb +35 -16
  512. data/spec/unit/resource/cookbook_file_spec.rb +13 -13
  513. data/spec/unit/resource/cron_spec.rb +37 -37
  514. data/spec/unit/resource/csh_spec.rb +4 -4
  515. data/spec/unit/resource/deploy_revision_spec.rb +13 -18
  516. data/spec/unit/resource/deploy_spec.rb +60 -55
  517. data/spec/unit/resource/directory_spec.rb +18 -18
  518. data/spec/unit/resource/dpkg_package_spec.rb +8 -14
  519. data/spec/unit/resource/dsc_script_spec.rb +98 -0
  520. data/spec/unit/resource/easy_install_package_spec.rb +9 -18
  521. data/spec/unit/resource/env_spec.rb +12 -12
  522. data/spec/unit/resource/erl_call_spec.rb +11 -11
  523. data/spec/unit/resource/execute_spec.rb +5 -0
  524. data/spec/unit/resource/file_spec.rb +29 -29
  525. data/spec/unit/resource/freebsd_package_spec.rb +11 -12
  526. data/spec/unit/resource/gem_package_spec.rb +8 -15
  527. data/spec/unit/resource/git_spec.rb +12 -8
  528. data/spec/unit/resource/group_spec.rb +27 -27
  529. data/spec/unit/resource/homebrew_package_spec.rb +50 -0
  530. data/spec/unit/resource/http_request_spec.rb +6 -6
  531. data/spec/unit/resource/ifconfig_spec.rb +8 -8
  532. data/spec/unit/resource/ips_package_spec.rb +10 -13
  533. data/spec/unit/resource/link_spec.rb +25 -25
  534. data/spec/unit/resource/log_spec.rb +9 -9
  535. data/spec/unit/resource/macports_package_spec.rb +8 -13
  536. data/spec/unit/resource/mdadm_spec.rb +18 -18
  537. data/spec/unit/resource/mount_spec.rb +45 -45
  538. data/spec/unit/resource/ohai_spec.rb +7 -7
  539. data/spec/unit/resource/package_spec.rb +12 -12
  540. data/spec/unit/resource/pacman_package_spec.rb +8 -14
  541. data/spec/unit/resource/perl_spec.rb +4 -4
  542. data/spec/unit/resource/portage_package_spec.rb +3 -3
  543. data/spec/unit/resource/powershell_spec.rb +7 -7
  544. data/spec/unit/resource/python_spec.rb +4 -4
  545. data/spec/unit/resource/registry_key_spec.rb +32 -32
  546. data/spec/unit/resource/remote_directory_spec.rb +17 -17
  547. data/spec/unit/resource/remote_file_spec.rb +41 -41
  548. data/spec/unit/resource/route_spec.rb +19 -19
  549. data/spec/unit/resource/rpm_package_spec.rb +9 -13
  550. data/spec/unit/resource/ruby_block_spec.rb +8 -8
  551. data/spec/unit/resource/ruby_spec.rb +4 -4
  552. data/spec/unit/resource/scm_spec.rb +40 -40
  553. data/spec/unit/resource/script_spec.rb +2 -2
  554. data/spec/unit/resource/service_spec.rb +37 -47
  555. data/spec/unit/resource/smartos_package_spec.rb +10 -15
  556. data/spec/unit/resource/solaris_package_spec.rb +13 -28
  557. data/spec/unit/resource/subversion_spec.rb +16 -12
  558. data/spec/unit/resource/template_spec.rb +35 -35
  559. data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
  560. data/spec/unit/resource/user_spec.rb +23 -23
  561. data/spec/unit/resource/windows_package_spec.rb +17 -10
  562. data/spec/unit/resource/windows_service_spec.rb +9 -6
  563. data/spec/unit/resource/yum_package_spec.rb +16 -21
  564. data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
  565. data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
  566. data/spec/unit/resource_collection_spec.rb +73 -92
  567. data/spec/unit/resource_definition_spec.rb +38 -40
  568. data/spec/unit/resource_reporter_spec.rb +3 -3
  569. data/spec/unit/resource_spec.rb +68 -33
  570. data/spec/unit/rest_spec.rb +83 -76
  571. data/spec/unit/role_spec.rb +5 -0
  572. data/spec/unit/run_list_spec.rb +5 -1
  573. data/spec/unit/runner_spec.rb +245 -238
  574. data/spec/unit/shell/shell_ext_spec.rb +1 -1
  575. data/spec/unit/user_spec.rb +5 -1
  576. data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
  577. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
  578. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
  579. data/spec/unit/util/path_helper_spec.rb +23 -1
  580. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
  581. data/spec/unit/workstation_config_loader_spec.rb +1 -1
  582. metadata +303 -196
  583. checksums.yaml +0 -7
  584. data/distro/README +0 -2
  585. data/distro/arch/etc/conf.d/chef-client.conf +0 -5
  586. data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
  587. data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
  588. data/distro/arch/etc/conf.d/chef-server.conf +0 -10
  589. data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
  590. data/distro/arch/etc/rc.d/chef-client +0 -90
  591. data/distro/arch/etc/rc.d/chef-expander +0 -78
  592. data/distro/arch/etc/rc.d/chef-server +0 -78
  593. data/distro/arch/etc/rc.d/chef-server-webui +0 -78
  594. data/distro/arch/etc/rc.d/chef-solr +0 -78
  595. data/distro/debian/etc/default/chef-client +0 -4
  596. data/distro/debian/etc/default/chef-expander +0 -8
  597. data/distro/debian/etc/default/chef-server +0 -9
  598. data/distro/debian/etc/default/chef-server-webui +0 -9
  599. data/distro/debian/etc/default/chef-solr +0 -8
  600. data/distro/debian/etc/init.d/chef-client +0 -212
  601. data/distro/debian/etc/init.d/chef-expander +0 -176
  602. data/distro/debian/etc/init.d/chef-server +0 -122
  603. data/distro/debian/etc/init.d/chef-server-webui +0 -123
  604. data/distro/debian/etc/init.d/chef-solr +0 -176
  605. data/distro/debian/etc/init/chef-client.conf +0 -17
  606. data/distro/debian/etc/init/chef-expander.conf +0 -17
  607. data/distro/debian/etc/init/chef-server-webui.conf +0 -17
  608. data/distro/debian/etc/init/chef-server.conf +0 -17
  609. data/distro/debian/etc/init/chef-solr.conf +0 -17
  610. data/distro/redhat/etc/init.d/chef-client +0 -121
  611. data/distro/redhat/etc/init.d/chef-expander +0 -104
  612. data/distro/redhat/etc/init.d/chef-server +0 -112
  613. data/distro/redhat/etc/init.d/chef-server-webui +0 -112
  614. data/distro/redhat/etc/init.d/chef-solr +0 -104
  615. data/distro/redhat/etc/logrotate.d/chef-client +0 -8
  616. data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
  617. data/distro/redhat/etc/logrotate.d/chef-server +0 -8
  618. data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
  619. data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
  620. data/distro/redhat/etc/sysconfig/chef-client +0 -15
  621. data/distro/redhat/etc/sysconfig/chef-expander +0 -7
  622. data/distro/redhat/etc/sysconfig/chef-server +0 -14
  623. data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
  624. data/distro/redhat/etc/sysconfig/chef-solr +0 -8
  625. data/distro/windows/service_manager.rb +0 -20
  626. data/lib/chef/resource_platform_map.rb +0 -151
  627. data/spec/support/shared/matchers.rb +0 -17
  628. data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -19,6 +19,9 @@
19
19
  require 'spec_helper'
20
20
 
21
21
  describe Chef::Cookbook::CookbookVersionLoader do
22
+ before do
23
+ Chef::Platform.stub(:windows?) { false }
24
+ end
22
25
 
23
26
  describe "loading a cookbook" do
24
27
 
@@ -54,6 +57,11 @@ describe Chef::Cookbook::CookbookVersionLoader do
54
57
  expect(loaded_cookbook.recipe_filenames).to include(full_path("/recipes/return.rb"))
55
58
  end
56
59
 
60
+ it "loads libraries" do
61
+ expect(loaded_cookbook.library_filenames).to include(full_path('/libraries/openldap.rb'))
62
+ expect(loaded_cookbook.library_filenames).to include(full_path('/libraries/openldap/version.rb'))
63
+ end
64
+
57
65
  it "loads static files in the files/ dir" do
58
66
  expect(loaded_cookbook.file_filenames).to include(full_path("/files/default/remotedir/remotesubdir/remote_subdir_file1.txt"))
59
67
  expect(loaded_cookbook.file_filenames).to include(full_path("/files/default/remotedir/remotesubdir/remote_subdir_file2.txt"))
@@ -29,7 +29,8 @@ describe Chef::Cookbook::Metadata do
29
29
  @fields = [ :name, :description, :long_description, :maintainer,
30
30
  :maintainer_email, :license, :platforms, :dependencies,
31
31
  :recommendations, :suggestions, :conflicting, :providing,
32
- :replacing, :attributes, :groupings, :recipes, :version]
32
+ :replacing, :attributes, :groupings, :recipes, :version,
33
+ :source_url, :issues_url ]
33
34
  end
34
35
 
35
36
  it "does not depend on object identity for equality" do
@@ -140,6 +141,13 @@ describe Chef::Cookbook::Metadata do
140
141
  metadata.recipes.should eq(Mash.new)
141
142
  end
142
143
 
144
+ it "has an empty source_url string" do
145
+ metadata.source_url.should eq('')
146
+ end
147
+
148
+ it "has an empty issues_url string" do
149
+ metadata.issues_url.should eq('')
150
+ end
143
151
  end
144
152
 
145
153
  describe "validation" do
@@ -188,7 +196,9 @@ describe Chef::Cookbook::Metadata do
188
196
  :license => "Apache v2.0",
189
197
  :description => "Foobar!",
190
198
  :long_description => "Much Longer\nSeriously",
191
- :version => "0.6.0"
199
+ :version => "0.6.0",
200
+ :source_url => "http://example.com",
201
+ :issues_url => "http://example.com/issues"
192
202
  }
193
203
  params.sort { |a,b| a.to_s <=> b.to_s }.each do |field, field_value|
194
204
  describe field do
@@ -333,7 +343,9 @@ describe Chef::Cookbook::Metadata do
333
343
  "type" => 'string',
334
344
  "required" => 'recommended',
335
345
  "recipes" => [ "mysql::server", "mysql::master" ],
336
- "default" => [ ]
346
+ "default" => [ ],
347
+ "source_url" => "http://example.com",
348
+ "issues_url" => "http://example.com/issues"
337
349
  }
338
350
  metadata.attribute("/db/mysql/databases", attrs).should == attrs
339
351
  end
@@ -356,6 +368,24 @@ describe Chef::Cookbook::Metadata do
356
368
  }.should raise_error(ArgumentError)
357
369
  end
358
370
 
371
+ it "should not accept anything but a string for the source_url" do
372
+ lambda {
373
+ metadata.attribute("db/mysql/databases", :source_url => "foo")
374
+ }.should_not raise_error
375
+ lambda {
376
+ metadata.attribute("db/mysql/databases", :source_url => Hash.new)
377
+ }.should raise_error(ArgumentError)
378
+ end
379
+
380
+ it "should not accept anything but a string for the issues_url" do
381
+ lambda {
382
+ metadata.attribute("db/mysql/databases", :issues_url => "foo")
383
+ }.should_not raise_error
384
+ lambda {
385
+ metadata.attribute("db/mysql/databases", :issues_url => Hash.new)
386
+ }.should raise_error(ArgumentError)
387
+ end
388
+
359
389
  it "should not accept anything but an array of strings for choice" do
360
390
  lambda {
361
391
  metadata.attribute("db/mysql/databases", :choice => ['dedicated', 'shared'])
@@ -623,9 +653,13 @@ describe Chef::Cookbook::Metadata do
623
653
  metadata.version "1.2.3"
624
654
  end
625
655
 
656
+ it "should produce the same output from to_json and Chef::JSONCompat" do
657
+ expect(metadata.to_json).to eq(Chef::JSONCompat.to_json(metadata))
658
+ end
659
+
626
660
  describe "serialize" do
627
661
 
628
- let(:deserialized_metadata) { Chef::JSONCompat.from_json(metadata.to_json) }
662
+ let(:deserialized_metadata) { Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(metadata)) }
629
663
 
630
664
  it "should serialize to a json hash" do
631
665
  deserialized_metadata.should be_a_kind_of(Hash)
@@ -648,6 +682,8 @@ describe Chef::Cookbook::Metadata do
648
682
  attributes
649
683
  recipes
650
684
  version
685
+ source_url
686
+ issues_url
651
687
  }.each do |t|
652
688
  it "should include '#{t}'" do
653
689
  deserialized_metadata[t].should == metadata.send(t.to_sym)
@@ -657,7 +693,7 @@ describe Chef::Cookbook::Metadata do
657
693
 
658
694
  describe "deserialize" do
659
695
 
660
- let(:deserialized_metadata) { Chef::Cookbook::Metadata.from_json(metadata.to_json) }
696
+ let(:deserialized_metadata) { Chef::Cookbook::Metadata.from_json(Chef::JSONCompat.to_json(metadata)) }
661
697
 
662
698
 
663
699
  it "should deserialize to a Chef::Cookbook::Metadata object" do
@@ -681,6 +717,8 @@ describe Chef::Cookbook::Metadata do
681
717
  attributes
682
718
  recipes
683
719
  version
720
+ source_url
721
+ issues_url
684
722
  }.each do |t|
685
723
  it "should match '#{t}'" do
686
724
  deserialized_metadata.send(t.to_sym).should == metadata.send(t.to_sym)
@@ -731,5 +769,4 @@ describe Chef::Cookbook::Metadata do
731
769
  end
732
770
 
733
771
  end
734
-
735
772
  end
@@ -20,15 +20,20 @@ require 'spec_helper'
20
20
  require "chef/cookbook/syntax_check"
21
21
 
22
22
  describe Chef::Cookbook::SyntaxCheck do
23
+ before do
24
+ Chef::Platform.stub(:windows?) { false }
25
+ end
23
26
 
24
27
  let(:cookbook_path) { File.join(CHEF_SPEC_DATA, 'cookbooks', 'openldap') }
25
28
  let(:syntax_check) { Chef::Cookbook::SyntaxCheck.new(cookbook_path) }
26
29
 
27
30
  let(:open_ldap_cookbook_files) do
28
- %w{ attributes/default.rb
31
+ %w{ attributes/default.rb
29
32
  attributes/smokey.rb
30
33
  definitions/client.rb
31
34
  definitions/server.rb
35
+ libraries/openldap.rb
36
+ libraries/openldap/version.rb
32
37
  metadata.rb
33
38
  recipes/default.rb
34
39
  recipes/gigantor.rb
@@ -41,9 +46,10 @@ describe Chef::Cookbook::SyntaxCheck do
41
46
  Chef::Log.level = :warn # suppress "Syntax OK" messages
42
47
 
43
48
  @attr_files = %w{default.rb smokey.rb}.map { |f| File.join(cookbook_path, 'attributes', f) }
49
+ @libr_files = %w{openldap.rb openldap/version.rb}.map { |f| File.join(cookbook_path, 'libraries', f) }
44
50
  @defn_files = %w{client.rb server.rb}.map { |f| File.join(cookbook_path, 'definitions', f)}
45
51
  @recipes = %w{default.rb gigantor.rb one.rb return.rb}.map { |f| File.join(cookbook_path, 'recipes', f) }
46
- @ruby_files = @attr_files + @defn_files + @recipes + [File.join(cookbook_path, "metadata.rb")]
52
+ @ruby_files = @attr_files + @libr_files + @defn_files + @recipes + [File.join(cookbook_path, "metadata.rb")]
47
53
  basenames = %w{ helpers_via_partial_test.erb
48
54
  helper_test.erb
49
55
  openldap_stuff.conf.erb
@@ -19,7 +19,9 @@
19
19
  require 'spec_helper'
20
20
 
21
21
  describe Chef::CookbookLoader do
22
-
22
+ before do
23
+ Chef::Platform.stub(:windows?) {false}
24
+ end
23
25
  let(:repo_paths) do
24
26
  [
25
27
  File.expand_path(File.join(CHEF_SPEC_DATA, "kitchen")),
@@ -208,7 +210,7 @@ describe Chef::CookbookLoader do
208
210
  aa.to_hash["metadata"].recipes.keys.should include("openldap")
209
211
  expected_desc = "Main Open LDAP configuration"
210
212
  aa.to_hash["metadata"].recipes["openldap"].should == expected_desc
211
- raw = aa.to_hash["metadata"].recipes.to_json
213
+ raw = Chef::JSONCompat.to_json(aa.to_hash["metadata"].recipes)
212
214
  search_str = "\"openldap\":\""
213
215
  key_idx = raw.index(search_str)
214
216
  key_idx.should be > 0
@@ -115,14 +115,13 @@ describe Chef::CookbookVersion do
115
115
  @cookbook[:provider_filenames] = Dir[File.join(@cookbook_root, 'providers', '**', '*.rb')]
116
116
  @cookbook[:root_filenames] = Array(File.join(@cookbook_root, 'README.rdoc'))
117
117
  @cookbook[:metadata_filenames] = Array(File.join(@cookbook_root, 'metadata.json'))
118
-
119
118
  end
120
119
 
121
120
  describe "and a cookbook with the same name" do
122
121
  before do
123
122
  # Currently the cookbook loader finds all the files then tells CookbookVersion
124
123
  # where they are.
125
- @cookbook_version = Chef::CookbookVersion.new("tatft", @cookbook_root)
124
+ @cookbook_version = Chef::CookbookVersion.new('tatft', @cookbook_root)
126
125
 
127
126
  @cookbook_version.attribute_filenames = @cookbook[:attribute_filenames]
128
127
  @cookbook_version.definition_filenames = @cookbook[:definition_filenames]
@@ -350,6 +349,84 @@ describe Chef::CookbookVersion do
350
349
  readme["specificity"].should == "default"
351
350
  end
352
351
  end
352
+ end
353
+
354
+ describe 'with a cookbook directory named cookbook2 that has unscoped files' do
355
+ before do
356
+ @cookbook = Hash.new { |hash, key| hash[key] = [] }
357
+
358
+ @cookbook_root = File.join(CHEF_SPEC_DATA, 'cb_version_cookbooks', 'cookbook2')
359
+
360
+ # Dunno if the paths here are representitive of what is set by CookbookLoader...
361
+ @cookbook[:attribute_filenames] = Dir[File.join(@cookbook_root, 'attributes', '**', '*.rb')]
362
+ @cookbook[:definition_filenames] = Dir[File.join(@cookbook_root, 'definitions', '**', '*.rb')]
363
+ @cookbook[:file_filenames] = Dir[File.join(@cookbook_root, 'files', '**', '*.*')]
364
+ @cookbook[:recipe_filenames] = Dir[File.join(@cookbook_root, 'recipes', '**', '*.rb')]
365
+ @cookbook[:template_filenames] = Dir[File.join(@cookbook_root, 'templates', '**', '*.*')]
366
+ @cookbook[:library_filenames] = Dir[File.join(@cookbook_root, 'libraries', '**', '*.rb')]
367
+ @cookbook[:resource_filenames] = Dir[File.join(@cookbook_root, 'resources', '**', '*.rb')]
368
+ @cookbook[:provider_filenames] = Dir[File.join(@cookbook_root, 'providers', '**', '*.rb')]
369
+ @cookbook[:root_filenames] = Array(File.join(@cookbook_root, 'README.rdoc'))
370
+ @cookbook[:metadata_filenames] = Array(File.join(@cookbook_root, 'metadata.json'))
371
+
372
+ @cookbook_version = Chef::CookbookVersion.new('cookbook2', @cookbook_root)
373
+ @cookbook_version.attribute_filenames = @cookbook[:attribute_filenames]
374
+ @cookbook_version.definition_filenames = @cookbook[:definition_filenames]
375
+ @cookbook_version.recipe_filenames = @cookbook[:recipe_filenames]
376
+ @cookbook_version.template_filenames = @cookbook[:template_filenames]
377
+ @cookbook_version.file_filenames = @cookbook[:file_filenames]
378
+ @cookbook_version.library_filenames = @cookbook[:library_filenames]
379
+ @cookbook_version.resource_filenames = @cookbook[:resource_filenames]
380
+ @cookbook_version.provider_filenames = @cookbook[:provider_filenames]
381
+ @cookbook_version.root_filenames = @cookbook[:root_filenames]
382
+ @cookbook_version.metadata_filenames = @cookbook[:metadata_filenames]
383
+
384
+ # Used to test file-specificity related file lookups
385
+ @node = Chef::Node.new
386
+ @node.set[:platform] = "ubuntu"
387
+ @node.set[:platform_version] = "13.04"
388
+ @node.name("testing")
389
+ end
390
+
391
+ it "should see a template" do
392
+ @cookbook_version.should have_template_for_node(@node, "test.erb")
393
+ end
394
+
395
+ it "should see a template using an array lookup" do
396
+ @cookbook_version.should have_template_for_node(@node, ["test.erb"])
397
+ end
398
+
399
+ it "should see a template using an array lookup with non-existant elements" do
400
+ @cookbook_version.should have_template_for_node(@node, ["missing.txt", "test.erb"])
401
+ end
402
+
403
+ it "should see a file" do
404
+ @cookbook_version.should have_cookbook_file_for_node(@node, "test.txt")
405
+ end
406
+
407
+ it "should see a file using an array lookup" do
408
+ @cookbook_version.should have_cookbook_file_for_node(@node, ["test.txt"])
409
+ end
410
+
411
+ it "should see a file using an array lookup with non-existant elements" do
412
+ @cookbook_version.should have_cookbook_file_for_node(@node, ["missing.txt", "test.txt"])
413
+ end
414
+
415
+ it "should not see a non-existant template" do
416
+ @cookbook_version.should_not have_template_for_node(@node, "missing.erb")
417
+ end
418
+
419
+ it "should not see a non-existant template using an array lookup" do
420
+ @cookbook_version.should_not have_template_for_node(@node, ["missing.erb"])
421
+ end
422
+
423
+ it "should not see a non-existant file" do
424
+ @cookbook_version.should_not have_cookbook_file_for_node(@node, "missing.txt")
425
+ end
426
+
427
+ it "should not see a non-existant file using an array lookup" do
428
+ @cookbook_version.should_not have_cookbook_file_for_node(@node, ["missing.txt"])
429
+ end
353
430
 
354
431
  end
355
432
 
@@ -422,4 +499,8 @@ describe Chef::CookbookVersion do
422
499
 
423
500
  end
424
501
 
502
+ include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
503
+ let(:jsonable) { Chef::CookbookVersion.new("tatft", '/tmp/blah') }
504
+ end
505
+
425
506
  end
@@ -166,7 +166,7 @@ describe Chef::DataBagItem do
166
166
  before(:each) do
167
167
  @data_bag_item.data_bag('mars_volta')
168
168
  @data_bag_item.raw_data = { "id" => "octahedron", "snooze" => { "finally" => :world_will }}
169
- @deserial = Chef::JSONCompat.from_json(@data_bag_item.to_json)
169
+ @deserial = Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(@data_bag_item))
170
170
  end
171
171
 
172
172
  it "should deserialize to a Chef::DataBagItem object" do
@@ -184,6 +184,10 @@ describe Chef::DataBagItem do
184
184
  it "should have a matching 'snooze' key" do
185
185
  @deserial["snooze"].should == { "finally" => "world_will" }
186
186
  end
187
+
188
+ include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
189
+ let(:jsonable) { @data_bag_item }
190
+ end
187
191
  end
188
192
 
189
193
  describe "when converting to a string" do
@@ -22,6 +22,7 @@ require 'chef/data_bag'
22
22
  describe Chef::DataBag do
23
23
  before(:each) do
24
24
  @data_bag = Chef::DataBag.new
25
+ Chef::Platform::stub(:windows?) { false }
25
26
  end
26
27
 
27
28
  describe "initialize" do
@@ -58,7 +59,7 @@ describe Chef::DataBag do
58
59
  describe "deserialize" do
59
60
  before(:each) do
60
61
  @data_bag.name('mars_volta')
61
- @deserial = Chef::JSONCompat.from_json(@data_bag.to_json)
62
+ @deserial = Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(@data_bag))
62
63
  end
63
64
 
64
65
  it "should deserialize to a Chef::DataBag object" do
@@ -71,6 +72,10 @@ describe Chef::DataBag do
71
72
  it "should match '#{t}'" do
72
73
  @deserial.send(t.to_sym).should == @data_bag.send(t.to_sym)
73
74
  end
75
+
76
+ include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
77
+ let(:jsonable) { @data_bag }
78
+ end
74
79
  end
75
80
 
76
81
  end
@@ -86,123 +86,21 @@ describe Chef::DSL::DataQuery do
86
86
  end
87
87
 
88
88
  context "when the item is encrypted" do
89
- let(:default_secret) { "abc123SECRET" }
90
-
91
- let(:encoded_data) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_data, default_secret) }
92
-
93
- let(:item) do
94
- item = Chef::DataBagItem.new
95
- item.data_bag(bag_name)
96
- item.raw_data = encoded_data
97
- item
98
- end
89
+ let(:secret) { "abc123SECRET" }
90
+ let(:enc_data_bag) { double("Chef::EncryptedDataBagItem") }
99
91
 
100
92
  before do
101
93
  allow( Chef::DataBagItem ).to receive(:load).with(bag_name, item_name).and_return(item)
94
+ expect(language).to receive(:encrypted?).and_return(true)
95
+ expect( Chef::EncryptedDataBagItem ).to receive(:load_secret).and_return(secret)
102
96
  end
103
97
 
104
- shared_examples_for "encryption detected" do
105
- let(:encoded_data) do
106
- Chef::Config[:data_bag_encrypt_version] = version
107
- Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_data, default_secret)
108
- end
109
-
110
- before do
111
- allow( Chef::EncryptedDataBagItem ).to receive(:load_secret).and_return(default_secret)
112
- end
113
-
114
- it "detects encrypted data bag" do
115
- expect( encryptor ).to receive(:encryptor_keys).at_least(:once).and_call_original
116
- expect( Chef::Log ).to receive(:debug).with(/Data bag item looks encrypted/)
117
- language.data_bag_item(bag_name, item_name)
118
- end
119
- end
120
-
121
- context "when encryption version is 1" do
122
- include_examples "encryption detected" do
123
- let(:version) { 1 }
124
- let(:encryptor) { Chef::EncryptedDataBagItem::Encryptor::Version1Encryptor }
125
- end
126
- end
127
-
128
- context "when encryption version is 2" do
129
- include_examples "encryption detected" do
130
- let(:version) { 2 }
131
- let(:encryptor) { Chef::EncryptedDataBagItem::Encryptor::Version2Encryptor }
132
- end
98
+ it "detects encrypted data bag" do
99
+ expect( Chef::EncryptedDataBagItem ).to receive(:new).with(raw_data, secret).and_return(enc_data_bag)
100
+ expect( Chef::Log ).to receive(:debug).with(/Data bag item looks encrypted/)
101
+ expect(language.data_bag_item(bag_name, item_name)).to eq(enc_data_bag)
133
102
  end
134
103
 
135
- context "when encryption version is 3", :ruby_20_only do
136
- include_examples "encryption detected" do
137
- let(:version) { 3 }
138
- let(:encryptor) { Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor }
139
- end
140
- end
141
-
142
- shared_examples_for "an encrypted data bag item" do
143
- it "returns an encrypted data bag item" do
144
- expect( language.data_bag_item(bag_name, item_name, secret) ).to be_a_kind_of(Chef::EncryptedDataBagItem)
145
- end
146
-
147
- it "decrypts the contents of the data bag item" do
148
- expect( language.data_bag_item(bag_name, item_name, secret).to_hash ).to eql raw_data
149
- end
150
- end
151
-
152
- context "when a secret is supplied" do
153
- include_examples "an encrypted data bag item" do
154
- let(:secret) { default_secret }
155
- end
156
- end
157
-
158
- context "when a secret is not supplied" do
159
- before do
160
- allow( Chef::Config ).to receive(:[]).and_call_original
161
- expect( Chef::Config ).to receive(:[]).with(:encrypted_data_bag_secret).and_return(path)
162
- expect( Chef::EncryptedDataBagItem ).to receive(:load_secret).and_call_original
163
- end
164
-
165
- context "when a secret is located at Chef::Config[:encrypted_data_bag_secret]" do
166
- let(:path) { "/tmp/my_secret" }
167
-
168
- before do
169
- expect( File ).to receive(:exist?).with(path).and_return(true)
170
- expect( IO ).to receive(:read).with(path).and_return(default_secret)
171
- end
172
-
173
- include_examples "an encrypted data bag item" do
174
- let(:secret) { nil }
175
- end
176
- end
177
-
178
- shared_examples_for "no secret file" do
179
- it "should fail to load the data bag item" do
180
- expect( Chef::Log ).to receive(:error).with(/Failed to load secret for encrypted data bag item/)
181
- expect( Chef::Log ).to receive(:error).with(/Failed to load data bag item/)
182
- expect{ language.data_bag_item(bag_name, item_name) }.to raise_error(error_type, error_message)
183
- end
184
- end
185
-
186
- context "when Chef::Config[:encrypted_data_bag_secret] is not configured" do
187
- include_examples "no secret file" do
188
- let(:path) { nil }
189
- let(:error_type) { ArgumentError }
190
- let(:error_message) { /No secret specified and no secret found/ }
191
- end
192
- end
193
-
194
- context "when Chef::Config[:encrypted_data_bag_secret] does not exist" do
195
- include_examples "no secret file" do
196
- before do
197
- expect( File ).to receive(:exist?).with(path).and_return(false)
198
- end
199
-
200
- let(:path) { "/tmp/my_secret" }
201
- let(:error_type) { Errno::ENOENT }
202
- let(:error_message) { /file not found/ }
203
- end
204
- end
205
- end
206
104
  end
207
105
  end
208
106
  end