X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=3rdparty%2Fmodules%2Fglance%2Fspec%2Funit%2Fprovider%2Fglance_spec.rb;fp=3rdparty%2Fmodules%2Fglance%2Fspec%2Funit%2Fprovider%2Fglance_spec.rb;h=14d418b97b136004773221f53c4ea86db66a0185;hb=4631045ebb77ee8622f6fa09277a50c372bcc02e;hp=0000000000000000000000000000000000000000;hpb=3d4dc4fd9e59bd0e07646c99f6b356c7d9d859aa;p=dsa-puppet.git 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 index 00000000..14d418b9 --- /dev/null +++ b/3rdparty/modules/glance/spec/unit/provider/glance_spec.rb @@ -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