(t *testing.T)
| 204 | } |
| 205 | |
| 206 | func 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() |
nothing calls this directly
no test coverage detected