(t *testing.T)
| 12809 | } |
| 12810 | |
| 12811 | func TestChatAdvisorConfig_MemberCannotWriteButCanRead(t *testing.T) { |
| 12812 | t.Parallel() |
| 12813 | |
| 12814 | ctx := testutil.Context(t, testutil.WaitLong) |
| 12815 | adminClient := newChatClient(t) |
| 12816 | firstUser := coderdtest.CreateFirstUser(t, adminClient.Client) |
| 12817 | memberClientRaw, _ := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID) |
| 12818 | memberClient := codersdk.NewExperimentalClient(memberClientRaw) |
| 12819 | |
| 12820 | want := codersdk.AdvisorConfig{ |
| 12821 | Enabled: true, |
| 12822 | MaxUsesPerRun: 2, |
| 12823 | MaxOutputTokens: 256, |
| 12824 | } |
| 12825 | |
| 12826 | err := adminClient.UpdateChatAdvisorConfig(ctx, want) |
| 12827 | require.NoError(t, err) |
| 12828 | |
| 12829 | resp, err := adminClient.GetChatAdvisorConfig(ctx) |
| 12830 | require.NoError(t, err) |
| 12831 | require.Equal(t, want, resp) |
| 12832 | |
| 12833 | err = memberClient.UpdateChatAdvisorConfig(ctx, codersdk.UpdateAdvisorConfigRequest{ |
| 12834 | Enabled: true, |
| 12835 | }) |
| 12836 | requireSDKError(t, err, http.StatusForbidden) |
| 12837 | |
| 12838 | // Members must still be able to read the advisor config: the dbauthz |
| 12839 | // layer only requires an authenticated actor, and the GET handler has |
| 12840 | // no RBAC check because the admin settings UI and chatd runtime are |
| 12841 | // the planned consumers. This assertion pins that behavior so a |
| 12842 | // future RBAC tightening is a deliberate change. |
| 12843 | memberResp, err := memberClient.GetChatAdvisorConfig(ctx) |
| 12844 | require.NoError(t, err) |
| 12845 | require.Equal(t, want, memberResp) |
| 12846 | |
| 12847 | resp, err = adminClient.GetChatAdvisorConfig(ctx) |
| 12848 | require.NoError(t, err) |
| 12849 | require.Equal(t, want, resp) |
| 12850 | } |
| 12851 | |
| 12852 | func TestChatAdvisorConfig_NegativeMaxUsesPerRunRejected(t *testing.T) { |
| 12853 | t.Parallel() |
nothing calls this directly
no test coverage detected