From 8a263dc393c4183879d6f62320711225334f7143 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Thu, 11 Apr 2024 18:10:48 +0300 Subject: [PATCH 1/3] fix: set owner name and email to "default" Closes coder/modules#162 When the terraform plan is run, the `data.coder_workspace.me.owner_email` and `data.coder_workspace.me.owner_name` fields are blank, which causes the template build to fail. This should resolve the issue by setting those entries to a non-empty string. --- provider/workspace.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/provider/workspace.go b/provider/workspace.go index 0e1abf97..09b95a5b 100644 --- a/provider/workspace.go +++ b/provider/workspace.go @@ -35,6 +35,9 @@ func workspaceDataSource() *schema.Resource { _ = rd.Set("owner", owner) ownerEmail := os.Getenv("CODER_WORKSPACE_OWNER_EMAIL") + if ownerEmail == "" { + ownerEmail = "default" + } _ = rd.Set("owner_email", ownerEmail) ownerGroupsText := os.Getenv("CODER_WORKSPACE_OWNER_GROUPS") @@ -48,6 +51,9 @@ func workspaceDataSource() *schema.Resource { _ = rd.Set("owner_groups", ownerGroups) ownerName := os.Getenv("CODER_WORKSPACE_OWNER_NAME") + if ownerName == "" { + ownerName = "default" + } _ = rd.Set("owner_name", ownerName) ownerID := os.Getenv("CODER_WORKSPACE_OWNER_ID") From aa9f10cde28338b247955dfa618cd6930627a6b4 Mon Sep 17 00:00:00 2001 From: Muhammad Atif Ali Date: Sat, 13 Apr 2024 15:40:21 +0300 Subject: [PATCH 2/3] review suggestions --- provider/workspace.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/workspace.go b/provider/workspace.go index 09b95a5b..b8ff1684 100644 --- a/provider/workspace.go +++ b/provider/workspace.go @@ -36,7 +36,7 @@ func workspaceDataSource() *schema.Resource { ownerEmail := os.Getenv("CODER_WORKSPACE_OWNER_EMAIL") if ownerEmail == "" { - ownerEmail = "default" + ownerEmail = "default@example.com" } _ = rd.Set("owner_email", ownerEmail) From fae64ac01d985e99bc957485ec3b9773db64a73e Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Tue, 23 Apr 2024 16:29:56 +0200 Subject: [PATCH 3/3] tf level testing --- provider/workspace_test.go | 43 +++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/provider/workspace_test.go b/provider/workspace_test.go index 78aeac4b..d5866af5 100644 --- a/provider/workspace_test.go +++ b/provider/workspace_test.go @@ -6,6 +6,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/coder/terraform-provider-coder/provider" @@ -43,20 +44,30 @@ func TestWorkspace(t *testing.T) { value := attribs["transition"] require.NotNil(t, value) t.Log(value) - require.Equal(t, "8080", attribs["access_port"]) - require.Equal(t, "owner123", attribs["owner"]) - require.Equal(t, "Mr Owner", attribs["owner_name"]) - require.Equal(t, "owner123@example.com", attribs["owner_email"]) - require.Equal(t, "abc123", attribs["owner_session_token"]) - require.Equal(t, "group1", attribs["owner_groups.0"]) - require.Equal(t, "group2", attribs["owner_groups.1"]) - require.Equal(t, "templateID", attribs["template_id"]) - require.Equal(t, "template123", attribs["template_name"]) - require.Equal(t, "v1.2.3", attribs["template_version"]) + assert.Equal(t, "https://example.com:8080", attribs["access_url"]) + assert.Equal(t, "8080", attribs["access_port"]) + assert.Equal(t, "owner123", attribs["owner"]) + assert.Equal(t, "Mr Owner", attribs["owner_name"]) + assert.Equal(t, "owner123@example.com", attribs["owner_email"]) + assert.Equal(t, "group1", attribs["owner_groups.0"]) + assert.Equal(t, "group2", attribs["owner_groups.1"]) + assert.Equal(t, "templateID", attribs["template_id"]) + assert.Equal(t, "template123", attribs["template_name"]) + assert.Equal(t, "v1.2.3", attribs["template_version"]) return nil }, }}, }) +} + +func TestWorkspace_UndefinedOwner(t *testing.T) { + t.Setenv("CODER_WORKSPACE_OWNER", "owner123") + t.Setenv("CODER_WORKSPACE_OWNER_SESSION_TOKEN", "abc123") + t.Setenv("CODER_WORKSPACE_OWNER_GROUPS", `["group1", "group2"]`) + t.Setenv("CODER_WORKSPACE_TEMPLATE_ID", "templateID") + t.Setenv("CODER_WORKSPACE_TEMPLATE_NAME", "template123") + t.Setenv("CODER_WORKSPACE_TEMPLATE_VERSION", "v1.2.3") + resource.Test(t, resource.TestCase{ Providers: map[string]*schema.Provider{ "coder": provider.New(), @@ -79,15 +90,9 @@ func TestWorkspace(t *testing.T) { value := attribs["transition"] require.NotNil(t, value) t.Log(value) - require.Equal(t, "https://example.com:8080", attribs["access_url"]) - require.Equal(t, "owner123", attribs["owner"]) - require.Equal(t, "Mr Owner", attribs["owner_name"]) - require.Equal(t, "owner123@example.com", attribs["owner_email"]) - require.Equal(t, "group1", attribs["owner_groups.0"]) - require.Equal(t, "group2", attribs["owner_groups.1"]) - require.Equal(t, "templateID", attribs["template_id"]) - require.Equal(t, "template123", attribs["template_name"]) - require.Equal(t, "v1.2.3", attribs["template_version"]) + assert.Equal(t, "owner123", attribs["owner"]) + assert.Equal(t, "default@example.com", attribs["owner_email"]) + // Skip other asserts return nil }, }},