3 describe 'keystone::resource::authtoken' do
5 let (:title) { 'keystone_config' }
7 let :required_params do
8 { :username => 'keystone',
10 :auth_url => 'http://127.0.0.1:35357/',
11 :project_name => 'services' }
14 shared_examples 'shared examples' do
16 context 'with only required parameters' do
21 it { is_expected.to contain_keystone_config('keystone_authtoken/username').with(
25 it { is_expected.to contain_keystone_config('keystone_authtoken/user_id').with(
29 it { is_expected.to contain_keystone_config('keystone_authtoken/password').with(
34 it { is_expected.to contain_keystone_config('keystone_authtoken/auth_plugin').with(
38 it { is_expected.to contain_keystone_config('keystone_authtoken/auth_url').with(
39 :value => 'http://127.0.0.1:35357/',
42 it { is_expected.to contain_keystone_config('keystone_authtoken/project_name').with(
46 it { is_expected.to contain_keystone_config('keystone_authtoken/project_id').with(
50 it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
54 it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
58 it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_id').with(
62 it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_id').with(
66 it { is_expected.to contain_keystone_config('keystone_authtoken/domain_name').with(
70 it { is_expected.to contain_keystone_config('keystone_authtoken/domain_id').with(
74 it { is_expected.to contain_keystone_config('keystone_authtoken/trust_id').with(
78 it { is_expected.to contain_keystone_config('keystone_authtoken/cacert').with(
82 it { is_expected.to contain_keystone_config('keystone_authtoken/cert').with(
86 it { is_expected.to contain_keystone_config('keystone_authtoken/key').with(
90 it { is_expected.to contain_keystone_config('keystone_authtoken/insecure').with(
96 context 'when omitting a required parameter password' do
98 required_params.delete(:password)
100 it { expect { is_expected.to raise_error(Puppet::Error) } }
103 context 'when specifying auth_url' do
105 required_params.merge({:auth_url => 'https://host:11111/v3/'})
107 it { is_expected.to contain_keystone_config('keystone_authtoken/auth_url').with(
108 :value => 'https://host:11111/v3/',
113 context 'when specifying project and scope_domain' do
115 required_params.merge({:domain_name => 'domain'})
117 it { expect { is_expected.to raise_error(Puppet::Error, 'Cannot specify both a project (project_name or project_id) and a domain (domain_name or domain_id)') } }
120 context 'when specifying neither project nor domain' do
122 required_params.delete(:project_name)
124 it { expect { is_expected.to raise_error(Puppet::Error, 'Must specify either a project (project_name or project_id, for a project scoped token) or a domain (domain_name or domain_id, for a domain scoped token)') } }
127 context 'when specifying domain in name' do
129 required_params.merge({
130 :username => 'keystone::userdomain',
131 :project_name => 'services::projdomain',
132 :default_domain_name => 'shouldnotuse'
135 it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
136 :value => 'userdomain',
139 it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
140 :value => 'projdomain',
145 context 'when specifying domain in parameters' do
147 required_params.merge({
148 :username => 'keystone::userdomain',
149 :user_domain_name => 'realuserdomain',
150 :project_name => 'services::projdomain',
151 :project_domain_name => 'realprojectdomain',
152 :default_domain_name => 'shouldnotuse'
155 it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
156 :value => 'realuserdomain',
159 it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
160 :value => 'realprojectdomain',
165 context 'when specifying only default domain' do
167 required_params.merge({
168 :default_domain_name => 'defaultdomain'
171 it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
172 :value => 'defaultdomain',
175 it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
176 :value => 'defaultdomain',
183 context 'on a Debian osfamily' do
185 { :osfamily => "Debian" }
188 include_examples 'shared examples'
191 context 'on a RedHat osfamily' do
193 { :osfamily => 'RedHat' }
196 include_examples 'shared examples'