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

Function TestStreamChat

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

Source from the content-addressed store, hash-verified

8121}
8122
8123func TestStreamChat(t *testing.T) {
8124 t.Parallel()
8125
8126 t.Run("Success", func(t *testing.T) {
8127 t.Parallel()
8128
8129 ctx := testutil.Context(t, testutil.WaitLong)
8130 client := newChatClient(t)
8131 firstUser := coderdtest.CreateFirstUser(t, client.Client)
8132 _ = createChatModelConfig(t, client)
8133
8134 const initialMessage = "stream chat route initial message"
8135 chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{
8136 OrganizationID: firstUser.OrganizationID,
8137 Content: []codersdk.ChatInputPart{
8138 {
8139 Type: codersdk.ChatInputPartTypeText,
8140 Text: initialMessage,
8141 },
8142 },
8143 })
8144 require.NoError(t, err)
8145
8146 events, closer, err := client.StreamChat(ctx, chat.ID, nil)
8147 require.NoError(t, err)
8148 defer closer.Close()
8149
8150 hasTextPart := func(parts []codersdk.ChatMessagePart, want string) bool {
8151 for _, part := range parts {
8152 if part.Type == codersdk.ChatMessagePartTypeText && part.Text == want {
8153 return true
8154 }
8155 }
8156 return false
8157 }
8158
8159 foundInitialUserMessage := false
8160 for !foundInitialUserMessage {
8161 select {
8162 case <-ctx.Done():
8163 require.FailNow(t, "timed out waiting for expected stream chat event")
8164 case event, ok := <-events:
8165 require.True(t, ok, "stream closed before expected event")
8166 require.Equal(t, chat.ID, event.ChatID)
8167 require.NotEqual(t, codersdk.ChatStreamEventTypeError, event.Type)
8168
8169 if event.Type == codersdk.ChatStreamEventTypeMessage &&
8170 event.Message != nil &&
8171 event.Message.Role == codersdk.ChatMessageRoleUser &&
8172 hasTextPart(event.Message.Content, initialMessage) {
8173 foundInitialUserMessage = true
8174 }
8175 }
8176 }
8177 })
8178
8179 t.Run("Unauthenticated", func(t *testing.T) {
8180 t.Parallel()

Callers

nothing calls this directly

Calls 14

ContextFunction · 0.92
CreateFirstUserFunction · 0.92
NewFunction · 0.92
FailNowMethod · 0.80
newChatClientFunction · 0.70
createChatModelConfigFunction · 0.70
RunMethod · 0.65
CreateChatMethod · 0.65
StreamChatMethod · 0.65
CloseMethod · 0.65
NewMethod · 0.65
DoneMethod · 0.45

Tested by

no test coverage detected