diff --git a/spec/classes/keystone_db_spec.rb b/spec/classes/keystone_db_spec.rb index 7e46064bb..b018d97d2 100644 --- a/spec/classes/keystone_db_spec.rb +++ b/spec/classes/keystone_db_spec.rb @@ -1,12 +1,11 @@ require 'spec_helper' describe 'keystone::db' do - shared_examples 'keystone::db' do - context 'with default parameters' do + it { should contain_class('keystone::deps') } - it { is_expected.to contain_oslo__db('keystone_config').with( + it { should contain_oslo__db('keystone_config').with( :db_max_retries => '', :connection => 'sqlite:////var/lib/keystone/keystone.sqlite', :idle_timeout => '', @@ -17,12 +16,12 @@ describe 'keystone::db' do :max_overflow => '', :pool_timeout => '', )} - end context 'with specific parameters' do let :params do - { :database_db_max_retries => '-1', + { + :database_db_max_retries => '-1', :database_connection => 'mysql+pymysql://keystone:keystone@localhost/keystone', :database_idle_timeout => '3601', :database_min_pool_size => '2', @@ -30,10 +29,13 @@ describe 'keystone::db' do :database_max_retries => '11', :database_max_overflow => '21', :database_pool_timeout => '21', - :database_retry_interval => '11', } + :database_retry_interval => '11', + } end - it { is_expected.to contain_oslo__db('keystone_config').with( + it { should contain_class('keystone::deps') } + + it { should contain_oslo__db('keystone_config').with( :db_max_retries => '-1', :connection => 'mysql+pymysql://keystone:keystone@localhost/keystone', :idle_timeout => '3601', @@ -45,83 +47,17 @@ describe 'keystone::db' do :pool_timeout => '21', )} end - - context 'with MySQL-python library as backend package' do - let :params do - { :database_connection => 'mysql://keystone:keystone@localhost/keystone' } - end - - it { is_expected.to contain_package('python-mysqldb').with(:ensure => 'present') } - end - - context 'with postgresql backend' do - let :params do - { :database_connection => 'postgresql://keystone:keystone@localhost/keystone', } - end - - it 'install the proper backend package' do - is_expected.to contain_package('python-psycopg2').with(:ensure => 'present') - end - - end - - context 'with incorrect database_connection string' do - let :params do - { :database_connection => 'redis://keystone:keystone@localhost/keystone', } - end - - it_raises 'a Puppet::Error', /validate_re/ - end - - context 'with incorrect pymysql database_connection string' do - let :params do - { :database_connection => 'foo+pymysql://keystone:keystone@localhost/keystone', } - end - - it_raises 'a Puppet::Error', /validate_re/ - end - end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => 'jessie', - }) - end - - it_configures 'keystone::db' - - context 'using pymysql driver' do - let :params do - { :database_connection => 'mysql+pymysql://keystone:keystone@localhost/keystone', } + 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 'install the proper backend package' do - is_expected.to contain_package('python-pymysql').with( - :ensure => 'present', - :name => 'python-pymysql', - :tag => ['openstack'] - ) - end + it_behaves_like 'keystone::db' end end - - context 'on Redhat platforms' do - let :facts do - @default_facts.merge({ :osfamily => 'RedHat', - :operatingsystemrelease => '7.1', - }) - end - - it_configures 'keystone::db' - - context 'using pymysql driver' do - let :params do - { :database_connection => 'mysql+pymysql://keystone:keystone@localhost/keystone', } - end - end - end - end