Skip to content

Commit def3fcb

Browse files
committed
chore(coderd): improve tests for patchWorkspaceAgentAppStatus
1 parent 5b30ea0 commit def3fcb

File tree

2 files changed

+63
-21
lines changed

2 files changed

+63
-21
lines changed

coderd/workspaceagents.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,9 +338,9 @@ func (api *API) patchWorkspaceAgentAppStatus(rw http.ResponseWriter, r *http.Req
338338
Slug: req.AppSlug,
339339
})
340340
if err != nil {
341-
httpapi.Write(ctx, rw, http.StatusInternalServerError, codersdk.Response{
341+
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
342342
Message: "Failed to get workspace app.",
343-
Detail: err.Error(),
343+
Detail: fmt.Sprintf("No app found with slug %q", req.AppSlug),
344344
})
345345
return
346346
}

coderd/workspaceagents_test.go

Lines changed: 61 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -341,27 +341,27 @@ func TestWorkspaceAgentLogs(t *testing.T) {
341341

342342
func TestWorkspaceAgentAppStatus(t *testing.T) {
343343
t.Parallel()
344-
t.Run("Success", func(t *testing.T) {
345-
t.Parallel()
346-
ctx := testutil.Context(t, testutil.WaitMedium)
347-
client, db := coderdtest.NewWithDatabase(t, nil)
348-
user := coderdtest.CreateFirstUser(t, client)
349-
client, user2 := coderdtest.CreateAnotherUser(t, client, user.OrganizationID)
344+
ctx := testutil.Context(t, testutil.WaitMedium)
345+
client, db := coderdtest.NewWithDatabase(t, nil)
346+
user := coderdtest.CreateFirstUser(t, client)
347+
client, user2 := coderdtest.CreateAnotherUser(t, client, user.OrganizationID)
350348

351-
r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{
352-
OrganizationID: user.OrganizationID,
353-
OwnerID: user2.ID,
354-
}).WithAgent(func(a []*proto.Agent) []*proto.Agent {
355-
a[0].Apps = []*proto.App{
356-
{
357-
Slug: "vscode",
358-
},
359-
}
360-
return a
361-
}).Do()
349+
r := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{
350+
OrganizationID: user.OrganizationID,
351+
OwnerID: user2.ID,
352+
}).WithAgent(func(a []*proto.Agent) []*proto.Agent {
353+
a[0].Apps = []*proto.App{
354+
{
355+
Slug: "vscode",
356+
},
357+
}
358+
return a
359+
}).Do()
362360

363-
agentClient := agentsdk.New(client.URL)
364-
agentClient.SetSessionToken(r.AgentToken)
361+
agentClient := agentsdk.New(client.URL)
362+
agentClient.SetSessionToken(r.AgentToken)
363+
t.Run("Success", func(t *testing.T) {
364+
t.Parallel()
365365
err := agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{
366366
AppSlug: "vscode",
367367
Message: "testing",
@@ -382,6 +382,48 @@ func TestWorkspaceAgentAppStatus(t *testing.T) {
382382
require.Empty(t, agent.Apps[0].Statuses[0].Icon)
383383
require.False(t, agent.Apps[0].Statuses[0].NeedsUserAttention)
384384
})
385+
386+
t.Run("FailUnknownApp", func(t *testing.T) {
387+
t.Parallel()
388+
err := agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{
389+
AppSlug: "unknown",
390+
Message: "testing",
391+
URI: "https://example.com",
392+
State: codersdk.WorkspaceAppStatusStateComplete,
393+
})
394+
require.ErrorContains(t, err, "No app found with slug")
395+
var sdkErr *codersdk.Error
396+
require.ErrorAs(t, err, &sdkErr)
397+
require.Equal(t, http.StatusBadRequest, sdkErr.StatusCode())
398+
})
399+
400+
t.Run("FailUnknownState", func(t *testing.T) {
401+
t.Parallel()
402+
err := agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{
403+
AppSlug: "vscode",
404+
Message: "testing",
405+
URI: "https://example.com",
406+
State: "unknown",
407+
})
408+
require.ErrorContains(t, err, "Invalid state")
409+
var sdkErr *codersdk.Error
410+
require.ErrorAs(t, err, &sdkErr)
411+
require.Equal(t, http.StatusBadRequest, sdkErr.StatusCode())
412+
})
413+
414+
t.Run("FailTooLong", func(t *testing.T) {
415+
t.Parallel()
416+
err := agentClient.PatchAppStatus(ctx, agentsdk.PatchAppStatus{
417+
AppSlug: "vscode",
418+
Message: strings.Repeat("a", 161),
419+
URI: "https://example.com",
420+
State: codersdk.WorkspaceAppStatusStateComplete,
421+
})
422+
require.ErrorContains(t, err, "Message is too long")
423+
var sdkErr *codersdk.Error
424+
require.ErrorAs(t, err, &sdkErr)
425+
require.Equal(t, http.StatusBadRequest, sdkErr.StatusCode())
426+
})
385427
}
386428

387429
func TestWorkspaceAgentConnectRPC(t *testing.T) {

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