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

Function TestAIBridgeGetSessionThreads

enterprise/coderd/aibridge_test.go:2018–2514  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2016}
2017
2018func TestAIBridgeGetSessionThreads(t *testing.T) {
2019 t.Parallel()
2020
2021 t.Run("NotFound", func(t *testing.T) {
2022 t.Parallel()
2023 ownerClient, firstUser := coderdenttest.New(t, aibridgeOpts(t))
2024 memberClient, _ := coderdtest.CreateAnotherUser(t, ownerClient, firstUser.OrganizationID)
2025
2026 ctx := testutil.Context(t, testutil.WaitLong)
2027 _, err := memberClient.AIBridgeGetSessionThreads(ctx, "nonexistent-session-id", uuid.Nil, uuid.Nil, 0)
2028 var sdkErr *codersdk.Error
2029 require.ErrorAs(t, err, &sdkErr)
2030 require.Equal(t, http.StatusNotFound, sdkErr.StatusCode())
2031 })
2032
2033 t.Run("LookupByClientSessionID", func(t *testing.T) {
2034 t.Parallel()
2035 client, db, firstUser := coderdenttest.NewWithDatabase(t, aibridgeOpts(t))
2036 ctx := testutil.Context(t, testutil.WaitLong)
2037
2038 now := dbtime.Now()
2039 endedAt := now.Add(time.Minute)
2040 dbgen.AIBridgeInterception(t, db, database.InsertAIBridgeInterceptionParams{
2041 InitiatorID: firstUser.UserID,
2042 Provider: "anthropic",
2043 Model: "claude-4",
2044 StartedAt: now,
2045 ClientSessionID: sql.NullString{String: "my-session", Valid: true},
2046 }, &endedAt)
2047
2048 res, err := client.AIBridgeGetSessionThreads(ctx, "my-session", uuid.Nil, uuid.Nil, 0)
2049 require.NoError(t, err)
2050 require.Equal(t, "my-session", res.ID)
2051 require.Len(t, res.Threads, 1)
2052 require.Equal(t, "claude-4", res.Threads[0].Model)
2053 require.Equal(t, "anthropic", res.Threads[0].Provider)
2054 })
2055
2056 t.Run("LookupByInterceptionUUID", func(t *testing.T) {
2057 t.Parallel()
2058 client, db, firstUser := coderdenttest.NewWithDatabase(t, aibridgeOpts(t))
2059 ctx := testutil.Context(t, testutil.WaitLong)
2060
2061 now := dbtime.Now()
2062 endedAt := now.Add(time.Minute)
2063 i1 := dbgen.AIBridgeInterception(t, db, database.InsertAIBridgeInterceptionParams{
2064 InitiatorID: firstUser.UserID,
2065 Provider: "openai",
2066 Model: "gpt-4",
2067 StartedAt: now,
2068 CredentialKind: database.CredentialKindByok,
2069 CredentialHint: "sk-a...efgh",
2070 }, &endedAt)
2071
2072 // When no client session ID is set, the interception ID becomes the session identifier.
2073 res, err := client.AIBridgeGetSessionThreads(ctx, i1.ID.String(), uuid.Nil, uuid.Nil, 0)
2074 require.NoError(t, err)
2075 require.Equal(t, i1.ID.String(), res.ID)

Callers

nothing calls this directly

Calls 15

StatusCodeMethod · 0.95
NewFunction · 0.92
CreateAnotherUserFunction · 0.92
ContextFunction · 0.92
NewWithDatabaseFunction · 0.92
NowFunction · 0.92
AIBridgeInterceptionFunction · 0.92
AIBridgeUserPromptFunction · 0.92
AIBridgeTokenUsageFunction · 0.92
AIBridgeToolUsageFunction · 0.92
AIBridgeModelThoughtFunction · 0.92
aibridgeOptsFunction · 0.85

Tested by

no test coverage detected