mirror of https://github.com/databricks/cli.git
Allow account client auth with environment variables when no .databrickscfg file present (#1097)
## Changes Allow account client auth with environment variables when no .databrickscfg file present Makes the behaviour to be in line with WorkspaceClient auth. ## Tests Added regression test
This commit is contained in:
parent
9cb098506a
commit
e80882b5af
|
@ -83,12 +83,14 @@ func MustAccountClient(cmd *cobra.Command, args []string) error {
|
|||
// 2. 99% of admins will have access to just one account
|
||||
// hence, we don't need to create a special "DEFAULT_ACCOUNT" profile yet
|
||||
_, profiles, err := databrickscfg.LoadProfiles(cmd.Context(), databrickscfg.MatchAccountProfiles)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(profiles) == 1 {
|
||||
if err == nil && len(profiles) == 1 {
|
||||
cfg.Profile = profiles[0].Name
|
||||
}
|
||||
|
||||
// if there is no config file, we don't want to fail and instead just skip it
|
||||
if err != nil && !errors.Is(err, databrickscfg.ErrNoConfiguration) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
allowPrompt := !hasProfileFlag && !shouldSkipPrompt(cmd.Context())
|
||||
|
|
|
@ -181,3 +181,51 @@ func TestWorkspaceClientOrPrompt(t *testing.T) {
|
|||
})
|
||||
})
|
||||
}
|
||||
|
||||
func TestMustAccountClientWorksWithDatabricksCfg(t *testing.T) {
|
||||
testutil.CleanupEnvironment(t)
|
||||
|
||||
dir := t.TempDir()
|
||||
configFile := filepath.Join(dir, ".databrickscfg")
|
||||
err := os.WriteFile(
|
||||
configFile,
|
||||
[]byte(`
|
||||
[account-1111]
|
||||
host = https://accounts.azuredatabricks.net/
|
||||
account_id = 1111
|
||||
token = foobar
|
||||
`),
|
||||
0755)
|
||||
require.NoError(t, err)
|
||||
|
||||
cmd := New(context.Background())
|
||||
|
||||
t.Setenv("DATABRICKS_CONFIG_FILE", configFile)
|
||||
err = MustAccountClient(cmd, []string{})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestMustAccountClientWorksWithNoDatabricksCfgButEnvironmentVariables(t *testing.T) {
|
||||
testutil.CleanupEnvironment(t)
|
||||
|
||||
ctx, tt := cmdio.SetupTest(context.Background())
|
||||
t.Cleanup(tt.Done)
|
||||
cmd := New(ctx)
|
||||
t.Setenv("DATABRICKS_HOST", "https://accounts.azuredatabricks.net/")
|
||||
t.Setenv("DATABRICKS_TOKEN", "foobar")
|
||||
t.Setenv("DATABRICKS_ACCOUNT_ID", "1111")
|
||||
|
||||
err := MustAccountClient(cmd, []string{})
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestMustAccountClientErrorsWithNoDatabricksCfg(t *testing.T) {
|
||||
testutil.CleanupEnvironment(t)
|
||||
|
||||
ctx, tt := cmdio.SetupTest(context.Background())
|
||||
t.Cleanup(tt.Done)
|
||||
cmd := New(ctx)
|
||||
|
||||
err := MustAccountClient(cmd, []string{})
|
||||
require.ErrorContains(t, err, "no configuration file found at")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue