(t *testing.T)
| 2016 | } |
| 2017 | |
| 2018 | func 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) |
nothing calls this directly
no test coverage detected