]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/keystone/spec/defines/keystone_resource_authtoken_spec.rb
Update to Kilo
[dsa-puppet.git] / 3rdparty / modules / keystone / spec / defines / keystone_resource_authtoken_spec.rb
1 require 'spec_helper'
2
3 describe 'keystone::resource::authtoken' do
4
5   let (:title) { 'keystone_config' }
6
7   let :required_params do
8     { :username     => 'keystone',
9       :password     => 'secret',
10       :auth_url     => 'http://127.0.0.1:35357/',
11       :project_name => 'services' }
12   end
13
14   shared_examples 'shared examples' do
15
16     context 'with only required parameters' do
17       let :params do
18         required_params
19       end
20
21       it { is_expected.to contain_keystone_config('keystone_authtoken/username').with(
22         :value  => 'keystone',
23       )}
24
25       it { is_expected.to contain_keystone_config('keystone_authtoken/user_id').with(
26         :ensure => 'absent',
27       )}
28
29       it { is_expected.to contain_keystone_config('keystone_authtoken/password').with(
30         :value  => 'secret',
31         :secret => true,
32       )}
33
34       it { is_expected.to contain_keystone_config('keystone_authtoken/auth_plugin').with(
35         :value  => 'password',
36       )}
37
38       it { is_expected.to contain_keystone_config('keystone_authtoken/auth_url').with(
39         :value  => 'http://127.0.0.1:35357/',
40       )}
41
42       it { is_expected.to contain_keystone_config('keystone_authtoken/project_name').with(
43         :value  => 'services',
44       )}
45
46       it { is_expected.to contain_keystone_config('keystone_authtoken/project_id').with(
47         :ensure => 'absent',
48       )}
49
50       it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
51         :ensure => 'absent',
52       )}
53
54       it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
55         :ensure => 'absent',
56       )}
57
58       it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_id').with(
59         :ensure => 'absent',
60       )}
61
62       it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_id').with(
63         :ensure => 'absent',
64       )}
65
66       it { is_expected.to contain_keystone_config('keystone_authtoken/domain_name').with(
67         :ensure => 'absent',
68       )}
69
70       it { is_expected.to contain_keystone_config('keystone_authtoken/domain_id').with(
71         :ensure => 'absent',
72       )}
73
74       it { is_expected.to contain_keystone_config('keystone_authtoken/trust_id').with(
75         :ensure => 'absent',
76       )}
77
78       it { is_expected.to contain_keystone_config('keystone_authtoken/cacert').with(
79         :ensure => 'absent',
80       )}
81
82       it { is_expected.to contain_keystone_config('keystone_authtoken/cert').with(
83         :ensure => 'absent',
84       )}
85
86       it { is_expected.to contain_keystone_config('keystone_authtoken/key').with(
87         :ensure => 'absent',
88       )}
89
90       it { is_expected.to contain_keystone_config('keystone_authtoken/insecure').with(
91         :value => 'false',
92       )}
93
94     end
95
96     context 'when omitting a required parameter password' do
97       let :params do
98         required_params.delete(:password)
99       end
100       it { expect { is_expected.to raise_error(Puppet::Error) } }
101     end
102
103     context 'when specifying auth_url' do
104       let :params do
105         required_params.merge({:auth_url => 'https://host:11111/v3/'})
106       end
107       it { is_expected.to contain_keystone_config('keystone_authtoken/auth_url').with(
108         :value  => 'https://host:11111/v3/',
109       )}
110
111     end
112
113     context 'when specifying project and scope_domain' do
114       let :params do
115         required_params.merge({:domain_name => 'domain'})
116       end
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)') } }
118     end
119
120     context 'when specifying neither project nor domain' do
121       let :params do
122         required_params.delete(:project_name)
123       end
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)') } }
125     end
126
127     context 'when specifying domain in name' do
128       let :params do
129         required_params.merge({
130           :username            => 'keystone::userdomain',
131           :project_name        => 'services::projdomain',
132           :default_domain_name => 'shouldnotuse'
133         })
134       end
135       it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
136         :value => 'userdomain',
137       )}
138
139       it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
140         :value => 'projdomain',
141       )}
142
143     end
144
145     context 'when specifying domain in parameters' do
146       let :params 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'
153         })
154       end
155       it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
156         :value => 'realuserdomain',
157       )}
158
159       it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
160         :value => 'realprojectdomain',
161       )}
162
163     end
164
165     context 'when specifying only default domain' do
166       let :params do
167         required_params.merge({
168           :default_domain_name => 'defaultdomain'
169         })
170       end
171       it { is_expected.to contain_keystone_config('keystone_authtoken/user_domain_name').with(
172         :value => 'defaultdomain',
173       )}
174
175       it { is_expected.to contain_keystone_config('keystone_authtoken/project_domain_name').with(
176         :value => 'defaultdomain',
177       )}
178
179     end
180
181   end
182
183   context 'on a Debian osfamily' do
184     let :facts do
185       { :osfamily => "Debian" }
186     end
187
188     include_examples 'shared examples'
189   end
190
191   context 'on a RedHat osfamily' do
192     let :facts do
193       { :osfamily => 'RedHat' }
194     end
195
196     include_examples 'shared examples'
197   end
198 end