From f00edeccacdd4b4f41733dcd7b24c290a06e7d4e Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Mon, 27 Sep 2021 12:18:22 +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: Ie30f15533229a22170b625094dfcca349f9d0b24 --- spec/classes/placement_keystone_auth_spec.rb | 165 ++++++------------- 1 file changed, 52 insertions(+), 113 deletions(-) diff --git a/spec/classes/placement_keystone_auth_spec.rb b/spec/classes/placement_keystone_auth_spec.rb index 7fbf9b0..eb26f33 100644 --- a/spec/classes/placement_keystone_auth_spec.rb +++ b/spec/classes/placement_keystone_auth_spec.rb @@ -1,129 +1,68 @@ +# +# Unit tests for placement::keystone::auth +# + require 'spec_helper' describe 'placement::keystone::auth' do - shared_examples 'placement::keystone::auth' do + shared_examples_for 'placement::keystone::auth' do context 'with default class parameters' do let :params do - { - :password => 'placement_password', - :tenant => 'foobar' - } + { :password => 'placement_password' } end - it { should contain_keystone_user('placement').with( - :ensure => 'present', - :password => 'placement_password', - )} - - it { should contain_keystone_user_role('placement@foobar').with( - :ensure => 'present', - :roles => ['admin'] - )} - - it { should contain_keystone_service('placement::placement').with( - :ensure => 'present', - :description => 'Placement Service' - )} - - it { should contain_keystone_endpoint('RegionOne/placement::placement').with( - :ensure => 'present', - :public_url => 'http://127.0.0.1/placement', - :admin_url => 'http://127.0.0.1/placement', - :internal_url => 'http://127.0.0.1/placement', - )} + it { is_expected.to contain_keystone__resource__service_identity('placement').with( + :configure_user => true, + :configure_user_role => true, + :configure_endpoint => true, + :service_name => 'placement', + :service_type => 'placement', + :service_description => 'Placement Service', + :region => 'RegionOne', + :auth_name => 'placement', + :password => 'placement_password', + :email => 'placement@localhost', + :tenant => 'services', + :public_url => 'http://127.0.0.1/placement', + :internal_url => 'http://127.0.0.1/placement', + :admin_url => 'http://127.0.0.1/placement', + ) } end - context 'when overriding URL parameters' do + context 'when overriding parameters' do let :params do - { - :password => 'placement_password', - :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 { should contain_keystone_endpoint('RegionOne/placement::placement').with( - :ensure => 'present', - :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 - - context 'when overriding auth name' do - let :params do - { - :password => 'foo', - :auth_name => 'placementy' - } - end - - it { should contain_keystone_user('placementy') } - it { should contain_keystone_user_role('placementy@services') } - it { should contain_keystone_service('placement::placement') } - it { should contain_keystone_endpoint('RegionOne/placement::placement') } - end - - context 'when overriding service name' do - let :params do - { - :service_name => 'placement_service', - :auth_name => 'placement', - :password => 'placement_password' - } - end - - it { should contain_keystone_user('placement') } - it { should contain_keystone_user_role('placement@services') } - it { should contain_keystone_service('placement_service::placement') } - it { should contain_keystone_endpoint('RegionOne/placement_service::placement') } - end - - context 'when disabling user configuration' do - let :params do - { - :password => 'placement_password', - :configure_user => false - } - end - - it { should_not contain_keystone_user('placement') } - it { should contain_keystone_user_role('placement@services') } - - it { should contain_keystone_service('placement::placement').with( - :ensure => 'present', - :description => 'Placement Service' - )} - end - - context 'when disabling user and user role configuration' do - let :params do - { - :password => 'placement_password', + { :password => 'placement_password', + :auth_name => 'alt_placement', + :email => 'alt_placement@alt_localhost', + :tenant => 'alt_service', + :configure_endpoint => false, :configure_user => false, - :configure_user_role => false - } + :configure_user_role => false, + :service_description => 'Alternative Placement Service', + :service_name => 'alt_service', + :service_type => 'alt_placement', + :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 { should_not contain_keystone_user('placement') } - it { should_not contain_keystone_user_role('placement@services') } - - it { should contain_keystone_service('placement::placement').with( - :ensure => 'present', - :description => 'Placement Service' - )} - end - - context 'when using ensure absent' do - let :params do - { - :password => 'placement_password', - :ensure => 'absent' - } - end - - it { should contain_keystone__resource__service_identity('placement').with_ensure('absent') } + it { is_expected.to contain_keystone__resource__service_identity('placement').with( + :configure_user => false, + :configure_user_role => false, + :configure_endpoint => false, + :service_name => 'alt_service', + :service_type => 'alt_placement', + :service_description => 'Alternative Placement Service', + :region => 'RegionTwo', + :auth_name => 'alt_placement', + :password => 'placement_password', + :email => 'alt_placement@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