summaryrefslogtreecommitdiffstats
path: root/spec/unit/provider
diff options
context:
space:
mode:
Diffstat (limited to 'spec/unit/provider')
-rw-r--r--spec/unit/provider/augeas/augeas.rb77
-rwxr-xr-xspec/unit/provider/mount/parsed.rb1
-rwxr-xr-xspec/unit/provider/ssh_authorized_key/parsed.rb82
3 files changed, 121 insertions, 39 deletions
diff --git a/spec/unit/provider/augeas/augeas.rb b/spec/unit/provider/augeas/augeas.rb
index affc66676..284145657 100644
--- a/spec/unit/provider/augeas/augeas.rb
+++ b/spec/unit/provider/augeas/augeas.rb
@@ -133,14 +133,14 @@ describe provider_class do
tokens[0][0].should == "set"
tokens[0][1].should == 'Jar Jar'
tokens[0][2].should == "Binks is my copilot"
- end
+ end
end
describe "get filters" do
before do
augeas_stub = stub("augeas", :get => "value")
@provider = provider_class.new()
- @provider.stubs(:open_augeas).returns(augeas_stub)
+ @provider.aug= augeas_stub
end
it "should return false for a = nonmatch" do
@@ -168,7 +168,7 @@ describe provider_class do
before do
augeas_stub = stub("augeas", :match => ["set", "of", "values"])
@provider = provider_class.new()
- @provider.stubs(:open_augeas).returns(augeas_stub)
+ @provider.aug= augeas_stub
end
it "should return true for size match" do
@@ -202,53 +202,82 @@ describe provider_class do
end
end
- describe "need_to_run" do
+ describe "need to run" do
it "should handle no filters" do
- resource = stub("resource", :[] => "")
+ resource = stub("resource")
+ resource.stubs(:[]).returns(false).then.returns("")
+ augeas_stub = stub("augeas", :match => ["set", "of", "values"])
+ augeas_stub.stubs("close")
provider = provider_class.new(resource)
+ provider.stubs(:get_augeas_version).returns("0.3.5")
provider.need_to_run?.should == true
end
it "should return true when a get filter matches" do
- resource = stub("resource", :[] => "get path == value")
+ resource = stub("resource")
+ resource.stubs(:[]).returns(false).then.returns("get path == value")
provider = provider_class.new(resource)
augeas_stub = stub("augeas", :get => "value")
- provider.stubs(:open_augeas).returns(augeas_stub)
+ augeas_stub.stubs("close")
+ provider.aug= augeas_stub
+ provider.stubs(:get_augeas_version).returns("0.3.5")
provider.need_to_run?.should == true
end
it "should return false when a get filter does not match" do
- resource = stub("resource", :[] => "get path == another value")
+ resource = stub("resource")
+ resource.stubs(:[]).returns(false).then.returns("get path == another value")
provider = provider_class.new(resource)
augeas_stub = stub("augeas", :get => "value")
- provider.stubs(:open_augeas).returns(augeas_stub)
+ augeas_stub.stubs("close")
+ provider.aug= augeas_stub
+ provider.stubs(:get_augeas_version).returns("0.3.5")
provider.need_to_run?.should == false
end
it "should return true when a match filter matches" do
- resource = stub("resource", :[] => "match path size == 3")
+ resource = stub("resource")
+ resource.stubs(:[]).returns(false).then.returns("match path size == 3")
provider = provider_class.new(resource)
augeas_stub = stub("augeas", :match => ["set", "of", "values"])
- provider.stubs(:open_augeas).returns(augeas_stub)
+ augeas_stub.stubs("close")
+ provider.aug= augeas_stub
+ provider.stubs(:get_augeas_version).returns("0.3.5")
provider.need_to_run?.should == true
end
it "should return false when a match filter does not match" do
- resource = stub("resource", :[] => "match path size == 2")
+ resource = stub("resource")
+ resource.stubs(:[]).returns(false).then.returns("match path size == 2")
+ provider = provider_class.new(resource)
+ augeas_stub = stub("augeas", :match => ["set", "of", "values"])
+ augeas_stub.stubs("close")
+ provider.aug= augeas_stub
+ provider.stubs(:get_augeas_version).returns("0.3.5")
+ provider.need_to_run?.should == false
+ end
+
+ #This is a copy of the last one, with setting the force to true
+ it "setting force should not change the above logic" do
+ resource = stub("resource")
+ resource.stubs(:[]).returns(true).then.returns("match path size == 2")
provider = provider_class.new(resource)
augeas_stub = stub("augeas", :match => ["set", "of", "values"])
- provider.stubs(:open_augeas).returns(augeas_stub)
+ augeas_stub.stubs("close")
+ provider.aug= augeas_stub
+ provider.stubs(:get_augeas_version).returns("0.3.5")
provider.need_to_run?.should == false
end
end
- describe "augeas integration" do
+ describe "augeas execution integration" do
before do
@resource = stub("resource")
@provider = provider_class.new(@resource)
@augeas = stub("augeas")
- @provider.stubs(:open_augeas).returns(@augeas)
+ @provider.aug= @augeas
+ @provider.stubs(:get_augeas_version).returns("0.3.5")
end
it "should handle set commands" do
@@ -257,6 +286,7 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:set).with("/some/path/Jar/Jar", "Binks")
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
end
@@ -266,6 +296,7 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:rm).with("/Jar/Jar")
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
end
@@ -275,6 +306,7 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:rm).with("/Jar/Jar")
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
end
@@ -284,9 +316,10 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:clear).with("/foo/Jar/Jar")
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
- end
-
+ end
+
it "should handle ins commands with before" do
command = [["ins", "Binks", "before /Jar/Jar"]]
@@ -294,6 +327,7 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:insert).with("/foo/Jar/Jar", "Binks", true)
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
end
@@ -303,6 +337,7 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:insert).with("/foo/Jar/Jar", "Binks", false)
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
end
@@ -312,16 +347,18 @@ describe provider_class do
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:insert).with("/Jar/Jar", "Binks", false)
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
- end
-
+ end
+
it "should handle multiple commands" do
command = [["ins", "Binks", "after /Jar/Jar"], ["clear", "/Jar/Jar"]]
context = "/foo"
@resource.expects(:[]).times(2).returns(command).then.returns(context)
@augeas.expects(:insert).with("/foo/Jar/Jar", "Binks", false)
- @augeas.expects(:clear).with("/foo/Jar/Jar")
+ @augeas.expects(:clear).with("/foo/Jar/Jar")
@augeas.expects(:save).returns(true)
+ @augeas.expects(:close)
@provider.execute_changes.should == :executed
end
end
diff --git a/spec/unit/provider/mount/parsed.rb b/spec/unit/provider/mount/parsed.rb
index d2c992f33..364e145be 100755
--- a/spec/unit/provider/mount/parsed.rb
+++ b/spec/unit/provider/mount/parsed.rb
@@ -130,6 +130,7 @@ describe provider_class do
describe provider_class, " when modifying the filesystem tab" do
include ParsedMountTesting
before do
+ Puppet.settings.stubs(:use)
# Never write to disk, only to RAM.
@provider_class.stubs(:filetype).returns(Puppet::Util::FileType.filetype(:ram))
diff --git a/spec/unit/provider/ssh_authorized_key/parsed.rb b/spec/unit/provider/ssh_authorized_key/parsed.rb
index ec8f2b96a..18f3be126 100755
--- a/spec/unit/provider/ssh_authorized_key/parsed.rb
+++ b/spec/unit/provider/ssh_authorized_key/parsed.rb
@@ -72,32 +72,76 @@ describe provider_class do
genkey(key).should == "from=\"192.168.1.1\",no-pty,no-X11-forwarding ssh-rsa AAAAfsfddsjldjgksdflgkjsfdlgkj root@localhost\n"
end
- it "should prefetch ~user/.ssh/authorized_keys when user is given" do
- key = Puppet::Type.type(:ssh_authorized_key).create(
- :name => "Test",
- :key => "AA",
- :type => "rsa",
- :ensure => :present,
- :user => "root")
- prov = @provider.new key
+ it "'s parse_options method should be able to parse options containing commas" do
+ options = %w{from="host1.reductlivelabs.com,host.reductivelabs.com" command="/usr/local/bin/run" ssh-pty}
+ optionstr = options.join(", ")
- prov.prefetch
- prov.target.should == File.expand_path("~root/.ssh/authorized_keys")
+ @provider.parse_options(optionstr).should == options
end
+end
- it "should create destination dir" do
- # No idea how to test the flush method
+describe provider_class do
+ before :each do
+ @resource = stub("resource", :name => "foo")
+ @resource.stubs(:[]).returns "foo"
+ @provider = provider_class.new(@resource)
end
- it "should set correct default permissions" do
- # No idea how to test the flush method
- end
+ describe "when flushing" do
+ before :each do
+ # Stub file and directory operations
+ Dir.stubs(:mkdir)
+ File.stubs(:chmod)
+ File.stubs(:chown)
+ end
- it "'s parse_options method should be able to parse options containing commas" do
- options = %w{from="host1.reductlivelabs.com,host.reductivelabs.com" command="/usr/local/bin/run" ssh-pty}
- optionstr = options.join(", ")
+ describe "and a user has been specified" do
+ before :each do
+ @resource.stubs(:should).with(:user).returns "nobody"
+ target = File.expand_path("~nobody/.ssh/authorized_keys")
+ @resource.stubs(:should).with(:target).returns target
+ end
+
+ it "should create the directory" do
+ Dir.expects(:mkdir).with(File.expand_path("~nobody/.ssh"), 0700)
+ @provider.flush
+ end
+
+ it "should chown the directory to the user" do
+ uid = Puppet::Util.uid("nobody")
+ File.expects(:chown).with(uid, nil, File.expand_path("~nobody/.ssh"))
+ @provider.flush
+ end
+
+ it "should chown the key file to the user" do
+ uid = Puppet::Util.uid("nobody")
+ File.expects(:chown).with(uid, nil, File.expand_path("~nobody/.ssh/authorized_keys"))
+ @provider.flush
+ end
+
+ it "should chmod the key file to 0600" do
+ File.chmod(0600, File.expand_path("~nobody/.ssh/authorized_keys"))
+ @provider.flush
+ end
+ end
+
+ describe "and a target has been specified" do
+ before :each do
+ @resource.stubs(:should).with(:user).returns nil
+ @resource.stubs(:should).with(:target).returns "/tmp/.ssh/authorized_keys"
+ end
+
+ it "should make the directory" do
+ Dir.expects(:mkdir).with("/tmp/.ssh", 0755)
+ @provider.flush
+ end
+
+ it "should chmod the key file to 0644" do
+ File.expects(:chmod).with(0644, "/tmp/.ssh/authorized_keys")
+ @provider.flush
+ end
+ end
- @provider.parse_options(optionstr).should == options
end
end