Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 720f981

Browse files
committed
chore(coderd): improve tests for patchWorkspaceAgentAppStatus
1 parent 968abbb commit 720f981

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)