8000 y u no work · coder/coder@05529e0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 05529e0

Browse files
committed
y u no work
1 parent 1f7c477 commit 05529e0

File tree

7 files changed

+157
-30
lines changed

7 files changed

+157
-30
lines changed

coderd/parameters.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ import (
77
"net/http"
88
"time"
99

10+
"github.com/google/uuid"
11+
"golang.org/x/sync/errgroup"
12+
"golang.org/x/xerrors"
13+
1014
"github.com/coder/coder/v2/coderd/database"
1115
"github.com/coder/coder/v2/coderd/database/dbauthz"
1216
"github.com/coder/coder/v2/coderd/httpapi"
@@ -16,9 +20,6 @@ import (
1620
"github.com/coder/preview"
1721
previewtypes "github.com/coder/preview/types"
1822
"github.com/coder/websocket"
19-
"github.com/google/uuid"
20-
"golang.org/x/sync/errgroup"
21-
"golang.org/x/xerrors"
2223
)
2324

2425
// @Summary Open dynamic parameters WebSocket by template version

coderd/parameters_test.go

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ import (
44
"os"
55
"testing"
66

7+
"github.com/stretchr/testify/require"
8+
79
"github.com/coder/coder/v2/coderd/coderdtest"
810
"github.com/coder/coder/v2/coderd/rbac"
911
"github.com/coder/coder/v2/codersdk"
1012
"github.com/coder/coder/v2/provisioner/echo"
1113
"github.com/coder/coder/v2/provisionersdk/proto"
1214
"github.com/coder/coder/v2/testutil"
1315
"github.com/coder/websocket"
14-
"github.com/stretchr/testify/require"
1516
)
1617

17-
func TestTemplateVersionDynamicParameters(t *testing.T) {
18+
func TestDynamicParametersOwnerGroups(t *testing.T) {
1819
t.Parallel()
1920

2021
cfg := coderdtest.DeploymentValues(t)
@@ -23,9 +24,9 @@ func TestTemplateVersionDynamicParameters(t *testing.T) {
2324
owner := coderdtest.CreateFirstUser(t, ownerClient)
2425
templateAdmin, templateAdminUser := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
2526

26-
dynamicParametersTerraformSource, err := os.ReadFile("testdata/dynamicparameters/groups/main.tf")
27+
dynamicParametersTerraformSource, err := os.ReadFile("testdata/parameters/groups/main.tf")
2728
require.NoError(t, err)
28-
dynamicParametersTerraformPlan, err := os.ReadFile("testdata/dynamicparameters/groups/plan.json")
29+
dynamicParametersTerraformPlan, err := os.ReadFile("testdata/parameters/groups/plan.json")
2930
require.NoError(t, err)
3031

3132
files := echo.WithExtraFiles(map[string][]byte{
@@ -83,3 +84,49 @@ func TestTemplateVersionDynamicParameters(t *testing.T) {
8384
require.True(t, preview.Parameters[0].Value.Valid())
8485
require.Equal(t, "Everyone", preview.Parameters[0].Value.Value.AsString())
8586
}
87+
88+
func TestDynamicParametersOwnerSSHPublicKey(t *testing.T) {
89+
t.Parallel()
90+
91+
cfg := coderdtest.DeploymentValues(t)
92+
cfg.Experiments = []string{string(codersdk.ExperimentDynamicParameters)}
93+
ownerClient := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true, DeploymentValues: cfg})
94+
owner := coderdtest.CreateFirstUser(t, ownerClient)
95+
templateAdmin, templateAdminUser := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID, rbac.RoleTemplateAdmin())
96+
97+
dynamicParametersTerraformSource, err := os.ReadFile("testdata/parameters/public_key/main.tf")
98+
require.NoError(t, err)
99+
dynamicParametersTerraformPlan, err := os.ReadFile("testdata/parameters/public_key/plan.json")
100+
require.NoError(t, err)
101+
sshKey, err := templateAdmin.GitSSHKey(t.Context(), "me")
102+
require.NoError(t, err)
103+
104+
files := echo.WithExtraFiles(map[string][]byte{
105+
"main.tf": dynamicParametersTerraformSource,
106+
})
107+
files.ProvisionPlan = []*proto.Response{{
108+
Type: &proto.Response_Plan{
109+
Plan: &proto.PlanComplete{
110+
Plan: dynamicParametersTerraformPlan,
111+
},
112+
},
113+
}}
114+
115+
version := coderdtest.CreateTemplateVersion(t, templateAdmin, owner.OrganizationID, files)
116+
coderdtest.AwaitTemplateVersionJobCompleted(t, templateAdmin, version.ID)
117+
_ = coderdtest.CreateTemplate(t, templateAdmin, owner.OrganizationID, version.ID)
118+
119+
ctx := testutil.Context(t, testutil.WaitShort)
120+
stream, err := templateAdmin.TemplateVersionDynamicParameters(ctx, templateAdminUser.ID, version.ID)
121+
require.NoError(t, err)
122+
defer stream.Close(websocket.StatusGoingAway)
123+
124+
previews := stream.Chan()
125+
126+
// Should automatically send a form state with all defaulted/empty values
127+
preview := testutil.RequireRecvCtx(ctx, t, previews)
128+
require.Empty(t, preview.Diagnostics)
129+
require.Equal(t, "public_key", preview.Parameters[0].Name)
130+
require.True(t, preview.Parameters[0].Value.Valid())
131+
require.Equal(t, sshKey.PublicKey, preview.Parameters[0].Value.Value.AsString())
132+
}

coderd/testdata/dynamicparameters/groups/main.tf renamed to coderd/testdata/parameters/groups/main.tf

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,6 @@ terraform {
88

99
data "coder_workspace_owner" "me" {}
1010

11-
output "groups" {
12-
value = data.coder_workspace_owner.me.groups
13-
}
14-
1511
data "coder_parameter" "group" {
1612
name = "group"
1713
default = try(data.coder_workspace_owner.me.groups[0], "")

coderd/testdata/dynamicparameters/groups/plan.json renamed to coderd/testdata/parameters/groups/plan.json

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717
"provider_name": "registry.terraform.io/coder/coder",
1818
"schema_version": 0,
1919
"values": {
20-
"id": "25e81ec3-0eb9-4ee3-8b6d-738b8552f7a9",
21-
"name": "default",
22-
"email": "default@example.com",
20+
"id": "",
21+
"name": "",
22+
"email": "",
2323
"groups": [],
24-
"full_name": "default",
25-
"login_type": null,
24+
"full_name": "",
25+
"login_type": "",
2626
"rbac_roles": [],
2727
"session_token": "",
2828
"ssh_public_key": "",
@@ -74,19 +74,7 @@
7474
"relevant_attributes": [
7575
{
7676
"resource": "data.coder_workspace_owner.me",
77-
"attribute": ["full_name"]
78-
},
79-
{
80-
"resource": "data.coder_workspace_owner.me",
81-
"attribute": ["email"]
82-
},
83-
{
84-
"resource": "data.coder_workspace_owner.me",
85-
"attribute": ["id"]
86-
},
87-
{
88-
"resource": "data.coder_workspace_owner.me",
89-
"attribute": ["name"]
77+
"attribute": ["groups"]
9078
}
9179
]
9280
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
terraform {
2+
required_providers {
3+
coder = {
4+
source = "coder/coder"
5+
}
6+
}
7+
}
8+
9+
data "coder_workspace_owner" "me" {}
10+
11+
data "coder_parameter" "public_key" {
12+
name = "public_key"
13+
default = data.coder_workspace_owner.me.ssh_public_key
14+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
{
2+
"terraform_version": "1.11.2",
3+
"format_version": "1.2",
4+
"checks": [],
5+
"complete": true,
6+
"timestamp": "2025-04-02T01:29:59Z",
7+
"variables": {},
8+
"prior_state": {
9+
"values": {
10+
"root_module": {
11+
"resources": [
12+
{
13+
"mode": "data",
14+
"name": "me",
15+
"type": "coder_workspace_owner",
16+
"address": "data.coder_workspace_owner.me",
17+
"provider_name": "registry.terraform.io/coder/coder",
18+
"schema_version": 0,
19+
"values": {
20+
"id": "",
21+
"name": "",
22+
"email": "",
23+
"groups": [],
24+
"full_name": "",
25+
"login_type": "",
26+
"rbac_roles": [],
27+
"session_token": "",
28+
"ssh_public_key": "",
29+
"ssh_private_key": "",
30+
"oidc_access_token": ""
31+
},
32+
"sensitive_values": {
33+
"groups": [],
34+
"rbac_roles": [],
35+
"ssh_private_key": true
36+
}
37+
}
38+
],
39+
"child_modules": []
40+
}
41+
},
42+
"format_version": "1.0",
43+
"terraform_version": "1.11.2"
44+
},
45+
"configuration": {
46+
"root_module": {
47+
"resources": [
48+
{
49+
"mode": "data",
50+
"name": "me",
51+
"type": "coder_workspace_owner",
52+
"address": "data.coder_workspace_owner.me",
53+
"schema_version": 0,
54+
"provider_config_key": "coder"
55+
}
56+
],
57+
"variables": {},
58+
"module_calls": {}
59+
},
60+
"provider_config": {
61+
"coder": {
62+
"name": "coder",
63+
"full_name": "registry.terraform.io/coder/coder"
64+
}
65+
}
66+
},
67+
"planned_values": {
68+
"root_module": {
69+
"resources": [],
70+
"child_modules": []
71+
}
72+
},
73+
"resource_changes": [],
74+
"relevant_attributes": [
75+
{
76+
"resource": "data.coder_workspace_owner.me",
77+
"attribute": ["ssh_public_key"]
78+
}
79+
]
80+
}

codersdk/parameters.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import (
44
"context"
55
"fmt"
66

7+
"github.com/google/uuid"
8+
79
"github.com/coder/coder/v2/codersdk/wsjson"
810
previewtypes "github.com/coder/preview/types"
911
"github.com/coder/websocket"
10-
"github.com/google/uuid"
1112
)
1213

1314
// FriendlyDiagnostic is included to guarantee it is generated in the output

0 commit comments

Comments
 (0)
0