Make the scope optional
This commit is contained in:
parent
7a9dea37f1
commit
bd97c23d9f
|
@ -52,9 +52,9 @@ END
|
||||||
|
|
||||||
# override CredentialsLoader#make_creds to use the class determined by
|
# override CredentialsLoader#make_creds to use the class determined by
|
||||||
# loading the json.
|
# loading the json.
|
||||||
def self.make_creds(scope, json_key_io)
|
def self.make_creds(json_key_io, scope = nil)
|
||||||
json_key, clz = determine_creds_class(json_key_io)
|
json_key, clz = determine_creds_class(json_key_io)
|
||||||
clz.new(scope, StringIO.new(MultiJson.dump(json_key)))
|
clz.new(StringIO.new(MultiJson.dump(json_key)), scope)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Reads the input json and determines which creds class to use.
|
# Reads the input json and determines which creds class to use.
|
||||||
|
@ -76,11 +76,11 @@ END
|
||||||
# at http://goo.gl/IUuyuX.
|
# at http://goo.gl/IUuyuX.
|
||||||
#
|
#
|
||||||
# If supplied, scope is used to create the credentials instance, when it
|
# If supplied, scope is used to create the credentials instance, when it
|
||||||
# can applied. E.g, on compute engine, the scope is ignored.
|
# can applied. E.g, on google compute engine, the scope is ignored.
|
||||||
#
|
#
|
||||||
# @param scope [string|array] the scope(s) to access
|
# @param scope [string|array|nil] the scope(s) to access
|
||||||
# @param options [hash] allows override of the connection being used
|
# @param options [hash] allows override of the connection being used
|
||||||
def get_application_default(scope, options = {})
|
def get_application_default(scope = nil, options = {})
|
||||||
creds = DefaultCredentials.from_env(scope)
|
creds = DefaultCredentials.from_env(scope)
|
||||||
return creds unless creds.nil?
|
return creds unless creds.nil?
|
||||||
creds = DefaultCredentials.from_well_known_path(scope)
|
creds = DefaultCredentials.from_well_known_path(scope)
|
||||||
|
|
|
@ -61,13 +61,13 @@ module Google
|
||||||
# Creates an instance from the path specified in an environment
|
# Creates an instance from the path specified in an environment
|
||||||
# variable.
|
# variable.
|
||||||
#
|
#
|
||||||
# @param scope [string|array] the scope(s) to access
|
# @param scope [string|array|nil] the scope(s) to access
|
||||||
def from_env(scope)
|
def from_env(scope = nil)
|
||||||
return nil unless ENV.key?(ENV_VAR)
|
return nil unless ENV.key?(ENV_VAR)
|
||||||
path = ENV[ENV_VAR]
|
path = ENV[ENV_VAR]
|
||||||
fail 'file #{path} does not exist' unless File.exist?(path)
|
fail 'file #{path} does not exist' unless File.exist?(path)
|
||||||
File.open(path) do |f|
|
File.open(path) do |f|
|
||||||
return make_creds(scope, f)
|
return make_creds(f, scope)
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
raise "#{NOT_FOUND_ERROR}: #{e}"
|
raise "#{NOT_FOUND_ERROR}: #{e}"
|
||||||
|
@ -75,15 +75,15 @@ module Google
|
||||||
|
|
||||||
# Creates an instance from a well known path.
|
# Creates an instance from a well known path.
|
||||||
#
|
#
|
||||||
# @param scope [string|array] the scope(s) to access
|
# @param scope [string|array|nil] the scope(s) to access
|
||||||
def from_well_known_path(scope)
|
def from_well_known_path(scope = nil)
|
||||||
home_var, base = windows? ? 'APPDATA' : 'HOME', WELL_KNOWN_PATH
|
home_var, base = windows? ? 'APPDATA' : 'HOME', WELL_KNOWN_PATH
|
||||||
root = ENV[home_var].nil? ? '' : ENV[home_var]
|
root = ENV[home_var].nil? ? '' : ENV[home_var]
|
||||||
base = File.join('.config', base) unless windows?
|
base = File.join('.config', base) unless windows?
|
||||||
path = File.join(root, base)
|
path = File.join(root, base)
|
||||||
return nil unless File.exist?(path)
|
return nil unless File.exist?(path)
|
||||||
File.open(path) do |f|
|
File.open(path) do |f|
|
||||||
return make_creds(scope, f)
|
return make_creds(f, scope)
|
||||||
end
|
end
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
raise "#{WELL_KNOWN_ERROR}: #{e}"
|
raise "#{WELL_KNOWN_ERROR}: #{e}"
|
||||||
|
|
|
@ -57,9 +57,9 @@ module Google
|
||||||
|
|
||||||
# Initializes a ServiceAccountCredentials.
|
# Initializes a ServiceAccountCredentials.
|
||||||
#
|
#
|
||||||
# @param scope [string|array] the scope(s) to access
|
|
||||||
# @param json_key_io [IO] an IO from which the JSON key can be read
|
# @param json_key_io [IO] an IO from which the JSON key can be read
|
||||||
def initialize(scope, json_key_io)
|
# @param scope [string|array|nil] the scope(s) to access
|
||||||
|
def initialize(json_key_io, scope = nil)
|
||||||
private_key, client_email = self.class.read_json_key(json_key_io)
|
private_key, client_email = self.class.read_json_key(json_key_io)
|
||||||
super(token_credential_uri: TOKEN_CRED_URI,
|
super(token_credential_uri: TOKEN_CRED_URI,
|
||||||
audience: TOKEN_CRED_URI,
|
audience: TOKEN_CRED_URI,
|
||||||
|
|
|
@ -61,9 +61,9 @@ module Google
|
||||||
|
|
||||||
# Initializes a UserRefreshCredentials.
|
# Initializes a UserRefreshCredentials.
|
||||||
#
|
#
|
||||||
# @param scope [string|array] the scope(s) to access
|
|
||||||
# @param json_key_io [IO] an IO from which the JSON key can be read
|
# @param json_key_io [IO] an IO from which the JSON key can be read
|
||||||
def initialize(scope, json_key_io)
|
# @param scope [string|array|nil] the scope(s) to access
|
||||||
|
def initialize(json_key_io, scope = nil)
|
||||||
user_creds = self.class.read_json_key(json_key_io)
|
user_creds = self.class.read_json_key(json_key_io)
|
||||||
super(token_credential_uri: TOKEN_CRED_URI,
|
super(token_credential_uri: TOKEN_CRED_URI,
|
||||||
client_id: user_creds['client_id'],
|
client_id: user_creds['client_id'],
|
||||||
|
|
|
@ -104,6 +104,18 @@ describe '#get_application_default' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'succeeds with default file without a scope' do
|
||||||
|
ENV.delete(@var_name) unless ENV[@var_name].nil?
|
||||||
|
Dir.mktmpdir do |dir|
|
||||||
|
key_path = File.join(dir, '.config',
|
||||||
|
CredentialsLoader::WELL_KNOWN_PATH)
|
||||||
|
FileUtils.mkdir_p(File.dirname(key_path))
|
||||||
|
File.write(key_path, cred_json_text)
|
||||||
|
ENV['HOME'] = dir
|
||||||
|
expect(Google::Auth.get_application_default).to_not be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
it 'succeeds without default file or env if on compute engine' do
|
it 'succeeds without default file or env if on compute engine' do
|
||||||
stubs = Faraday::Adapter::Test::Stubs.new do |stub|
|
stubs = Faraday::Adapter::Test::Stubs.new do |stub|
|
||||||
stub.get('/') do |_env|
|
stub.get('/') do |_env|
|
||||||
|
|
|
@ -47,8 +47,8 @@ describe Google::Auth::ServiceAccountCredentials do
|
||||||
before(:example) do
|
before(:example) do
|
||||||
@key = OpenSSL::PKey::RSA.new(2048)
|
@key = OpenSSL::PKey::RSA.new(2048)
|
||||||
@client = ServiceAccountCredentials.new(
|
@client = ServiceAccountCredentials.new(
|
||||||
'https://www.googleapis.com/auth/userinfo.profile',
|
StringIO.new(cred_json_text),
|
||||||
StringIO.new(cred_json_text))
|
'https://www.googleapis.com/auth/userinfo.profile')
|
||||||
end
|
end
|
||||||
|
|
||||||
def make_auth_stubs(opts = {})
|
def make_auth_stubs(opts = {})
|
||||||
|
|
|
@ -47,8 +47,8 @@ describe Google::Auth::UserRefreshCredentials do
|
||||||
before(:example) do
|
before(:example) do
|
||||||
@key = OpenSSL::PKey::RSA.new(2048)
|
@key = OpenSSL::PKey::RSA.new(2048)
|
||||||
@client = UserRefreshCredentials.new(
|
@client = UserRefreshCredentials.new(
|
||||||
'https://www.googleapis.com/auth/userinfo.profile',
|
StringIO.new(cred_json_text),
|
||||||
StringIO.new(cred_json_text))
|
'https://www.googleapis.com/auth/userinfo.profile')
|
||||||
end
|
end
|
||||||
|
|
||||||
def make_auth_stubs(opts = {})
|
def make_auth_stubs(opts = {})
|
||||||
|
|
Loading…
Reference in New Issue