chef 10.34.6 → 11.0.0.beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (506) hide show
  1. data/CONTRIBUTING.md +155 -0
  2. data/README.md +89 -0
  3. data/Rakefile +4 -12
  4. data/bin/chef-apply +25 -0
  5. data/bin/chef-shell +34 -0
  6. data/bin/shef +6 -5
  7. data/distro/common/html/chef-client.8.html +4 -4
  8. data/distro/common/html/chef-expander.8.html +4 -4
  9. data/distro/common/html/chef-expanderctl.8.html +4 -4
  10. data/distro/common/html/chef-server-webui.8.html +4 -4
  11. data/distro/common/html/chef-server.8.html +4 -4
  12. data/distro/common/html/{shef.1.html → chef-shell.1.html} +49 -46
  13. data/distro/common/html/chef-solo.8.html +18 -12
  14. data/distro/common/html/chef-solr.8.html +4 -4
  15. data/distro/common/html/knife-bootstrap.1.html +4 -4
  16. data/distro/common/html/knife-client.1.html +4 -4
  17. data/distro/common/html/knife-configure.1.html +4 -4
  18. data/distro/common/html/knife-cookbook-site.1.html +4 -4
  19. data/distro/common/html/knife-cookbook.1.html +10 -7
  20. data/distro/common/html/knife-data-bag.1.html +10 -7
  21. data/distro/common/html/knife-environment.1.html +8 -6
  22. data/distro/common/html/knife-exec.1.html +9 -9
  23. data/distro/common/html/knife-index.1.html +4 -4
  24. data/distro/common/html/knife-node.1.html +4 -4
  25. data/distro/common/html/knife-role.1.html +4 -4
  26. data/distro/common/html/knife-search.1.html +4 -4
  27. data/distro/common/html/knife-ssh.1.html +4 -4
  28. data/distro/common/html/knife-status.1.html +4 -4
  29. data/distro/common/html/knife-tag.1.html +4 -4
  30. data/distro/common/html/knife.1.html +8 -13
  31. data/distro/common/man/man1/{shef.1 → chef-shell.1} +21 -57
  32. data/distro/common/man/man1/knife-bootstrap.1 +1 -1
  33. data/distro/common/man/man1/knife-client.1 +1 -1
  34. data/distro/common/man/man1/knife-configure.1 +1 -1
  35. data/distro/common/man/man1/knife-cookbook-site.1 +1 -1
  36. data/distro/common/man/man1/knife-cookbook.1 +15 -2
  37. data/distro/common/man/man1/knife-data-bag.1 +15 -2
  38. data/distro/common/man/man1/knife-environment.1 +12 -2
  39. data/distro/common/man/man1/knife-exec.1 +4 -7
  40. data/distro/common/man/man1/knife-index.1 +1 -1
  41. data/distro/common/man/man1/knife-node.1 +1 -1
  42. data/distro/common/man/man1/knife-role.1 +1 -1
  43. data/distro/common/man/man1/knife-search.1 +1 -1
  44. data/distro/common/man/man1/knife-ssh.1 +1 -1
  45. data/distro/common/man/man1/knife-status.1 +1 -1
  46. data/distro/common/man/man1/knife-tag.1 +1 -1
  47. data/distro/common/man/man1/knife.1 +3 -6
  48. data/distro/common/man/man8/chef-client.8 +1 -1
  49. data/distro/common/man/man8/chef-expander.8 +1 -1
  50. data/distro/common/man/man8/chef-expanderctl.8 +1 -1
  51. data/distro/common/man/man8/chef-server-webui.8 +1 -1
  52. data/distro/common/man/man8/chef-server.8 +1 -1
  53. data/distro/common/man/man8/chef-solo.8 +36 -4
  54. data/distro/common/man/man8/chef-solr.8 +1 -1
  55. data/distro/common/markdown/man1/{shef.mkd → chef-shell.mkd} +49 -43
  56. data/distro/common/markdown/man1/knife-exec.mkd +11 -6
  57. data/distro/common/markdown/man1/knife.mkd +4 -9
  58. data/distro/debian/etc/default/chef-client +0 -1
  59. data/distro/debian/etc/init.d/chef-client +2 -2
  60. data/lib/chef.rb +2 -5
  61. data/lib/chef/api_client.rb +20 -130
  62. data/lib/chef/api_client/registration.rb +126 -0
  63. data/lib/chef/application.rb +71 -14
  64. data/lib/chef/application/apply.rb +160 -0
  65. data/lib/chef/application/client.rb +25 -18
  66. data/lib/chef/application/knife.rb +0 -2
  67. data/lib/chef/application/solo.rb +23 -8
  68. data/lib/chef/application/windows_service.rb +5 -2
  69. data/lib/chef/applications.rb +1 -0
  70. data/lib/chef/chef_fs.rb +11 -0
  71. data/lib/chef/chef_fs/command_line.rb +232 -0
  72. data/lib/chef/chef_fs/file_pattern.rb +312 -0
  73. data/lib/chef/chef_fs/file_system.rb +358 -0
  74. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +47 -0
  75. data/lib/chef/chef_fs/file_system/base_fs_object.rb +121 -0
  76. data/lib/chef/chef_fs/file_system/chef_repository_file_system_entry.rb +109 -0
  77. data/{spec/unit/monkey_patches/uri_spec.rb → lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb} +12 -15
  78. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +84 -0
  79. data/lib/chef/chef_fs/file_system/cookbook_dir.rb +188 -0
  80. data/lib/chef/chef_fs/file_system/cookbook_file.rb +78 -0
  81. data/lib/chef/chef_fs/file_system/cookbook_subdir.rb +54 -0
  82. data/lib/chef/chef_fs/file_system/cookbooks_dir.rb +68 -0
  83. data/lib/chef/chef_fs/file_system/data_bag_dir.rb +78 -0
  84. data/lib/chef/chef_fs/file_system/data_bag_item.rb +59 -0
  85. data/lib/chef/chef_fs/file_system/data_bags_dir.rb +66 -0
  86. data/lib/chef/chef_fs/file_system/file_system_entry.rb +90 -0
  87. data/lib/chef/{index_queue.rb → chef_fs/file_system/file_system_error.rb} +14 -12
  88. data/lib/chef/{resource/whyrun_safe_ruby_block.rb → chef_fs/file_system/file_system_root_dir.rb} +10 -10
  89. data/lib/chef/chef_fs/file_system/must_delete_recursively_error.rb +31 -0
  90. data/lib/chef/chef_fs/file_system/nodes_dir.rb +47 -0
  91. data/lib/chef/{provider/whyrun_safe_ruby_block.rb → chef_fs/file_system/nonexistent_fs_object.rb} +19 -9
  92. data/lib/chef/chef_fs/file_system/not_found_error.rb +31 -0
  93. data/lib/chef/chef_fs/file_system/rest_list_dir.rb +84 -0
  94. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +123 -0
  95. data/lib/chef/chef_fs/knife.rb +77 -0
  96. data/lib/chef/chef_fs/path_utils.rb +64 -0
  97. data/lib/chef/client.rb +44 -21
  98. data/lib/chef/config.rb +52 -43
  99. data/lib/chef/cookbook/synchronizer.rb +6 -8
  100. data/lib/chef/cookbook/syntax_check.rb +61 -14
  101. data/lib/chef/cookbook_loader.rb +39 -26
  102. data/lib/chef/cookbook_uploader.rb +17 -19
  103. data/lib/chef/cookbook_version.rb +3 -302
  104. data/lib/chef/daemon.rb +3 -18
  105. data/lib/chef/data_bag.rb +4 -97
  106. data/lib/chef/data_bag_item.rb +2 -65
  107. data/lib/chef/digester.rb +73 -0
  108. data/lib/chef/dsl.rb +6 -0
  109. data/lib/chef/dsl/data_query.rb +66 -0
  110. data/lib/chef/dsl/include_attribute.rb +60 -0
  111. data/lib/chef/dsl/include_recipe.rb +42 -0
  112. data/lib/chef/dsl/platform_introspection.rb +213 -0
  113. data/lib/chef/dsl/recipe.rb +84 -0
  114. data/lib/chef/dsl/registry_helper.rb +59 -0
  115. data/lib/chef/encrypted_data_bag_item.rb +74 -19
  116. data/lib/chef/environment.rb +9 -180
  117. data/lib/chef/exceptions.rb +87 -14
  118. data/lib/chef/formatters/base.rb +4 -1
  119. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +0 -4
  120. data/lib/chef/json_compat.rb +1 -97
  121. data/lib/chef/knife.rb +90 -41
  122. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  123. data/lib/chef/knife/bootstrap/centos5-gems.erb +2 -2
  124. data/lib/chef/knife/bootstrap/chef-full.erb +3 -3
  125. data/lib/chef/knife/bootstrap/fedora13-gems.erb +2 -2
  126. data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
  127. data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +2 -2
  128. data/lib/chef/knife/bootstrap/ubuntu12.04-gems.erb +2 -2
  129. data/lib/chef/knife/configure.rb +1 -2
  130. data/lib/chef/knife/cookbook_metadata.rb +1 -0
  131. data/lib/chef/knife/cookbook_test.rb +3 -2
  132. data/lib/chef/knife/cookbook_upload.rb +12 -7
  133. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  134. data/lib/chef/knife/core/generic_presenter.rb +26 -13
  135. data/lib/chef/knife/core/node_editor.rb +36 -16
  136. data/lib/chef/knife/core/node_presenter.rb +1 -1
  137. data/lib/chef/knife/core/text_formatter.rb +23 -37
  138. data/lib/chef/knife/core/ui.rb +15 -9
  139. data/lib/chef/knife/delete.rb +39 -0
  140. data/lib/chef/knife/diff.rb +46 -0
  141. data/lib/chef/knife/download.rb +50 -0
  142. data/lib/chef/knife/environment_show.rb +7 -0
  143. data/lib/chef/knife/exec.rb +5 -5
  144. data/lib/chef/knife/help_topics.rb +1 -1
  145. data/lib/chef/knife/index_rebuild.rb +91 -7
  146. data/lib/chef/knife/list.rb +109 -0
  147. data/lib/chef/knife/raw.rb +108 -0
  148. data/lib/chef/knife/search.rb +40 -22
  149. data/lib/chef/knife/show.rb +32 -0
  150. data/lib/chef/knife/ssh.rb +6 -2
  151. data/lib/chef/knife/upload.rb +50 -0
  152. data/lib/chef/mixin/checksum.rb +3 -3
  153. data/lib/chef/mixin/deep_merge.rb +55 -197
  154. data/lib/chef/mixin/language.rb +9 -222
  155. data/lib/chef/mixin/language_include_attribute.rb +6 -38
  156. data/lib/chef/mixin/language_include_recipe.rb +3 -35
  157. data/lib/chef/mixin/params_validate.rb +6 -19
  158. data/lib/chef/mixin/recipe_definition_dsl_core.rb +8 -61
  159. data/lib/chef/mixin/securable.rb +32 -7
  160. data/lib/chef/mixin/template.rb +40 -0
  161. data/lib/chef/mixins.rb +0 -4
  162. data/lib/chef/monkey_patches/net_http.rb +0 -34
  163. data/lib/chef/node.rb +133 -309
  164. data/lib/chef/node/attribute.rb +333 -473
  165. data/lib/chef/node/attribute_collections.rb +199 -0
  166. data/lib/chef/node/immutable_collections.rb +186 -0
  167. data/lib/chef/platform.rb +7 -22
  168. data/lib/chef/provider.rb +2 -49
  169. data/lib/chef/provider/breakpoint.rb +6 -6
  170. data/lib/chef/provider/cookbook_file.rb +5 -33
  171. data/lib/chef/provider/deploy.rb +2 -1
  172. data/lib/chef/provider/directory.rb +14 -17
  173. data/lib/chef/provider/file.rb +19 -52
  174. data/lib/chef/provider/group.rb +31 -51
  175. data/lib/chef/provider/group/dscl.rb +13 -53
  176. data/lib/chef/provider/group/gpasswd.rb +19 -14
  177. data/lib/chef/provider/group/groupadd.rb +1 -41
  178. data/lib/chef/provider/group/groupmod.rb +36 -46
  179. data/lib/chef/provider/group/pw.rb +16 -59
  180. data/lib/chef/provider/group/suse.rb +13 -16
  181. data/lib/chef/provider/group/usermod.rb +18 -40
  182. data/lib/chef/provider/group/windows.rb +6 -13
  183. data/lib/chef/provider/http_request.rb +25 -42
  184. data/lib/chef/provider/link.rb +2 -0
  185. data/lib/chef/provider/lwrp_base.rb +150 -0
  186. data/lib/chef/provider/package/portage.rb +4 -9
  187. data/lib/chef/provider/package/rpm.rb +2 -2
  188. data/lib/chef/provider/package/rubygems.rb +9 -41
  189. data/lib/chef/provider/package/yum.rb +12 -19
  190. data/lib/chef/provider/registry_key.rb +156 -0
  191. data/lib/chef/provider/remote_directory.rb +2 -0
  192. data/lib/chef/provider/remote_file.rb +21 -12
  193. data/lib/chef/provider/ruby_block.rb +5 -2
  194. data/lib/chef/provider/service.rb +15 -0
  195. data/lib/chef/provider/service/init.rb +9 -7
  196. data/lib/chef/provider/service/macosx.rb +15 -73
  197. data/lib/chef/provider/service/simple.rb +1 -1
  198. data/lib/chef/provider/service/solaris.rb +3 -3
  199. data/lib/chef/provider/template.rb +22 -25
  200. data/lib/chef/provider/template_finder.rb +61 -0
  201. data/lib/chef/provider/user.rb +0 -1
  202. data/lib/chef/provider/user/dscl.rb +175 -568
  203. data/lib/chef/provider/user/useradd.rb +30 -47
  204. data/lib/chef/providers.rb +3 -2
  205. data/lib/chef/recipe.rb +14 -8
  206. data/lib/chef/resource.rb +13 -154
  207. data/lib/chef/resource/group.rb +1 -11
  208. data/lib/chef/resource/http_request.rb +2 -1
  209. data/lib/chef/resource/lwrp_base.rb +127 -0
  210. data/lib/chef/resource/mount.rb +10 -11
  211. data/lib/chef/resource/registry_key.rb +86 -0
  212. data/lib/chef/resource/remote_directory.rb +6 -5
  213. data/lib/chef/resource/remote_file.rb +22 -31
  214. data/lib/chef/resource/ruby_block.rb +2 -2
  215. data/lib/chef/resource/service.rb +14 -0
  216. data/lib/chef/resource/user.rb +0 -18
  217. data/lib/chef/resource_collection.rb +25 -21
  218. data/lib/chef/resources.rb +2 -1
  219. data/lib/chef/rest.rb +50 -131
  220. data/lib/chef/rest/auth_credentials.rb +4 -20
  221. data/lib/chef/rest/rest_request.rb +2 -7
  222. data/lib/chef/role.rb +1 -97
  223. data/lib/chef/run_context.rb +108 -130
  224. data/lib/chef/run_context/cookbook_compiler.rb +280 -0
  225. data/lib/chef/run_list.rb +0 -2
  226. data/lib/chef/run_list/run_list_expansion.rb +0 -15
  227. data/lib/chef/run_lock.rb +90 -0
  228. data/lib/chef/runner.rb +28 -5
  229. data/lib/chef/sandbox.rb +15 -148
  230. data/lib/chef/scan_access_control.rb +2 -4
  231. data/lib/chef/shef/ext.rb +3 -575
  232. data/lib/chef/{shef.rb → shell.rb} +35 -40
  233. data/lib/chef/shell/ext.rb +593 -0
  234. data/lib/chef/{shef → shell}/model_wrapper.rb +3 -3
  235. data/lib/chef/{shef/shef_rest.rb → shell/shell_rest.rb} +4 -4
  236. data/lib/chef/{shef/shef_session.rb → shell/shell_session.rb} +17 -15
  237. data/lib/chef/shell_out.rb +7 -0
  238. data/lib/chef/util/windows/net_group.rb +1 -5
  239. data/lib/chef/version.rb +3 -3
  240. data/lib/chef/win32/api/process.rb +0 -1
  241. data/lib/chef/win32/handle.rb +1 -8
  242. data/lib/chef/win32/registry.rb +371 -0
  243. data/spec/data/big_json.json +1 -2
  244. data/spec/data/big_json_plus_one.json +1 -2
  245. data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
  246. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  247. data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
  248. data/spec/data/nodes/default.rb +3 -3
  249. data/spec/data/nodes/test.example.com.rb +3 -3
  250. data/spec/data/nodes/test.rb +3 -3
  251. data/spec/data/partial_one.erb +1 -0
  252. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
  253. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
  254. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
  255. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
  256. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
  257. data/spec/data/{knife-home/.chef/plugins/knife/example_home_subcommand.rb → run_context/cookbooks/circular-dep1/recipes/default.rb} +0 -0
  258. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  259. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
  260. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
  261. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
  262. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
  263. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
  264. data/spec/data/{lwrp_const_scoping/resources/conflict.rb → run_context/cookbooks/circular-dep2/recipes/default.rb} +0 -0
  265. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  266. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
  267. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
  268. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
  269. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
  270. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
  271. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
  272. data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
  273. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  274. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
  275. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
  276. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
  277. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
  278. data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
  279. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  280. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
  281. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
  282. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
  283. data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
  284. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  285. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
  286. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
  287. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
  288. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
  289. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
  290. data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
  291. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
  292. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
  293. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
  294. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
  295. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
  296. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
  297. data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
  298. data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
  299. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  300. data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
  301. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  302. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
  303. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
  304. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
  305. data/spec/data/shef-config.rb +7 -0
  306. data/spec/functional/dsl/registry_helper_spec.rb +63 -0
  307. data/spec/functional/knife/cookbook_delete_spec.rb +1 -1
  308. data/spec/functional/knife/exec_spec.rb +2 -2
  309. data/spec/functional/knife/ssh_spec.rb +5 -1
  310. data/spec/functional/resource/cookbook_file_spec.rb +7 -19
  311. data/spec/functional/resource/directory_spec.rb +4 -0
  312. data/spec/functional/resource/file_spec.rb +56 -22
  313. data/spec/functional/resource/link_spec.rb +2 -0
  314. data/spec/functional/resource/registry_spec.rb +576 -0
  315. data/spec/functional/resource/remote_directory_spec.rb +142 -36
  316. data/spec/functional/resource/remote_file_spec.rb +18 -0
  317. data/spec/functional/resource/template_spec.rb +23 -2
  318. data/spec/functional/run_lock_spec.rb +106 -0
  319. data/spec/functional/shell_spec.rb +100 -0
  320. data/spec/functional/win32/registry_helper_spec.rb +632 -0
  321. data/spec/spec_helper.rb +5 -29
  322. data/spec/stress/win32/security_spec.rb +1 -1
  323. data/spec/support/chef_helpers.rb +0 -2
  324. data/spec/support/platform_helpers.rb +8 -15
  325. data/spec/support/shared/functional/directory_resource.rb +84 -22
  326. data/spec/support/shared/functional/file_resource.rb +169 -71
  327. data/spec/support/shared/functional/securable_resource.rb +143 -119
  328. data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
  329. data/spec/support/shared/unit/file_system_support.rb +110 -0
  330. data/spec/support/shared/unit/platform_introspector.rb +162 -0
  331. data/spec/unit/api_client/registration_spec.rb +175 -0
  332. data/spec/unit/api_client_spec.rb +78 -156
  333. data/spec/unit/application/apply.rb +84 -0
  334. data/spec/unit/application/client_spec.rb +1 -37
  335. data/spec/unit/application/knife_spec.rb +5 -0
  336. data/spec/unit/application_spec.rb +57 -2
  337. data/spec/unit/checksum/storage/filesystem_spec.rb +1 -1
  338. data/spec/unit/chef_fs/diff_spec.rb +328 -0
  339. data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
  340. data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
  341. data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
  342. data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
  343. data/spec/unit/chef_fs/file_system_spec.rb +136 -0
  344. data/spec/unit/client_spec.rb +124 -33
  345. data/spec/unit/config_spec.rb +46 -13
  346. data/spec/unit/cookbook/synchronizer_spec.rb +1 -49
  347. data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
  348. data/spec/unit/cookbook_loader_spec.rb +153 -91
  349. data/spec/unit/cookbook_manifest_spec.rb +81 -81
  350. data/spec/unit/cookbook_spec.rb +3 -20
  351. data/spec/unit/cookbook_version_spec.rb +23 -122
  352. data/spec/unit/daemon_spec.rb +3 -24
  353. data/spec/unit/data_bag_spec.rb +6 -4
  354. data/spec/unit/digester_spec.rb +50 -0
  355. data/spec/unit/dsl/data_query_spec.rb +66 -0
  356. data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
  357. data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
  358. data/spec/unit/encrypted_data_bag_item_spec.rb +50 -105
  359. data/spec/unit/environment_spec.rb +0 -130
  360. data/spec/unit/exceptions_spec.rb +2 -3
  361. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +3 -3
  362. data/spec/unit/json_compat_spec.rb +15 -7
  363. data/spec/unit/knife/bootstrap_spec.rb +2 -0
  364. data/spec/unit/knife/configure_spec.rb +20 -14
  365. data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
  366. data/spec/unit/knife/cookbook_test_spec.rb +1 -0
  367. data/spec/unit/knife/cookbook_upload_spec.rb +43 -8
  368. data/spec/unit/knife/core/bootstrap_context_spec.rb +1 -1
  369. data/spec/unit/knife/core/ui_spec.rb +156 -125
  370. data/spec/unit/knife/data_bag_create_spec.rb +9 -0
  371. data/spec/unit/knife/data_bag_edit_spec.rb +1 -4
  372. data/spec/unit/knife/data_bag_from_file_spec.rb +4 -6
  373. data/spec/unit/knife/data_bag_show_spec.rb +11 -4
  374. data/spec/unit/knife/index_rebuild_spec.rb +96 -33
  375. data/spec/unit/knife/knife_help.rb +7 -7
  376. data/spec/unit/knife/node_edit_spec.rb +6 -33
  377. data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
  378. data/spec/unit/knife/ssh_spec.rb +12 -15
  379. data/spec/unit/knife/status_spec.rb +2 -2
  380. data/spec/unit/knife_spec.rb +53 -0
  381. data/spec/unit/lwrp_spec.rb +59 -42
  382. data/spec/unit/mixin/checksum_spec.rb +2 -2
  383. data/spec/unit/mixin/deep_merge_spec.rb +101 -799
  384. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
  385. data/spec/unit/mixin/params_validate_spec.rb +4 -37
  386. data/spec/unit/mixin/securable_spec.rb +5 -3
  387. data/spec/unit/mixin/template_spec.rb +119 -0
  388. data/spec/unit/node/attribute_spec.rb +195 -173
  389. data/spec/unit/node/immutable_collections_spec.rb +139 -0
  390. data/spec/unit/node_spec.rb +366 -370
  391. data/spec/unit/platform_spec.rb +9 -10
  392. data/spec/unit/provider/breakpoint_spec.rb +8 -8
  393. data/spec/unit/provider/cookbook_file_spec.rb +4 -8
  394. data/spec/unit/provider/directory_spec.rb +96 -64
  395. data/spec/unit/provider/env_spec.rb +2 -2
  396. data/spec/unit/provider/file_spec.rb +48 -39
  397. data/spec/unit/provider/group/dscl_spec.rb +0 -36
  398. data/spec/unit/provider/group/gpasswd_spec.rb +9 -16
  399. data/spec/unit/provider/group/groupadd_spec.rb +4 -3
  400. data/spec/unit/provider/group/groupmod_spec.rb +1 -0
  401. data/spec/unit/provider/group/pw_spec.rb +15 -12
  402. data/spec/unit/provider/group/usermod_spec.rb +6 -21
  403. data/spec/unit/provider/group/windows_spec.rb +8 -0
  404. data/spec/unit/provider/group_spec.rb +6 -28
  405. data/spec/unit/provider/http_request_spec.rb +28 -69
  406. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  407. data/spec/unit/provider/ohai_spec.rb +4 -4
  408. data/spec/unit/provider/package/apt_spec.rb +0 -1
  409. data/spec/unit/provider/package/ips_spec.rb +0 -1
  410. data/spec/unit/provider/package/portage_spec.rb +0 -44
  411. data/spec/unit/provider/package/rpm_spec.rb +0 -12
  412. data/spec/unit/provider/package/rubygems_spec.rb +1 -44
  413. data/spec/unit/provider/package/yum_spec.rb +39 -36
  414. data/spec/unit/provider/package_spec.rb +7 -5
  415. data/spec/unit/provider/registry_key_spec.rb +269 -0
  416. data/spec/unit/provider/remote_directory_spec.rb +7 -3
  417. data/spec/unit/provider/remote_file_spec.rb +36 -0
  418. data/spec/unit/provider/route_spec.rb +4 -3
  419. data/spec/unit/provider/ruby_block_spec.rb +8 -0
  420. data/spec/unit/provider/service/arch_service_spec.rb +5 -5
  421. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  422. data/spec/unit/provider/service/freebsd_service_spec.rb +5 -5
  423. data/spec/unit/provider/service/init_service_spec.rb +27 -4
  424. data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
  425. data/spec/unit/provider/service/invokercd_service_spec.rb +4 -4
  426. data/spec/unit/provider/service/macosx_spec.rb +11 -66
  427. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  428. data/spec/unit/provider/service/simple_service_spec.rb +3 -3
  429. data/spec/unit/provider/service/upstart_service_spec.rb +9 -9
  430. data/spec/unit/provider/subversion_spec.rb +1 -1
  431. data/spec/unit/provider/template_spec.rb +35 -11
  432. data/spec/unit/provider/user/dscl_spec.rb +285 -681
  433. data/spec/unit/provider/user/useradd_spec.rb +1 -22
  434. data/spec/unit/provider/user_spec.rb +1 -1
  435. data/spec/unit/recipe_spec.rb +10 -8
  436. data/spec/unit/registry_helper_spec.rb +374 -0
  437. data/spec/unit/resource/mount_spec.rb +0 -11
  438. data/spec/unit/resource/registry_key_spec.rb +171 -0
  439. data/spec/unit/resource/remote_file_spec.rb +21 -23
  440. data/spec/unit/resource/ruby_block_spec.rb +7 -3
  441. data/spec/unit/resource/service_spec.rb +11 -0
  442. data/spec/unit/resource_spec.rb +4 -19
  443. data/spec/unit/rest/auth_credentials_spec.rb +2 -19
  444. data/spec/unit/rest_spec.rb +130 -284
  445. data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
  446. data/spec/unit/run_context_spec.rb +18 -4
  447. data/spec/unit/run_list_spec.rb +0 -209
  448. data/spec/unit/run_lock_spec.rb +37 -0
  449. data/spec/unit/runner_spec.rb +101 -2
  450. data/spec/unit/scan_access_control_spec.rb +4 -4
  451. data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
  452. data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
  453. data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +14 -69
  454. data/spec/unit/shell_out_spec.rb +18 -0
  455. data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
  456. metadata +275 -234
  457. checksums.yaml +0 -15
  458. data/README.rdoc +0 -177
  459. data/distro/common/html/knife-recipe.1.html +0 -92
  460. data/lib/chef/certificate.rb +0 -161
  461. data/lib/chef/checksum.rb +0 -167
  462. data/lib/chef/checksum_cache.rb +0 -190
  463. data/lib/chef/cookbook_version_selector.rb +0 -168
  464. data/lib/chef/couchdb.rb +0 -246
  465. data/lib/chef/index_queue/amqp_client.rb +0 -116
  466. data/lib/chef/index_queue/consumer.rb +0 -76
  467. data/lib/chef/index_queue/indexable.rb +0 -109
  468. data/lib/chef/knife/bootstrap/ubuntu12.10-gems.erb +0 -60
  469. data/lib/chef/monkey_patches/moneta.rb +0 -50
  470. data/lib/chef/monkey_patches/uri.rb +0 -70
  471. data/lib/chef/openid_registration.rb +0 -187
  472. data/lib/chef/provider/user/solaris.rb +0 -90
  473. data/lib/chef/solr_query.rb +0 -187
  474. data/lib/chef/solr_query/lucene.treetop +0 -150
  475. data/lib/chef/solr_query/lucene_nodes.rb +0 -285
  476. data/lib/chef/solr_query/query_transform.rb +0 -65
  477. data/lib/chef/solr_query/solr_http_request.rb +0 -132
  478. data/lib/chef/webui_user.rb +0 -231
  479. data/spec/data/cookbooks/openldap/files/default/.dotfile +0 -1
  480. data/spec/data/cookbooks/openldap/files/default/.ssh/id_rsa +0 -1
  481. data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +0 -1
  482. data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +0 -1
  483. data/spec/data/mac_users/10.7-8.plist.xml +0 -559
  484. data/spec/data/mac_users/10.7-8.shadow.xml +0 -11
  485. data/spec/data/mac_users/10.7.plist.xml +0 -559
  486. data/spec/data/mac_users/10.7.shadow.xml +0 -11
  487. data/spec/data/mac_users/10.8.plist.xml +0 -559
  488. data/spec/data/mac_users/10.8.shadow.xml +0 -21
  489. data/spec/data/mac_users/10.9.plist.xml +0 -560
  490. data/spec/data/mac_users/10.9.shadow.xml +0 -21
  491. data/spec/functional/resource/base.rb +0 -40
  492. data/spec/functional/resource/group_spec.rb +0 -343
  493. data/spec/functional/resource/user/dscl_spec.rb +0 -199
  494. data/spec/unit/certificate_spec.rb +0 -76
  495. data/spec/unit/checksum_cache_spec.rb +0 -209
  496. data/spec/unit/checksum_spec.rb +0 -94
  497. data/spec/unit/couchdb_spec.rb +0 -274
  498. data/spec/unit/index_queue_spec.rb +0 -391
  499. data/spec/unit/mixin/language_spec.rb +0 -305
  500. data/spec/unit/openid_registration_spec.rb +0 -153
  501. data/spec/unit/provider/user/solaris_spec.rb +0 -414
  502. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +0 -47
  503. data/spec/unit/solr_query/query_transform_spec.rb +0 -454
  504. data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
  505. data/spec/unit/solr_query_spec.rb +0 -203
  506. data/spec/unit/webui_user_spec.rb +0 -238
@@ -265,7 +265,6 @@ describe Chef::Provider::Group::Dscl do
265
265
  it "should manage the group_name if it changed and the new resources group_name is not null" do
266
266
  @current_resource.group_name("oldval")
267
267
  @new_resource.group_name("newname")
268
- @provider.should_receive(:set_members).and_return(true)
269
268
  @provider.should_receive(:safe_dscl).with("create /Groups/newname")
270
269
  @provider.should_receive(:safe_dscl).with("create /Groups/newname Password '*'")
271
270
  @provider.manage_group
@@ -293,38 +292,3 @@ describe Chef::Provider::Group::Dscl do
293
292
  end
294
293
  end
295
294
  end
296
-
297
- describe 'Test DSCL loading' do
298
- before do
299
- @node = Chef::Node.new
300
- @events = Chef::EventDispatch::Dispatcher.new
301
- @run_context = Chef::RunContext.new(@node, {}, @events)
302
- @new_resource = Chef::Resource::Group.new("aj")
303
- @provider = Chef::Provider::Group::Dscl.new(@new_resource, @run_context)
304
- @output = <<-EOF
305
- AppleMetaNodeLocation: /Local/Default
306
- Comment:
307
- Test Group
308
- GeneratedUID: AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
309
- NestedGroups: AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAB
310
- Password: *
311
- PrimaryGroupID: 999
312
- RealName:
313
- TestGroup
314
- RecordName: com.apple.aj
315
- RecordType: dsRecTypeStandard:Groups
316
- GroupMembership: waka bar
317
- EOF
318
- @provider.stub(:safe_dscl).with("read /Groups/aj").and_return(@output)
319
- @current_resource = @provider.load_current_resource
320
- end
321
-
322
- it 'should parse gid properly' do
323
- File.stub(:exists?).and_return(true)
324
- @current_resource.gid.should eq("999")
325
- end
326
- it 'should parse members properly' do
327
- File.stub(:exists?).and_return(true)
328
- @current_resource.members.should eq(['waka', 'bar'])
329
- end
330
- end
@@ -76,7 +76,8 @@ describe Chef::Provider::Group::Gpasswd, "modify_group_members" do
76
76
  @new_resource.members([])
77
77
  end
78
78
 
79
- it "does not modify group membership" do
79
+ it "logs a message and does not modify group membership" do
80
+ Chef::Log.should_receive(:debug).with("group[wheel] not changing group members, the group has no members to add")
80
81
  @provider.should_not_receive(:shell_out!)
81
82
  @provider.modify_group_members
82
83
  end
@@ -84,7 +85,7 @@ describe Chef::Provider::Group::Gpasswd, "modify_group_members" do
84
85
 
85
86
  describe "when the resource specifies group members" do
86
87
  it "should log an appropriate debug message" do
87
- Chef::Log.should_receive(:debug).with("group[wheel] setting group members to: lobster, rage, fist")
88
+ Chef::Log.should_receive(:debug).with("group[wheel] setting group members to lobster, rage, fist")
88
89
  @provider.stub!(:shell_out!)
89
90
  @provider.modify_group_members
90
91
  end
@@ -94,20 +95,12 @@ describe Chef::Provider::Group::Gpasswd, "modify_group_members" do
94
95
  @provider.modify_group_members
95
96
  end
96
97
 
97
- describe "when no user exists in the system" do
98
- before do
99
- current_resource = @new_resource.dup
100
- current_resource.members([ ])
101
- @provider.current_resource = current_resource
102
- end
103
-
104
- it "should run gpasswd individually for each user when the append option is set" do
105
- @new_resource.append(true)
106
- @provider.should_receive(:shell_out!).with("gpasswd -a lobster wheel")
107
- @provider.should_receive(:shell_out!).with("gpasswd -a rage wheel")
108
- @provider.should_receive(:shell_out!).with("gpasswd -a fist wheel")
109
- @provider.modify_group_members
110
- end
98
+ it "should run gpasswd individually for each user when the append option is set" do
99
+ @new_resource.append(true)
100
+ @provider.should_receive(:shell_out!).with("gpasswd -a lobster wheel")
101
+ @provider.should_receive(:shell_out!).with("gpasswd -a rage wheel")
102
+ @provider.should_receive(:shell_out!).with("gpasswd -a fist wheel")
103
+ @provider.modify_group_members
111
104
  end
112
105
 
113
106
  end
@@ -129,9 +129,10 @@ describe Chef::Provider::Group::Groupadd do
129
129
  end
130
130
  end
131
131
 
132
- [:add_member, :remove_member, :set_members].each do |m|
133
- it "should raise an error when calling #{m}" do
134
- lambda { @provider.send(m, [ ]) }.should raise_error(Chef::Exceptions::Group, "you must override #{m} in #{@provider.to_s}")
132
+ describe "modify_group_members" do
133
+
134
+ it "should raise an error when calling modify_group_members" do
135
+ lambda { @provider.modify_group_members }.should raise_error(Chef::Exceptions::Group, "you must override modify_group_members in #{@provider.to_s}")
135
136
  end
136
137
  end
137
138
 
@@ -62,6 +62,7 @@ describe Chef::Provider::Group::Groupmod do
62
62
 
63
63
  it "logs a message and sets group's members to 'none', then removes existing group members" do
64
64
  Chef::Log.should_receive(:debug).with("group[wheel] setting group members to: none")
65
+ Chef::Log.should_receive(:debug).with("group[wheel] removing members lobster, rage, fist")
65
66
  @provider.should_receive(:shell_out!).with("group mod -n wheel_bak wheel")
66
67
  @provider.should_receive(:shell_out!).with("group add -g '123' -o wheel")
67
68
  @provider.should_receive(:shell_out!).with("group del wheel_bak")
@@ -49,7 +49,7 @@ describe Chef::Provider::Group::Pw do
49
49
  describe "when creating a group" do
50
50
  it "should run pw groupadd with the return of set_options and set_members_option" do
51
51
  @new_resource.gid(23)
52
- @provider.should_receive(:run_command).with({ :command => "pw groupadd wheel -g '23'" }).and_return(true)
52
+ @provider.should_receive(:run_command).with({ :command => "pw groupadd wheel -g '23' -M root,aj" }).and_return(true)
53
53
  @provider.create_group
54
54
  end
55
55
  end
@@ -58,9 +58,7 @@ describe Chef::Provider::Group::Pw do
58
58
 
59
59
  it "should run pw groupmod with the return of set_options" do
60
60
  @new_resource.gid(42)
61
- @new_resource.members(["someone"])
62
- @provider.should_receive(:run_command).with({ :command => "pw groupmod wheel -g '42' -m someone" }).and_return(true)
63
- @provider.should_receive(:run_command).with({ :command => "pw groupmod wheel -g '42' -d root,aj" }).and_return(true)
61
+ @provider.should_receive(:run_command).with({ :command => "pw groupmod wheel -g '42' -M root,aj" }).and_return(true)
64
62
  @provider.manage_group
65
63
  end
66
64
 
@@ -80,9 +78,14 @@ describe Chef::Provider::Group::Pw do
80
78
  @new_resource.stub!(:members).and_return([])
81
79
  @current_resource.stub!(:members).and_return([])
82
80
  end
83
-
81
+
82
+ it "should log an appropriate message" do
83
+ Chef::Log.should_receive(:debug).with("group[wheel] not changing group members, the group has no members")
84
+ @provider.set_members_option
85
+ end
86
+
84
87
  it "should set no options" do
85
- @provider.set_members_options.should eql([ ])
88
+ @provider.set_members_option.should eql("")
86
89
  end
87
90
  end
88
91
 
@@ -93,12 +96,12 @@ describe Chef::Provider::Group::Pw do
93
96
  end
94
97
 
95
98
  it "should log an appropriate message" do
96
- Chef::Log.should_receive(:debug).with("group[wheel] removing group members: all,your,base")
97
- @provider.set_members_options
99
+ Chef::Log.should_receive(:debug).with("group[wheel] removing group members all, your, base")
100
+ @provider.set_members_option
98
101
  end
99
102
 
100
103
  it "should set the -d option with the members joined by ','" do
101
- @provider.set_members_options.should eql([ " -d all,your,base" ])
104
+ @provider.set_members_option.should eql(" -d all,your,base")
102
105
  end
103
106
  end
104
107
 
@@ -109,12 +112,12 @@ describe Chef::Provider::Group::Pw do
109
112
  end
110
113
 
111
114
  it "should log an appropriate debug message" do
112
- Chef::Log.should_receive(:debug).with("group[wheel] adding group members: all,your,base")
113
- @provider.set_members_options
115
+ Chef::Log.should_receive(:debug).with("group[wheel] setting group members to all, your, base")
116
+ @provider.set_members_option
114
117
  end
115
118
 
116
119
  it "should set the -M option with the members joined by ','" do
117
- @provider.set_members_options.should eql([ " -m all,your,base" ])
120
+ @provider.set_members_option.should eql(" -M all,your,base")
118
121
  end
119
122
  end
120
123
  end
@@ -25,7 +25,6 @@ describe Chef::Provider::Group::Usermod do
25
25
  @run_context = Chef::RunContext.new(@node, {}, @events)
26
26
  @new_resource = Chef::Resource::Group.new("wheel")
27
27
  @new_resource.members [ "all", "your", "base" ]
28
- @new_resource.excluded_members [ ]
29
28
  @provider = Chef::Provider::Group::Usermod.new(@new_resource, @run_context)
30
29
  @provider.stub!(:run_command)
31
30
  end
@@ -34,12 +33,11 @@ describe Chef::Provider::Group::Usermod do
34
33
 
35
34
  describe "with an empty members array" do
36
35
  before do
37
- @new_resource.stub!(:append).and_return(true)
38
36
  @new_resource.stub!(:members).and_return([])
39
37
  end
40
38
 
41
39
  it "should log an appropriate message" do
42
- @provider.should_not_receive(:shell_out!)
40
+ Chef::Log.should_receive(:debug).with("group[wheel] not changing group members, the group has no members")
43
41
  @provider.modify_group_members
44
42
  end
45
43
  end
@@ -63,27 +61,14 @@ describe Chef::Provider::Group::Usermod do
63
61
  @provider.action = :modify
64
62
  lambda { @provider.run_action(@provider.process_resource_requirements) }.should raise_error(Chef::Exceptions::Group, "setting group members directly is not supported by #{@provider.to_s}, must set append true in group")
65
63
  end
66
-
67
- it "should raise an error when excluded_members are set" do
68
- @provider.define_resource_requirements
69
- @provider.load_current_resource
70
- @provider.instance_variable_set("@group_exists", true)
71
- @provider.action = :modify
72
- @new_resource.stub!(:append).and_return(true)
73
- @new_resource.stub!(:excluded_members).and_return(["someone"])
74
- lambda { @provider.run_action(@provider.process_resource_requirements) }.should raise_error(Chef::Exceptions::Group, "excluded_members is not supported by #{@provider.to_s}")
75
- end
76
-
64
+
77
65
  platforms.each do |platform, flags|
78
66
  it "should usermod each user when the append option is set on #{platform}" do
79
- current_resource = @new_resource.dup
80
- current_resource.members([ ])
81
- @provider.current_resource = current_resource
82
67
  @node.automatic_attrs[:platform] = platform
83
68
  @new_resource.stub!(:append).and_return(true)
84
- @provider.should_receive(:shell_out!).with("usermod #{flags} wheel all")
85
- @provider.should_receive(:shell_out!).with("usermod #{flags} wheel your")
86
- @provider.should_receive(:shell_out!).with("usermod #{flags} wheel base")
69
+ @provider.should_receive(:run_command).with({:command => "usermod #{flags} wheel all"})
70
+ @provider.should_receive(:run_command).with({:command => "usermod #{flags} wheel your"})
71
+ @provider.should_receive(:run_command).with({:command => "usermod #{flags} wheel base"})
87
72
  @provider.modify_group_members
88
73
  end
89
74
  end
@@ -91,7 +76,7 @@ describe Chef::Provider::Group::Usermod do
91
76
  end
92
77
 
93
78
  describe "when loading the current resource" do
94
- before (:each) do
79
+ before(:each) do
95
80
  File.stub!(:exists?).and_return(false)
96
81
  @provider.define_resource_requirements
97
82
  end
@@ -70,6 +70,14 @@ describe Chef::Provider::Group::Windows do
70
70
  @provider.manage_group
71
71
  end
72
72
 
73
+ it "should call @net_group.local_set_members if append fails" do
74
+ @new_resource.stub!(:append).and_return(true)
75
+ @net_group.stub!(:local_add_members).and_raise(ArgumentError)
76
+ @net_group.should_receive(:local_add_members).with(@new_resource.members)
77
+ @net_group.should_receive(:local_set_members).with(@new_resource.members + @current_resource.members)
78
+ @provider.manage_group
79
+ end
80
+
73
81
  end
74
82
 
75
83
  describe "remove_group" do
@@ -108,19 +108,6 @@ describe Chef::Provider::User do
108
108
  @provider.compare_group.should be_true
109
109
  end
110
110
 
111
- it "should return false if append is true and excluded_members include a non existing member" do
112
- @new_resource.excluded_members << "extra_user"
113
- @new_resource.stub!(:append).and_return(true)
114
- @provider.compare_group.should be_false
115
- end
116
-
117
- it "should return true if the append is true and excluded_members include an existing user" do
118
- @new_resource.members.each {|m| @new_resource.excluded_members << m }
119
- @new_resource.members.clear
120
- @new_resource.stub!(:append).and_return(true)
121
- @provider.compare_group.should be_true
122
- end
123
-
124
111
  end
125
112
 
126
113
  describe "when creating a group" do
@@ -130,7 +117,7 @@ describe Chef::Provider::User do
130
117
  @provider.run_action(:create)
131
118
  end
132
119
 
133
- it "should set the new_resources updated flag when it creates the group" do
120
+ it "should set the the new_resources updated flag when it creates the group" do
134
121
  @provider.group_exists = false
135
122
  @provider.stub!(:create_group)
136
123
  @provider.run_action(:create)
@@ -140,7 +127,6 @@ describe Chef::Provider::User do
140
127
  it "should check to see if the group has mismatched attributes if the group exists" do
141
128
  @provider.group_exists = true
142
129
  @provider.stub!(:compare_group).and_return(false)
143
- @provider.stub!(:change_desc).and_return([ ])
144
130
  @provider.run_action(:create)
145
131
  @provider.new_resource.should_not be_updated
146
132
  end
@@ -148,15 +134,13 @@ describe Chef::Provider::User do
148
134
  it "should call manage_group if the group exists and has mismatched attributes" do
149
135
  @provider.group_exists = true
150
136
  @provider.stub!(:compare_group).and_return(true)
151
- @provider.stub!(:change_desc).and_return([ ])
152
137
  @provider.should_receive(:manage_group).and_return(true)
153
138
  @provider.run_action(:create)
154
139
  end
155
140
 
156
- it "should set the new_resources updated flag when it creates the group if we call manage_group" do
141
+ it "should set the the new_resources updated flag when it creates the group if we call manage_group" do
157
142
  @provider.group_exists = true
158
143
  @provider.stub!(:compare_group).and_return(true)
159
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
160
144
  @provider.stub!(:manage_group).and_return(true)
161
145
  @provider.run_action(:create)
162
146
  @new_resource.should be_updated
@@ -188,14 +172,12 @@ describe Chef::Provider::User do
188
172
 
189
173
  it "should run manage_group if the group exists and has mismatched attributes" do
190
174
  @provider.should_receive(:compare_group).and_return(true)
191
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
192
175
  @provider.should_receive(:manage_group).and_return(true)
193
176
  @provider.run_action(:manage)
194
177
  end
195
178
 
196
179
  it "should set the new resources updated flag to true if manage_group is called" do
197
180
  @provider.stub!(:compare_group).and_return(true)
198
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
199
181
  @provider.stub!(:manage_group).and_return(true)
200
182
  @provider.run_action(:manage)
201
183
  @new_resource.should be_updated
@@ -209,7 +191,6 @@ describe Chef::Provider::User do
209
191
 
210
192
  it "should not run manage_group if the group exists but has no differing attributes" do
211
193
  @provider.should_receive(:compare_group).and_return(false)
212
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
213
194
  @provider.should_not_receive(:manage_group)
214
195
  @provider.run_action(:manage)
215
196
  end
@@ -223,14 +204,12 @@ describe Chef::Provider::User do
223
204
 
224
205
  it "should run manage_group if the group exists and has mismatched attributes" do
225
206
  @provider.should_receive(:compare_group).and_return(true)
226
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
227
207
  @provider.should_receive(:manage_group).and_return(true)
228
208
  @provider.run_action(:modify)
229
209
  end
230
210
 
231
211
  it "should set the new resources updated flag to true if manage_group is called" do
232
212
  @provider.stub!(:compare_group).and_return(true)
233
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
234
213
  @provider.stub!(:manage_group).and_return(true)
235
214
  @provider.run_action(:modify)
236
215
  @new_resource.should be_updated
@@ -238,7 +217,6 @@ describe Chef::Provider::User do
238
217
 
239
218
  it "should not run manage_group if the group exists but has no differing attributes" do
240
219
  @provider.should_receive(:compare_group).and_return(false)
241
- @provider.stub!(:change_desc).and_return(["Some changes are going to be done."])
242
220
  @provider.should_not_receive(:manage_group)
243
221
  @provider.run_action(:modify)
244
222
  end
@@ -255,26 +233,26 @@ describe Chef::Provider::User do
255
233
  @new_resource.members << "user2"
256
234
  @new_resource.stub!(:append).and_return true
257
235
  @provider.compare_group.should be_true
258
- @provider.change_desc.should == [ "add missing member(s): user1, user2" ]
236
+ @provider.change_desc.should == "add missing member(s): user1, user2"
259
237
  end
260
238
 
261
239
  it "should report that the group members will be overwritten if not appending" do
262
240
  @new_resource.members << "user1"
263
241
  @new_resource.stub!(:append).and_return false
264
242
  @provider.compare_group.should be_true
265
- @provider.change_desc.should == [ "replace group members with new list of members" ]
243
+ @provider.change_desc.should == "replace group members with new list of members"
266
244
  end
267
245
 
268
246
  it "should report the gid will be changed when it does not match" do
269
247
  @current_resource.stub!(:gid).and_return("BADF00D")
270
248
  @provider.compare_group.should be_true
271
- @provider.change_desc.should == [ "change gid #{@current_resource.gid} to #{@new_resource.gid}" ]
249
+ @provider.change_desc.should == "change gid #{@current_resource.gid} to #{@new_resource.gid}"
272
250
 
273
251
  end
274
252
 
275
253
  it "should report no change reason when no change is required" do
276
254
  @provider.compare_group.should be_false
277
- @provider.change_desc.should == [ ]
255
+ @provider.change_desc.should == nil
278
256
  end
279
257
  end
280
258
 
@@ -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.
@@ -26,13 +26,13 @@ describe Chef::Provider::HttpRequest do
26
26
 
27
27
  @new_resource = Chef::Resource::HttpRequest.new('adam')
28
28
  @new_resource.name "adam"
29
- @new_resource.url "http://www.opscode.com"
29
+ @new_resource.url "http://www.opscode.com/"
30
30
  @new_resource.message "is cool"
31
31
 
32
32
  @provider = Chef::Provider::HttpRequest.new(@new_resource, @run_context)
33
33
  end
34
34
 
35
- describe "load_current_resource" do
35
+ describe "load_current_resource" do
36
36
 
37
37
  it "should set up a Chef::REST client, with no authentication" do
38
38
  Chef::REST.should_receive(:new).with(@new_resource.url, nil, nil)
@@ -45,91 +45,59 @@ describe Chef::Provider::HttpRequest do
45
45
  # run_action(x) forces load_current_resource to run;
46
46
  # that would overwrite our supplied mock Chef::Rest # object
47
47
  @provider.stub!(:load_current_resource).and_return(true)
48
- @rest = mock("Chef::REST", :create_url => "http://www.opscode.com", :run_request => "you made it!" )
48
+ @rest = mock("Chef::REST")
49
49
  @provider.rest = @rest
50
50
  end
51
51
 
52
- describe "action_get" do
53
- it "should create the url with a message argument" do
54
- @rest.should_receive(:create_url).with("#{@new_resource.url}?message=#{@new_resource.message}")
55
- @provider.run_action(:get)
56
- end
52
+ describe "action_get" do
57
53
 
58
54
  it "should inflate a message block at runtime" do
59
- @new_resource.stub!(:message).and_return(lambda { "return" })
60
- @rest.should_receive(:create_url).with("#{@new_resource.url}?message=return")
55
+ @new_resource.message { "return" }
56
+ @rest.should_receive(:get).with("http://www.opscode.com/?message=return", false, {})
61
57
  @provider.run_action(:get)
58
+ @new_resource.should be_updated
62
59
  end
63
60
 
64
61
  it "should run a GET request" do
65
- @rest.should_receive(:run_request).with(:GET, @rest.create_url, {}, false, 10, false)
66
- @provider.run_action(:get)
67
- end
68
-
69
- it "should update the resource" do
62
+ @rest.should_receive(:get).with("http://www.opscode.com/?message=is cool", false, {})
70
63
  @provider.run_action(:get)
71
64
  @new_resource.should be_updated
72
65
  end
73
66
  end
74
67
 
75
- describe "action_put" do
76
- it "should create the url" do
77
- @rest.should_receive(:create_url).with("#{@new_resource.url}")
78
- @provider.run_action(:put)
79
- end
80
-
68
+ describe "action_put" do
81
69
  it "should run a PUT request with the message as the payload" do
82
- @rest.should_receive(:run_request).with(:PUT, @rest.create_url, {}, @new_resource.message, 10, false)
70
+ @rest.should_receive(:put).with("http://www.opscode.com/", @new_resource.message, {})
83
71
  @provider.run_action(:put)
72
+ @new_resource.should be_updated
84
73
  end
85
74
 
86
75
  it "should inflate a message block at runtime" do
87
76
  @new_resource.stub!(:message).and_return(lambda { "return" })
88
- @rest.should_receive(:run_request).with(:PUT, @rest.create_url, {}, "return", 10, false)
89
- @provider.run_action(:put)
90
- end
91
-
92
- it "should update the resource" do
77
+ @rest.should_receive(:put).with("http://www.opscode.com/", "return", {})
93
78
  @provider.run_action(:put)
94
79
  @new_resource.should be_updated
95
80
  end
96
81
  end
97
82
 
98
- describe "action_post" do
99
- it "should create the url" do
100
- @rest.should_receive(:create_url).with("#{@new_resource.url}")
101
- @provider.run_action(:post)
102
- end
103
-
83
+ describe "action_post" do
104
84
  it "should run a PUT request with the message as the payload" do
105
- @rest.should_receive(:run_request).with(:POST, @rest.create_url, {}, @new_resource.message, 10, false)
85
+ @rest.should_receive(:post).with("http://www.opscode.com/", @new_resource.message, {})
106
86
  @provider.run_action(:post)
87
+ @new_resource.should be_updated
107
88
  end
108
-
89
+
109
90
  it "should inflate a message block at runtime" do
110
- @new_resource.stub!(:message).and_return(lambda { "return" })
111
- @rest.should_receive(:run_request).with(:POST, @rest.create_url, {}, "return", 10, false)
112
- @provider.run_action(:post)
113
- end
114
-
115
- it "should update the resource" do
91
+ @new_resource.message { "return" }
92
+ @rest.should_receive(:post).with("http://www.opscode.com/", "return", {})
116
93
  @provider.run_action(:post)
117
94
  @new_resource.should be_updated
118
95
  end
119
96
  end
120
97
 
121
- describe "action_delete" do
122
- it "should create the url" do
123
- @rest.should_receive(:create_url).with("#{@new_resource.url}")
124
- @provider.run_action(:delete)
125
- end
126
-
98
+ describe "action_delete" do
127
99
  it "should run a DELETE request" do
128
- @rest.should_receive(:run_request).with(:DELETE, @rest.create_url, {}, false, 10, false)
129
- @provider.run_action(:delete)
130
- end
131
-
132
- it "should update the resource" do
100
+ @rest.should_receive(:delete).with("http://www.opscode.com/", {})
133
101
  @provider.run_action(:delete)
134
102
  @new_resource.should be_updated
135
103
  end
@@ -137,39 +105,30 @@ describe Chef::Provider::HttpRequest do
137
105
 
138
106
  describe "action_head" do
139
107
  before do
140
- @rest = mock("Chef::REST", :create_url => "http://www.opscode.com", :run_request => true)
141
108
  @provider.rest = @rest
142
109
  end
143
110
 
144
- it "should create the url with a message argument" do
145
- @rest.should_receive(:create_url).with("#{@new_resource.url}?message=#{@new_resource.message}")
146
- @provider.run_action(:head)
147
- end
148
-
149
111
  it "should inflate a message block at runtime" do
150
- @new_resource.stub!(:message).and_return(lambda { "return" })
151
- @rest.should_receive(:create_url).with("#{@new_resource.url}?message=return")
112
+ @new_resource.message { "return" }
113
+ @rest.should_receive(:head).with("http://www.opscode.com/?message=return", {}).and_return("")
152
114
  @provider.run_action(:head)
115
+ @new_resource.should be_updated
153
116
  end
154
117
 
155
118
  it "should run a HEAD request" do
156
- @rest.should_receive(:run_request).with(:HEAD, @rest.create_url, {}, false, 10, false)
157
- @provider.run_action(:head)
158
- end
159
-
160
- it "should update the resource" do
119
+ @rest.should_receive(:head).with("http://www.opscode.com/?message=is cool", {}).and_return("")
161
120
  @provider.run_action(:head)
162
121
  @new_resource.should be_updated
163
122
  end
164
123
 
165
124
  it "should run a HEAD request with If-Modified-Since header" do
166
125
  @new_resource.headers "If-Modified-Since" => File.mtime(__FILE__).httpdate
167
- @rest.should_receive(:run_request).with(:HEAD, @rest.create_url, @new_resource.headers, false, 10, false)
126
+ @rest.should_receive(:head).with("http://www.opscode.com/?message=is cool", @new_resource.headers)
168
127
  @provider.run_action(:head)
169
128
  end
170
129
 
171
130
  it "doesn't call converge_by if HEAD does not return modified" do
172
- @rest.should_receive(:run_request).and_return(false)
131
+ @rest.should_receive(:head).and_return(false)
173
132
  @provider.should_not_receive(:converge_by)
174
133
  @provider.run_action(:head)
175
134
  end