fog--fog/tests/core/credential_tests.rb

94 lines
2.5 KiB
Ruby

Shindo.tests do
before do
@old_home = ENV['HOME']
@old_rc = ENV['FOG_RC']
@old_credential = ENV['FOG_CREDENTIAL']
@old_credentials = Fog.credentials
Fog.instance_variable_set('@credential_path', nil) # kill memoization
Fog.instance_variable_set('@credential', nil) # kill memoization
end
after do
ENV['HOME'] = @old_home
ENV['FOG_RC'] = @old_rc
ENV['FOG_CREDENTIAL'] = @old_credential
Fog.credentials = @old_credentials
end
tests('credential') do
returns(:default, "is :default") { Fog.credential }
returns(:foo, "can be set directly") do
Fog.credential = "foo"
Fog.credential
end
returns(:bar, "can be set with environment variable") do
ENV["FOG_CREDENTIAL"] = "bar"
Fog.credential
end
end
tests('credentials_path') do
returns('/rc/path', 'FOG_RC takes precedence over HOME') {
ENV['HOME'] = '/home/path'
ENV['FOG_RC'] = '/rc/path'
}
returns('/expanded/path', 'properly expands paths') {
ENV['FOG_RC'] = '/expanded/subdirectory/../path'
Fog.credentials_path
}
returns(File.join(ENV['HOME'], '.fog'), 'falls back to home path if FOG_RC not set') {
ENV.delete('FOG_RC')
Fog.credentials_path
}
returns(nil, 'ignores home path if it does not exist') {
ENV.delete('FOG_RC')
ENV['HOME'] = '/no/such/path'
Fog.credentials_path
}
returns(nil, 'File.expand_path raises because of non-absolute path') {
ENV.delete('FOG_RC')
ENV['HOME'] = '.'
if RUBY_PLATFORM == 'java'
Fog::Logger.warning("Stubbing out non-absolute path credentials test due to JRuby bug: https://github.com/jruby/jruby/issues/1163")
nil
else
Fog.credentials_path
end
}
returns(nil, 'returns nil when neither FOG_RC or HOME are set') {
ENV.delete('HOME')
ENV.delete('FOG_RC')
Fog.credentials_path
}
end
tests('symbolize_credential?') do
returns(true, "username") { Fog.symbolize_credential?(:username) }
returns(false, "headers") { Fog.symbolize_credential?(:headers) }
end
tests('symbolize_credentials') do
h = {
"a" => 3,
:something => 2,
"connection_options" => {"val" => 5},
:headers => { 'User-Agent' => "my user agent" }
}
returns({
:a => 3,
:something => 2,
:connection_options => {:val => 5},
:headers => { 'User-Agent' => "my user agent" }
}) { Fog.symbolize_credentials h }
end
end