From ed337c9942affefbb621c70cc3141762471f6497 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Wed, 29 Sep 2021 00:25:50 +0900 Subject: [PATCH] Do not test detail of keystone::resource::service_identity ... but test interfaces of that resource type. This helps us avoid direct breakage caused by any change in puppet-keystone. Change-Id: If806a05db2ce8b3c059aeb6beb6096c34523d73f --- spec/classes/ec2api_keystone_auth_spec.rb | 156 ++++++++++------------ 1 file changed, 71 insertions(+), 85 deletions(-) diff --git a/spec/classes/ec2api_keystone_auth_spec.rb b/spec/classes/ec2api_keystone_auth_spec.rb index 3d773fa..373f809 100644 --- a/spec/classes/ec2api_keystone_auth_spec.rb +++ b/spec/classes/ec2api_keystone_auth_spec.rb @@ -1,94 +1,80 @@ +# +# Unit tests for ec2api::keystone::auth +# + require 'spec_helper' describe 'ec2api::keystone::auth' do - on_supported_os(supported_os: OSDefaults.get_supported_os).each do |os,facts| + shared_examples_for 'ec2api::keystone::auth' do + context 'with default class parameters' do + let :params do + { :password => 'ec2api_password' } + end + + it { is_expected.to contain_keystone__resource__service_identity('ec2api').with( + :configure_user => true, + :configure_user_role => true, + :configure_endpoint => true, + :service_name => 'ec2api', + :service_type => 'ec2api', + :service_description => 'The EC2 API Service', + :region => 'RegionOne', + :auth_name => 'ec2api', + :password => 'ec2api_password', + :email => 'ec2api@localhost', + :tenant => 'services', + :public_url => 'http://127.0.0.1:8788', + :internal_url => 'http://127.0.0.1:8788', + :admin_url => 'http://127.0.0.1:8788', + ) } + end + + context 'when overriding parameters' do + let :params do + { :password => 'ec2api_password', + :auth_name => 'alt_ec2api', + :email => 'alt_ec2api@alt_localhost', + :tenant => 'alt_service', + :configure_endpoint => false, + :configure_user => false, + :configure_user_role => false, + :service_description => 'Alternative The EC2 API Service', + :service_name => 'alt_service', + :service_type => 'alt_ec2api', + :region => 'RegionTwo', + :public_url => 'https://10.10.10.10:80', + :internal_url => 'http://10.10.10.11:81', + :admin_url => 'http://10.10.10.12:81' } + end + + it { is_expected.to contain_keystone__resource__service_identity('ec2api').with( + :configure_user => false, + :configure_user_role => false, + :configure_endpoint => false, + :service_name => 'alt_service', + :service_type => 'alt_ec2api', + :service_description => 'Alternative The EC2 API Service', + :region => 'RegionTwo', + :auth_name => 'alt_ec2api', + :password => 'ec2api_password', + :email => 'alt_ec2api@alt_localhost', + :tenant => 'alt_service', + :public_url => 'https://10.10.10.10:80', + :internal_url => 'http://10.10.10.11:81', + :admin_url => 'http://10.10.10.12:81', + ) } + end + end + + on_supported_os({ + :supported_os => OSDefaults.get_supported_os + }).each do |os,facts| context "on #{os}" do - - let(:facts) { facts } - - describe 'with default parameters' do - let(:params) do - { - password: 'my_password', - } - end - - it { is_expected.to compile.with_all_deps } - - it { is_expected.to contain_class('ec2api::keystone::auth') } - - it { is_expected.to contain_class('ec2api::params') } - - it { is_expected.to contain_class('ec2api::deps') } - - it do - parameters = { - :configure_user => true, - :configure_user_role => true, - :configure_endpoint => true, - :service_name => 'ec2api', - :service_type => 'ec2api', - :service_description => 'The EC2 API Service', - :region => 'RegionOne', - :auth_name => 'ec2api', - :password => 'my_password', - :email => 'ec2api@localhost', - :tenant => 'services', - :public_url => 'http://127.0.0.1:8788', - :internal_url => 'http://127.0.0.1:8788', - :admin_url => 'http://127.0.0.1:8788', - } - is_expected.to contain_keystone__resource__service_identity('ec2api').with(parameters) - end - end - - describe 'with custom parameters' do - let(:params) do - { - password: 'my_password', - auth_name: 'me', - email: 'me@localhost', - tenant: 'my_tenant', - configure_endpoint: false, - configure_user: false, - configure_user_role: false, - service_name: 'my_service', - service_description: 'The service', - service_type: 'my_type', - region: 'my_region', - public_url: 'http://192.168.0.1:8788', - internal_url: 'http://192.168.0.1:8788', - admin_url: 'http://192.168.0.1:8788', - } - end - - it { is_expected.to compile.with_all_deps } - - it { is_expected.to contain_class('ec2api::keystone::auth') } - - it { is_expected.to contain_class('ec2api::params') } - - it do - parameters = { - :configure_user => false, - :configure_user_role => false, - :configure_endpoint => false, - :service_name => 'my_service', - :service_type => 'my_type', - :service_description => 'The service', - :region => 'my_region', - :auth_name => 'me', - :password => 'my_password', - :email => 'me@localhost', - :tenant => 'my_tenant', - :public_url => 'http://192.168.0.1:8788', - :internal_url => 'http://192.168.0.1:8788', - :admin_url => 'http://192.168.0.1:8788', - } - is_expected.to contain_keystone__resource__service_identity('ec2api').with(parameters) - end + let (:facts) do + facts.merge!(OSDefaults.get_facts()) end + it_behaves_like 'ec2api::keystone::auth' end end end