diff options
-rw-r--r-- | spec/unit/provider/registry_key_spec.rb | 130 |
1 files changed, 115 insertions, 15 deletions
diff --git a/spec/unit/provider/registry_key_spec.rb b/spec/unit/provider/registry_key_spec.rb index 1163d5f1de..a9e2647032 100644 --- a/spec/unit/provider/registry_key_spec.rb +++ b/spec/unit/provider/registry_key_spec.rb @@ -49,8 +49,8 @@ describe Chef::Provider::RegistryKey do describe "executing load_current_resource" do describe "when the key exists" do before(:each) do - @double_registry.should_receive(:key_exists?).with("HKLM\\Software\\Opscode\\Testing").and_return(true) - @double_registry.should_receive(:get_values).with("HKLM\\Software\\Opscode\\Testing").and_return( testval2 ) + @double_registry.should_receive(:key_exists?).with(testkey1).and_return(true) + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval2 ) @provider.load_current_resource end @@ -73,7 +73,7 @@ describe Chef::Provider::RegistryKey do describe "when the key does not exist" do before(:each) do - @double_registry.should_receive(:key_exists?).with("HKLM\\Software\\Opscode\\Testing").and_return(false) + @double_registry.should_receive(:key_exists?).with(testkey1).and_return(false) @provider.load_current_resource end @@ -86,40 +86,40 @@ describe Chef::Provider::RegistryKey do describe "action_create" do context "when the key exists" do before(:each) do - @double_registry.should_receive(:key_exists?).twice.with("HKLM\\Software\\Opscode\\Testing").and_return(true) + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(true) end it "should do nothing if the key and the value both exist" do - @double_registry.should_receive(:get_values).with("HKLM\\Software\\Opscode\\Testing").and_return( testval1 ) + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1 ) @double_registry.should_not_receive(:set_value) @provider.load_current_resource @provider.action_create end it "should create the value if the key exists but the value does not" do - @double_registry.should_receive(:get_values).with("HKLM\\Software\\Opscode\\Testing").and_return( testval2 ) - @double_registry.should_receive(:set_value).with("HKLM\\Software\\Opscode\\Testing", testval1) + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval2 ) + @double_registry.should_receive(:set_value).with(testkey1, testval1) @provider.load_current_resource @provider.action_create end it "should set the value if the key exists but the data does not match" do - @double_registry.should_receive(:get_values).with("HKLM\\Software\\Opscode\\Testing").and_return( testval1_wrong_data ) - @double_registry.should_receive(:set_value).with("HKLM\\Software\\Opscode\\Testing", testval1) + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1_wrong_data ) + @double_registry.should_receive(:set_value).with(testkey1, testval1) @provider.load_current_resource @provider.action_create end it "should set the value if the key exists but the type does not match" do - @double_registry.should_receive(:get_values).with("HKLM\\Software\\Opscode\\Testing").and_return( testval1_wrong_type ) - @double_registry.should_receive(:set_value).with("HKLM\\Software\\Opscode\\Testing", testval1) + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1_wrong_type ) + @double_registry.should_receive(:set_value).with(testkey1, testval1) @provider.load_current_resource @provider.action_create end end context "when the key does not exist" do before(:each) do - @double_registry.should_receive(:key_exists?).twice.with("HKLM\\Software\\Opscode\\Testing").and_return(false) + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(false) end - it "should create they key and the value" do - @double_registry.should_receive(:create_key).with("HKLM\\Software\\Opscode\\Testing", false) - @double_registry.should_receive(:set_value).with("HKLM\\Software\\Opscode\\Testing", testval1) + it "should create the key and the value" do + @double_registry.should_receive(:create_key).with(testkey1, false) + @double_registry.should_receive(:set_value).with(testkey1, testval1) @provider.load_current_resource @provider.action_create end @@ -127,12 +127,112 @@ describe Chef::Provider::RegistryKey do end describe "action_create_if_missing" do + context "when the key exists" do + before(:each) do + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(true) + end + it "should do nothing if the key and the value both exist" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1 ) + @double_registry.should_not_receive(:set_value) + @provider.load_current_resource + @provider.action_create_if_missing + end + it "should create the value if the key exists but the value does not" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval2 ) + @double_registry.should_receive(:set_value).with(testkey1, testval1) + @provider.load_current_resource + @provider.action_create_if_missing + end + it "should not set the value if the key exists but the data does not match" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1_wrong_data ) + @double_registry.should_not_receive(:set_value) + @provider.load_current_resource + @provider.action_create_if_missing + end + it "should not set the value if the key exists but the type does not match" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1_wrong_type ) + @double_registry.should_not_receive(:set_value) + @provider.load_current_resource + @provider.action_create_if_missing + end + end + context "when the key does not exist" do + before(:each) do + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(false) + end + it "should create the key and the value" do + @double_registry.should_receive(:create_key).with(testkey1, false) + @double_registry.should_receive(:set_value).with(testkey1, testval1) + @provider.load_current_resource + @provider.action_create_if_missing + end + end end describe "action_delete" do + context "when the key exists" do + before(:each) do + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(true) + end + it "deletes the value when the value exists" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1 ) + @double_registry.should_receive(:delete_value).with(testkey1, testval1) + @provider.load_current_resource + @provider.action_delete + end + it "deletes the value when the value exists, but the type is wrong" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1_wrong_type ) + @double_registry.should_receive(:delete_value).with(testkey1, testval1) + @provider.load_current_resource + @provider.action_delete + end + it "deletes the value when the value exists, but the data is wrong" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1_wrong_data ) + @double_registry.should_receive(:delete_value).with(testkey1, testval1) + @provider.load_current_resource + @provider.action_delete + end + it "does not delete the value when the value does not exist" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval2 ) + @double_registry.should_not_receive(:delete_value) + @provider.load_current_resource + @provider.action_delete + end + end + context "when the key does not exist" do + before(:each) do + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(false) + end + it "does nothing" do + @double_registry.should_not_receive(:delete_value) + @provider.load_current_resource + @provider.action_delete + end + end end describe "action_delete_key" do + context "when the key exists" do + before(:each) do + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(true) + end + it "deletes the key" do + @double_registry.should_receive(:get_values).with(testkey1).and_return( testval1 ) + @double_registry.should_receive(:delete_key).with(testkey1, false) + @provider.load_current_resource + @provider.action_delete_key + end + end + context "when the key does not exist" do + before(:each) do + @double_registry.should_receive(:key_exists?).twice.with(testkey1).and_return(false) + end + it "does nothing" do + @double_registry.should_not_receive(:delete_key) + @provider.load_current_resource + @provider.action_delete_key + end + end end end |