From c944e9061718be94cc15a7a2e90423f149566123 Mon Sep 17 00:00:00 2001 From: Tobias Urdin Date: Sat, 24 Nov 2018 15:16:05 +0100 Subject: [PATCH] Convert to rspec-puppet-facts Change-Id: Id3748b79510756ff32d6523bd7e7727175c94542 --- spec/classes/mistral_api_spec.rb | 72 ++--- spec/classes/mistral_config_spec.rb | 37 ++- spec/classes/mistral_db_mysql_spec.rb | 82 +++-- spec/classes/mistral_db_spec.rb | 112 ++----- spec/classes/mistral_deps_spec.rb | 35 ++- spec/classes/mistral_engine_spec.rb | 71 ++--- spec/classes/mistral_executor_spec.rb | 64 ++-- spec/classes/mistral_init_spec.rb | 340 +++++++++++---------- spec/classes/mistral_keystone_auth_spec.rb | 151 ++++----- 9 files changed, 448 insertions(+), 516 deletions(-) diff --git a/spec/classes/mistral_api_spec.rb b/spec/classes/mistral_api_spec.rb index bc017dd..08f4e84 100644 --- a/spec/classes/mistral_api_spec.rb +++ b/spec/classes/mistral_api_spec.rb @@ -1,27 +1,26 @@ require 'spec_helper' describe 'mistral::api' do - let :params do - { :api_workers => '1', + { + :api_workers => '1', :enabled => true, :manage_service => true, :bind_host => '127.0.0.1', :bind_port => '1234', :enable_proxy_headers_parsing => false, - :allow_action_execution_deletion => false} + :allow_action_execution_deletion => false + } end let :pre_condition do "class { '::mistral::keystone::authtoken': - password => 'foo', + password => 'foo', }" end - shared_examples_for 'mistral-api' do - + shared_examples 'mistral::api' do context 'config params' do - it { is_expected.to contain_class('mistral::params') } it { is_expected.to contain_class('mistral::policy') } it { is_expected.to contain_class('mistral::keystone::authtoken') } @@ -43,7 +42,6 @@ describe 'mistral::api' do end it 'configures mistral-api service' do - is_expected.to contain_service('mistral-api').with( :ensure => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped', :name => platform_params[:api_service_name], @@ -75,7 +73,6 @@ describe 'mistral::api' do end it 'configures mistral-api service' do - is_expected.to contain_service('mistral-api').with( :ensure => nil, :name => platform_params[:api_service_name], @@ -117,46 +114,31 @@ describe 'mistral::api' do params.merge!({ :service_name => 'foobar' }) end - it_raises 'a Puppet::Error', /Invalid service_name/ + it { should raise_error(Puppet::Error, /Invalid service_name/) } end end - context 'on Debian platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => '8.0', - :concat_basedir => '/var/lib/puppet/concat', - :fqdn => 'some.host.tld', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, - }) - 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({ + :concat_basedir => '/var/lib/puppet/concat', + :fqdn => 'some.host.tld', + })) + end - let :platform_params do - { :api_service_name => 'mistral-api' } - end + let (:platform_params) do + case facts[:osfamily] + when 'Debian' + { :api_service_name => 'mistral-api' } + when 'RedHat' + { :api_service_name => 'openstack-mistral-api' } + end + end - it_configures 'mistral-api' + it_behaves_like 'mistral::api' + end end - - context 'on RedHat platforms' do - let :facts do - @default_facts.merge({ - :osfamily => 'RedHat', - :operatingsystem => 'RedHat', - :operatingsystemrelease => '7.1', - :fqdn => 'some.host.tld', - :concat_basedir => '/var/lib/puppet/concat', - :os => { :name => 'RedHat', :family => 'RedHat', :release => { :major => '7', :minor => '1' } }, - }) - end - - let :platform_params do - { :api_service_name => 'openstack-mistral-api' } - end - - it_configures 'mistral-api' - end - end diff --git a/spec/classes/mistral_config_spec.rb b/spec/classes/mistral_config_spec.rb index 38f94bb..26a7d66 100644 --- a/spec/classes/mistral_config_spec.rb +++ b/spec/classes/mistral_config_spec.rb @@ -1,22 +1,35 @@ require 'spec_helper' describe 'mistral::config' do + shared_examples 'mistral::config' do + let :params do + { + :mistral_config => { + 'DEFAULT/foo' => { 'value' => 'fooValue' }, + 'DEFAULT/bar' => { 'value' => 'barValue' }, + 'DEFAULT/baz' => { 'ensure' => 'absent' } + } + } + end - let :params do - { :mistral_config => { - 'DEFAULT/foo' => { 'value' => 'fooValue' }, - 'DEFAULT/bar' => { 'value' => 'barValue' }, - 'DEFAULT/baz' => { 'ensure' => 'absent' } - } + it { should contain_class('mistral::deps') } + + it { + should contain_mistral_config('DEFAULT/foo').with_value('fooValue') + should contain_mistral_config('DEFAULT/bar').with_value('barValue') + should contain_mistral_config('DEFAULT/baz').with_ensure('absent') } end - it { is_expected.to contain_class('mistral::deps') } + 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 'configures arbitrary mistral configurations' do - is_expected.to contain_mistral_config('DEFAULT/foo').with_value('fooValue') - is_expected.to contain_mistral_config('DEFAULT/bar').with_value('barValue') - is_expected.to contain_mistral_config('DEFAULT/baz').with_ensure('absent') + it_behaves_like 'mistral::config' + end end - end diff --git a/spec/classes/mistral_db_mysql_spec.rb b/spec/classes/mistral_db_mysql_spec.rb index 33de6a8..2913e7f 100644 --- a/spec/classes/mistral_db_mysql_spec.rb +++ b/spec/classes/mistral_db_mysql_spec.rb @@ -1,64 +1,58 @@ require 'spec_helper' describe 'mistral::db::mysql' do - let :pre_condition do - [ - 'include mysql::server', - ] - end - - let :facts do - OSDefaults.get_facts({ - :osfamily => 'Debian', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, - }) + "include mysql::server" end let :params do { - 'password' => 'fooboozoo_default_password', + :password => 'fooboozoo_default_password', } end - describe 'with only required params' do - it { is_expected.to contain_openstacklib__db__mysql('mistral').with( - 'user' => 'mistral', - 'password_hash' => '*3DDF34A86854A312A8E2C65B506E21C91800D206', - 'dbname' => 'mistral', - 'host' => '127.0.0.1', - 'charset' => 'utf8', - :collate => 'utf8_general_ci', - )} - end - - describe "overriding allowed_hosts param to array" do - let :params do - { - :password => 'mistralpass', - :allowed_hosts => ['127.0.0.1','%'] - } + shared_examples 'mistral::db::mysql' do + context 'with only required params' do + it { should contain_openstacklib__db__mysql('mistral').with( + :user => 'mistral', + :password_hash => '*3DDF34A86854A312A8E2C65B506E21C91800D206', + :dbname => 'mistral', + :host => '127.0.0.1', + :charset => 'utf8', + :collate => 'utf8_general_ci', + )} end - end - describe "overriding allowed_hosts param to string" do - let :params do - { - :password => 'mistralpass2', - :allowed_hosts => '192.168.1.1' - } + context 'overriding allowed_hosts param to array' do + before do + params.merge!( :allowed_hosts => ['127.0.01', '%'] ) + end + + it { should contain_openstacklib__db__mysql('mistral').with( + :allowed_hosts => params[:allowed_hosts], + )} end - end + context 'overriding allowed_hosts param to string' do + before do + params.merge!( :allowed_hosts => '192.168.1.1' ) + end - describe "overriding allowed_hosts param equals to host param " do - let :params do - { - :password => 'mistralpass2', - :allowed_hosts => '127.0.0.1' - } + it { should contain_openstacklib__db__mysql('mistral').with( + :allowed_hosts => params[:allowed_hosts], + )} 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 'mistral::db::mysql' + end + end end diff --git a/spec/classes/mistral_db_spec.rb b/spec/classes/mistral_db_spec.rb index 2a5b011..25e3644 100644 --- a/spec/classes/mistral_db_spec.rb +++ b/spec/classes/mistral_db_spec.rb @@ -1,12 +1,9 @@ require 'spec_helper' describe 'mistral::db' do - shared_examples 'mistral::db' do - context 'with default parameters' do - - it { is_expected.to contain_oslo__db('mistral_config').with( + it { should contain_oslo__db('mistral_config').with( :db_max_retries => '', :connection => 'sqlite:////var/lib/mistral/mistral.sqlite', :idle_timeout => '', @@ -17,12 +14,12 @@ describe 'mistral::db' do :max_overflow => '', :pool_timeout => '', )} - end context 'with specific parameters' do let :params do - { :database_connection => 'mysql+pymysql://mistral:mistral@localhost/mistral', + { + :database_connection => 'mysql+pymysql://mistral:mistral@localhost/mistral', :database_idle_timeout => '3601', :database_min_pool_size => '2', :database_max_pool_size => '11', @@ -34,7 +31,7 @@ describe 'mistral::db' do } end - it { is_expected.to contain_oslo__db('mistral_config').with( + it { should contain_oslo__db('mistral_config').with( :db_max_retries => '-1', :connection => 'mysql+pymysql://mistral:mistral@localhost/mistral', :idle_timeout => '3601', @@ -49,101 +46,54 @@ describe 'mistral::db' do context 'with postgresql backend' do let :params do - { :database_connection => 'postgresql://mistral:mistral@localhost/mistral', } - end - - it 'install the proper backend package' do - is_expected.to contain_package('python-psycopg2').with(:ensure => 'present') + { + :database_connection => 'postgresql://mistral:mistral@localhost/mistral' + } end + it { should contain_package('python-psycopg2').with_ensure('present') } end context 'with MySQL-python library as backend package' do let :params do - { :database_connection => 'mysql://mistral:mistral@localhost/mistral', } + { + :database_connection => 'mysql://mistral:mistral@localhost/mistral' + } end - it { is_expected.to contain_package('python-mysqldb').with(:ensure => 'present') } + it { should contain_package('python-mysqldb').with_ensure('present') } end context 'with incorrect database_connection string' do let :params do - { :database_connection => 'redis://mistral:mistral@localhost/mistral', } + { + :database_connection => 'redis://mistral:mistral@localhost/mistral' + } end - it_raises 'a Puppet::Error', /validate_re/ + it { should raise_error(Puppet::Error, /validate_re/) } end context 'with incorrect pymysql database_connection string' do let :params do - { :database_connection => 'foo+pymysql://mistral:mistral@localhost/mistral', } - end - - it_raises 'a Puppet::Error', /validate_re/ - end - - end - - context 'on Debian platforms' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => 'jessie', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, - }) - end - - it_configures 'mistral::db' - - context 'using pymysql driver' do - let :params do - { :database_connection => 'mysql+pymysql://mistral:mistral@localhost/mistral', } - end - - it 'install the proper backend package' do - is_expected.to contain_package('python-pymysql').with( - :ensure => 'present', - :name => 'python-pymysql', - :tag => ['openstack'], - ) - end - end - - - context 'with sqlite backend' do - let :params do - { :database_connection => 'sqlite:///var/lib/mistral/mistral.sqlite', } - end - - it 'install the proper backend package' do - is_expected.to contain_package('python-pysqlite2').with( - :ensure => 'present', - :name => 'python-pysqlite2', - :tag => ['openstack'], - ) - end - end - - end - - context 'on Redhat platforms' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'RedHat', - :operatingsystemrelease => '7.1', - :os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '1' } }, - }) - end - - it_configures 'mistral::db' - - context 'using pymysql driver' do - let :params do - { :database_connection => 'mysql+pymysql://mistral:mistral@localhost/mistral', } + { + :database_connection => 'foo+pymysql://mistral:mistral@localhost/mistral' + } end + it { should raise_error(Puppet::Error, /validate_re/) } 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 'mistral::db' + end + end end diff --git a/spec/classes/mistral_deps_spec.rb b/spec/classes/mistral_deps_spec.rb index 6a41155..9bb2467 100644 --- a/spec/classes/mistral_deps_spec.rb +++ b/spec/classes/mistral_deps_spec.rb @@ -1,17 +1,30 @@ require 'spec_helper' describe 'mistral::deps' do + shared_examples 'mistral::deps' do + it { + should contain_anchor('mistral::install::begin') + should contain_anchor('mistral::install::end') + should contain_anchor('mistral::config::begin') + should contain_anchor('mistral::config::end') + should contain_anchor('mistral::db::begin') + should contain_anchor('mistral::db::end') + should contain_anchor('mistral::dbsync::begin') + should contain_anchor('mistral::dbsync::end') + should contain_anchor('mistral::service::begin') + should contain_anchor('mistral::service::end') + } + end - it 'set up the anchors' do - is_expected.to contain_anchor('mistral::install::begin') - is_expected.to contain_anchor('mistral::install::end') - is_expected.to contain_anchor('mistral::config::begin') - is_expected.to contain_anchor('mistral::config::end') - is_expected.to contain_anchor('mistral::db::begin') - is_expected.to contain_anchor('mistral::db::end') - is_expected.to contain_anchor('mistral::dbsync::begin') - is_expected.to contain_anchor('mistral::dbsync::end') - is_expected.to contain_anchor('mistral::service::begin') - is_expected.to contain_anchor('mistral::service::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 'mistral::deps' + end end end diff --git a/spec/classes/mistral_engine_spec.rb b/spec/classes/mistral_engine_spec.rb index c4b33d2..7d62118 100644 --- a/spec/classes/mistral_engine_spec.rb +++ b/spec/classes/mistral_engine_spec.rb @@ -1,22 +1,21 @@ require 'spec_helper' describe 'mistral::engine' do - let :params do - { :enabled => true, - :manage_service => true, - :host => 'foo_host', - :topic => 'foo_topic', - :version => '1.0', - :execution_field_size_limit_kb => '1234', - :evaluation_interval => 1234, - :older_than => 60} + { + :enabled => true, + :manage_service => true, + :host => 'foo_host', + :topic => 'foo_topic', + :version => '1.0', + :execution_field_size_limit_kb => '1234', + :evaluation_interval => 1234, + :older_than => 60 + } end - shared_examples_for 'mistral-engine' do - + shared_examples 'mistral::engine' do context 'config params' do - it { is_expected.to contain_class('mistral::params') } it { is_expected.to contain_mistral_config('engine/host').with_value( params[:host] ) } @@ -25,7 +24,6 @@ describe 'mistral::engine' do it { is_expected.to contain_mistral_config('engine/execution_field_size_limit_kb').with_value( params[:execution_field_size_limit_kb] ) } it { is_expected.to contain_mistral_config('execution_expiration_policy/evaluation_interval').with_value( params[:evaluation_interval] ) } it { is_expected.to contain_mistral_config('execution_expiration_policy/older_than').with_value( params[:older_than] ) } - end [{:enabled => true}, {:enabled => false}].each do |param_hash| @@ -35,7 +33,6 @@ describe 'mistral::engine' do end it 'configures mistral-engine service' do - is_expected.to contain_service('mistral-engine').with( :ensure => (params[:manage_service] && params[:enabled]) ? 'running' : 'stopped', :name => platform_params[:engine_service_name], @@ -57,7 +54,6 @@ describe 'mistral::engine' do end it 'configures mistral-engine service' do - is_expected.to contain_service('mistral-engine').with( :ensure => nil, :name => platform_params[:engine_service_name], @@ -69,37 +65,26 @@ describe 'mistral::engine' do is_expected.to contain_service('mistral-engine').that_subscribes_to(nil) end end - end - context 'on Debian platforms' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'Debian', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, - }) - 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 - let :platform_params do - { :engine_service_name => 'mistral-engine' } - end + let (:platform_params) do + case facts[:osfamily] + when 'Debian' + { :engine_service_name => 'mistral-engine' } + when 'RedHat' + { :engine_service_name => 'openstack-mistral-engine' } + end + end - it_configures 'mistral-engine' + it_behaves_like 'mistral::engine' + end end - - context 'on RedHat platforms' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'RedHat', - :os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, - }) - end - - let :platform_params do - { :engine_service_name => 'openstack-mistral-engine' } - end - - it_configures 'mistral-engine' - end - end diff --git a/spec/classes/mistral_executor_spec.rb b/spec/classes/mistral_executor_spec.rb index 1810c11..7c10bfb 100644 --- a/spec/classes/mistral_executor_spec.rb +++ b/spec/classes/mistral_executor_spec.rb @@ -1,25 +1,23 @@ require 'spec_helper' describe 'mistral::executor' do - let :params do - { :enabled => true, - :manage_service => true, - :host => true, - :topic => true, - :version => true} + { + :enabled => true, + :manage_service => true, + :host => true, + :topic => true, + :version => true + } end - shared_examples_for 'mistral-executor' do - + shared_examples 'mistral::executor' do context 'config params' do - it { is_expected.to contain_class('mistral::params') } it { is_expected.to contain_mistral_config('executor/host').with_value( params[:host] ) } it { is_expected.to contain_mistral_config('executor/topic').with_value( params[:topic] ) } it { is_expected.to contain_mistral_config('executor/version').with_value( params[:version] ) } - end [{:enabled => true}, {:enabled => false}].each do |param_hash| @@ -51,7 +49,6 @@ describe 'mistral::executor' do end it 'configures mistral-executor service' do - is_expected.to contain_service('mistral-executor').with( :ensure => nil, :name => platform_params[:executor_service_name], @@ -63,37 +60,26 @@ describe 'mistral::executor' do is_expected.to contain_service('mistral-executor').that_subscribes_to(nil) end end - end - context 'on Debian platforms' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'Debian', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, - }) - 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 - let :platform_params do - { :executor_service_name => 'mistral-executor' } - end + let (:platform_params) do + case facts[:osfamily] + when 'Debian' + { :executor_service_name => 'mistral-executor' } + when 'RedHat' + { :executor_service_name => 'openstack-mistral-executor' } + end + end - it_configures 'mistral-executor' + it_behaves_like 'mistral::executor' + end end - - context 'on RedHat platforms' do - let :facts do - OSDefaults.get_facts({ - :osfamily => 'Redhat', - :os => { :name => 'CentOS', :family => 'RedHat', :release => { :major => '7', :minor => '0' } }, - }) - end - - let :platform_params do - { :executor_service_name => 'openstack-mistral-executor' } - end - - it_configures 'mistral-executor' - end - end diff --git a/spec/classes/mistral_init_spec.rb b/spec/classes/mistral_init_spec.rb index 95e0fbd..bbb9ba4 100644 --- a/spec/classes/mistral_init_spec.rb +++ b/spec/classes/mistral_init_spec.rb @@ -1,4 +1,5 @@ require 'spec_helper' + describe 'mistral' do let :req_params do { @@ -7,217 +8,220 @@ describe 'mistral' do } end - let :facts do - OSDefaults.get_facts({ - :osfamily => 'Debian', - :operatingsystem => 'Debian', - :operatingsystemrelease => 'jessie', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, - }) - end - let :pre_condition do - "class { '::mistral::keystone::authtoken': - password => 'foo', - }" + "class { '::mistral::keystone::authtoken': + password => 'foo', + }" end - describe 'with only required params' do - let :params do - req_params + shared_examples 'mistral' do + context 'with only required params' do + let :params do + req_params + end + + it { should contain_class('mistral::logging') } + it { should contain_class('mistral::params') } + it { should contain_class('mysql::bindings::python') } + + it 'passes purge to resource' do + should contain_resources('mistral_config').with({ + :purge => false + }) + end + + it 'should contain default config' do + should contain_mistral_config('DEFAULT/control_exchange').with(:value => '') + should contain_mistral_config('DEFAULT/rpc_response_timeout').with(:value => '') + should contain_mistral_config('DEFAULT/report_interval').with(:value => '') + should contain_mistral_config('DEFAULT/service_down_time').with(:value => '') + should contain_mistral_config('DEFAULT/transport_url').with(:value => '') + should contain_mistral_config('oslo_messaging_notifications/transport_url').with(:value => '') + should contain_mistral_config('oslo_messaging_notifications/driver').with(:value => '') + should contain_mistral_config('oslo_messaging_notifications/topics').with(:value => '') + should contain_mistral_config('oslo_messaging_rabbit/rabbit_ha_queues').with(:value => '') + should contain_mistral_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('') + should contain_mistral_config('oslo_messaging_rabbit/heartbeat_rate').with_value('') + should contain_mistral_config('oslo_messaging_rabbit/kombu_reconnect_delay').with(:value => '') + should contain_mistral_config('oslo_messaging_rabbit/kombu_failover_strategy').with(:value => '') + should contain_mistral_config('coordination/backend_url').with(:value => '') + should contain_mistral_config('coordination/heartbeat_interval').with(:value => '') + should contain_mistral_config('keystone_authtoken/www_authenticate_uri').with( + :value => 'http://localhost:5000' + ) + should contain_mistral_config('keystone_authtoken/auth_url').with( + :value => 'http://localhost:5000' + ) + should contain_mistral_config('keystone_authtoken/project_name').with( + :value => 'services' + ) + should contain_mistral_config('keystone_authtoken/username').with( + :value => 'mistral' + ) + should contain_mistral_config('keystone_authtoken/password').with( + :value => 'foo' + ) + should contain_mistral_config('DEFAULT/os_actions_endpoint_type').with( + :value => '' + ) + end end - it { is_expected.to contain_class('mistral::logging') } - it { is_expected.to contain_class('mistral::params') } - it { is_expected.to contain_class('mysql::bindings::python') } + context 'with enable ha queues' do + let :params do + req_params.merge({'rabbit_ha_queues' => true}) + end - it 'passes purge to resource' do - is_expected.to contain_resources('mistral_config').with({ - :purge => false - }) + it 'should contain rabbit_ha_queues' do + should contain_mistral_config('oslo_messaging_rabbit/rabbit_ha_queues').with(:value => true) + end end - it 'should contain default config' do - is_expected.to contain_mistral_config('DEFAULT/control_exchange').with(:value => '') - is_expected.to contain_mistral_config('DEFAULT/rpc_response_timeout').with(:value => '') - is_expected.to contain_mistral_config('DEFAULT/report_interval').with(:value => '') - is_expected.to contain_mistral_config('DEFAULT/service_down_time').with(:value => '') - is_expected.to contain_mistral_config('DEFAULT/transport_url').with(:value => '') - is_expected.to contain_mistral_config('oslo_messaging_notifications/transport_url').with(:value => '') - is_expected.to contain_mistral_config('oslo_messaging_notifications/driver').with(:value => '') - is_expected.to contain_mistral_config('oslo_messaging_notifications/topics').with(:value => '') - is_expected.to contain_mistral_config('oslo_messaging_rabbit/rabbit_ha_queues').with(:value => '') - is_expected.to contain_mistral_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('') - is_expected.to contain_mistral_config('oslo_messaging_rabbit/heartbeat_rate').with_value('') - is_expected.to contain_mistral_config('oslo_messaging_rabbit/kombu_reconnect_delay').with(:value => '') - is_expected.to contain_mistral_config('oslo_messaging_rabbit/kombu_failover_strategy').with(:value => '') - is_expected.to contain_mistral_config('coordination/backend_url').with(:value => '') - is_expected.to contain_mistral_config('coordination/heartbeat_interval').with(:value => '') - is_expected.to contain_mistral_config('keystone_authtoken/www_authenticate_uri').with( - :value => 'http://localhost:5000' - ) - is_expected.to contain_mistral_config('keystone_authtoken/auth_url').with( - :value => 'http://localhost:5000' - ) - is_expected.to contain_mistral_config('keystone_authtoken/project_name').with( - :value => 'services' - ) - is_expected.to contain_mistral_config('keystone_authtoken/username').with( - :value => 'mistral' - ) - is_expected.to contain_mistral_config('keystone_authtoken/password').with( - :value => 'foo' - ) - is_expected.to contain_mistral_config('DEFAULT/os_actions_endpoint_type').with( - :value => '' - ) + context 'with rabbit default transport url configured' do + let :params do + req_params.merge({'default_transport_url' => 'rabbit://user:pass@host:1234/virt' }) + end + + it 'should contain transport_url' do + should contain_mistral_config('DEFAULT/transport_url').with(:value => 'rabbit://user:pass@host:1234/virt') + end end - end + context 'with rabbit notification transport url configured' do + let :params do + req_params.merge({ + :notification_transport_url => 'rabbit://user:pass@host:1234/virt', + :notification_topics => 'openstack', + :notification_driver => 'messagingv1', + }) + end - describe 'with enable ha queues' do - let :params do - req_params.merge({'rabbit_ha_queues' => true}) + it 'should contain transport_url' do + should contain_mistral_config('oslo_messaging_notifications/transport_url').with(:value => 'rabbit://user:pass@host:1234/virt') + should contain_mistral_config('oslo_messaging_notifications/driver').with(:value => 'messagingv1') + should contain_mistral_config('oslo_messaging_notifications/topics').with(:value => 'openstack') + end end - it 'should contain rabbit_ha_queues' do - is_expected.to contain_mistral_config('oslo_messaging_rabbit/rabbit_ha_queues').with(:value => true) - end - end + context 'with rabbitmq heartbeats' do + let :params do + req_params.merge({'rabbit_heartbeat_timeout_threshold' => '60', 'rabbit_heartbeat_rate' => '10'}) + end - describe 'with rabbit default transport url configured' do - let :params do - req_params.merge({'default_transport_url' => 'rabbit://user:pass@host:1234/virt' }) + it 'should contain heartbeat config' do + should contain_mistral_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60') + should contain_mistral_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10') + end end - it 'should contain transport_url' do - is_expected.to contain_mistral_config('DEFAULT/transport_url').with(:value => 'rabbit://user:pass@host:1234/virt') - end - end + context 'with SSL enabled with kombu' do + let :params do + req_params.merge!({ + :rabbit_use_ssl => true, + :kombu_ssl_ca_certs => '/path/to/ssl/ca/certs', + :kombu_ssl_certfile => '/path/to/ssl/cert/file', + :kombu_ssl_keyfile => '/path/to/ssl/keyfile', + :kombu_ssl_version => 'TLSv1' + }) + end - describe 'with rabbit notification transport url configured' do - let :params do - req_params.merge({ - :notification_transport_url => 'rabbit://user:pass@host:1234/virt', - :notification_topics => 'openstack', - :notification_driver => 'messagingv1', - }) - end - - it 'should contain transport_url' do - is_expected.to contain_mistral_config('oslo_messaging_notifications/transport_url').with(:value => 'rabbit://user:pass@host:1234/virt') - is_expected.to contain_mistral_config('oslo_messaging_notifications/driver').with(:value => 'messagingv1') - is_expected.to contain_mistral_config('oslo_messaging_notifications/topics').with(:value => 'openstack') - end - end - - describe 'with rabbitmq heartbeats' do - let :params do - req_params.merge({'rabbit_heartbeat_timeout_threshold' => '60', 'rabbit_heartbeat_rate' => '10'}) - end - - it 'should contain heartbeat config' do - is_expected.to contain_mistral_config('oslo_messaging_rabbit/heartbeat_timeout_threshold').with_value('60') - is_expected.to contain_mistral_config('oslo_messaging_rabbit/heartbeat_rate').with_value('10') - end - end - - describe 'with SSL enabled with kombu' do - let :params do - req_params.merge!({ + it { should contain_oslo__messaging__rabbit('mistral_config').with( :rabbit_use_ssl => true, :kombu_ssl_ca_certs => '/path/to/ssl/ca/certs', :kombu_ssl_certfile => '/path/to/ssl/cert/file', :kombu_ssl_keyfile => '/path/to/ssl/keyfile', :kombu_ssl_version => 'TLSv1' - }) + )} end - it { is_expected.to contain_oslo__messaging__rabbit('mistral_config').with( - :rabbit_use_ssl => true, - :kombu_ssl_ca_certs => '/path/to/ssl/ca/certs', - :kombu_ssl_certfile => '/path/to/ssl/cert/file', - :kombu_ssl_keyfile => '/path/to/ssl/keyfile', - :kombu_ssl_version => 'TLSv1' - )} - end + context 'with SSL enabled without kombu' do + let :params do + req_params.merge!({ + :rabbit_use_ssl => true, + }) + end - describe 'with SSL enabled without kombu' do - let :params do - req_params.merge!({ - :rabbit_use_ssl => true, - }) - end - - it { is_expected.to contain_oslo__messaging__rabbit('mistral_config').with( + it { should contain_oslo__messaging__rabbit('mistral_config').with( :rabbit_use_ssl => true, - )} - end - - describe 'with SSL disabled' do - let :params do - req_params.merge!({ - :rabbit_use_ssl => false, - }) + )} end - it { is_expected.to contain_oslo__messaging__rabbit('mistral_config').with( + context 'with SSL disabled' do + let :params do + req_params.merge!({ + :rabbit_use_ssl => false, + }) + end + + it { should contain_oslo__messaging__rabbit('mistral_config').with( :rabbit_use_ssl => false, - )} - end - - describe 'with amqp_durable_queues disabled' do - let :params do - req_params + )} end - it { is_expected.to contain_mistral_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('') } - end + context 'with amqp_durable_queues disabled' do + let :params do + req_params + end - describe 'with amqp_durable_queues enabled' do - let :params do - req_params.merge({ - :amqp_durable_queues => true, - }) + it { should contain_mistral_config('oslo_messaging_rabbit/amqp_durable_queues').with_value('') } end - it { is_expected.to contain_mistral_config('oslo_messaging_rabbit/amqp_durable_queues').with_value(true) } - end + context 'with amqp_durable_queues enabled' do + let :params do + req_params.merge({ + :amqp_durable_queues => true, + }) + end - describe 'with postgresql' do - let :params do - req_params.merge({ - :database_connection => 'postgresql://user:drowssap@host/database', - }) + it { should contain_mistral_config('oslo_messaging_rabbit/amqp_durable_queues').with_value(true) } end - it { is_expected.to_not contain_class('mysql::python') } - it { is_expected.to_not contain_class('mysql::bindings') } - it { is_expected.to_not contain_class('mysql::bindings::python') } - end + context 'with postgresql' do + let :params do + req_params.merge({ + :database_connection => 'postgresql://user:drowssap@host/database', + }) + end - describe 'with coordination' do - let :params do - req_params.merge({ - :coordination_backend_url => 'redis://127.0.0.1', - :coordination_heartbeat_interval => '10.0', - }) + it { should_not contain_class('mysql::python') } + it { should_not contain_class('mysql::bindings') } + it { should_not contain_class('mysql::bindings::python') } end - it 'should contain coordination config' do - is_expected.to contain_mistral_config('coordination/backend_url').with(:value => 'redis://127.0.0.1') - is_expected.to contain_mistral_config('coordination/heartbeat_interval').with(:value => '10.0') + context 'with coordination' do + let :params do + req_params.merge({ + :coordination_backend_url => 'redis://127.0.0.1', + :coordination_heartbeat_interval => '10.0', + }) + end + + it 'should contain coordination config' do + should contain_mistral_config('coordination/backend_url').with(:value => 'redis://127.0.0.1') + should contain_mistral_config('coordination/heartbeat_interval').with(:value => '10.0') + end + end + + context 'with os_actions_keystone_endpoint overridden' do + let :params do + req_params.merge({ + :os_actions_endpoint_type => 'internal', + }) + end + + it { should contain_mistral_config('DEFAULT/os_actions_endpoint_type').with_value('internal') } end end - describe 'with os_actions_keystone_endpoint overridden' do - let :params do - req_params.merge({ - :os_actions_endpoint_type => 'internal', - }) + 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 'mistral' end - - it { is_expected.to contain_mistral_config('DEFAULT/os_actions_endpoint_type').with_value('internal') } end - end diff --git a/spec/classes/mistral_keystone_auth_spec.rb b/spec/classes/mistral_keystone_auth_spec.rb index ed8eaf0..6d7086c 100644 --- a/spec/classes/mistral_keystone_auth_spec.rb +++ b/spec/classes/mistral_keystone_auth_spec.rb @@ -1,93 +1,98 @@ -# -# Unit tests for mistral::keystone::auth -# - require 'spec_helper' describe 'mistral::keystone::auth' do + shared_examples 'mistral::keystone::auth' do + context 'with default class parameters' do + let :params do + { + :password => 'mistral_password', + :tenant => 'services' + } + end - let :facts do - { :osfamily => 'Debian', - :os => { :name => 'Debian', :family => 'Debian', :release => { :major => '8', :minor => '0' } }, } - end + it { should contain_keystone_user('mistral').with( + :ensure => 'present', + :password => 'mistral_password', + )} - describe 'with default class parameters' do - let :params do - { :password => 'mistral_password', - :tenant => 'services' } + it { should contain_keystone_user_role('mistral@services').with( + :ensure => 'present', + :roles => ['admin'] + )} + + it { should contain_keystone_service('mistral::workflowv2').with( + :ensure => 'present', + :description => 'OpenStack Workflow Service' + )} + + it { should contain_keystone_endpoint('RegionOne/mistral::workflowv2').with( + :ensure => 'present', + :public_url => "http://127.0.0.1:8989/v2", + :admin_url => "http://127.0.0.1:8989/v2", + :internal_url => "http://127.0.0.1:8989/v2" + )} end - it { is_expected.to contain_keystone_user('mistral').with( - :ensure => 'present', - :password => 'mistral_password', - ) } + context 'when overriding auth and service name' do + let :params do + { + :service_name => 'mistraly', + :auth_name => 'mistraly', + :password => 'mistral_password' + } + end - it { is_expected.to contain_keystone_user_role('mistral@services').with( - :ensure => 'present', - :roles => ['admin'] - )} - - it { is_expected.to contain_keystone_service('mistral::workflowv2').with( - :ensure => 'present', - :description => 'OpenStack Workflow Service' - ) } - - it { is_expected.to contain_keystone_endpoint('RegionOne/mistral::workflowv2').with( - :ensure => 'present', - :public_url => "http://127.0.0.1:8989/v2", - :admin_url => "http://127.0.0.1:8989/v2", - :internal_url => "http://127.0.0.1:8989/v2" - ) } - end - - describe 'when overriding auth and service name' do - let :params do - { :service_name => 'mistraly', - :auth_name => 'mistraly', - :password => 'mistral_password' } + it { should contain_keystone_user('mistraly') } + it { should contain_keystone_user_role('mistraly@services') } + it { should contain_keystone_service('mistraly::workflowv2') } + it { should contain_keystone_endpoint('RegionOne/mistraly::workflowv2') } end - it { is_expected.to contain_keystone_user('mistraly') } - it { is_expected.to contain_keystone_user_role('mistraly@services') } - it { is_expected.to contain_keystone_service('mistraly::workflowv2') } - it { is_expected.to contain_keystone_endpoint('RegionOne/mistraly::workflowv2') } - end + context 'when disabling user configuration' do + let :params do + { + :password => 'mistral_password', + :configure_user => false + } + end - describe 'when disabling user configuration' do + it { should_not contain_keystone_user('mistral') } + it { should contain_keystone_user_role('mistral@services') } - let :params do - { - :password => 'mistral_password', - :configure_user => false - } + it { should contain_keystone_service('mistral::workflowv2').with( + :ensure => 'present', + :description => 'OpenStack Workflow Service' + )} end - it { is_expected.not_to contain_keystone_user('mistral') } - it { is_expected.to contain_keystone_user_role('mistral@services') } - it { is_expected.to contain_keystone_service('mistral::workflowv2').with( - :ensure => 'present', - :description => 'OpenStack Workflow Service' - ) } + context 'when disabling user and user role configuration' do + let :params do + { + :password => 'mistral_password', + :configure_user => false, + :configure_user_role => false + } + end - end + it { should_not contain_keystone_user('mistral') } + it { should_not contain_keystone_user_role('mistral@services') } - describe 'when disabling user and user role configuration' do - - let :params do - { - :password => 'mistral_password', - :configure_user => false, - :configure_user_role => false - } + it { should contain_keystone_service('mistral::workflowv2').with( + :ensure => 'present', + :description => 'OpenStack Workflow Service' + )} end - - it { is_expected.not_to contain_keystone_user('mistral') } - it { is_expected.not_to contain_keystone_user_role('mistral@services') } - it { is_expected.to contain_keystone_service('mistral::workflowv2').with( - :ensure => 'present', - :description => 'OpenStack Workflow Service' - ) } - 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 'mistral::keystone::auth' + end + end end