summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2011-04-09 15:15:52 -0700
committerLuke Kanies <luke@puppetlabs.com>2011-04-09 19:32:02 -0700
commit50756588baad21d9b399051153274a89857433ef (patch)
tree2f1246bb4ed4ca908880538075e062c091146bda /spec
parent26b6b37556aea219f972235e11e5118a54ef3d27 (diff)
downloadpuppet-50756588baad21d9b399051153274a89857433ef.tar.gz
puppet-50756588baad21d9b399051153274a89857433ef.tar.xz
puppet-50756588baad21d9b399051153274a89857433ef.zip
Fixing Indirector::Facts::Couch loading
It was previously failing to load at all if couch was missing, but now it only fails on initialization. This means that you can tell that the terminus is there when you're missing couch, but you just can't use it. Signed-off-by: Luke Kanies <luke@puppetlabs.com> Reviewed-by: Daniel Pittman <daniel@puppetlabs.com>
Diffstat (limited to 'spec')
-rwxr-xr-xspec/unit/indirector/facts/couch_spec.rb132
1 files changed, 69 insertions, 63 deletions
diff --git a/spec/unit/indirector/facts/couch_spec.rb b/spec/unit/indirector/facts/couch_spec.rb
index 1de2f7dfb..3ac085251 100755
--- a/spec/unit/indirector/facts/couch_spec.rb
+++ b/spec/unit/indirector/facts/couch_spec.rb
@@ -3,95 +3,101 @@
require 'spec_helper'
require 'puppet/node/facts'
+require 'puppet/indirector/facts/couch'
-describe "Puppet::Node::Facts::Couch", :if => Puppet.features.couchdb? do
- require 'puppet/indirector/facts/couch' if Puppet.features.couchdb?
-
- before do
- @mock_db = mock('couch db')
- mock_document = CouchRest::Document.new(:_id => fake_request.key, :facts => fake_request.values)
- mock_document.stubs(:database).returns(@mock_db)
- @mock_db.stubs(:get).with(fake_request.key).returns(mock_document)
- Puppet::Node::Facts::Couch.stubs(:db).returns(@mock_db)
+describe "Puppet::Node::Facts::Couch" do
+ describe "when couchdb is not available", :unless => Puppet.features.couchdb? do
+ it "should fail to initialize" do
+ lambda { Puppet::Node::Facts::Couch.new }.should raise_error
+ end
end
- subject { Puppet::Node::Facts::Couch }
-
- describe "#find" do
- describe "when the node document exists" do
- it "should find the request by key" do
- @mock_db.expects(:get).with(fake_request.key).returns({'_id' => fake_request.key, 'facts' => fake_request.instance.values})
- subject.new.find(fake_request).should == fake_request.instance
- end
+ describe "when couchdb is available", :if => Puppet.features.couchdb? do
+ before do
+ @mock_db = mock('couch db')
+ mock_document = CouchRest::Document.new(:_id => fake_request.key, :facts => fake_request.values)
+ mock_document.stubs(:database).returns(@mock_db)
+ @mock_db.stubs(:get).with(fake_request.key).returns(mock_document)
+ Puppet::Node::Facts::Couch.stubs(:db).returns(@mock_db)
end
- describe "when the node document does not exist" do
- before do
- @mock_db.expects(:get).
- with(fake_request.key).
- raises(RestClient::ResourceNotFound)
- end
+ subject { Puppet::Node::Facts::Couch }
- it "should return nil" do
- subject.new.find(fake_request).should be_nil
+ describe "#find" do
+ describe "when the node document exists" do
+ it "should find the request by key" do
+ @mock_db.expects(:get).with(fake_request.key).returns({'_id' => fake_request.key, 'facts' => fake_request.instance.values})
+ subject.new.find(fake_request).should == fake_request.instance
+ end
end
- it "should send Puppet a debug message" do
- Puppet.expects(:debug).with("No couchdb document with id: test.local")
- subject.new.find(fake_request).should be_nil
- end
+ describe "when the node document does not exist" do
+ before do
+ @mock_db.expects(:get).
+ with(fake_request.key).
+ raises(RestClient::ResourceNotFound)
+ end
- end
- end
+ it "should return nil" do
+ subject.new.find(fake_request).should be_nil
+ end
- describe "#save" do
- describe "with options" do
- subject do
- lambda { Puppet::Node::Facts::Couch.new.save(fake_request([1])) }
- end
+ it "should send Puppet a debug message" do
+ Puppet.expects(:debug).with("No couchdb document with id: test.local")
+ subject.new.find(fake_request).should be_nil
+ end
- it { should raise_error(ArgumentError, "PUT does not accept options") }
+ end
end
- it "should save the json to the CouchDB database" do
- @mock_db.expects(:save_doc).at_least_once.returns({'ok' => true })
- subject.new.save(fake_request)
- end
+ describe "#save" do
+ describe "with options" do
+ subject do
+ lambda { Puppet::Node::Facts::Couch.new.save(fake_request([1])) }
+ end
- describe "when the document exists" do
- before do
- @doc = CouchRest::Document.new(:_id => fake_request.key, :facts => fake_request.instance.values)
- @mock_db.expects(:get).with(fake_request.key).returns(@doc)
+ it { should raise_error(ArgumentError, "PUT does not accept options") }
end
- it "saves the document" do
- @doc.expects(:save)
+ it "should save the json to the CouchDB database" do
+ @mock_db.expects(:save_doc).at_least_once.returns({'ok' => true })
subject.new.save(fake_request)
end
- end
+ describe "when the document exists" do
+ before do
+ @doc = CouchRest::Document.new(:_id => fake_request.key, :facts => fake_request.instance.values)
+ @mock_db.expects(:get).with(fake_request.key).returns(@doc)
+ end
+
+ it "saves the document" do
+ @doc.expects(:save)
+ subject.new.save(fake_request)
+ end
- describe "when the document does not exist" do
- before do
- @mock_db.expects(:get).
- with(fake_request.key).
- raises(RestClient::ResourceNotFound)
end
- it "saves the document" do
- @mock_db.expects(:save_doc)
- subject.new.save(fake_request)
+ describe "when the document does not exist" do
+ before do
+ @mock_db.expects(:get).
+ with(fake_request.key).
+ raises(RestClient::ResourceNotFound)
+ end
+
+ it "saves the document" do
+ @mock_db.expects(:save_doc)
+ subject.new.save(fake_request)
+ end
+
end
end
+ def fake_request(options={})
+ facts = YAML.load_file(File.join(PuppetSpec::FIXTURE_DIR, 'yaml', 'test.local.yaml'))
+ Struct.new(:instance, :key, :options).new(facts, facts.name, options)
+ end
+ private :fake_request
end
-
- def fake_request(options={})
- facts = YAML.load_file(File.join(PuppetSpec::FIXTURE_DIR, 'yaml', 'test.local.yaml'))
- Struct.new(:instance, :key, :options).new(facts, facts.name, options)
- end
- private :fake_request
-
end