From 7467b6aaa2bf6a89c4a8ff7b63badd18bef09728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20Gagne=CC=81?= Date: Mon, 29 Sep 2014 16:27:29 -0400 Subject: [PATCH] Greatly reduce code duplication in rspec tests of db::mysql Use shared examples to avoid duplicating tests for both platforms. Change-Id: I16a77a284070e243c2a46675af419e635a139969 --- spec/defines/openstacklib_db_mysql_spec.rb | 137 ++++----------------- 1 file changed, 21 insertions(+), 116 deletions(-) diff --git a/spec/defines/openstacklib_db_mysql_spec.rb b/spec/defines/openstacklib_db_mysql_spec.rb index cf3f6830..336b961b 100644 --- a/spec/defines/openstacklib_db_mysql_spec.rb +++ b/spec/defines/openstacklib_db_mysql_spec.rb @@ -6,17 +6,13 @@ describe 'openstacklib::db::mysql' do 'include mysql::server' end - password_hash = 'AA1420F182E88B9E5F874F6FBE7459291E8F4601' + let (:title) { 'nova' } + let :required_params do - { :password_hash => password_hash } + { :password_hash => 'AA1420F182E88B9E5F874F6FBE7459291E8F4601' } end - title = 'nova' - let (:title) { title } - context 'on a Debian osfamily' do - let :facts do - { :osfamily => "Debian" } - end + shared_examples 'openstacklib::db::mysql examples' do context 'with only required parameters' do let :params do @@ -28,7 +24,7 @@ describe 'openstacklib::db::mysql' do :collate => 'utf8_unicode_ci' )} it { should contain_mysql_user("#{title}@127.0.0.1").with( - :password_hash => password_hash + :password_hash => params[:password_hash] )} it { should contain_mysql_grant("#{title}@127.0.0.1/#{title}.*").with( :user => "#{title}@127.0.0.1", @@ -84,45 +80,48 @@ describe 'openstacklib::db::mysql' do it {should contain_openstacklib__db__mysql__host_access("#{title}_127.0.0.1").with( :user => title, - :password_hash => password_hash, + :password_hash => params[:password_hash], :database => title )} it {should contain_openstacklib__db__mysql__host_access("#{title}_%").with( :user => title, - :password_hash => password_hash, + :password_hash => params[:password_hash], :database => title )} end context "overriding allowed_hosts param to string" do let :params do - { - :password_hash => password_hash, - :allowed_hosts => '192.168.1.1' - } + { :allowed_hosts => '192.168.1.1' }.merge(required_params) end it {should contain_openstacklib__db__mysql__host_access("#{title}_192.168.1.1").with( :user => title, - :password_hash => password_hash, + :password_hash => params[:password_hash], :database => title )} end context "overriding allowed_hosts param equals to host param " do let :params do - { - :password_hash => password_hash, - :allowed_hosts => '127.0.0.1' - } + { :allowed_hosts => '127.0.0.1' }.merge(required_params) end it {should contain_openstacklib__db__mysql__host_access("#{title}_127.0.0.1").with( :user => title, - :password_hash => password_hash, + :password_hash => params[:password_hash], :database => title )} end + + end + + context 'on a Debian osfamily' do + let :facts do + { :osfamily => "Debian" } + end + + include_examples 'openstacklib::db::mysql examples' end context 'on a RedHat osfamily' do @@ -130,100 +129,6 @@ describe 'openstacklib::db::mysql' do { :osfamily => 'RedHat' } end - context 'with only required parameters' do - let :params do - required_params - end - - it { should contain_mysql_database(title).with( - :charset => 'utf8', - :collate => 'utf8_unicode_ci' - )} - it { should contain_mysql_user("#{title}@127.0.0.1").with( - :password_hash => password_hash - )} - it { should contain_mysql_grant("#{title}@127.0.0.1/#{title}.*").with( - :user => "#{title}@127.0.0.1", - :privileges => 'ALL', - :table => "#{title}.*" - )} - end - - context 'when overriding charset' do - let :params do - { :charset => 'latin1' }.merge(required_params) - end - - it { should contain_mysql_database(title).with_charset(params[:charset]) } - end - - context 'when omitting the required parameter password' do - let :params do - required_params.delete(:password) - end - it { expect { should raise_error(Puppet::Error) } } - end - - context 'when notifying other resources' do - let(:pre_condition) { 'exec {"nova-db-sync":}' } - let(:params) { { :notify => 'Exec[nova-db-sync]'}.merge(required_params) } - - it { should contain_exec('nova-db-sync').that_subscribes_to("Openstacklib::Db::Mysql[#{title}]") } - end - - context 'when required for other openstack services' do - let(:pre_condition) { 'service {"keystone":}' } - let(:title) { 'keystone' } - let(:params) { { :before => 'Service[keystone]'}.merge(required_params) } - - it { should contain_service('keystone').that_requires("Openstacklib::Db::Mysql[keystone]") } - end - - context "overriding allowed_hosts param to array" do - let :params do - { :allowed_hosts => ['127.0.0.1','%'] }.merge(required_params) - end - - it {should contain_openstacklib__db__mysql__host_access("#{title}_127.0.0.1").with( - :user => title, - :password_hash => password_hash, - :database => title - )} - it {should contain_openstacklib__db__mysql__host_access("#{title}_%").with( - :user => title, - :password_hash => password_hash, - :database => title - )} - end - - context "overriding allowed_hosts param to string" do - let :params do - { - :password_hash => password_hash, - :allowed_hosts => '192.168.1.1' - } - end - - it {should contain_openstacklib__db__mysql__host_access("#{title}_192.168.1.1").with( - :user => title, - :password_hash => password_hash, - :database => title - )} - end - - context "overriding allowed_hosts param equals to host param " do - let :params do - { - :password_hash => password_hash, - :allowed_hosts => '127.0.0.1' - } - end - - it {should contain_openstacklib__db__mysql__host_access("#{title}_127.0.0.1").with( - :user => title, - :password_hash => password_hash, - :database => title - )} - end + include_examples 'openstacklib::db::mysql examples' end end