Files
puppet-openstack_extras/spec/classes/openstack_extras_auth_file_spec.rb

174 lines
5.4 KiB
Ruby

require 'spec_helper'
describe 'openstack_extras::auth_file' do
shared_examples 'openstack_extras::auth_file' do
context 'when only passing default class parameters' do
let :params do
{
:password => 'admin'
}
end
it { is_expected.to contain_file('/root/openrc').with(
:ensure => 'file',
:owner => 'root',
:group => 'root',
:mode => '0700',
:show_diff => false,
:tag => ['openrc'],
:content => <<EOS
#!/bin/sh
export OS_NO_CACHE='true'
export OS_PROJECT_NAME='openstack'
export OS_USERNAME='admin'
export OS_PASSWORD='admin'
export OS_AUTH_URL='http://127.0.0.1:5000/v3/'
export OS_AUTH_STRATEGY='keystone'
export OS_REGION_NAME='RegionOne'
export OS_PROJECT_DOMAIN_NAME='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_INTERFACE='public'
export OS_ENDPOINT_TYPE='publicURL'
export CINDER_ENDPOINT_TYPE='publicURL'
export GLANCE_ENDPOINT_TYPE='publicURL'
export KEYSTONE_ENDPOINT_TYPE='publicURL'
export NOVA_ENDPOINT_TYPE='publicURL'
export NEUTRON_ENDPOINT_TYPE='publicURL'
export OS_IDENTITY_API_VERSION='3'
EOS
)}
end
context 'when overriding parameters' do
let :params do
{
:password => 'admin',
:auth_url => 'http://127.0.0.2:5000/v3/',
:service_token => 'servicetoken',
:service_endpoint => 'http://127.0.0.2:5000/v3/',
:username => 'myuser',
:project_name => 'myproject',
:region_name => 'myregion',
:use_no_cache => false,
:os_interface => 'internal',
:os_endpoint_type => 'internalURL',
:cinder_endpoint_type => 'internalURL',
:glance_endpoint_type => 'internalURL',
:keystone_endpoint_type => 'internalURL',
:nova_endpoint_type => 'internalURL',
:neutron_endpoint_type => 'internalURL',
:auth_strategy => 'no_auth',
:path => '/path/to/file',
:user_domain_name => 'anotherdomain',
:project_domain_name => 'anotherdomain',
:compute_api_version => '2.1',
:network_api_version => '2.0',
:image_api_version => '2',
:volume_api_version => '2',
:identity_api_version => '3.1',
:object_api_version => '1',
}
end
it { is_expected.to contain_file('/path/to/file').with(
:ensure => 'file',
:owner => 'root',
:group => 'root',
:mode => '0700',
:show_diff => false,
:tag => ['openrc'],
:content => <<EOS
#!/bin/sh
export OS_SERVICE_TOKEN='servicetoken'
export OS_SERVICE_ENDPOINT='http://127.0.0.2:5000/v3/'
export OS_NO_CACHE='false'
export OS_PROJECT_NAME='myproject'
export OS_USERNAME='myuser'
export OS_PASSWORD='admin'
export OS_AUTH_URL='http://127.0.0.2:5000/v3/'
export OS_AUTH_STRATEGY='no_auth'
export OS_REGION_NAME='myregion'
export OS_PROJECT_DOMAIN_NAME='anotherdomain'
export OS_USER_DOMAIN_NAME='anotherdomain'
export OS_INTERFACE='internal'
export OS_ENDPOINT_TYPE='internalURL'
export CINDER_ENDPOINT_TYPE='internalURL'
export GLANCE_ENDPOINT_TYPE='internalURL'
export KEYSTONE_ENDPOINT_TYPE='internalURL'
export NOVA_ENDPOINT_TYPE='internalURL'
export NEUTRON_ENDPOINT_TYPE='internalURL'
export OS_COMPUTE_API_VERSION='2.1'
export OS_NETWORK_API_VERSION='2.0'
export OS_IMAGE_API_VERSION='2'
export OS_VOLUME_API_VERSION='2'
export OS_IDENTITY_API_VERSION='3.1'
export OS_OBJECT_API_VERSION='1'
EOS
)}
end
context 'handle password and token with single quotes' do
let :params do
{
:password => 'singlequote\'',
:service_token => 'key\'stone'
}
end
it { is_expected.to contain_file('/root/openrc').with(
:ensure => 'file',
:owner => 'root',
:group => 'root',
:mode => '0700',
:show_diff => false,
:tag => ['openrc'],
:content => <<EOS
#!/bin/sh
export OS_SERVICE_TOKEN='key\\'stone'
export OS_SERVICE_ENDPOINT='http://127.0.0.1:5000/v3/'
export OS_NO_CACHE='true'
export OS_PROJECT_NAME='openstack'
export OS_USERNAME='admin'
export OS_PASSWORD='singlequote\\''
export OS_AUTH_URL='http://127.0.0.1:5000/v3/'
export OS_AUTH_STRATEGY='keystone'
export OS_REGION_NAME='RegionOne'
export OS_PROJECT_DOMAIN_NAME='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_INTERFACE='public'
export OS_ENDPOINT_TYPE='publicURL'
export CINDER_ENDPOINT_TYPE='publicURL'
export GLANCE_ENDPOINT_TYPE='publicURL'
export KEYSTONE_ENDPOINT_TYPE='publicURL'
export NOVA_ENDPOINT_TYPE='publicURL'
export NEUTRON_ENDPOINT_TYPE='publicURL'
export OS_IDENTITY_API_VERSION='3'
EOS
)}
end
context 'when the file is in /tmp' do
let :params do
{
:password => 'secret',
:path => '/tmp/openrc'
}
end
it { should contain_file('/tmp/openrc')}
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_behaves_like 'openstack_extras::auth_file'
end
end
end