]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/glance/spec/unit/provider/glance_spec.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / glance / spec / unit / provider / glance_spec.rb
diff --git a/3rdparty/modules/glance/spec/unit/provider/glance_spec.rb b/3rdparty/modules/glance/spec/unit/provider/glance_spec.rb
new file mode 100644 (file)
index 0000000..14d418b
--- /dev/null
@@ -0,0 +1,65 @@
+require 'puppet'
+require 'spec_helper'
+require 'puppet/provider/glance'
+require 'tempfile'
+
+
+klass = Puppet::Provider::Glance
+
+describe Puppet::Provider::Glance do
+
+  after :each do
+    klass.reset
+  end
+
+  describe 'when retrieving the auth credentials' do
+
+    it 'should fail if the glance config file does not have the expected contents' do
+      mock = {}
+      Puppet::Util::IniConfig::File.expects(:new).returns(mock)
+      mock.expects(:read).with('/etc/glance/glance-api.conf')
+      expect do
+        klass.glance_credentials
+      end.to raise_error(Puppet::Error, /does not contain all required sections/)
+    end
+
+  describe 'when testing glance connection retries' do
+
+      ['[Errno 111] Connection refused', '(HTTP 400)', 'HTTP Unable to establish connection'].reverse.each do |valid_message|
+        it "should retry when glance is not ready with error #{valid_message}" do
+          mock = {'keystone_authtoken' =>
+            {
+               'auth_host'         => '127.0.0.1',
+               'auth_port'         => '35357',
+               'auth_protocol'     => 'http',
+               'admin_tenant_name' => 'foo',
+               'admin_user'        => 'user',
+               'admin_password'    => 'pass'
+            },
+                'DEFAULT' =>
+            {
+                'os_region_name' => 'SomeRegion',
+            }
+          }
+          Puppet::Util::IniConfig::File.expects(:new).returns(mock)
+          mock.expects(:read).with('/etc/glance/glance-api.conf')
+          klass.expects(:sleep).with(10).returns(nil)
+          klass.expects(:glance).twice.with(
+            '--os-tenant-name',
+            'foo',
+            '--os-username',
+            'user',
+            '--os-password',
+            'pass',
+            '--os-region-name',
+            'SomeRegion',
+            '--os-auth-url',
+            'http://127.0.0.1:35357/v2.0/',
+            ['test_retries']
+          ).raises(Exception, valid_message).then.returns('')
+          klass.auth_glance('test_retries')
+        end
+      end
+    end
+  end
+end