From 7e277a6ad6d78a1192bed20449e03176be145a4d Mon Sep 17 00:00:00 2001 From: Evan Phoenix Date: Thu, 29 Feb 2024 15:40:28 -0800 Subject: [PATCH] Add tests for honoring env vars --- internal/pkg/profile/loader.go | 4 +- internal/pkg/profile/loader_test.go | 57 +++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/internal/pkg/profile/loader.go b/internal/pkg/profile/loader.go index f08ae0b6..de44b897 100644 --- a/internal/pkg/profile/loader.go +++ b/internal/pkg/profile/loader.go @@ -177,11 +177,11 @@ func (l *Loader) LoadProfile(name string) (*Profile, error) { // Honor environment variables around org and project over whatever // we load from the profile file. - if orgID, ok := os.LookupEnv(envVarHCPOrganizationID); ok { + if orgID, ok := os.LookupEnv(envVarHCPOrganizationID); ok && orgID != "" { c.OrganizationID = orgID } - if projID, ok := os.LookupEnv(envVarHCPProjectID); ok { + if projID, ok := os.LookupEnv(envVarHCPProjectID); ok && projID != "" { c.ProjectID = projID } diff --git a/internal/pkg/profile/loader_test.go b/internal/pkg/profile/loader_test.go index 269ae044..21b7e061 100644 --- a/internal/pkg/profile/loader_test.go +++ b/internal/pkg/profile/loader_test.go @@ -78,6 +78,7 @@ func TestLoader_GetActiveProfile(t *testing.T) { r.NoError(err) r.Equal(t.Name(), p.Name) }) + } func TestLoader_ListProfiles(t *testing.T) { @@ -208,6 +209,62 @@ project_id = "456"`, }) } +//nolint:paralleltest +func TestLoader_LoadProfileEnv(t *testing.T) { + + // These tests aren't parallel because they manipulate the environment + // and can't run concurrently. + + //nolint:paralleltest + t.Run("default profile, env set", func(t *testing.T) { + defer os.Unsetenv(envVarHCPOrganizationID) + defer os.Unsetenv(envVarHCPProjectID) + + os.Setenv(envVarHCPOrganizationID, "xyz") + os.Setenv(envVarHCPProjectID, "abc") + + r := require.New(t) + l, err := newLoader(t.TempDir()) + r.NoError(err) + prof := l.DefaultProfile() + + r.Equal("xyz", prof.OrganizationID) + r.Equal("abc", prof.ProjectID) + }) + + //nolint:paralleltest + t.Run("valid active profile, env set", func(t *testing.T) { + r := require.New(t) + l := TestLoader(t) + + defer os.Unsetenv(envVarHCPOrganizationID) + defer os.Unsetenv(envVarHCPProjectID) + + p, err := l.NewProfile("test") + r.NoError(err) + p.OrganizationID = "123" + p.ProjectID = "456" + r.NoError(p.Write()) + + os.Setenv(envVarHCPOrganizationID, "xyz") + + out, err := l.LoadProfile(p.Name) + r.NoError(err) + r.NotNil(out) + r.Equal("xyz", out.OrganizationID) + r.Equal(p.ProjectID, out.ProjectID) + + os.Setenv(envVarHCPProjectID, "abc") + + out, err = l.LoadProfile(p.Name) + r.NoError(err) + r.NotNil(out) + r.Equal("xyz", out.OrganizationID) + r.Equal("abc", out.ProjectID) + + }) +} + func TestLoader_LoadProfiles(t *testing.T) { t.Parallel()