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.
- data/CONTRIBUTING.md +155 -0
- data/README.md +89 -0
- data/Rakefile +2 -2
- data/bin/chef-apply +25 -0
- data/bin/chef-shell +34 -0
- data/bin/chef-solo +0 -2
- data/bin/shef +6 -5
- data/lib/chef.rb +2 -4
- data/spec/data/big_json.json +2 -1
- data/spec/data/big_json_plus_one.json +2 -1
- data/spec/data/cookbooks/chefignore +2 -0
- data/spec/data/cookbooks/openldap/attributes/default.rb +10 -9
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/git_bundles/sinatra-test-app-with-callback-files.gitbundle +0 -0
- data/spec/data/git_bundles/sinatra-test-app-with-symlinks.gitbundle +0 -0
- data/spec/data/git_bundles/sinatra-test-app.gitbundle +0 -0
- data/spec/data/lwrp/providers/inline_compiler.rb +26 -0
- data/spec/data/nodes/default.rb +3 -3
- data/spec/data/nodes/test.example.com.rb +3 -3
- data/spec/data/nodes/test.rb +3 -3
- data/spec/data/partial_one.erb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +4 -0
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +3 -0
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -0
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/recipes/server.rb +0 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/attributes/default.rb +0 -0
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -0
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +1 -0
- data/spec/data/shef-config.rb +10 -0
- data/spec/functional/dsl/registry_helper_spec.rb +63 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -2
- data/spec/functional/knife/exec_spec.rb +4 -6
- data/spec/functional/knife/smoke_test.rb +34 -0
- data/spec/functional/knife/ssh_spec.rb +64 -3
- data/spec/functional/resource/cookbook_file_spec.rb +33 -2
- data/spec/functional/resource/deploy_revision_spec.rb +515 -0
- data/spec/functional/resource/directory_spec.rb +4 -0
- data/spec/functional/resource/file_spec.rb +56 -22
- data/spec/functional/resource/link_spec.rb +12 -10
- data/spec/functional/resource/registry_spec.rb +572 -0
- data/spec/functional/resource/remote_directory_spec.rb +142 -36
- data/spec/functional/resource/remote_file_spec.rb +28 -3
- data/spec/functional/resource/template_spec.rb +23 -2
- data/spec/functional/run_lock_spec.rb +238 -0
- data/spec/functional/shell_spec.rb +101 -0
- data/spec/functional/tiny_server_spec.rb +5 -4
- data/spec/functional/win32/registry_helper_spec.rb +632 -0
- data/spec/functional/win32/security_spec.rb +37 -0
- data/spec/spec_helper.rb +15 -3
- data/spec/stress/win32/security_spec.rb +5 -5
- data/spec/support/chef_helpers.rb +14 -3
- data/spec/support/lib/chef/resource/cat.rb +3 -5
- data/spec/support/lib/chef/resource/one_two_three_four.rb +8 -10
- data/spec/support/lib/chef/resource/zen_master.rb +8 -10
- data/spec/support/matchers/leak.rb +1 -1
- data/spec/support/platform_helpers.rb +18 -0
- data/spec/support/shared/functional/directory_resource.rb +85 -23
- data/spec/support/shared/functional/file_resource.rb +198 -53
- data/spec/support/shared/functional/securable_resource.rb +140 -105
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +375 -0
- data/spec/support/shared/unit/file_system_support.rb +110 -0
- data/spec/support/shared/unit/platform_introspector.rb +162 -0
- data/spec/tiny_server.rb +29 -10
- data/spec/unit/api_client/registration_spec.rb +172 -0
- data/spec/unit/api_client_spec.rb +156 -103
- data/spec/unit/application/apply.rb +84 -0
- data/spec/unit/application/knife_spec.rb +5 -0
- data/spec/unit/application_spec.rb +57 -2
- data/spec/unit/chef_fs/diff_spec.rb +329 -0
- data/spec/unit/chef_fs/file_pattern_spec.rb +526 -0
- data/spec/unit/chef_fs/file_system/chef_server_root_dir_spec.rb +237 -0
- data/spec/unit/chef_fs/file_system/cookbooks_dir_spec.rb +568 -0
- data/spec/unit/chef_fs/file_system/data_bags_dir_spec.rb +220 -0
- data/spec/unit/chef_fs/file_system_spec.rb +136 -0
- data/spec/unit/client_spec.rb +188 -16
- data/spec/unit/config_spec.rb +54 -4
- data/spec/unit/cookbook/chefignore_spec.rb +2 -1
- data/spec/unit/cookbook/syntax_check_spec.rb +48 -109
- data/spec/unit/cookbook_loader_spec.rb +153 -91
- data/spec/unit/cookbook_manifest_spec.rb +81 -81
- data/spec/unit/cookbook_spec.rb +3 -20
- data/spec/unit/cookbook_version_spec.rb +23 -122
- data/spec/unit/digester_spec.rb +50 -0
- data/spec/unit/dsl/data_query_spec.rb +66 -0
- data/spec/unit/dsl/platform_introspection_spec.rb +130 -0
- data/spec/unit/dsl/regsitry_helper_spec.rb +55 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +126 -10
- data/spec/unit/environment_spec.rb +0 -130
- data/spec/unit/exceptions_spec.rb +2 -3
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +23 -3
- data/spec/unit/json_compat_spec.rb +69 -0
- data/spec/unit/knife/bootstrap_spec.rb +81 -28
- data/spec/unit/knife/client_reregister_spec.rb +23 -22
- data/spec/unit/knife/configure_spec.rb +29 -26
- data/spec/unit/knife/cookbook_metadata_spec.rb +11 -4
- data/spec/unit/knife/cookbook_site_install_spec.rb +12 -2
- data/spec/unit/knife/cookbook_test_spec.rb +1 -0
- data/spec/unit/knife/cookbook_upload_spec.rb +41 -2
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -1
- data/spec/unit/knife/core/ui_spec.rb +156 -7
- data/spec/unit/knife/data_bag_create_spec.rb +14 -0
- data/spec/unit/knife/data_bag_edit_spec.rb +14 -4
- data/spec/unit/knife/data_bag_from_file_spec.rb +17 -5
- data/spec/unit/knife/data_bag_show_spec.rb +11 -4
- data/spec/unit/knife/index_rebuild_spec.rb +96 -33
- data/spec/unit/knife/knife_help.rb +7 -7
- data/spec/unit/knife/node_run_list_remove_spec.rb +2 -1
- data/spec/unit/knife/ssh_spec.rb +121 -15
- data/spec/unit/knife/status_spec.rb +2 -2
- data/spec/unit/knife/user_create_spec.rb +86 -0
- data/spec/unit/knife/user_delete_spec.rb +39 -0
- data/spec/unit/knife/user_edit_spec.rb +42 -0
- data/spec/unit/knife/user_list_spec.rb +32 -0
- data/spec/unit/knife/user_reregister_spec.rb +53 -0
- data/spec/unit/knife/user_show_spec.rb +41 -0
- data/spec/unit/knife_spec.rb +53 -0
- data/spec/unit/lwrp_spec.rb +59 -17
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/deep_merge_spec.rb +56 -491
- data/spec/unit/mixin/deprecation_spec.rb +23 -0
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +6 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -2
- data/spec/unit/mixin/securable_spec.rb +5 -3
- data/spec/unit/mixin/template_spec.rb +119 -0
- data/spec/unit/node/attribute_spec.rb +272 -137
- data/spec/unit/node/immutable_collections_spec.rb +139 -0
- data/spec/unit/node_spec.rb +411 -339
- data/spec/unit/platform_spec.rb +8 -8
- data/spec/unit/provider/breakpoint_spec.rb +8 -8
- data/spec/unit/provider/cookbook_file_spec.rb +4 -8
- data/spec/unit/provider/deploy/revision_spec.rb +2 -8
- data/spec/unit/provider/deploy_spec.rb +6 -40
- data/spec/unit/provider/directory_spec.rb +103 -68
- data/spec/unit/provider/erl_call_spec.rb +0 -2
- data/spec/unit/provider/file_spec.rb +69 -59
- data/spec/unit/provider/git_spec.rb +0 -10
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/group/usermod_spec.rb +2 -2
- data/spec/unit/provider/http_request_spec.rb +28 -69
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/link_spec.rb +1 -1
- data/spec/unit/provider/ohai_spec.rb +4 -4
- data/spec/unit/provider/package/apt_spec.rb +0 -1
- data/spec/unit/provider/package/ips_spec.rb +0 -1
- data/spec/unit/provider/package/rubygems_spec.rb +0 -18
- data/spec/unit/provider/package/yum_spec.rb +79 -15
- data/spec/unit/provider/package_spec.rb +7 -5
- data/spec/unit/provider/registry_key_spec.rb +269 -0
- data/spec/unit/provider/remote_directory_spec.rb +24 -7
- data/spec/unit/provider/remote_file_spec.rb +36 -0
- data/spec/unit/provider/route_spec.rb +3 -6
- data/spec/unit/provider/ruby_block_spec.rb +8 -0
- data/spec/unit/provider/service/arch_service_spec.rb +4 -4
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/freebsd_service_spec.rb +4 -4
- data/spec/unit/provider/service/init_service_spec.rb +26 -3
- data/spec/unit/provider/service/insserv_service_spec.rb +1 -1
- data/spec/unit/provider/service/invokercd_service_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +1 -1
- data/spec/unit/provider/service/simple_service_spec.rb +3 -3
- data/spec/unit/provider/service/upstart_service_spec.rb +7 -7
- data/spec/unit/provider/service_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +1 -1
- data/spec/unit/provider/template_spec.rb +35 -11
- data/spec/unit/provider/user/dscl_spec.rb +57 -31
- data/spec/unit/provider/user_spec.rb +7 -16
- data/spec/unit/provider_spec.rb +4 -3
- data/spec/unit/recipe_spec.rb +10 -8
- data/spec/unit/registry_helper_spec.rb +376 -0
- data/spec/unit/resource/log_spec.rb +9 -0
- data/spec/unit/resource/registry_key_spec.rb +171 -0
- data/spec/unit/resource/remote_file_spec.rb +21 -23
- data/spec/unit/resource/ruby_block_spec.rb +7 -3
- data/spec/unit/resource/service_spec.rb +11 -0
- data/spec/unit/resource_spec.rb +27 -4
- data/spec/unit/rest/auth_credentials_spec.rb +2 -14
- data/spec/unit/rest_spec.rb +122 -187
- data/spec/unit/run_context/cookbook_compiler_spec.rb +181 -0
- data/spec/unit/run_context_spec.rb +18 -4
- data/spec/unit/run_list_spec.rb +0 -209
- data/spec/unit/run_lock_spec.rb +37 -0
- data/spec/unit/runner_spec.rb +101 -2
- data/spec/unit/scan_access_control_spec.rb +4 -4
- data/spec/unit/{shef → shell}/model_wrapper_spec.rb +5 -5
- data/spec/unit/{shef/shef_ext_spec.rb → shell/shell_ext_spec.rb} +21 -21
- data/spec/unit/{shef/shef_session_spec.rb → shell/shell_session_spec.rb} +12 -12
- data/spec/unit/shell_out_spec.rb +18 -0
- data/spec/unit/{shef_spec.rb → shell_spec.rb} +20 -20
- data/spec/unit/user_spec.rb +255 -0
- metadata +162 -157
- data/README.rdoc +0 -177
- data/spec/unit/certificate_spec.rb +0 -76
- data/spec/unit/checksum_cache_spec.rb +0 -209
- data/spec/unit/checksum_spec.rb +0 -94
- data/spec/unit/couchdb_spec.rb +0 -274
- data/spec/unit/index_queue_spec.rb +0 -391
- data/spec/unit/json_compat_spect.rb +0 -53
- data/spec/unit/mixin/language_spec.rb +0 -305
- data/spec/unit/openid_registration_spec.rb +0 -153
- data/spec/unit/solr_query/query_transform_spec.rb +0 -454
- data/spec/unit/solr_query/solr_http_request_spec.rb +0 -244
- data/spec/unit/solr_query_spec.rb +0 -203
- data/spec/unit/webui_user_spec.rb +0 -238
@@ -250,7 +250,7 @@ describe Chef::Provider::User do
|
|
250
250
|
@provider.user_exists = false
|
251
251
|
@provider.should_receive(:create_user).and_return(true)
|
252
252
|
@provider.action_create
|
253
|
-
@provider.
|
253
|
+
@provider.set_updated_status
|
254
254
|
@new_resource.should be_updated
|
255
255
|
end
|
256
256
|
|
@@ -259,7 +259,6 @@ describe Chef::Provider::User do
|
|
259
259
|
@provider.stub!(:compare_user).and_return(true)
|
260
260
|
@provider.should_receive(:manage_user).and_return(true)
|
261
261
|
@provider.action_create
|
262
|
-
@provider.converge
|
263
262
|
end
|
264
263
|
|
265
264
|
it "should set the the new_resources updated flag when it creates the user if we call manage_user" do
|
@@ -267,7 +266,7 @@ describe Chef::Provider::User do
|
|
267
266
|
@provider.stub!(:compare_user).and_return(true)
|
268
267
|
@provider.stub!(:manage_user).and_return(true)
|
269
268
|
@provider.action_create
|
270
|
-
@provider.
|
269
|
+
@provider.set_updated_status
|
271
270
|
@new_resource.should be_updated
|
272
271
|
end
|
273
272
|
end
|
@@ -281,21 +280,19 @@ describe Chef::Provider::User do
|
|
281
280
|
@provider.user_exists = false
|
282
281
|
@provider.should_not_receive(:remove_user)
|
283
282
|
@provider.action_remove
|
284
|
-
@provider.converge
|
285
283
|
end
|
286
284
|
|
287
285
|
it "should call remove_user if the user exists" do
|
288
286
|
@provider.user_exists = true
|
289
287
|
@provider.should_receive(:remove_user)
|
290
288
|
@provider.action_remove
|
291
|
-
@provider.converge
|
292
289
|
end
|
293
290
|
|
294
291
|
it "should set the new_resources updated flag to true if the user is removed" do
|
295
292
|
@provider.user_exists = true
|
296
293
|
@provider.should_receive(:remove_user)
|
297
294
|
@provider.action_remove
|
298
|
-
@provider.
|
295
|
+
@provider.set_updated_status
|
299
296
|
@new_resource.should be_updated
|
300
297
|
end
|
301
298
|
end
|
@@ -320,14 +317,13 @@ describe Chef::Provider::User do
|
|
320
317
|
@provider.should_receive(:compare_user).and_return(true)
|
321
318
|
@provider.should_receive(:manage_user).and_return(true)
|
322
319
|
@provider.action_manage
|
323
|
-
@provider.converge
|
324
320
|
end
|
325
321
|
|
326
322
|
it "should set the new resources updated flag to true if manage_user is called" do
|
327
323
|
@provider.stub!(:compare_user).and_return(true)
|
328
324
|
@provider.stub!(:manage_user).and_return(true)
|
329
325
|
@provider.action_manage
|
330
|
-
@provider.
|
326
|
+
@provider.set_updated_status
|
331
327
|
@new_resource.should be_updated
|
332
328
|
end
|
333
329
|
|
@@ -335,14 +331,12 @@ describe Chef::Provider::User do
|
|
335
331
|
@provider.user_exists = false
|
336
332
|
@provider.should_not_receive(:manage_user)
|
337
333
|
@provider.action_manage
|
338
|
-
@provider.converge
|
339
334
|
end
|
340
335
|
|
341
336
|
it "should not run manage_user if the user exists but has no differing attributes" do
|
342
337
|
@provider.should_receive(:compare_user).and_return(false)
|
343
338
|
@provider.should_not_receive(:manage_user)
|
344
339
|
@provider.action_manage
|
345
|
-
@provider.converge
|
346
340
|
end
|
347
341
|
end
|
348
342
|
|
@@ -366,14 +360,13 @@ describe Chef::Provider::User do
|
|
366
360
|
@provider.should_receive(:compare_user).and_return(true)
|
367
361
|
@provider.should_receive(:manage_user).and_return(true)
|
368
362
|
@provider.action_modify
|
369
|
-
@provider.converge
|
370
363
|
end
|
371
364
|
|
372
365
|
it "should set the new resources updated flag to true if manage_user is called" do
|
373
366
|
@provider.stub!(:compare_user).and_return(true)
|
374
367
|
@provider.stub!(:manage_user).and_return(true)
|
375
368
|
@provider.action_modify
|
376
|
-
@provider.
|
369
|
+
@provider.set_updated_status
|
377
370
|
@new_resource.should be_updated
|
378
371
|
end
|
379
372
|
|
@@ -381,7 +374,6 @@ describe Chef::Provider::User do
|
|
381
374
|
@provider.should_receive(:compare_user).and_return(false)
|
382
375
|
@provider.should_not_receive(:manage_user)
|
383
376
|
@provider.action_modify
|
384
|
-
@provider.converge
|
385
377
|
end
|
386
378
|
|
387
379
|
it "should raise a Chef::Exceptions::User if the user doesn't exist" do
|
@@ -399,14 +391,13 @@ describe Chef::Provider::User do
|
|
399
391
|
@provider.stub!(:check_lock).and_return(false)
|
400
392
|
@provider.should_receive(:lock_user).and_return(true)
|
401
393
|
@provider.action_lock
|
402
|
-
@provider.converge
|
403
394
|
end
|
404
395
|
|
405
396
|
it "should set the new resources updated flag to true if lock_user is called" do
|
406
397
|
@provider.stub!(:check_lock).and_return(false)
|
407
398
|
@provider.should_receive(:lock_user)
|
408
399
|
@provider.action_lock
|
409
|
-
@provider.
|
400
|
+
@provider.set_updated_status
|
410
401
|
@new_resource.should be_updated
|
411
402
|
end
|
412
403
|
|
@@ -439,7 +430,7 @@ describe Chef::Provider::User do
|
|
439
430
|
@provider.stub!(:check_lock).and_return(true)
|
440
431
|
@provider.should_receive(:unlock_user).and_return(true)
|
441
432
|
@provider.action_unlock
|
442
|
-
@provider.
|
433
|
+
@provider.set_updated_status
|
443
434
|
@new_resource.should be_updated
|
444
435
|
end
|
445
436
|
|
data/spec/unit/provider_spec.rb
CHANGED
@@ -73,6 +73,10 @@ describe Chef::Provider do
|
|
73
73
|
@provider.current_resource.should eql(nil)
|
74
74
|
end
|
75
75
|
|
76
|
+
it "should not support whyrun by default" do
|
77
|
+
@provider.send(:whyrun_supported?).should eql(false)
|
78
|
+
end
|
79
|
+
|
76
80
|
it "should return true for action_nothing" do
|
77
81
|
@provider.action_nothing.should eql(true)
|
78
82
|
end
|
@@ -82,7 +86,6 @@ describe Chef::Provider do
|
|
82
86
|
temporary_collection = nil
|
83
87
|
snitch = Proc.new {temporary_collection = @run_context.resource_collection}
|
84
88
|
@provider.send(:recipe_eval, &snitch)
|
85
|
-
@provider.converge
|
86
89
|
temporary_collection.should be_an_instance_of(Chef::ResourceCollection)
|
87
90
|
@provider.run_context.instance_variable_get(:@resource_collection).should == "doesn't matter what this is"
|
88
91
|
end
|
@@ -93,7 +96,6 @@ describe Chef::Provider do
|
|
93
96
|
Chef::RunContext.stub!(:new).and_raise("not supposed to happen")
|
94
97
|
snitch = Proc.new {temporary_collection = @run_context.resource_collection}
|
95
98
|
@provider.send(:recipe_eval, &snitch)
|
96
|
-
@provider.converge
|
97
99
|
end
|
98
100
|
|
99
101
|
context "when no converge actions are queued" do
|
@@ -103,7 +105,6 @@ describe Chef::Provider do
|
|
103
105
|
end
|
104
106
|
|
105
107
|
it "does not mark the new resource as updated" do
|
106
|
-
@provider.converge
|
107
108
|
@resource.should_not be_updated
|
108
109
|
@resource.should_not be_updated_by_last_action
|
109
110
|
end
|
data/spec/unit/recipe_spec.rb
CHANGED
@@ -24,14 +24,16 @@ require 'spec_helper'
|
|
24
24
|
describe Chef::Recipe do
|
25
25
|
before(:each) do
|
26
26
|
@cookbook_repo = File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks"))
|
27
|
-
|
27
|
+
cl = Chef::CookbookLoader.new(@cookbook_repo)
|
28
|
+
cl.load_cookbooks
|
29
|
+
@cookbook_collection = Chef::CookbookCollection.new(cl)
|
28
30
|
@node = Chef::Node.new
|
29
|
-
@node[:tags] = Array.new
|
31
|
+
@node.normal[:tags] = Array.new
|
30
32
|
@events = Chef::EventDispatch::Dispatcher.new
|
31
33
|
@run_context = Chef::RunContext.new(@node, @cookbook_collection, @events)
|
32
34
|
@recipe = Chef::Recipe.new("hjk", "test", @run_context)
|
33
35
|
|
34
|
-
#
|
36
|
+
# Shell/ext.rb is on the run path, and it defines
|
35
37
|
# Chef::Recipe#resources to call pp, which we don't want when
|
36
38
|
# we're running tests.
|
37
39
|
@recipe.stub!(:pp)
|
@@ -108,8 +110,8 @@ describe Chef::Recipe do
|
|
108
110
|
|
109
111
|
it "locate resource for particular platform" do
|
110
112
|
Object.const_set('ShaunTheSheep', Class.new(Chef::Resource){ provides :laughter, :on_platforms => ["television"] })
|
111
|
-
@node.platform
|
112
|
-
@node.platform_version
|
113
|
+
@node.automatic[:platform] = "television"
|
114
|
+
@node.automatic[:platform_version] = "123"
|
113
115
|
res = @recipe.laughter "timmy"
|
114
116
|
res.name.should eql("timmy")
|
115
117
|
res.kind_of?(ShaunTheSheep)
|
@@ -151,7 +153,7 @@ describe Chef::Recipe do
|
|
151
153
|
end
|
152
154
|
end
|
153
155
|
@run_context.definitions[:crow] = crow_define
|
154
|
-
@node[:foo] = false
|
156
|
+
@node.normal[:foo] = false
|
155
157
|
@recipe.crow "mine" do
|
156
158
|
something node[:foo]
|
157
159
|
end
|
@@ -204,9 +206,9 @@ describe Chef::Recipe do
|
|
204
206
|
res.pretty_kitty.should eql(true)
|
205
207
|
end
|
206
208
|
|
207
|
-
it "should store that it has seen a recipe in
|
209
|
+
it "should store that it has seen a recipe in the run_context" do
|
208
210
|
@run_context.include_recipe "openldap"
|
209
|
-
@
|
211
|
+
@run_context.loaded_recipe?("openldap").should be_true
|
210
212
|
end
|
211
213
|
|
212
214
|
it "should not include the same recipe twice" do
|
@@ -0,0 +1,376 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Prajakta Purohit (prajakta@opscode.com)
|
3
|
+
# Copyright:: Copyright (c) 2012 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'spec_helper'
|
20
|
+
|
21
|
+
describe Chef::Provider::RegistryKey do
|
22
|
+
|
23
|
+
let(:value1) { { :name => "one", :type => :string, :data => "1" } }
|
24
|
+
let(:key_path) { 'HKCU\Software\OpscodeNumbers' }
|
25
|
+
let(:key) { 'Software\OpscodeNumbers' }
|
26
|
+
let(:key_parent) { 'Software' }
|
27
|
+
let(:key_to_delete) { 'OpscodeNumbers' }
|
28
|
+
let(:sub_key) {'OpscodePrimes'}
|
29
|
+
let(:missing_key_path) {'HKCU\Software'}
|
30
|
+
|
31
|
+
before(:each) do
|
32
|
+
Chef::Win32::Registry.any_instance.stub(:machine_architecture).and_return(:x86_64)
|
33
|
+
@registry = Chef::Win32::Registry.new()
|
34
|
+
|
35
|
+
#Making the values for registry constants available on unix
|
36
|
+
Object.send(:remove_const, 'Win32') if defined?(Win32)
|
37
|
+
Win32 = Module.new
|
38
|
+
Win32::Registry = Class.new
|
39
|
+
Win32::Registry::KEY_SET_VALUE = 0x0002
|
40
|
+
Win32::Registry::KEY_QUERY_VALUE = 0x0001
|
41
|
+
Win32::Registry::KEY_WRITE = 0x00020000 | 0x0002 | 0x0004
|
42
|
+
Win32::Registry::KEY_READ = 0x00020000 | 0x0001 | 0x0008 | 0x0010
|
43
|
+
|
44
|
+
Win32::Registry::Error = Class.new(RuntimeError)
|
45
|
+
|
46
|
+
@hive_mock = mock("::Win32::Registry::HKEY_CURRENT_USER")
|
47
|
+
@reg_mock = mock("reg")
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "get_values" do
|
51
|
+
it "gets all values for a key if the key exists" do
|
52
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
53
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
54
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
55
|
+
@reg_mock.should_receive(:map)
|
56
|
+
@registry.get_values(key_path)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "throws an exception if key does not exist" do
|
60
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
61
|
+
@registry.should_receive(:key_exists!).with(key_path).and_raise(Chef::Exceptions::Win32RegKeyMissing)
|
62
|
+
lambda{@registry.get_values(key_path)}.should raise_error(Chef::Exceptions::Win32RegKeyMissing)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "set_value" do
|
67
|
+
it "does nothing if key and hive and value exist" do
|
68
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
69
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
70
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(true)
|
71
|
+
@registry.should_receive(:data_exists?).with(key_path, value1).and_return(true)
|
72
|
+
@registry.set_value(key_path, value1)
|
73
|
+
end
|
74
|
+
|
75
|
+
it "updates value if key and hive and value exist, but data is different" do
|
76
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
77
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
78
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(true)
|
79
|
+
@registry.should_receive(:data_exists?).with(key_path, value1).and_return(false)
|
80
|
+
@hive_mock.should_receive(:open).with(key, Win32::Registry::KEY_SET_VALUE | ::Win32::Registry::KEY_QUERY_VALUE | @registry.registry_system_architecture).and_yield(@reg_mock)
|
81
|
+
@registry.should_receive(:get_type_from_name).with(:string).and_return(1)
|
82
|
+
@reg_mock.should_receive(:write).with("one", 1, "1")
|
83
|
+
@registry.set_value(key_path, value1)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "creates value if the key exists and the value does not exist" do
|
87
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
88
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
89
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(false)
|
90
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_SET_VALUE | ::Win32::Registry::KEY_QUERY_VALUE | @registry.registry_system_architecture).and_yield(@reg_mock)
|
91
|
+
@registry.should_receive(:get_type_from_name).with(:string).and_return(1)
|
92
|
+
@reg_mock.should_receive(:write).with("one", 1, "1")
|
93
|
+
@registry.set_value(key_path, value1)
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should raise an exception if the key does not exist" do
|
97
|
+
@registry.should_receive(:key_exists!).with(key_path).and_raise(Chef::Exceptions::Win32RegKeyMissing)
|
98
|
+
lambda {@registry.set_value(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegKeyMissing)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "delete_value" do
|
103
|
+
it "deletes value if value exists" do
|
104
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(true)
|
105
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
106
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_SET_VALUE | @registry.registry_system_architecture).and_yield(@reg_mock)
|
107
|
+
@reg_mock.should_receive(:delete_value).with("one").and_return(true)
|
108
|
+
@registry.delete_value(key_path, value1)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "raises an exception if the key does not exist" do
|
112
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(true)
|
113
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_raise(Chef::Exceptions::Win32RegKeyMissing)
|
114
|
+
@registry.delete_value(key_path, value1)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "does nothing if the value does not exist" do
|
118
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(false)
|
119
|
+
@registry.delete_value(key_path, value1)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe "create_key" do
|
124
|
+
it "creates key if intermediate keys are missing and recursive is set to true" do
|
125
|
+
@registry.should_receive(:keys_missing?).with(key_path).and_return(true)
|
126
|
+
@registry.should_receive(:create_missing).with(key_path)
|
127
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(false)
|
128
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
129
|
+
@hive_mock.should_receive(:create).with(key, ::Win32::Registry::KEY_WRITE | @registry.registry_system_architecture)
|
130
|
+
@registry.create_key(key_path, true)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "raises an exception if intermediate keys are missing and recursive is set to false" do
|
134
|
+
@registry.should_receive(:keys_missing?).with(key_path).and_return(true)
|
135
|
+
lambda{@registry.create_key(key_path, false)}.should raise_error(Chef::Exceptions::Win32RegNoRecursive)
|
136
|
+
end
|
137
|
+
|
138
|
+
it "does nothing if the key exists" do
|
139
|
+
@registry.should_receive(:keys_missing?).with(key_path).and_return(true)
|
140
|
+
@registry.should_receive(:create_missing).with(key_path)
|
141
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(true)
|
142
|
+
@registry.create_key(key_path, true)
|
143
|
+
end
|
144
|
+
|
145
|
+
it "create key if intermediate keys not missing and recursive is set to false" do
|
146
|
+
@registry.should_receive(:keys_missing?).with(key_path).and_return(false)
|
147
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(false)
|
148
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
149
|
+
@hive_mock.should_receive(:create).with(key, ::Win32::Registry::KEY_WRITE | @registry.registry_system_architecture)
|
150
|
+
@registry.create_key(key_path, false)
|
151
|
+
end
|
152
|
+
|
153
|
+
it "create key if intermediate keys not missing and recursive is set to true" do
|
154
|
+
@registry.should_receive(:keys_missing?).with(key_path).and_return(false)
|
155
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(false)
|
156
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
157
|
+
@hive_mock.should_receive(:create).with(key, ::Win32::Registry::KEY_WRITE | @registry.registry_system_architecture)
|
158
|
+
@registry.create_key(key_path, true)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
describe "delete_key", :windows_only do
|
163
|
+
it "deletes key if it has subkeys and recursive is set to true" do
|
164
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(true)
|
165
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
166
|
+
@registry.should_receive(:has_subkeys?).with(key_path).and_return(true)
|
167
|
+
@registry.should_receive(:get_subkeys).with(key_path).and_return([sub_key])
|
168
|
+
@registry.should_receive(:key_exists?).with(key_path+"\\"+sub_key).and_return(true)
|
169
|
+
@registry.should_receive(:get_hive_and_key).with(key_path+"\\"+sub_key).and_return([@hive_mock, key+"\\"+sub_key])
|
170
|
+
@registry.should_receive(:has_subkeys?).with(key_path+"\\"+sub_key).and_return(false)
|
171
|
+
@registry.should_receive(:delete_key_ex).twice
|
172
|
+
@registry.delete_key(key_path, true)
|
173
|
+
end
|
174
|
+
|
175
|
+
it "raises an exception if it has subkeys but recursive is set to false" do
|
176
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(true)
|
177
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
178
|
+
@registry.should_receive(:has_subkeys?).with(key_path).and_return(true)
|
179
|
+
lambda{@registry.delete_key(key_path, false)}.should raise_error(Chef::Exceptions::Win32RegNoRecursive)
|
180
|
+
end
|
181
|
+
|
182
|
+
it "deletes key if the key exists and has no subkeys" do
|
183
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(true)
|
184
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
185
|
+
@registry.should_receive(:has_subkeys?).with(key_path).and_return(false)
|
186
|
+
@registry.should_receive(:delete_key_ex)
|
187
|
+
@registry.delete_key(key_path, true)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
describe "key_exists?" do
|
192
|
+
it "returns true if key_exists" do
|
193
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
194
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
195
|
+
@registry.key_exists?(key_path).should == true
|
196
|
+
end
|
197
|
+
|
198
|
+
it "returns false if key does not exist" do
|
199
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
200
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_raise(::Win32::Registry::Error)
|
201
|
+
@registry.key_exists?(key_path).should == false
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
describe "key_exists!" do
|
206
|
+
it "throws an exception if the key_parent does not exist" do
|
207
|
+
@registry.should_receive(:key_exists?).with(key_path).and_return(false)
|
208
|
+
lambda{@registry.key_exists!(key_path)}.should raise_error(Chef::Exceptions::Win32RegKeyMissing)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
describe "hive_exists?" do
|
213
|
+
it "returns true if the hive exists" do
|
214
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
215
|
+
@registry.hive_exists?(key_path) == true
|
216
|
+
end
|
217
|
+
|
218
|
+
it "returns false if the hive does not exist" do
|
219
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_raise(Chef::Exceptions::Win32RegHiveMissing)
|
220
|
+
@registry.hive_exists?(key_path) == false
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
describe "has_subkeys?" do
|
225
|
+
it "returns true if the key has subkeys" do
|
226
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
227
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
228
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
229
|
+
@reg_mock.should_receive(:each_key).and_yield(key)
|
230
|
+
@registry.has_subkeys?(key_path) == true
|
231
|
+
end
|
232
|
+
|
233
|
+
it "returns false if the key does not have subkeys" do
|
234
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
235
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
236
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
237
|
+
@reg_mock.should_receive(:each_key).and_return(no_args())
|
238
|
+
@registry.has_subkeys?(key_path).should == false
|
239
|
+
end
|
240
|
+
|
241
|
+
it "throws an exception if the key does not exist" do
|
242
|
+
@registry.should_receive(:key_exists!).with(key_path).and_raise(Chef::Exceptions::Win32RegKeyMissing)
|
243
|
+
lambda {@registry.set_value(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegKeyMissing)
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
describe "get_subkeys" do
|
248
|
+
it "returns the subkeys if they exist" do
|
249
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
250
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
251
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
252
|
+
@reg_mock.should_receive(:each_key).and_yield(sub_key)
|
253
|
+
@registry.get_subkeys(key_path)
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
describe "value_exists?" do
|
258
|
+
it "throws an exception if the key does not exist" do
|
259
|
+
@registry.should_receive(:key_exists!).with(key_path).and_raise(Chef::Exceptions::Win32RegKeyMissing)
|
260
|
+
lambda {@registry.value_exists?(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegKeyMissing)
|
261
|
+
end
|
262
|
+
|
263
|
+
it "returns true if the value exists" do
|
264
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
265
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
266
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
267
|
+
@reg_mock.should_receive(:any?).and_yield("one")
|
268
|
+
@registry.value_exists?(key_path, value1) == true
|
269
|
+
end
|
270
|
+
|
271
|
+
it "returns false if the value does not exist" do
|
272
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
273
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
274
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
275
|
+
@reg_mock.should_receive(:any?).and_yield(no_args())
|
276
|
+
@registry.value_exists?(key_path, value1) == false
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
describe "data_exists?" do
|
281
|
+
it "throws an exception if the key does not exist" do
|
282
|
+
@registry.should_receive(:key_exists!).with(key_path).and_raise(Chef::Exceptions::Win32RegKeyMissing)
|
283
|
+
lambda {@registry.data_exists?(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegKeyMissing)
|
284
|
+
end
|
285
|
+
|
286
|
+
it "returns true if the data exists" do
|
287
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
288
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
289
|
+
@registry.should_receive(:get_type_from_name).with(:string).and_return(1)
|
290
|
+
@reg_mock.should_receive(:each).with(no_args()).and_yield("one", 1, "1")
|
291
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
292
|
+
@registry.data_exists?(key_path, value1).should == true
|
293
|
+
end
|
294
|
+
|
295
|
+
it "returns false if the data does not exist" do
|
296
|
+
@registry.should_receive(:key_exists!).with(key_path).and_return(true)
|
297
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
298
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
299
|
+
@registry.should_receive(:get_type_from_name).with(:string).and_return(1)
|
300
|
+
@reg_mock.should_receive(:each).with(no_args()).and_yield("one", 1, "2")
|
301
|
+
@registry.data_exists?(key_path, value1).should == false
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
describe "value_exists!" do
|
306
|
+
it "does nothing if the value exists" do
|
307
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(true)
|
308
|
+
@registry.value_exists!(key_path, value1)
|
309
|
+
end
|
310
|
+
|
311
|
+
it "throws an exception if the value does not exist" do
|
312
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(false)
|
313
|
+
lambda{@registry.value_exists!(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegValueMissing)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
describe "data_exists!" do
|
318
|
+
it "does nothing if the data exists" do
|
319
|
+
@registry.should_receive(:data_exists?).with(key_path, value1).and_return(true)
|
320
|
+
@registry.data_exists!(key_path, value1)
|
321
|
+
end
|
322
|
+
|
323
|
+
it "throws an exception if the data does not exist" do
|
324
|
+
@registry.should_receive(:data_exists?).with(key_path, value1).and_return(false)
|
325
|
+
lambda{@registry.data_exists!(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegDataMissing)
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
describe "type_matches?" do
|
330
|
+
it "returns true if type matches" do
|
331
|
+
@registry.should_receive(:value_exists!).with(key_path, value1).and_return(true)
|
332
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
333
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
334
|
+
@registry.should_receive(:get_type_from_name).with(:string).and_return(1)
|
335
|
+
@reg_mock.should_receive(:each).and_yield("one", 1)
|
336
|
+
@registry.type_matches?(key_path, value1).should == true
|
337
|
+
end
|
338
|
+
|
339
|
+
it "returns false if type does not match" do
|
340
|
+
@registry.should_receive(:value_exists!).with(key_path, value1).and_return(true)
|
341
|
+
@registry.should_receive(:get_hive_and_key).with(key_path).and_return([@hive_mock, key])
|
342
|
+
@hive_mock.should_receive(:open).with(key, ::Win32::Registry::KEY_READ | @registry.registry_system_architecture).and_yield(@reg_mock)
|
343
|
+
@reg_mock.should_receive(:each).and_yield("two", 2)
|
344
|
+
@registry.type_matches?(key_path, value1).should == false
|
345
|
+
end
|
346
|
+
|
347
|
+
it "throws an exception if value does not exist" do
|
348
|
+
@registry.should_receive(:value_exists?).with(key_path, value1).and_return(false)
|
349
|
+
lambda{@registry.type_matches?(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegValueMissing)
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
353
|
+
describe "type_matches!" do
|
354
|
+
it "does nothing if the type_matches" do
|
355
|
+
@registry.should_receive(:type_matches?).with(key_path, value1).and_return(true)
|
356
|
+
@registry.type_matches!(key_path, value1)
|
357
|
+
end
|
358
|
+
|
359
|
+
it "throws an exception if the type does not match" do
|
360
|
+
@registry.should_receive(:type_matches?).with(key_path, value1).and_return(false)
|
361
|
+
lambda{@registry.type_matches!(key_path, value1)}.should raise_error(Chef::Exceptions::Win32RegTypesMismatch)
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
describe "keys_missing?" do
|
366
|
+
it "returns true if the keys are missing" do
|
367
|
+
@registry.should_receive(:key_exists?).with(missing_key_path).and_return(false)
|
368
|
+
@registry.keys_missing?(key_path).should == true
|
369
|
+
end
|
370
|
+
|
371
|
+
it "returns false if no keys in the path are missing" do
|
372
|
+
@registry.should_receive(:key_exists?).with(missing_key_path).and_return(true)
|
373
|
+
@registry.keys_missing?(key_path).should == false
|
374
|
+
end
|
375
|
+
end
|
376
|
+
end
|