fix(auth/credentials): error on bad file name if explicitly set (#10018) Only want our fall-through logic to work for ADC specified behaviour, not explicit credential options. Fixes: #9809
diff --git a/auth/credentials/detect.go b/auth/credentials/detect.go index 5723ae9..cb3f44f 100644 --- a/auth/credentials/detect.go +++ b/auth/credentials/detect.go
@@ -76,7 +76,10 @@ if opts.CredentialsJSON != nil { return readCredentialsFileJSON(opts.CredentialsJSON, opts) } - if filename := credsfile.GetFileNameFromEnv(opts.CredentialsFile); filename != "" { + if opts.CredentialsFile != "" { + return readCredentialsFile(opts.CredentialsFile, opts) + } + if filename := os.Getenv(credsfile.GoogleAppCredsEnvVar); filename != "" { if creds, err := readCredentialsFile(filename, opts); err == nil { return creds, err }
diff --git a/auth/credentials/detect_test.go b/auth/credentials/detect_test.go index 8219a9b..9566137 100644 --- a/auth/credentials/detect_test.go +++ b/auth/credentials/detect_test.go
@@ -688,6 +688,15 @@ } } +func TestDefaultCredentials_BadFileName(t *testing.T) { + if _, err := DetectDefault(&DetectOptions{ + CredentialsFile: "a/bad/filepath", + Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"}, + }); err == nil { + t.Fatal("got nil, want non-nil err") + } +} + func TestDefaultCredentials_Validate(t *testing.T) { tests := []struct { name string