mirror of https://github.com/databricks/cli.git
136 lines
2.9 KiB
Go
136 lines
2.9 KiB
Go
package databrickscfg
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/databricks/databricks-sdk-go/config"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestLoaderSkipsEmptyHost(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
Host: "",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestLoaderSkipsExistingAuth(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
Host: "https://foo",
|
|
Token: "nonempty means pat auth",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestLoaderSkipsExplicitAuthType(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "testdata/databrickscfg",
|
|
Host: "https://default",
|
|
AuthType: "azure-cli",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "azure-cli", cfg.AuthType)
|
|
assert.Empty(t, cfg.Profile)
|
|
assert.Empty(t, cfg.Token)
|
|
}
|
|
|
|
func TestLoaderSkipsNonExistingConfigFile(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "idontexist",
|
|
Host: "https://default",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
assert.Empty(t, cfg.Token)
|
|
}
|
|
|
|
func TestLoaderErrorsOnInvalidFile(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "profile/testdata/badcfg",
|
|
Host: "https://default",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.ErrorContains(t, err, "unclosed section: ")
|
|
}
|
|
|
|
func TestLoaderSkipsNoMatchingHost(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "profile/testdata/databrickscfg",
|
|
Host: "https://noneofthehostsmatch",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
assert.Empty(t, cfg.Token)
|
|
}
|
|
|
|
func TestLoaderMatchingHost(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "profile/testdata/databrickscfg",
|
|
Host: "https://default",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "default", cfg.Token)
|
|
assert.Equal(t, "DEFAULT", cfg.Profile)
|
|
}
|
|
|
|
func TestLoaderMatchingHostWithQuery(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "profile/testdata/databrickscfg",
|
|
Host: "https://query/?foo=bar",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "query", cfg.Token)
|
|
assert.Equal(t, "query", cfg.Profile)
|
|
}
|
|
|
|
func TestLoaderErrorsOnMultipleMatches(t *testing.T) {
|
|
cfg := config.Config{
|
|
Loaders: []config.Loader{
|
|
ResolveProfileFromHost,
|
|
},
|
|
ConfigFile: "profile/testdata/databrickscfg",
|
|
Host: "https://foo/bar",
|
|
}
|
|
|
|
err := cfg.EnsureResolved()
|
|
assert.Error(t, err)
|
|
assert.ErrorContains(t, err, "https://foo: multiple profiles matched: foo1, foo2")
|
|
}
|