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' } } 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( '-T', 'foo', '-I', 'user', '-K', 'pass', '-N', '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