(t *testing.T)
| 13186 | } |
| 13187 | |
| 13188 | func TestChatRetentionDays(t *testing.T) { |
| 13189 | t.Parallel() |
| 13190 | ctx := testutil.Context(t, testutil.WaitLong) |
| 13191 | |
| 13192 | adminClient := newChatClient(t) |
| 13193 | firstUser := coderdtest.CreateFirstUser(t, adminClient.Client) |
| 13194 | memberClientRaw, _ := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID) |
| 13195 | memberClient := codersdk.NewExperimentalClient(memberClientRaw) |
| 13196 | |
| 13197 | // Default value is 30 (days) when nothing has been configured. |
| 13198 | resp, err := adminClient.GetChatRetentionDays(ctx) |
| 13199 | require.NoError(t, err, "get default") |
| 13200 | require.Equal(t, int32(30), resp.RetentionDays, "default should be 30") |
| 13201 | |
| 13202 | // Admin can set retention days to 90. |
| 13203 | err = adminClient.UpdateChatRetentionDays(ctx, codersdk.UpdateChatRetentionDaysRequest{ |
| 13204 | RetentionDays: 90, |
| 13205 | }) |
| 13206 | require.NoError(t, err, "admin set 90") |
| 13207 | |
| 13208 | resp, err = adminClient.GetChatRetentionDays(ctx) |
| 13209 | require.NoError(t, err, "get after set") |
| 13210 | require.Equal(t, int32(90), resp.RetentionDays, "should return 90") |
| 13211 | |
| 13212 | // Non-admin member can read the value. |
| 13213 | resp, err = memberClient.GetChatRetentionDays(ctx) |
| 13214 | require.NoError(t, err, "member get") |
| 13215 | require.Equal(t, int32(90), resp.RetentionDays, "member should see same value") |
| 13216 | |
| 13217 | // Non-admin member cannot write. |
| 13218 | err = memberClient.UpdateChatRetentionDays(ctx, codersdk.UpdateChatRetentionDaysRequest{RetentionDays: 7}) |
| 13219 | requireSDKError(t, err, http.StatusForbidden) |
| 13220 | |
| 13221 | // Admin can disable purge by setting 0. |
| 13222 | err = adminClient.UpdateChatRetentionDays(ctx, codersdk.UpdateChatRetentionDaysRequest{ |
| 13223 | RetentionDays: 0, |
| 13224 | }) |
| 13225 | require.NoError(t, err, "admin set 0") |
| 13226 | |
| 13227 | resp, err = adminClient.GetChatRetentionDays(ctx) |
| 13228 | require.NoError(t, err, "get after zero") |
| 13229 | require.Equal(t, int32(0), resp.RetentionDays, "should be 0 after disable") |
| 13230 | |
| 13231 | // Validation: negative value is rejected. |
| 13232 | err = adminClient.UpdateChatRetentionDays(ctx, codersdk.UpdateChatRetentionDaysRequest{ |
| 13233 | RetentionDays: -1, |
| 13234 | }) |
| 13235 | requireSDKError(t, err, http.StatusBadRequest) |
| 13236 | |
| 13237 | // Validation: exceeding the 3650-day maximum is rejected. |
| 13238 | err = adminClient.UpdateChatRetentionDays(ctx, codersdk.UpdateChatRetentionDaysRequest{ |
| 13239 | RetentionDays: 3651, // retentionDaysMaximum + 1; keep in sync with coderd/exp_chats.go. |
| 13240 | }) |
| 13241 | requireSDKError(t, err, http.StatusBadRequest) |
| 13242 | } |
| 13243 | |
| 13244 | func TestChatDebugRetentionDays(t *testing.T) { |
| 13245 | t.Parallel() |
nothing calls this directly
no test coverage detected