From da6e22f9237928848b419d7538c3ede67b2892a1 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 4 Oct 2023 14:37:34 +0100 Subject: [PATCH 1/2] add failing unit test --- coderd/workspaceagents_test.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/coderd/workspaceagents_test.go b/coderd/workspaceagents_test.go index 014a2b941d33f..687bfe42759c2 100644 --- a/coderd/workspaceagents_test.go +++ b/coderd/workspaceagents_test.go @@ -65,16 +65,18 @@ func TestWorkspaceAgent(t *testing.T) { }) template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID) coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID) - workspace := coderdtest.CreateWorkspace(t, client, user.OrganizationID, template.ID) - coderdtest.AwaitWorkspaceBuildJobCompleted(t, client, workspace.LatestBuild.ID) + + anotherClient, _ := coderdtest.CreateAnotherUser(t, client, user.OrganizationID) + workspace := coderdtest.CreateWorkspace(t, anotherClient, user.OrganizationID, template.ID) + coderdtest.AwaitWorkspaceBuildJobCompleted(t, anotherClient, workspace.LatestBuild.ID) ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong) defer cancel() - workspace, err := client.Workspace(ctx, workspace.ID) + workspace, err := anotherClient.Workspace(ctx, workspace.ID) require.NoError(t, err) require.Equal(t, tmpDir, workspace.LatestBuild.Resources[0].Agents[0].Directory) - _, err = client.WorkspaceAgent(ctx, workspace.LatestBuild.Resources[0].Agents[0].ID) + _, err = anotherClient.WorkspaceAgent(ctx, workspace.LatestBuild.Resources[0].Agents[0].ID) require.NoError(t, err) require.True(t, workspace.LatestBuild.Resources[0].Agents[0].Health.Healthy) }) From 59c4b5bbae43c1efde8e6647a4038f14ee772e60 Mon Sep 17 00:00:00 2001 From: Cian Johnston Date: Wed, 4 Oct 2023 15:20:35 +0100 Subject: [PATCH 2/2] fetch log sources and agent scripts using system auth ctx --- coderd/workspaceagents.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/coderd/workspaceagents.go b/coderd/workspaceagents.go index a3b624dc376ce..6c8eed5734be1 100644 --- a/coderd/workspaceagents.go +++ b/coderd/workspaceagents.go @@ -68,11 +68,13 @@ func (api *API) workspaceAgent(rw http.ResponseWriter, r *http.Request) { return err }) eg.Go(func() (err error) { - scripts, err = api.Database.GetWorkspaceAgentScriptsByAgentIDs(ctx, []uuid.UUID{workspaceAgent.ID}) + //nolint:gocritic // TODO: can we make this not require system restricted? + scripts, err = api.Database.GetWorkspaceAgentScriptsByAgentIDs(dbauthz.AsSystemRestricted(ctx), []uuid.UUID{workspaceAgent.ID}) return err }) eg.Go(func() (err error) { - logSources, err = api.Database.GetWorkspaceAgentLogSourcesByAgentIDs(ctx, []uuid.UUID{workspaceAgent.ID}) + //nolint:gocritic // TODO: can we make this not require system restricted? + logSources, err = api.Database.GetWorkspaceAgentLogSourcesByAgentIDs(dbauthz.AsSystemRestricted(ctx), []uuid.UUID{workspaceAgent.ID}) return err }) err := eg.Wait()