(t *testing.T)
| 13242 | } |
| 13243 | |
| 13244 | func TestChatDebugRetentionDays(t *testing.T) { |
| 13245 | t.Parallel() |
| 13246 | ctx := testutil.Context(t, testutil.WaitLong) |
| 13247 | |
| 13248 | adminClient := newChatClient(t) |
| 13249 | firstUser := coderdtest.CreateFirstUser(t, adminClient.Client) |
| 13250 | memberClientRaw, _ := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID) |
| 13251 | memberClient := codersdk.NewExperimentalClient(memberClientRaw) |
| 13252 | |
| 13253 | // Default value is DefaultChatDebugRetentionDays when nothing has |
| 13254 | // been configured. |
| 13255 | resp, err := adminClient.GetChatDebugRetentionDays(ctx) |
| 13256 | require.NoError(t, err, "get default") |
| 13257 | require.Equal(t, codersdk.DefaultChatDebugRetentionDays, resp.DebugRetentionDays, "default should match DefaultChatDebugRetentionDays") |
| 13258 | |
| 13259 | // Admin can set debug retention days to 14. |
| 13260 | err = adminClient.UpdateChatDebugRetentionDays(ctx, codersdk.UpdateChatDebugRetentionDaysRequest{ |
| 13261 | DebugRetentionDays: 14, |
| 13262 | }) |
| 13263 | require.NoError(t, err, "admin set 14") |
| 13264 | |
| 13265 | resp, err = adminClient.GetChatDebugRetentionDays(ctx) |
| 13266 | require.NoError(t, err, "get after set") |
| 13267 | require.Equal(t, int32(14), resp.DebugRetentionDays, "should return 14") |
| 13268 | |
| 13269 | // Non-admin member can read the value. |
| 13270 | memberResp, err := memberClient.GetChatDebugRetentionDays(ctx) |
| 13271 | require.NoError(t, err, "member read") |
| 13272 | require.Equal(t, int32(14), memberResp.DebugRetentionDays, "member sees same value") |
| 13273 | |
| 13274 | // Non-admin member cannot write. |
| 13275 | err = memberClient.UpdateChatDebugRetentionDays(ctx, codersdk.UpdateChatDebugRetentionDaysRequest{DebugRetentionDays: 7}) |
| 13276 | requireSDKError(t, err, http.StatusForbidden) |
| 13277 | |
| 13278 | // Admin can disable chat debug retention purge by setting 0. |
| 13279 | err = adminClient.UpdateChatDebugRetentionDays(ctx, codersdk.UpdateChatDebugRetentionDaysRequest{ |
| 13280 | DebugRetentionDays: 0, |
| 13281 | }) |
| 13282 | require.NoError(t, err, "admin set 0") |
| 13283 | |
| 13284 | resp, err = adminClient.GetChatDebugRetentionDays(ctx) |
| 13285 | require.NoError(t, err, "get after zero") |
| 13286 | require.Equal(t, int32(0), resp.DebugRetentionDays, "should be 0 after disable") |
| 13287 | |
| 13288 | // Validation: negative value is rejected. |
| 13289 | err = adminClient.UpdateChatDebugRetentionDays(ctx, codersdk.UpdateChatDebugRetentionDaysRequest{ |
| 13290 | DebugRetentionDays: -1, |
| 13291 | }) |
| 13292 | requireSDKError(t, err, http.StatusBadRequest) |
| 13293 | |
| 13294 | // Validation: exceeding the 3650-day maximum is rejected. |
| 13295 | err = adminClient.UpdateChatDebugRetentionDays(ctx, codersdk.UpdateChatDebugRetentionDaysRequest{ |
| 13296 | DebugRetentionDays: 3651, // chatDebugRetentionDaysMaximum + 1; keep in sync with coderd/exp_chats.go. |
| 13297 | }) |
| 13298 | requireSDKError(t, err, http.StatusBadRequest) |
| 13299 | } |
| 13300 | |
| 13301 | func TestChatAutoArchiveDays(t *testing.T) { |
nothing calls this directly
no test coverage detected