require 'spec_helper' describe 'swift::keystone::auth' do let :params do { } end let :default_params do { :auth_name => 'swift', :password => 'swift_password', :port => '8080', :tenant => 'services', :email => 'swift@localhost', :region => 'RegionOne', :operator_roles => ['admin', 'SwiftOperator'], :public_protocol => 'http', :public_address => '127.0.0.1', :admin_protocol => 'http', :admin_address => '127.0.0.1', :internal_protocol => 'http', :internal_address => '127.0.0.1', } end shared_examples_for 'swift keystone auth' do context 'with default class parameters' do it_configures 'keystone auth configuration' ['admin', 'SwiftOperator'].each do |role_name| it { should contain_keystone_role(role_name).with_ensure('present') } end end context 'with custom class parameters' do before do params.merge!({ :auth_name => 'object_store', :password => 'passw0rd', :port => '443', :tenant => 'admin', :email => 'object_store@localhost', :region => 'RegionTwo', :operator_roles => ['admin', 'SwiftOperator', 'Gopher'], :public_protocol => 'https', :public_address => 'public.example.org', :public_port => '443', :admin_protocol => 'https', :admin_address => 'admin.example.org', :internal_protocol => 'https', :internal_address => 'internal.example.org', }) end it_configures 'keystone auth configuration' ['admin', 'SwiftOperator', 'Gopher'].each do |role_name| it { should contain_keystone_role(role_name).with_ensure('present') } end end end shared_examples_for 'keystone auth configuration' do let :p do default_params.merge( params ) end it { should contain_keystone_user(p[:auth_name]).with( :ensure => 'present', :password => p[:password], :email => p[:email] )} it { should contain_keystone_user_role("#{p[:auth_name]}@#{p[:tenant]}").with( :ensure => 'present', :roles => 'admin', :require => "Keystone_user[#{p[:auth_name]}]" )} it { should contain_keystone_service(p[:auth_name]).with( :ensure => 'present', :type => 'object-store', :description => 'Openstack Object-Store Service' )} it { should contain_keystone_endpoint("#{p[:region]}/#{p[:auth_name]}").with( :ensure => 'present', :public_url => "#{p[:public_protocol]}://#{p[:public_address]}:#{p[:port]}/v1/AUTH_%(tenant_id)s", :admin_url => "#{p[:admin_protocol]}://#{p[:admin_address]}:#{p[:port]}/", :internal_url => "#{p[:internal_protocol]}://#{p[:internal_address]}:#{p[:port]}/v1/AUTH_%(tenant_id)s" )} it { should contain_keystone_service("#{p[:auth_name]}_s3").with( :ensure => 'present', :type => 's3', :description => 'Openstack S3 Service' )} it { should contain_keystone_endpoint("#{p[:region]}/#{p[:auth_name]}_s3").with( :ensure => 'present', :public_url => "#{p[:public_protocol]}://#{p[:public_address]}:#{p[:port]}", :admin_url => "#{p[:admin_protocol]}://#{p[:admin_address]}:#{p[:port]}", :internal_url => "#{p[:internal_protocol]}://#{p[:internal_address]}:#{p[:port]}" )} end context 'on Debian platforms' do let :facts do { :osfamily => 'Debian' } end it_configures 'swift keystone auth' end context 'on RedHat platforms' do let :facts do { :osfamily => 'RedHat' } end it_configures 'swift keystone auth' end end