MCPcopy Index your code
hub / github.com/coder/coder / TestExpTaskList_OwnerCanListOthers

Function TestExpTaskList_OwnerCanListOthers

cli/task_list_test.go:206–279  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

204}
205
206func TestExpTaskList_OwnerCanListOthers(t *testing.T) {
207 t.Parallel()
208
209 // Quiet logger to reduce noise.
210 quiet := slog.Make(sloghuman.Sink(io.Discard))
211 ownerClient, db := coderdtest.NewWithDatabase(t, &coderdtest.Options{Logger: &quiet})
212 owner := coderdtest.CreateFirstUser(t, ownerClient)
213
214 // Create two additional members in the owner's organization.
215 _, memberAUser := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
216 _, memberBUser := coderdtest.CreateAnotherUser(t, ownerClient, owner.OrganizationID)
217
218 // Seed an AI task for member A and B.
219 _ = makeAITask(t, db, owner.OrganizationID, owner.UserID, memberAUser.ID, database.WorkspaceTransitionStart, "member-A-task")
220 _ = makeAITask(t, db, owner.OrganizationID, owner.UserID, memberBUser.ID, database.WorkspaceTransitionStart, "member-B-task")
221
222 t.Run("OwnerListsSpecificUserWithUserFlag_JSON", func(t *testing.T) {
223 t.Parallel()
224
225 // As the owner, list only member A tasks.
226 inv, root := clitest.New(t, "task", "list", "--user", memberAUser.Username, "--output=json")
227 //nolint:gocritic // Owner client is intended here to allow member tasks to be listed.
228 clitest.SetupConfig(t, ownerClient, root)
229
230 var stdout bytes.Buffer
231 inv.Stdout = &stdout
232
233 ctx := testutil.Context(t, testutil.WaitShort)
234
235 err := inv.WithContext(ctx).Run()
236 require.NoError(t, err)
237
238 var tasks []codersdk.Task
239 require.NoError(t, json.Unmarshal(stdout.Bytes(), &tasks))
240
241 // At least one task to belong to member A.
242 require.NotEmpty(t, tasks, "expected at least one task for member A")
243 // All tasks should belong to member A.
244 for _, task := range tasks {
245 require.Equal(t, memberAUser.ID, task.OwnerID, "expected only member A tasks")
246 }
247 })
248
249 t.Run("OwnerListsAllWithAllFlag_JSON", func(t *testing.T) {
250 t.Parallel()
251
252 // As the owner, list all tasks to verify both member tasks are present.
253 // Use JSON output to reliably validate filtering.
254 inv, root := clitest.New(t, "task", "list", "--all", "--output=json")
255 //nolint:gocritic // Owner client is intended here to allow all tasks to be listed.
256 clitest.SetupConfig(t, ownerClient, root)
257
258 var stdout bytes.Buffer
259 inv.Stdout = &stdout
260
261 ctx := testutil.Context(t, testutil.WaitShort)
262
263 err := inv.WithContext(ctx).Run()

Callers

nothing calls this directly

Calls 14

NewWithDatabaseFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
NewFunction · 0.92
SetupConfigFunction · 0.92
ContextFunction · 0.92
FindFunction · 0.92
makeAITaskFunction · 0.85
WithContextMethod · 0.80
NotEmptyMethod · 0.80
RunMethod · 0.65
UnmarshalMethod · 0.45

Tested by

no test coverage detected