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( :owner => 'root', :group => 'root', :mode => '0700', :show_diff => false, :tag => ['openrc'], )} it { verify_contents(catalogue, '/root/openrc', [ '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\'', ]) } 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', :tenant_name => 'mytenant', :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( :owner => 'root', :group => 'root', :mode => '0700', :show_diff => false, :tag => ['openrc'], )} it { verify_contents(catalogue, '/path/to/file', [ 'export OS_SERVICE_TOKEN=\'servicetoken\'', 'export OS_SERVICE_ENDPOINT=\'http://127.0.0.2:5000/v3/\'', 'export OS_NO_CACHE=\'false\'', 'export OS_TENANT_NAME=\'mytenant\'', '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\'', ]) } end context 'handle password and token with single quotes' do let :params do { :password => 'singlequote\'', :service_token => 'key\'stone' } end it { verify_contents(catalogue, '/root/openrc', [ 'export OS_SERVICE_TOKEN=\'key\\\'stone\'', 'export OS_PASSWORD=\'singlequote\\\'\'', ]) } 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