(t *testing.T)
| 13299 | } |
| 13300 | |
| 13301 | func TestChatAutoArchiveDays(t *testing.T) { |
| 13302 | t.Parallel() |
| 13303 | ctx := testutil.Context(t, testutil.WaitLong) |
| 13304 | |
| 13305 | adminClient := newChatClient(t) |
| 13306 | firstUser := coderdtest.CreateFirstUser(t, adminClient.Client) |
| 13307 | memberClientRaw, _ := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID) |
| 13308 | memberClient := codersdk.NewExperimentalClient(memberClientRaw) |
| 13309 | |
| 13310 | // Default value is DefaultChatAutoArchiveDays (0, disabled) when |
| 13311 | // nothing has been configured. |
| 13312 | resp, err := adminClient.GetChatAutoArchiveDays(ctx) |
| 13313 | require.NoError(t, err, "get default") |
| 13314 | require.Equal(t, codersdk.DefaultChatAutoArchiveDays, resp.AutoArchiveDays, "default should match DefaultChatAutoArchiveDays") |
| 13315 | |
| 13316 | // Admin can set auto-archive days to 45. |
| 13317 | err = adminClient.UpdateChatAutoArchiveDays(ctx, codersdk.UpdateChatAutoArchiveDaysRequest{ |
| 13318 | AutoArchiveDays: 45, |
| 13319 | }) |
| 13320 | require.NoError(t, err, "admin set 45") |
| 13321 | |
| 13322 | resp, err = adminClient.GetChatAutoArchiveDays(ctx) |
| 13323 | require.NoError(t, err, "get after set") |
| 13324 | require.Equal(t, int32(45), resp.AutoArchiveDays, "should return 45") |
| 13325 | |
| 13326 | // Non-admin member can read the value (same as retention days). |
| 13327 | memberResp, err := memberClient.GetChatAutoArchiveDays(ctx) |
| 13328 | require.NoError(t, err, "member read") |
| 13329 | require.Equal(t, int32(45), memberResp.AutoArchiveDays, "member sees same value") |
| 13330 | |
| 13331 | // Non-admin member cannot write. |
| 13332 | err = memberClient.UpdateChatAutoArchiveDays(ctx, codersdk.UpdateChatAutoArchiveDaysRequest{AutoArchiveDays: 7}) |
| 13333 | requireSDKError(t, err, http.StatusForbidden) |
| 13334 | |
| 13335 | // Admin can disable auto-archive by setting 0. |
| 13336 | err = adminClient.UpdateChatAutoArchiveDays(ctx, codersdk.UpdateChatAutoArchiveDaysRequest{ |
| 13337 | AutoArchiveDays: 0, |
| 13338 | }) |
| 13339 | require.NoError(t, err, "admin set 0") |
| 13340 | |
| 13341 | resp, err = adminClient.GetChatAutoArchiveDays(ctx) |
| 13342 | require.NoError(t, err, "get after zero") |
| 13343 | require.Equal(t, int32(0), resp.AutoArchiveDays, "should be 0 after disable") |
| 13344 | |
| 13345 | // An aggressive value of 1 is accepted (no pre-warn to break). |
| 13346 | err = adminClient.UpdateChatAutoArchiveDays(ctx, codersdk.UpdateChatAutoArchiveDaysRequest{ |
| 13347 | AutoArchiveDays: 1, |
| 13348 | }) |
| 13349 | require.NoError(t, err, "admin set 1") |
| 13350 | |
| 13351 | // Validation: negative value is rejected. |
| 13352 | err = adminClient.UpdateChatAutoArchiveDays(ctx, codersdk.UpdateChatAutoArchiveDaysRequest{ |
| 13353 | AutoArchiveDays: -1, |
| 13354 | }) |
| 13355 | requireSDKError(t, err, http.StatusBadRequest) |
| 13356 | |
| 13357 | // Validation: exceeding the 3650-day maximum is rejected. |
| 13358 | err = adminClient.UpdateChatAutoArchiveDays(ctx, codersdk.UpdateChatAutoArchiveDaysRequest{ |
nothing calls this directly
no test coverage detected