(t *testing.T)
| 107 | } |
| 108 | |
| 109 | func TestSessionTracking(t *testing.T) { |
| 110 | t.Parallel() |
| 111 | logger := slog.New(slog.NewTextHandler(os.Stderr, nil)) |
| 112 | mockHTTP := NewMockHTTPClient() |
| 113 | client := newClient(t.Context(), logger, true, true, "test-version", mockHTTP.Client) |
| 114 | |
| 115 | client.endpoint = "https://test-session-tracking.com/api" |
| 116 | client.apiKey = "test-session-key" |
| 117 | client.header = "test-header" |
| 118 | |
| 119 | ctx := t.Context() |
| 120 | |
| 121 | sessionID := client.RecordSessionStart(ctx, "test-agent", "test-session-id") |
| 122 | assert.NotEmpty(t, sessionID) |
| 123 | |
| 124 | // Record some activity |
| 125 | client.RecordToolCall(ctx, "test-tool", "session-id", "agent-name", time.Millisecond, nil) |
| 126 | client.RecordTokenUsage(ctx, "test-model", 100, 50, 0.5) |
| 127 | |
| 128 | // End session |
| 129 | client.RecordSessionEnd(ctx) |
| 130 | |
| 131 | // Multiple ends should be safe |
| 132 | client.RecordSessionEnd(ctx) |
| 133 | |
| 134 | require.Eventually(t, func() bool { |
| 135 | return mockHTTP.GetRequestCount() > 0 |
| 136 | }, time.Second, 5*time.Millisecond, "Expected HTTP requests to be made for session tracking events") |
| 137 | |
| 138 | requestCount := mockHTTP.GetRequestCount() |
| 139 | t.Logf("Session tracking HTTP requests captured: %d", requestCount) |
| 140 | |
| 141 | requests := mockHTTP.GetRequests() |
| 142 | for i, req := range requests { |
| 143 | assert.Equal(t, http.MethodPost, req.Method, "Request %d: Expected POST method", i) |
| 144 | assert.Equal(t, "test-session-key", req.Header.Get("test-header"), "Request %d: Expected test-header test-session-key", i) |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | func TestCommandTracking(t *testing.T) { |
| 149 | t.Parallel() |
nothing calls this directly
no test coverage detected