"path/filepath"
"sync"
"testing"
+ "time"
"github.com/stretchr/testify/require"
)
require.Len(t, body["tools"], 1)
}
+func TestClientSendsTheSessionHeaderToChatGPT(t *testing.T) {
+ login := newFakeAuth(t)
+ auth := newTestAuth(t, login)
+ writeTestTokens(t, auth, login.token(time.Hour), "refresh-0")
+
+ testCases := []struct {
+ name string
+ auth authorizer
+ want string
+ }{
+ {
+ name: "ChatGPT backend",
+ auth: auth,
+ want: "agent-key",
+ },
+ {
+ name: "OpenAI API",
+ auth: apiKey(testKey),
+ want: "",
+ },
+ }
+
+ for _, tc := range testCases {
+ t.Run(tc.name, func(t *testing.T) {
+ server := newFakeResponses(t)
+ client := newClient(server.URL, tc.auth, "agent-key", filepath.Join(t.TempDir(), "usage.jsonl"))
+ _, err := client.Create(t.Context(), testRequest())
+ require.NoError(t, err)
+
+ call := server.Call(0)
+ require.Equal(t, tc.want, call.header.Get("session_id"))
+ require.Equal(t, "agent-key", call.body["prompt_cache_key"])
+ })
+ }
+}
+
func TestClientReadsTheStream(t *testing.T) {
server := newFakeResponses(t)
server.reply = func(w http.ResponseWriter, call fakeCall) {