puppet-glance/spec/unit/provider/glance_spec.rb

60 lines
1.8 KiB
Ruby

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