3 require 'puppet/provider/openstack'
4 require 'puppet/provider/openstack/credentials'
7 describe Puppet::Provider::Openstack::Credentials do
10 creds = Puppet::Provider::Openstack::CredentialsV2_0.new
13 describe "#set with valid value" do
14 it 'works with valid value' do
15 expect(creds.class.defined?('auth_url')).to be_truthy
16 creds.set('auth_url', 'http://localhost:5000/v2.0')
17 expect(creds.auth_url).to eq('http://localhost:5000/v2.0')
21 describe "#set with invalid value" do
22 it 'works with invalid value' do
23 expect(creds.class.defined?('foo')).to be_falsey
24 creds.set('foo', 'junk')
25 expect(creds.respond_to?(:foo)).to be_falsey
26 expect(creds.instance_variable_defined?(:@foo)).to be_falsey
27 expect { creds.foo }.to raise_error(NoMethodError, /undefined method/)
31 describe '#service_token_set?' do
32 context "with service credentials" do
36 expect(creds.service_token_set?).to be_truthy
37 expect(creds.user_password_set?).to be_falsey
42 expect(creds.service_token_set?).to be_falsey
43 expect(creds.user_password_set?).to be_falsey
48 describe '#password_set?' do
49 context "with user credentials" do
51 creds.auth_url = 'auth_url'
52 creds.password = 'password'
53 creds.project_name = 'project_name'
54 creds.username = 'username'
55 expect(creds.user_password_set?).to be_truthy
56 expect(creds.service_token_set?).to be_falsey
60 creds.auth_url = 'auth_url'
61 creds.password = 'password'
62 creds.project_name = 'project_name'
63 expect(creds.user_password_set?).to be_falsey
64 expect(creds.service_token_set?).to be_falsey
70 context "without any credential" do
72 expect(creds.set?).to be_falsey
77 describe '#version' do
79 expect(creds.version).to eq('2.0')
84 context "with all instance variables set" do
85 it 'resets all but the identity_api_version' do
86 creds.auth_url = 'auth_url'
87 creds.password = 'password'
88 creds.project_name = 'project_name'
89 creds.username = 'username'
92 creds.identity_api_version = 'identity_api_version'
94 expect(creds.auth_url).to eq('')
95 expect(creds.password).to eq('')
96 expect(creds.project_name).to eq('')
97 expect(creds.username).to eq('')
98 expect(creds.token).to eq('')
99 expect(creds.url).to eq('')
100 expect(creds.identity_api_version).to eq('identity_api_version')
101 newcreds = Puppet::Provider::Openstack::CredentialsV3.new
102 expect(newcreds.identity_api_version).to eq('3')
107 describe '#to_env' do
108 context "with an exhaustive data set" do
109 it 'successfully returns content' do
110 creds.auth_url = 'auth_url'
111 creds.password = 'password'
112 creds.project_name = 'project_name'
113 creds.username = 'username'
114 creds.token = 'token'
116 creds.identity_api_version = 'identity_api_version'
117 expect(creds.to_env).to eq({
118 'OS_USERNAME' => 'username',
119 'OS_PASSWORD' => 'password',
120 'OS_PROJECT_NAME' => 'project_name',
121 'OS_AUTH_URL' => 'auth_url',
122 'OS_TOKEN' => 'token',
124 'OS_IDENTITY_API_VERSION' => 'identity_api_version'
130 describe 'using v3' do
132 creds = Puppet::Provider::Openstack::CredentialsV3.new
134 describe 'with v3' do
135 it 'uses v3 identity api' do
136 creds.identity_api_version == '3'
139 describe '#password_set? with username and project_name' do
140 it 'is successful' do
141 creds.auth_url = 'auth_url'
142 creds.password = 'password'
143 creds.project_name = 'project_name'
144 creds.username = 'username'
145 expect(creds.user_password_set?).to be_truthy
148 describe '#password_set? with user_id and project_id' do
149 it 'is successful' do
150 creds.auth_url = 'auth_url'
151 creds.password = 'password'
152 creds.project_id = 'projid'
153 creds.user_id = 'userid'
154 expect(creds.user_password_set?).to be_truthy