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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy