From d1c1dc5b99e91086a31e2a24d18cb15b5cb83c95 Mon Sep 17 00:00:00 2001 From: Harald Jensas Date: Wed, 11 Jan 2017 15:48:41 +0100 Subject: [PATCH] Federation mellon - spec test wrong filename + typos Closes-Bug: #1655665 Change-Id: I4e35bab25e9fd09a41f032b57514f2436b54d390 --- spec/classes/keystone_federation_mellon.rb | 116 ------------------ .../keystone_federation_mellon_spec.rb | 115 +++++++++++++++++ 2 files changed, 115 insertions(+), 116 deletions(-) delete mode 100644 spec/classes/keystone_federation_mellon.rb create mode 100644 spec/classes/keystone_federation_mellon_spec.rb diff --git a/spec/classes/keystone_federation_mellon.rb b/spec/classes/keystone_federation_mellon.rb deleted file mode 100644 index a0b9e5305..000000000 --- a/spec/classes/keystone_federation_mellon.rb +++ /dev/null @@ -1,116 +0,0 @@ -require 'spec_helper' - -describe 'keystone::federation::mellon' do - - describe 'with invalid params' do - before do - params.merge!(:methods => 'external, password, token, oauth1') - end - - it_raises 'a Puppet::Error', /The external method should be dropped to avoid any interference with some Apache + Mellon SP setups, where a REMOTE_USER env variable is always set, even as an empty value./ - - before do - params.merge!(:methods => 'password, token, oauth1') - end - - it_raises 'a Puppet::Error', /Methods should contain saml2 as one of the auth methods./ - - before do - params.merge!(:methods => 'password, token, oauth1, saml2', - :module_plugin => 'keystone.auth.plugins') - end - - it_raises 'a Puppet:Error', /The plugin for saml and mellon should be keystone.auth.plugins.mapped.Mapped/ - - before do - params.merge!(:admin_port => false, - :main_port => false) - end - - it_raises 'a Puppet:Error', /No VirtualHost port to configure, please choose at least one./ - - befode do - params.merge!(:template_port => 330) - end - - it_raises 'a Puppet:Error', /The template order should be greater than 330 and less than 999./ - - befode do - params.merge!(:template_port => 999) - end - - it_raises 'a Puppet:Error', /The template order should be greater than 330 and less than 999./ - end - - context 'on a RedHat osfamily' do - let :facts do - { :osfamily => 'RedHat', - :operatingsystemrelease => '7.0', - :concat_basedir => '/var/lib/puppet/concat' } - end - - context 'with only required parameters' do - let :params do - { :methods => 'password, token, saml2' } - end - - it 'should have basic params for mellon in Keystone configuration' do - is_expected.to contain_keystone_config('auth/methods').with_value('password, token, saml2') - is_expected.to contain_keystone_config('auth/saml2').with_value('keystone.auth.plugins.mapped.Mapped') - end - end - - it { is_expected.to contain_package('mod_auth_mellon') } - - end - - context 'on a Debian osfamily' do - let :facts do - { :osfamily => 'Debian', - :operatingsystemrelease => '7.8', - :concat_basedir => '/var/lib/puppet/concat' } - end - - context 'with only required parameters' do - let :params do - { :methods => 'password, token, saml2' } - end - - it 'should have basic params for mellon in Keystone configuration' do - is_expected.to contain_keystone_config('auth/methods').with_value('password, token, saml2') - is_expected.to contain_keystone_config('auth/saml2').with_value('keystone.auth.plugins.mapped.Mapped') - end - - it { is_expected.to contain_concat__fragment('configure_mellon_on_port_5000').with({ - :target => "${keystone::wsgi::apache::priority}-keystone_wsgi_main.conf", - :order => params[:template_order], - })} - end - - context 'with override default parameters' do - let :params do - { :methods => 'password, token, saml2', - :admin_port => true } - end - - it 'should have basic params for mellon in Keystone configuration' do - is_expected.to contain_keystone_config('auth/methods').with_value('password, token, saml2') - is_expected.to contain_keystone_config('auth/saml2').with_value('keystone.auth.plugins.mapped.Mapped') - end - - it { is_expected.to contain_concat__fragment('configure_mellon_on_port_5000').with({ - :target => "${keystone::wsgi::apache::priority}-keystone_wsgi_main.conf", - :order => params[:template_order], - })} - - it { is_expected.to contain_concat__fragment('configure_mellon_on_port_35357').with({ - :target => "${keystone::wsgi::apache::priority}-keystone_wsgi_admin.conf", - :order => params[:template_order], - })} - end - - it { is_expected.to contain_package('libapache2-mod-auth-mellon') } - - end - -end diff --git a/spec/classes/keystone_federation_mellon_spec.rb b/spec/classes/keystone_federation_mellon_spec.rb new file mode 100644 index 000000000..05802552c --- /dev/null +++ b/spec/classes/keystone_federation_mellon_spec.rb @@ -0,0 +1,115 @@ +require 'spec_helper' + +describe 'keystone::federation::mellon' do + + let(:pre_condition) do + <<-EOS + include apache + + class { 'keystone::wsgi::apache': } + EOS + end + + let :params do + { :methods => 'password, token, saml2', + :idp_name => 'myidp', + :protocol_name => 'saml2', + :template_order => 331, + } + end + + context 'with invalid params' do + before do + params.merge!({:methods => 'external, password, token, oauth1'}) + it_raises 'a Puppet::Error', /The external method should be dropped to avoid any interference with some Apache + Mellon SP setups, where a REMOTE_USER env variable is always set, even as an empty value./ + end + + before do + params.merge!({:methods => 'password, token, oauth1'}) + it_raises 'a Puppet::Error', /Methods should contain saml2 as one of the auth methods./ + end + + before do + params.merge!({:methods => 'password, token, oauth1, saml2', + :module_plugin => 'keystone.auth.plugins'}) + it_raises 'a Puppet::Error', /The plugin for saml and mellon should be keystone.auth.plugins.mapped.Mapped/ + end + + before do + params.merge!({:admin_port => false, + :main_port => false}) + it_raises 'a Puppet::Error', /No VirtualHost port to configure, please choose at least one./ + end + + before do + params.merge!({:template_port => 330}) + it_raises 'a Puppet::Error', /The template order should be greater than 330 and less than 999./ + end + + before do + params.merge!({:template_port => 999}) + it_raises 'a Puppet::Error', /The template order should be greater than 330 and less than 999./ + end + end + + shared_examples 'Federation Mellon' do + context 'with only required parameters' do + it 'should have basic params for mellon in Keystone configuration' do + is_expected.to contain_keystone_config('auth/methods').with_value('password, token, saml2') + is_expected.to contain_keystone_config('auth/saml2').with_value('keystone.auth.plugins.mapped.Mapped') + end + + it { is_expected.to contain_concat__fragment('configure_mellon_on_port_5000').with({ + # This need to change if priority is changed in keystone::wsgi::apache + :target => "10-keystone_wsgi_main.conf", + :order => params[:template_order], + })} + end + + context 'with override default parameters' do + before do + params.merge!({ + :admin_port => true }) + end + + it 'should have basic params for mellon in Keystone configuration' do + is_expected.to contain_keystone_config('auth/methods').with_value('password, token, saml2') + is_expected.to contain_keystone_config('auth/saml2').with_value('keystone.auth.plugins.mapped.Mapped') + end + + it { is_expected.to contain_concat__fragment('configure_mellon_on_port_5000').with({ + # This need to change if priority is changed in keystone::wsgi::apache + :target => "10-keystone_wsgi_main.conf", + :order => params[:template_order], + })} + + it { is_expected.to contain_concat__fragment('configure_mellon_on_port_35357').with({ + # This need to change if priority is changed in keystone::wsgi::apache + :target => "10-keystone_wsgi_admin.conf", + :order => params[:template_order], + })} + 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({ + :concat_basedir => '/var/lib/puppet/concat' + })) + end + + it_behaves_like 'Federation Mellon' + + case [:osfamily] + when 'Debian' + it { is_expected.to contain_package('libapache2-mod-auth-mellon') } + when 'RedHat' + it { is_expected.to contain_package('mod_auth_mellon') } + end + end + end +end +