microwave 1.0.4 → 11.400.2

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 (249) hide show
  1. data/CONTRIBUTING.md +155 -0
  2. data/README.md +89 -0
  3. data/Rakefile +2 -2
  4. data/bin/chef-apply +25 -0
  5. data/bin/chef-shell +34 -0
  6. data/bin/chef-solo +0 -2
  7. data/bin/shef +6 -5
  8. data/lib/chef.rb +2 -4
  9. data/spec/data/big_json.json +2 -1
  10. data/spec/data/big_json_plus_one.json +2 -1
  11. data/spec/data/cookbooks/chefignore +2 -0
  12. data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
  13. data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
  14. data/spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle +0 -0
  15. data/spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle +0 -0
  16. data/spec/data/git_bundles/sinatra-test-app.gitbundle +0 -0
  17. data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
  18. data/spec/data/nodes/default.rb +3 -3
  19. data/spec/data/nodes/test.example.com.rb +3 -3
  20. data/spec/data/nodes/test.rb +3 -3
  21. data/spec/data/partial_one.erb +1 -0
  22. data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
  23. data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
  24. data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
  25. data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
  26. data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
  27. data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
  28. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  29. data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
  30. data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
  31. data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
  32. data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
  33. data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
  34. data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
  35. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  36. data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
  37. data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
  38. data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
  39. data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
  40. data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
  41. data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
  42. data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
  43. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  44. data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
  45. data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
  46. data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
  47. data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
  48. data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
  49. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  50. data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
  51. data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
  52. data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
  53. data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
  54. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  55. data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
  56. data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
  57. data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
  58. data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
  59. data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
  60. data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
  61. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
  62. data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
  63. data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
  64. data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
  65. data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
  66. data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
  67. data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
  68. data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
  69. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  70. data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
  71. data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
  72. data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
  73. data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
  74. data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
  75. data/spec/data/shef-config.rb +10 -0
  76. data/spec/functional/dsl/registry_helper_spec.rb +63 -0
  77. data/spec/functional/knife/cookbook_delete_spec.rb +0 -2
  78. data/spec/functional/knife/exec_spec.rb +4 -6
  79. data/spec/functional/knife/smoke_test.rb +34 -0
  80. data/spec/functional/knife/ssh_spec.rb +64 -3
  81. data/spec/functional/resource/cookbook_file_spec.rb +33 -2
  82. data/spec/functional/resource/deploy_revision_spec.rb +515 -0
  83. data/spec/functional/resource/directory_spec.rb +4 -0
  84. data/spec/functional/resource/file_spec.rb +56 -22
  85. data/spec/functional/resource/link_spec.rb +12 -10
  86. data/spec/functional/resource/registry_spec.rb +572 -0
  87. data/spec/functional/resource/remote_directory_spec.rb +142 -36
  88. data/spec/functional/resource/remote_file_spec.rb +28 -3
  89. data/spec/functional/resource/template_spec.rb +23 -2
  90. data/spec/functional/run_lock_spec.rb +238 -0
  91. data/spec/functional/shell_spec.rb +101 -0
  92. data/spec/functional/tiny_server_spec.rb +5 -4
  93. data/spec/functional/win32/registry_helper_spec.rb +632 -0
  94. data/spec/functional/win32/security_spec.rb +37 -0
  95. data/spec/spec_helper.rb +15 -3
  96. data/spec/stress/win32/security_spec.rb +5 -5
  97. data/spec/support/chef_helpers.rb +14 -3
  98. data/spec/support/lib/chef/resource/cat.rb +3 -5
  99. data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
  100. data/spec/support/lib/chef/resource/zen_master.rb +8 -10
  101. data/spec/support/matchers/leak.rb +1 -1
  102. data/spec/support/platform_helpers.rb +18 -0
  103. data/spec/support/shared/functional/directory_resource.rb +85 -23
  104. data/spec/support/shared/functional/file_resource.rb +198 -53
  105. data/spec/support/shared/functional/securable_resource.rb +140 -105
  106. data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
  107. data/spec/support/shared/unit/file_system_support.rb +110 -0
  108. data/spec/support/shared/unit/platform_introspector.rb +162 -0
  109. data/spec/tiny_server.rb +29 -10
  110. data/spec/unit/api_client/registration_spec.rb +172 -0
  111. data/spec/unit/api_client_spec.rb +156 -103
  112. data/spec/unit/application/apply.rb +84 -0
  113. data/spec/unit/application/knife_spec.rb +5 -0
  114. data/spec/unit/application_spec.rb +57 -2
  115. data/spec/unit/chef_fs/diff_spec.rb +329 -0
  116. data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
  117. data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
  118. data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
  119. data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
  120. data/spec/unit/chef_fs/file_system_spec.rb +136 -0
  121. data/spec/unit/client_spec.rb +188 -16
  122. data/spec/unit/config_spec.rb +54 -4
  123. data/spec/unit/cookbook/chefignore_spec.rb +2 -1
  124. data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
  125. data/spec/unit/cookbook_loader_spec.rb +153 -91
  126. data/spec/unit/cookbook_manifest_spec.rb +81 -81
  127. data/spec/unit/cookbook_spec.rb +3 -20
  128. data/spec/unit/cookbook_version_spec.rb +23 -122
  129. data/spec/unit/digester_spec.rb +50 -0
  130. data/spec/unit/dsl/data_query_spec.rb +66 -0
  131. data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
  132. data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
  133. data/spec/unit/encrypted_data_bag_item_spec.rb +126 -10
  134. data/spec/unit/environment_spec.rb +0 -130
  135. data/spec/unit/exceptions_spec.rb +2 -3
  136. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +23 -3
  137. data/spec/unit/json_compat_spec.rb +69 -0
  138. data/spec/unit/knife/bootstrap_spec.rb +81 -28
  139. data/spec/unit/knife/client_reregister_spec.rb +23 -22
  140. data/spec/unit/knife/configure_spec.rb +29 -26
  141. data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
  142. data/spec/unit/knife/cookbook_site_install_spec.rb +12 -2
  143. data/spec/unit/knife/cookbook_test_spec.rb +1 -0
  144. data/spec/unit/knife/cookbook_upload_spec.rb +41 -2
  145. data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -1
  146. data/spec/unit/knife/core/ui_spec.rb +156 -7
  147. data/spec/unit/knife/data_bag_create_spec.rb +14 -0
  148. data/spec/unit/knife/data_bag_edit_spec.rb +14 -4
  149. data/spec/unit/knife/data_bag_from_file_spec.rb +17 -5
  150. data/spec/unit/knife/data_bag_show_spec.rb +11 -4
  151. data/spec/unit/knife/index_rebuild_spec.rb +96 -33
  152. data/spec/unit/knife/knife_help.rb +7 -7
  153. data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
  154. data/spec/unit/knife/ssh_spec.rb +121 -15
  155. data/spec/unit/knife/status_spec.rb +2 -2
  156. data/spec/unit/knife/user_create_spec.rb +86 -0
  157. data/spec/unit/knife/user_delete_spec.rb +39 -0
  158. data/spec/unit/knife/user_edit_spec.rb +42 -0
  159. data/spec/unit/knife/user_list_spec.rb +32 -0
  160. data/spec/unit/knife/user_reregister_spec.rb +53 -0
  161. data/spec/unit/knife/user_show_spec.rb +41 -0
  162. data/spec/unit/knife_spec.rb +53 -0
  163. data/spec/unit/lwrp_spec.rb +59 -17
  164. data/spec/unit/mixin/checksum_spec.rb +2 -2
  165. data/spec/unit/mixin/deep_merge_spec.rb +56 -491
  166. data/spec/unit/mixin/deprecation_spec.rb +23 -0
  167. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
  168. data/spec/unit/mixin/params_validate_spec.rb +4 -2
  169. data/spec/unit/mixin/securable_spec.rb +5 -3
  170. data/spec/unit/mixin/template_spec.rb +119 -0
  171. data/spec/unit/node/attribute_spec.rb +272 -137
  172. data/spec/unit/node/immutable_collections_spec.rb +139 -0
  173. data/spec/unit/node_spec.rb +411 -339
  174. data/spec/unit/platform_spec.rb +8 -8
  175. data/spec/unit/provider/breakpoint_spec.rb +8 -8
  176. data/spec/unit/provider/cookbook_file_spec.rb +4 -8
  177. data/spec/unit/provider/deploy/revision_spec.rb +2 -8
  178. data/spec/unit/provider/deploy_spec.rb +6 -40
  179. data/spec/unit/provider/directory_spec.rb +103 -68
  180. data/spec/unit/provider/erl_call_spec.rb +0 -2
  181. data/spec/unit/provider/file_spec.rb +69 -59
  182. data/spec/unit/provider/git_spec.rb +0 -10
  183. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  184. data/spec/unit/provider/group/usermod_spec.rb +2 -2
  185. data/spec/unit/provider/http_request_spec.rb +28 -69
  186. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  187. data/spec/unit/provider/link_spec.rb +1 -1
  188. data/spec/unit/provider/ohai_spec.rb +4 -4
  189. data/spec/unit/provider/package/apt_spec.rb +0 -1
  190. data/spec/unit/provider/package/ips_spec.rb +0 -1
  191. data/spec/unit/provider/package/rubygems_spec.rb +0 -18
  192. data/spec/unit/provider/package/yum_spec.rb +79 -15
  193. data/spec/unit/provider/package_spec.rb +7 -5
  194. data/spec/unit/provider/registry_key_spec.rb +269 -0
  195. data/spec/unit/provider/remote_directory_spec.rb +24 -7
  196. data/spec/unit/provider/remote_file_spec.rb +36 -0
  197. data/spec/unit/provider/route_spec.rb +3 -6
  198. data/spec/unit/provider/ruby_block_spec.rb +8 -0
  199. data/spec/unit/provider/service/arch_service_spec.rb +4 -4
  200. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  201. data/spec/unit/provider/service/freebsd_service_spec.rb +4 -4
  202. data/spec/unit/provider/service/init_service_spec.rb +26 -3
  203. data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
  204. data/spec/unit/provider/service/invokercd_service_spec.rb +3 -3
  205. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  206. data/spec/unit/provider/service/simple_service_spec.rb +3 -3
  207. data/spec/unit/provider/service/upstart_service_spec.rb +7 -7
  208. data/spec/unit/provider/service_spec.rb +2 -2
  209. data/spec/unit/provider/subversion_spec.rb +1 -1
  210. data/spec/unit/provider/template_spec.rb +35 -11
  211. data/spec/unit/provider/user/dscl_spec.rb +57 -31
  212. data/spec/unit/provider/user_spec.rb +7 -16
  213. data/spec/unit/provider_spec.rb +4 -3
  214. data/spec/unit/recipe_spec.rb +10 -8
  215. data/spec/unit/registry_helper_spec.rb +376 -0
  216. data/spec/unit/resource/log_spec.rb +9 -0
  217. data/spec/unit/resource/registry_key_spec.rb +171 -0
  218. data/spec/unit/resource/remote_file_spec.rb +21 -23
  219. data/spec/unit/resource/ruby_block_spec.rb +7 -3
  220. data/spec/unit/resource/service_spec.rb +11 -0
  221. data/spec/unit/resource_spec.rb +27 -4
  222. data/spec/unit/rest/auth_credentials_spec.rb +2 -14
  223. data/spec/unit/rest_spec.rb +122 -187
  224. data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
  225. data/spec/unit/run_context_spec.rb +18 -4
  226. data/spec/unit/run_list_spec.rb +0 -209
  227. data/spec/unit/run_lock_spec.rb +37 -0
  228. data/spec/unit/runner_spec.rb +101 -2
  229. data/spec/unit/scan_access_control_spec.rb +4 -4
  230. data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
  231. data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
  232. data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +12 -12
  233. data/spec/unit/shell_out_spec.rb +18 -0
  234. data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
  235. data/spec/unit/user_spec.rb +255 -0
  236. metadata +162 -157
  237. data/README.rdoc +0 -177
  238. data/spec/unit/certificate_spec.rb +0 -76
  239. data/spec/unit/checksum_cache_spec.rb +0 -209
  240. data/spec/unit/checksum_spec.rb +0 -94
  241. data/spec/unit/couchdb_spec.rb +0 -274
  242. data/spec/unit/index_queue_spec.rb +0 -391
  243. data/spec/unit/json_compat_spect.rb +0 -53
  244. data/spec/unit/mixin/language_spec.rb +0 -305
  245. data/spec/unit/openid_registration_spec.rb +0 -153
  246. data/spec/unit/solr_query/query_transform_spec.rb +0 -454
  247. data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
  248. data/spec/unit/solr_query_spec.rb +0 -203
  249. data/spec/unit/webui_user_spec.rb +0 -238
@@ -205,9 +205,9 @@ describe "Chef::CookbookVersion manifest" do
205
205
 
206
206
  it "should return a manifest record based on priority preference: host" do
207
207
  node = Chef::Node.new
208
- node[:platform] = "ubuntu"
209
- node[:platform_version] = "9.10"
210
- node[:fqdn] = "examplehost.example.org"
208
+ node.automatic_attrs[:platform] = "ubuntu"
209
+ node.automatic_attrs[:platform_version] = "9.10"
210
+ node.automatic_attrs[:fqdn] = "examplehost.example.org"
211
211
 
212
212
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "afile.rb")
213
213
  manifest_record.should_not be_nil
@@ -216,9 +216,9 @@ describe "Chef::CookbookVersion manifest" do
216
216
 
217
217
  it "should return a manifest record based on priority preference: platform & full version" do
218
218
  node = Chef::Node.new
219
- node[:platform] = "ubuntu"
220
- node[:platform_version] = "9.10"
221
- node[:fqdn] = "differenthost.example.org"
219
+ node.automatic_attrs[:platform] = "ubuntu"
220
+ node.automatic_attrs[:platform_version] = "9.10"
221
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
222
222
 
223
223
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "afile.rb")
224
224
  manifest_record.should_not be_nil
@@ -227,9 +227,9 @@ describe "Chef::CookbookVersion manifest" do
227
227
 
228
228
  it "should return a manifest record based on priority preference: platform & partial version" do
229
229
  node = Chef::Node.new
230
- node[:platform] = "newubuntu"
231
- node[:platform_version] = "9.10"
232
- node[:fqdn] = "differenthost.example.org"
230
+ node.automatic_attrs[:platform] = "newubuntu"
231
+ node.automatic_attrs[:platform_version] = "9.10"
232
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
233
233
 
234
234
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "afile.rb")
235
235
  manifest_record.should_not be_nil
@@ -238,9 +238,9 @@ describe "Chef::CookbookVersion manifest" do
238
238
 
239
239
  it "should return a manifest record based on priority preference: platform only" do
240
240
  node = Chef::Node.new
241
- node[:platform] = "ubuntu"
242
- node[:platform_version] = "1.0"
243
- node[:fqdn] = "differenthost.example.org"
241
+ node.automatic_attrs[:platform] = "ubuntu"
242
+ node.automatic_attrs[:platform_version] = "1.0"
243
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
244
244
 
245
245
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "afile.rb")
246
246
  manifest_record.should_not be_nil
@@ -249,9 +249,9 @@ describe "Chef::CookbookVersion manifest" do
249
249
 
250
250
  it "should return a manifest record based on priority preference: default" do
251
251
  node = Chef::Node.new
252
- node[:platform] = "notubuntu"
253
- node[:platform_version] = "1.0"
254
- node[:fqdn] = "differenthost.example.org"
252
+ node.automatic_attrs[:platform] = "notubuntu"
253
+ node.automatic_attrs[:platform_version] = "1.0"
254
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
255
255
 
256
256
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "afile.rb")
257
257
  manifest_record.should_not be_nil
@@ -260,9 +260,9 @@ describe "Chef::CookbookVersion manifest" do
260
260
 
261
261
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 1" do
262
262
  node = Chef::Node.new
263
- node[:platform] = "fakeos"
264
- node[:platform_version] = "2.0.rc.1"
265
- node[:fqdn] = "differenthost.example.org"
263
+ node.automatic_attrs[:platform] = "fakeos"
264
+ node.automatic_attrs[:platform_version] = "2.0.rc.1"
265
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
266
266
 
267
267
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "bfile.rb")
268
268
  manifest_record.should_not be_nil
@@ -271,9 +271,9 @@ describe "Chef::CookbookVersion manifest" do
271
271
 
272
272
  it "should return a manifest record based on priority preference: platform & partial version - platform_version variant 1" do
273
273
  node = Chef::Node.new
274
- node[:platform] = "newfakeos"
275
- node[:platform_version] = "2.0.rc.1"
276
- node[:fqdn] = "differenthost.example.org"
274
+ node.automatic_attrs[:platform] = "newfakeos"
275
+ node.automatic_attrs[:platform_version] = "2.0.rc.1"
276
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
277
277
 
278
278
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "bfile.rb")
279
279
  manifest_record.should_not be_nil
@@ -282,9 +282,9 @@ describe "Chef::CookbookVersion manifest" do
282
282
 
283
283
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 2" do
284
284
  node = Chef::Node.new
285
- node[:platform] = "fakeos"
286
- node[:platform_version] = "maple tree"
287
- node[:fqdn] = "differenthost.example.org"
285
+ node.automatic_attrs[:platform] = "fakeos"
286
+ node.automatic_attrs[:platform_version] = "maple tree"
287
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
288
288
 
289
289
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "bfile.rb")
290
290
  manifest_record.should_not be_nil
@@ -293,9 +293,9 @@ describe "Chef::CookbookVersion manifest" do
293
293
 
294
294
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 3" do
295
295
  node = Chef::Node.new
296
- node[:platform] = "fakeos"
297
- node[:platform_version] = "1"
298
- node[:fqdn] = "differenthost.example.org"
296
+ node.automatic_attrs[:platform] = "fakeos"
297
+ node.automatic_attrs[:platform_version] = "1"
298
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
299
299
 
300
300
  manifest_record = @cookbook.preferred_manifest_record(node, :files, "bfile.rb")
301
301
  manifest_record.should_not be_nil
@@ -306,9 +306,9 @@ describe "Chef::CookbookVersion manifest" do
306
306
 
307
307
  it "should return a directory of manifest records based on priority preference: host" do
308
308
  node = Chef::Node.new
309
- node[:platform] = "ubuntu"
310
- node[:platform_version] = "9.10"
311
- node[:fqdn] = "examplehost.example.org"
309
+ node.automatic_attrs[:platform] = "ubuntu"
310
+ node.automatic_attrs[:platform_version] = "9.10"
311
+ node.automatic_attrs[:fqdn] = "examplehost.example.org"
312
312
 
313
313
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
314
314
  manifest_records.should_not be_nil
@@ -320,9 +320,9 @@ describe "Chef::CookbookVersion manifest" do
320
320
 
321
321
  it "should return a directory of manifest records based on priority preference: platform & full version" do
322
322
  node = Chef::Node.new
323
- node[:platform] = "ubuntu"
324
- node[:platform_version] = "9.10"
325
- node[:fqdn] = "differenthost.example.org"
323
+ node.automatic_attrs[:platform] = "ubuntu"
324
+ node.automatic_attrs[:platform_version] = "9.10"
325
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
326
326
 
327
327
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
328
328
  manifest_records.should_not be_nil
@@ -334,9 +334,9 @@ describe "Chef::CookbookVersion manifest" do
334
334
 
335
335
  it "should return a directory of manifest records based on priority preference: platform & partial version" do
336
336
  node = Chef::Node.new
337
- node[:platform] = "newubuntu"
338
- node[:platform_version] = "9.10"
339
- node[:fqdn] = "differenthost.example.org"
337
+ node.automatic_attrs[:platform] = "newubuntu"
338
+ node.automatic_attrs[:platform_version] = "9.10"
339
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
340
340
 
341
341
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
342
342
  manifest_records.should_not be_nil
@@ -348,9 +348,9 @@ describe "Chef::CookbookVersion manifest" do
348
348
 
349
349
  it "should return a directory of manifest records based on priority preference: platform only" do
350
350
  node = Chef::Node.new
351
- node[:platform] = "ubuntu"
352
- node[:platform_version] = "1.0"
353
- node[:fqdn] = "differenthost.example.org"
351
+ node.automatic_attrs[:platform] = "ubuntu"
352
+ node.automatic_attrs[:platform_version] = "1.0"
353
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
354
354
 
355
355
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
356
356
  manifest_records.should_not be_nil
@@ -362,9 +362,9 @@ describe "Chef::CookbookVersion manifest" do
362
362
 
363
363
  it "should return a directory of manifest records based on priority preference: default" do
364
364
  node = Chef::Node.new
365
- node[:platform] = "notubuntu"
366
- node[:platform_version] = "1.0"
367
- node[:fqdn] = "differenthost.example.org"
365
+ node.automatic_attrs[:platform] = "notubuntu"
366
+ node.automatic_attrs[:platform_version] = "1.0"
367
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
368
368
 
369
369
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
370
370
  manifest_records.should_not be_nil
@@ -376,9 +376,9 @@ describe "Chef::CookbookVersion manifest" do
376
376
 
377
377
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 1" do
378
378
  node = Chef::Node.new
379
- node[:platform] = "fakeos"
380
- node[:platform_version] = "2.0.rc.1"
381
- node[:fqdn] = "differenthost.example.org"
379
+ node.automatic_attrs[:platform] = "fakeos"
380
+ node.automatic_attrs[:platform_version] = "2.0.rc.1"
381
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
382
382
 
383
383
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
384
384
  manifest_records.should_not be_nil
@@ -390,9 +390,9 @@ describe "Chef::CookbookVersion manifest" do
390
390
 
391
391
  it "should return a manifest record based on priority preference: platform & partial version - platform_version variant 1" do
392
392
  node = Chef::Node.new
393
- node[:platform] = "newfakeos"
394
- node[:platform_version] = "2.0.rc.1"
395
- node[:fqdn] = "differenthost.example.org"
393
+ node.automatic_attrs[:platform] = "newfakeos"
394
+ node.automatic_attrs[:platform_version] = "2.0.rc.1"
395
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
396
396
 
397
397
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
398
398
  manifest_records.should_not be_nil
@@ -404,9 +404,9 @@ describe "Chef::CookbookVersion manifest" do
404
404
 
405
405
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 2" do
406
406
  node = Chef::Node.new
407
- node[:platform] = "fakeos"
408
- node[:platform_version] = "maple tree"
409
- node[:fqdn] = "differenthost.example.org"
407
+ node.automatic_attrs[:platform] = "fakeos"
408
+ node.automatic_attrs[:platform_version] = "maple tree"
409
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
410
410
 
411
411
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
412
412
  manifest_records.should_not be_nil
@@ -418,9 +418,9 @@ describe "Chef::CookbookVersion manifest" do
418
418
 
419
419
  it "should return a manifest record based on priority preference: platform & full version - platform_version variant 3" do
420
420
  node = Chef::Node.new
421
- node[:platform] = "fakeos"
422
- node[:platform_version] = "1"
423
- node[:fqdn] = "differenthost.example.org"
421
+ node.automatic_attrs[:platform] = "fakeos"
422
+ node.automatic_attrs[:platform_version] = "1"
423
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
424
424
 
425
425
  manifest_records = @cookbook.preferred_manifest_records_for_directory(node, :files, "adirectory")
426
426
  manifest_records.should_not be_nil
@@ -436,9 +436,9 @@ describe "Chef::CookbookVersion manifest" do
436
436
  describe "when globbing for relative file paths based on filespecificity" do
437
437
  it "should return a list of relative paths based on priority preference: host" do
438
438
  node = Chef::Node.new
439
- node[:platform] = "ubuntu"
440
- node[:platform_version] = "9.10"
441
- node[:fqdn] = "examplehost.example.org"
439
+ node.automatic_attrs[:platform] = "ubuntu"
440
+ node.automatic_attrs[:platform_version] = "9.10"
441
+ node.automatic_attrs[:fqdn] = "examplehost.example.org"
442
442
 
443
443
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
444
444
  filenames.should_not be_nil
@@ -449,9 +449,9 @@ describe "Chef::CookbookVersion manifest" do
449
449
 
450
450
  it "should return a list of relative paths based on priority preference: platform & full version" do
451
451
  node = Chef::Node.new
452
- node[:platform] = "ubuntu"
453
- node[:platform_version] = "9.10"
454
- node[:fqdn] = "differenthost.example.org"
452
+ node.automatic_attrs[:platform] = "ubuntu"
453
+ node.automatic_attrs[:platform_version] = "9.10"
454
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
455
455
 
456
456
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
457
457
  filenames.should_not be_nil
@@ -462,9 +462,9 @@ describe "Chef::CookbookVersion manifest" do
462
462
 
463
463
  it "should return a list of relative paths based on priority preference: platform & partial version" do
464
464
  node = Chef::Node.new
465
- node[:platform] = "newubuntu"
466
- node[:platform_version] = "9.10"
467
- node[:fqdn] = "differenthost.example.org"
465
+ node.automatic_attrs[:platform] = "newubuntu"
466
+ node.automatic_attrs[:platform_version] = "9.10"
467
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
468
468
 
469
469
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
470
470
  filenames.should_not be_nil
@@ -475,9 +475,9 @@ describe "Chef::CookbookVersion manifest" do
475
475
 
476
476
  it "should return a list of relative paths based on priority preference: platform only" do
477
477
  node = Chef::Node.new
478
- node[:platform] = "ubuntu"
479
- node[:platform_version] = "1.0"
480
- node[:fqdn] = "differenthost.example.org"
478
+ node.automatic_attrs[:platform] = "ubuntu"
479
+ node.automatic_attrs[:platform_version] = "1.0"
480
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
481
481
 
482
482
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
483
483
  filenames.should_not be_nil
@@ -488,9 +488,9 @@ describe "Chef::CookbookVersion manifest" do
488
488
 
489
489
  it "should return a list of relative paths based on priority preference: default" do
490
490
  node = Chef::Node.new
491
- node[:platform] = "notubuntu"
492
- node[:platform_version] = "1.0"
493
- node[:fqdn] = "differenthost.example.org"
491
+ node.automatic_attrs[:platform] = "notubuntu"
492
+ node.automatic_attrs[:platform_version] = "1.0"
493
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
494
494
 
495
495
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
496
496
  filenames.should_not be_nil
@@ -501,9 +501,9 @@ describe "Chef::CookbookVersion manifest" do
501
501
 
502
502
  it "should return a list of relative paths based on priority preference: platform & full version - platform_version variant 1" do
503
503
  node = Chef::Node.new
504
- node[:platform] = "fakeos"
505
- node[:platform_version] = "2.0.rc.1"
506
- node[:fqdn] = "differenthost.example.org"
504
+ node.automatic_attrs[:platform] = "fakeos"
505
+ node.automatic_attrs[:platform_version] = "2.0.rc.1"
506
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
507
507
 
508
508
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
509
509
  filenames.should_not be_nil
@@ -514,9 +514,9 @@ describe "Chef::CookbookVersion manifest" do
514
514
 
515
515
  it "should return a list of relative paths based on priority preference: platform & partial version - platform_version variant 1" do
516
516
  node = Chef::Node.new
517
- node[:platform] = "newfakeos"
518
- node[:platform_version] = "2.0.rc.1"
519
- node[:fqdn] = "differenthost.example.org"
517
+ node.automatic_attrs[:platform] = "newfakeos"
518
+ node.automatic_attrs[:platform_version] = "2.0.rc.1"
519
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
520
520
 
521
521
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
522
522
  filenames.should_not be_nil
@@ -527,9 +527,9 @@ describe "Chef::CookbookVersion manifest" do
527
527
 
528
528
  it "should return a list of relative paths based on priority preference: platform & full version - platform_version variant 2" do
529
529
  node = Chef::Node.new
530
- node[:platform] = "fakeos"
531
- node[:platform_version] = "maple tree"
532
- node[:fqdn] = "differenthost.example.org"
530
+ node.automatic_attrs[:platform] = "fakeos"
531
+ node.automatic_attrs[:platform_version] = "maple tree"
532
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
533
533
 
534
534
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
535
535
  filenames.should_not be_nil
@@ -540,9 +540,9 @@ describe "Chef::CookbookVersion manifest" do
540
540
 
541
541
  it "should return a list of relative paths based on priority preference: platform & full version - platform_version variant 3" do
542
542
  node = Chef::Node.new
543
- node[:platform] = "fakeos"
544
- node[:platform_version] = "1"
545
- node[:fqdn] = "differenthost.example.org"
543
+ node.automatic_attrs[:platform] = "fakeos"
544
+ node.automatic_attrs[:platform_version] = "1"
545
+ node.automatic_attrs[:fqdn] = "differenthost.example.org"
546
546
 
547
547
  filenames = @cookbook.relative_filenames_in_preferred_directory(node, :files, "adirectory")
548
548
  filenames.should_not be_nil
@@ -22,7 +22,9 @@ describe Chef::CookbookVersion do
22
22
  # COOKBOOK_PATH = File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks", "openldap"))
23
23
  before(:each) do
24
24
  @cookbook_repo = File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks"))
25
- @cookbook_collection = Chef::CookbookCollection.new(Chef::CookbookLoader.new(@cookbook_repo))
25
+ cl = Chef::CookbookLoader.new(@cookbook_repo)
26
+ cl.load_cookbooks
27
+ @cookbook_collection = Chef::CookbookCollection.new(cl)
26
28
  @cookbook = @cookbook_collection[:openldap]
27
29
  @node = Chef::Node.new
28
30
  @node.name "JuliaChild"
@@ -66,20 +68,6 @@ describe Chef::CookbookVersion do
66
68
  @cookbook.preferred_filename(@node, :files, 'a-filename', 'the-checksum').should be_nil
67
69
  end
68
70
 
69
- # TODO: timh, cw: 5/20/2010: removed CookbookVersion.recipe? as it's not used; see cookbook.rb
70
- # it "should allow you to test for a recipe with recipe?" do
71
- # @cookbook.recipe_filenames = [ "one", "two" ]
72
- # @cookbook.recipe?("one").should eql(true)
73
- # @cookbook.recipe?("shanghai").should eql(false)
74
- # end
75
-
76
- # TODO: timh, cw: 5/20/2010: removed CookbookVersion.recipe? as it's not used; see cookbook.rb
77
- # it "should allow you to test for a recipe? with a fq recipe name" do
78
- # @cookbook.recipe_filenames = [ "one", "two" ]
79
- # @cookbook.recipe?("openldap::one").should eql(true)
80
- # @cookbook.recipe?("shanghai::city").should eql(false)
81
- # end
82
-
83
71
  it "should allow you to include a fully-qualified recipe using the DSL" do
84
72
  # DSL method include_recipe allows multiple arguments, so extract the first
85
73
  recipe = @run_context.include_recipe("openldap::gigantor").first
@@ -93,9 +81,4 @@ describe Chef::CookbookVersion do
93
81
  lambda { @cookbook.load_recipe("doesnt_exist", @node) }.should raise_error(ArgumentError)
94
82
  end
95
83
 
96
- it "should allow you to load an attribute file by name via load_attribute" do
97
- @node.include_attribute("openldap::smokey")
98
- @node.smokey.should == "robinson"
99
- end
100
-
101
84
  end
@@ -6,9 +6,9 @@
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
7
7
  # you may not use this file except in compliance with the License.
8
8
  # You may obtain a copy of the License at
9
- #
9
+ #
10
10
  # http://www.apache.org/licenses/LICENSE-2.0
11
- #
11
+ #
12
12
  # Unless required by applicable law or agreed to in writing, software
13
13
  # distributed under the License is distributed on an "AS IS" BASIS,
14
14
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,56 +17,10 @@
17
17
 
18
18
  require 'spec_helper'
19
19
 
20
- describe Chef::MinimalCookbookVersion do
21
- describe "when first created" do
22
- before do
23
- @params = { "id"=>"1a806f1c-b409-4d8e-abab-fa414ff5b96d",
24
- "key"=>"activemq",
25
- "value"=>{"version"=>"0.3.3", "deps"=>{"java"=>">= 0.0.0", "runit"=>">= 0.0.0"}}}
26
- @minimal_cookbook_version = Chef::MinimalCookbookVersion.new(@params)
27
- end
28
-
29
- it "has a name" do
30
- @minimal_cookbook_version.name.should == 'activemq'
31
- end
32
-
33
- it "has a version" do
34
- @minimal_cookbook_version.version.should == '0.3.3'
35
- end
36
-
37
- it "has a list of dependencies" do
38
- @minimal_cookbook_version.deps.should == {"java" => ">= 0.0.0", "runit" => ">= 0.0.0"}
39
- end
40
-
41
- it "has cookbook metadata" do
42
- metadata = @minimal_cookbook_version.metadata
43
-
44
- metadata.name.should == 'activemq'
45
- metadata.dependencies['java'].should == '>= 0.0.0'
46
- metadata.dependencies['runit'].should == '>= 0.0.0'
47
- end
48
- end
49
-
50
- describe "when created from cookbooks with old style version contraints" do
51
- before do
52
- @params = { "id"=>"1a806f1c-b409-4d8e-abab-fa414ff5b96d",
53
- "key"=>"activemq",
54
- "value"=>{"version"=>"0.3.3", "deps"=>{"apt" => ">> 1.0.0"}}}
55
- @minimal_cookbook_version = Chef::MinimalCookbookVersion.new(@params)
56
- end
57
-
58
- it "translates the version constraints" do
59
- metadata = @minimal_cookbook_version.metadata
60
- metadata.dependencies['apt'].should == '> 1.0.0'
61
- end
62
- end
63
- end
64
-
65
20
  describe Chef::CookbookVersion do
66
21
  describe "when first created" do
67
22
  before do
68
- @couchdb_driver = Chef::CouchDB.new
69
- @cookbook_version = Chef::CookbookVersion.new("tatft", @couchdb_driver)
23
+ @cookbook_version = Chef::CookbookVersion.new("tatft")
70
24
  end
71
25
 
72
26
  it "has a name" do
@@ -114,14 +68,6 @@ describe Chef::CookbookVersion do
114
68
  @cookbook_version.should be_frozen_version
115
69
  end
116
70
 
117
- it "has no couchdb id" do
118
- @cookbook_version.couchdb_id.should be_nil
119
- end
120
-
121
- it "has the couchdb driver it was given on create" do
122
- @cookbook_version.couchdb.should equal(@couchdb_driver)
123
- end
124
-
125
71
  it "is \"ready\"" do
126
72
  # WTF is this? what are the valid states? and why aren't they set with encapsulating methods?
127
73
  # [Dan 15-Jul-2010]
@@ -133,19 +79,19 @@ describe Chef::CookbookVersion do
133
79
  end
134
80
 
135
81
  it "creates a manifest hash of its contents" do
136
- expected = {"recipes"=>[],
137
- "definitions"=>[],
138
- "libraries"=>[],
139
- "attributes"=>[],
140
- "files"=>[],
141
- "templates"=>[],
142
- "resources"=>[],
143
- "providers"=>[],
144
- "root_files"=>[],
145
- "cookbook_name"=>"tatft",
82
+ expected = {"recipes"=>[],
83
+ "definitions"=>[],
84
+ "libraries"=>[],
85
+ "attributes"=>[],
86
+ "files"=>[],
87
+ "templates"=>[],
88
+ "resources"=>[],
89
+ "providers"=>[],
90
+ "root_files"=>[],
91
+ "cookbook_name"=>"tatft",
146
92
  "metadata"=>Chef::Cookbook::Metadata.new,
147
- "version"=>"0.0.0",
148
- "name"=>"tatft-0.0.0"}
93
+ "version"=>"0.0.0",
94
+ "name"=>"tatft-0.0.0"}
149
95
  @cookbook_version.manifest.should == expected
150
96
  end
151
97
  end
@@ -267,7 +213,12 @@ describe Chef::CookbookVersion do
267
213
 
268
214
  describe "raises an error when attempting to load a missing cookbook_file and" do
269
215
  before do
270
- node = Chef::Node.new.tap {|n| n.name("sample.node"); n[:fqdn] = "sample.example.com"; n[:platform] = "ubuntu"; n[:platform_version] = "10.04"}
216
+ node = Chef::Node.new.tap do |n|
217
+ n.name("sample.node")
218
+ n.automatic_attrs[:fqdn] = "sample.example.com"
219
+ n.automatic_attrs[:platform] = "ubuntu"
220
+ n.automatic_attrs[:platform_version] = "10.04"
221
+ end
271
222
  @attempt_to_load_file = lambda { @cookbook_version.preferred_manifest_record(node, :files, "no-such-thing.txt") }
272
223
  end
273
224
 
@@ -275,7 +226,7 @@ describe Chef::CookbookVersion do
275
226
  useful_explanation = Regexp.new(Regexp.escape("Cookbook 'tatft' (0.0.0) does not contain"))
276
227
  @attempt_to_load_file.should raise_error(Chef::Exceptions::FileNotFound, useful_explanation)
277
228
  end
278
-
229
+
279
230
  it "lists suggested places to look" do
280
231
  useful_explanation = Regexp.new(Regexp.escape("files/default/no-such-thing.txt"))
281
232
  @attempt_to_load_file.should raise_error(Chef::Exceptions::FileNotFound, useful_explanation)
@@ -320,7 +271,7 @@ describe Chef::CookbookVersion do
320
271
  b.version = "1.2.0"
321
272
  a.should == b
322
273
  end
323
-
274
+
324
275
 
325
276
  it "should not allow you to sort cookbooks with different names" do
326
277
  apt = Chef::CookbookVersion.new "apt"
@@ -353,54 +304,4 @@ describe Chef::CookbookVersion do
353
304
 
354
305
  end
355
306
 
356
- describe "when deleting in the database" do
357
- before do
358
- @couchdb_driver = Chef::CouchDB.new
359
- @cookbook_version = Chef::CookbookVersion.new("tatft", @couchdb_driver)
360
- @cookbook_version.version = "1.2.3"
361
- @couchdb_rev = "_123456789"
362
- @cookbook_version.couchdb_rev = @couchdb_rev
363
- end
364
-
365
- it "deletes its document from couchdb" do
366
- @couchdb_driver.should_receive(:delete).with("cookbook_version", "tatft-1.2.3", @couchdb_rev)
367
- @cookbook_version.cdb_destroy
368
- end
369
-
370
- it "deletes associated checksum objects when purged" do
371
- checksums = {"12345" => "/tmp/foo", "23456" => "/tmp/bar", "34567" => "/tmp/baz"}
372
- @cookbook_version.stub!(:checksums).and_return(checksums)
373
-
374
- chksum_docs = checksums.map do |md5, path|
375
- cksum_doc = mock("Chef::Checksum for #{md5} at #{path}")
376
- Chef::Checksum.should_receive(:cdb_load).with(md5, @couchdb_driver).and_return(cksum_doc)
377
- cksum_doc.should_receive(:purge)
378
- cksum_doc
379
- end
380
-
381
- @cookbook_version.should_receive(:cdb_destroy)
382
- @cookbook_version.purge
383
- end
384
-
385
- it "successfully purges when associated checksum objects are missing" do
386
- checksums = {"12345" => "/tmp/foo", "23456" => "/tmp/bar", "34567" => "/tmp/baz"}
387
-
388
- chksum_docs = checksums.map do |md5, path|
389
- cksum_doc = mock("Chef::Checksum for #{md5} at #{path}")
390
- Chef::Checksum.should_receive(:cdb_load).with(md5, @couchdb_driver).and_return(cksum_doc)
391
- cksum_doc.should_receive(:purge)
392
- cksum_doc
393
- end
394
-
395
- missing_checksum = {"99999" => "/tmp/qux"}
396
- Chef::Checksum.should_receive(:cdb_load).with("99999", @couchdb_driver).and_raise(Chef::Exceptions::CouchDBNotFound)
397
-
398
- @cookbook_version.stub!(:checksums).and_return(checksums.merge(missing_checksum))
399
-
400
- @cookbook_version.should_receive(:cdb_destroy)
401
- lambda {@cookbook_version.purge}.should_not raise_error
402
- end
403
-
404
- end
405
-
406
307
  end