Skip to content

Commit 3ef47ec

Browse files
committed
add coderd test
1 parent ed1fafa commit 3ef47ec

File tree

4 files changed

+98
-7
lines changed

4 files changed

+98
-7
lines changed

coderd/database/dbfake/dbfake.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4431,6 +4431,8 @@ func (q *FakeQuerier) InsertWorkspaceAgent(_ context.Context, arg database.Inser
44314431
DisplayApps: arg.DisplayApps,
44324432
}
44334433

4434+
fmt.Printf("display apps: %+v\n", arg.DisplayApps)
4435+
44344436
q.workspaceAgents = append(q.workspaceAgents, agent)
44354437
return agent, nil
44364438
}

coderd/workspaceagents.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,7 +1360,7 @@ func convertWorkspaceAgent(derpMap *tailcfg.DERPMap, coordinator tailnet.Coordin
13601360
ShutdownScript: dbAgent.ShutdownScript.String,
13611361
ShutdownScriptTimeoutSeconds: dbAgent.ShutdownScriptTimeoutSeconds,
13621362
Subsystems: subsystems,
1363-
DisplayApps: convertDefaultApps(dbAgent.DisplayApps),
1363+
DisplayApps: convertDisplayApps(dbAgent.DisplayApps),
13641364
}
13651365
node := coordinator.Node(dbAgent.ID)
13661366
if node != nil {
@@ -1422,7 +1422,7 @@ func convertWorkspaceAgent(derpMap *tailcfg.DERPMap, coordinator tailnet.Coordin
14221422
return workspaceAgent, nil
14231423
}
14241424

1425-
func convertDefaultApps(apps []database.DisplayApp) []codersdk.DisplayApp {
1425+
func convertDisplayApps(apps []database.DisplayApp) []codersdk.DisplayApp {
14261426
if apps == nil {
14271427
return codersdk.DefaultApps
14281428
}
@@ -1432,6 +1432,8 @@ func convertDefaultApps(apps []database.DisplayApp) []codersdk.DisplayApp {
14321432
switch codersdk.DisplayApp(app) {
14331433
case codersdk.DisplayAppVSCodeDesktop, codersdk.DisplayAppVSCodeInsiders, codersdk.DisplayAppPortForward, codersdk.DisplayAppWebTerminal, codersdk.DisplayAppSSH:
14341434
dapps = append(dapps, codersdk.DisplayApp(app))
1435+
default:
1436+
fmt.Println("WTF: ", app)
14351437
}
14361438
}
14371439

coderd/workspaceagents_test.go

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,93 @@ func TestWorkspaceAgent(t *testing.T) {
174174
require.False(t, workspace.LatestBuild.Resources[0].Agents[0].Health.Healthy)
175175
require.NotEmpty(t, workspace.LatestBuild.Resources[0].Agents[0].Health.Reason)
176176
})
177+
178+
t.Run("DisplayApps", func(t *testing.T) {
179+
t.Parallel()
180+
client := coderdtest.New(t, &coderdtest.Options{
181+
IncludeProvisionerDaemon: true,
182+
})
183+
user := coderdtest.CreateFirstUser(t, client)
184+
authToken := uuid.NewString()
185+
tmpDir := t.TempDir()
186+
apps := &proto.DisplayApps{
187+
Vscode: true,
188+
VscodeInsiders: true,
189+
WebTerminal: true,
190+
PortForwardingHelper: true,
191+
SshHelper: true,
192+
}
193+
194+
echoResp := &echo.Responses{
195+
Parse: echo.ParseComplete,
196+
ProvisionPlan: echo.PlanComplete,
197+
ProvisionApply: []*proto.Response{{
198+
Type: &proto.Response_Apply{
199+
Apply: &proto.ApplyComplete{
200+
Resources: []*proto.Resource{{
201+
Name: "example",
202+
Type: "aws_instance",
203+
Agents: []*proto.Agent{{
204+
Id: uuid.NewString(),
205+
Directory: tmpDir,
206+
Auth: &proto.Agent_Token{
207+
Token: authToken,
208+
},
209+
DisplayApps: apps,
210+
},
211+
}},
212+
}},
213+
},
214+
}},
215+
}
216+
217+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, echoResp)
218+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
219+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
220+
workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
221+
coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
222+
223+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
224+
defer cancel()
225+
226+
workspace, err := client.Workspace(ctx, workspace.ID)
227+
require.NoError(t, err)
228+
agent, err := client.WorkspaceAgent(ctx, workspace.LatestBuild.Resources[0].Agents[0].ID)
229+
require.NoError(t, err)
230+
expectedApps := []codersdk.DisplayApp{
231+
codersdk.DisplayAppPortForward,
232+
codersdk.DisplayAppSSH,
233+
codersdk.DisplayAppVSCodeDesktop,
234+
codersdk.DisplayAppVSCodeInsiders,
235+
codersdk.DisplayAppWebTerminal,
236+
}
237+
require.ElementsMatch(t, expectedApps, agent.DisplayApps)
238+
239+
// Flips all the apps to false.
240+
apps.PortForwardingHelper = false
241+
apps.Vscode = false
242+
apps.VscodeInsiders = false
243+
apps.SshHelper = false
244+
apps.WebTerminal = false
245+
246+
version = coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, echoResp,
247+
func(req *codersdk.CreateTemplateVersionRequest) {
248+
req.TemplateID = template.ID
249+
})
250+
251+
err = client.UpdateActiveTemplateVersion(ctx, template.ID, codersdk.UpdateActiveTemplateVersion{
252+
ID: version.ID,
253+
})
254+
require.NoError(t, err)
255+
coderdtest.AwaitTemplateVersionJob(t, client, version.ID)
256+
// Creating another workspace is just easier.
257+
workspace = coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID)
258+
build := coderdtest.AwaitWorkspaceBuildJob(t, client, workspace.LatestBuild.ID)
259+
require.NoError(t, err)
260+
agent, err = client.WorkspaceAgent(ctx, build.Resources[0].Agents[0].ID)
261+
require.NoError(t, err)
262+
require.Len(t, agent.DisplayApps, 0)
263+
})
177264
}
178265

179266
func TestWorkspaceAgentStartupLogs(t *testing.T) {

codersdk/workspaceagents.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,11 @@ type WorkspaceAgentMetadata struct {
136136
type DisplayApp string
137137

138138
const (
139-
DisplayAppVSCodeDesktop DisplayApp = "vscode-desktop"
140-
DisplayAppVSCodeInsiders DisplayApp = "vscode-insiders"
141-
DisplayAppWebTerminal DisplayApp = "web-terminal"
142-
DisplayAppPortForward DisplayApp = "port-forward-helper"
143-
DisplayAppSSH DisplayApp = "ssh-helper"
139+
DisplayAppVSCodeDesktop DisplayApp = "vscode"
140+
DisplayAppVSCodeInsiders DisplayApp = "vscode_insiders"
141+
DisplayAppWebTerminal DisplayApp = "web_terminal"
142+
DisplayAppPortForward DisplayApp = "port_forwarding_helper"
143+
DisplayAppSSH DisplayApp = "ssh_helper"
144144
)
145145

146146
var DefaultApps = []DisplayApp{DisplayAppVSCodeDesktop, DisplayAppWebTerminal, DisplayAppPortForward, DisplayAppWebTerminal, DisplayAppSSH}

0 commit comments

Comments
 (0)