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

Function TestChatWorkspaceTTL

coderd/exp_chats_test.go:13099–13186  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

13097}
13098
13099func TestChatWorkspaceTTL(t *testing.T) {
13100 t.Parallel()
13101 ctx := testutil.Context(t, testutil.WaitLong)
13102
13103 adminClient := newChatClient(t)
13104 firstUser := coderdtest.CreateFirstUser(t, adminClient.Client)
13105 memberClientRaw, _ := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID)
13106 memberClient := codersdk.NewExperimentalClient(memberClientRaw)
13107 anonClient := codersdk.NewExperimentalClient(codersdk.New(adminClient.URL))
13108
13109 // Default value is 0 (disabled) when nothing has been configured.
13110 resp, err := adminClient.GetChatWorkspaceTTL(ctx)
13111 require.NoError(t, err, "get default")
13112 require.Equal(t, int64(0), resp.WorkspaceTTLMillis, "default should be 0")
13113
13114 // Admin can set a positive TTL (2h = 7_200_000 ms).
13115 err = adminClient.UpdateChatWorkspaceTTL(ctx, codersdk.UpdateChatWorkspaceTTLRequest{
13116 WorkspaceTTLMillis: 7_200_000,
13117 })
13118 require.NoError(t, err, "admin set 2h")
13119
13120 resp, err = adminClient.GetChatWorkspaceTTL(ctx)
13121 require.NoError(t, err, "get after set")
13122 require.Equal(t, int64(7_200_000), resp.WorkspaceTTLMillis, "should return 7200000 ms (2h)")
13123
13124 // Non-admin can read the value.
13125 resp, err = memberClient.GetChatWorkspaceTTL(ctx)
13126 require.NoError(t, err, "member get")
13127 require.Equal(t, int64(7_200_000), resp.WorkspaceTTLMillis, "member should see same value")
13128
13129 // Admin can set back to zero (disabled / template default).
13130 err = adminClient.UpdateChatWorkspaceTTL(ctx, codersdk.UpdateChatWorkspaceTTLRequest{
13131 WorkspaceTTLMillis: 0,
13132 })
13133 require.NoError(t, err, "admin set 0")
13134
13135 resp, err = adminClient.GetChatWorkspaceTTL(ctx)
13136 require.NoError(t, err, "get after zero")
13137 require.Equal(t, int64(0), resp.WorkspaceTTLMillis, "should be 0 after reset")
13138
13139 // Non-admin write is forbidden.
13140 err = memberClient.UpdateChatWorkspaceTTL(ctx, codersdk.UpdateChatWorkspaceTTLRequest{
13141 WorkspaceTTLMillis: 3_600_000,
13142 })
13143 requireSDKError(t, err, http.StatusForbidden)
13144
13145 // Unauthenticated read is rejected.
13146 _, err = anonClient.GetChatWorkspaceTTL(ctx)
13147 var sdkErr *codersdk.Error
13148 require.ErrorAs(t, err, &sdkErr, "anon get")
13149 require.Equal(t, http.StatusUnauthorized, sdkErr.StatusCode(), "anon should get 401")
13150
13151 // Validation: negative duration.
13152 err = adminClient.UpdateChatWorkspaceTTL(ctx, codersdk.UpdateChatWorkspaceTTLRequest{
13153 WorkspaceTTLMillis: -3_600_000,
13154 })
13155 requireSDKError(t, err, http.StatusBadRequest)
13156

Callers

nothing calls this directly

Calls 12

GetChatWorkspaceTTLMethod · 0.95
StatusCodeMethod · 0.95
ContextFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
NewExperimentalClientFunction · 0.92
NewFunction · 0.92
requireSDKErrorFunction · 0.85
newChatClientFunction · 0.70
GetChatWorkspaceTTLMethod · 0.65
EqualMethod · 0.45

Tested by

no test coverage detected