c3c62f5d95
Change-Id: Ie347986d9cd69d6a5032a063b7930aefee5280fa
95 lines
2.3 KiB
Ruby
95 lines
2.3 KiB
Ruby
require 'puppet'
|
|
require 'spec_helper'
|
|
require 'puppet/provider/nova'
|
|
require 'rspec/mocks'
|
|
|
|
describe Puppet::Provider::Nova do
|
|
|
|
def klass
|
|
described_class
|
|
end
|
|
|
|
let :credential_hash do
|
|
{
|
|
'auth_url' => 'https://192.168.56.210:5000/v3/',
|
|
'project_name' => 'admin_tenant',
|
|
'username' => 'admin',
|
|
'password' => 'password',
|
|
'region_name' => 'Region1',
|
|
}
|
|
end
|
|
|
|
let :auth_endpoint do
|
|
'https://192.168.56.210:5000/v3/'
|
|
end
|
|
|
|
let :credential_error do
|
|
/Nova types will not work/
|
|
end
|
|
|
|
after :each do
|
|
klass.reset
|
|
end
|
|
|
|
describe 'when determining credentials' do
|
|
|
|
it 'should fail if config is empty' do
|
|
conf = {}
|
|
klass.expects(:nova_conf).returns(conf)
|
|
expect do
|
|
klass.nova_credentials
|
|
end.to raise_error(Puppet::Error, credential_error)
|
|
end
|
|
|
|
it 'should fail if config does not have keystone_authtoken section.' do
|
|
conf = {'foo' => 'bar'}
|
|
klass.expects(:nova_conf).returns(conf)
|
|
expect do
|
|
klass.nova_credentials
|
|
end.to raise_error(Puppet::Error, credential_error)
|
|
end
|
|
|
|
it 'should fail if config does not contain all auth params' do
|
|
conf = {'keystone_authtoken' => {'invalid_value' => 'foo'}}
|
|
klass.expects(:nova_conf).returns(conf)
|
|
expect do
|
|
klass.nova_credentials
|
|
end.to raise_error(Puppet::Error, credential_error)
|
|
end
|
|
|
|
it 'should use specified uri in the auth endpoint' do
|
|
conf = {'keystone_authtoken' => credential_hash}
|
|
klass.expects(:nova_conf).returns(conf)
|
|
expect(klass.get_auth_endpoint).to eq(auth_endpoint)
|
|
end
|
|
|
|
end
|
|
|
|
describe 'when parse a string line' do
|
|
it 'should return the same string' do
|
|
res = klass.str2hash("zone1")
|
|
expect(res).to eq("zone1")
|
|
end
|
|
|
|
it 'should return the string without quotes' do
|
|
res = klass.str2hash("'zone1'")
|
|
expect(res).to eq("zone1")
|
|
end
|
|
|
|
it 'should return the same string' do
|
|
res = klass.str2hash("z o n e1")
|
|
expect(res).to eq("z o n e1")
|
|
end
|
|
|
|
it 'should return a hash' do
|
|
res = klass.str2hash("a=b")
|
|
expect(res).to eq({"a"=>"b"})
|
|
end
|
|
|
|
it 'should return a hash with containing spaces' do
|
|
res = klass.str2hash("a b = c d")
|
|
expect(res).to eq({"a b "=>" c d"})
|
|
end
|
|
end
|
|
end
|