X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/ba9faee0cd6c35020997794ef7bf134e8db12e96..2532718d5288e1a2586fe5716cc41bb2a0210e16:/responses_test.go?ds=sidebyside diff --git a/responses_test.go b/responses_test.go index de928bd..9a1355a 100644 --- a/responses_test.go +++ b/responses_test.go @@ -151,8 +151,12 @@ func TestClientRecordsEachCall(t *testing.T) { } client := newTestClient(t, server) - _, err := client.Create(t.Context(), testRequest()) + request := testRequest() + request.Node = &nodeKey{2, 5} + _, err := client.Create(t.Context(), request) require.NoError(t, err) + require.NotContains(t, server.Call(0).body, "node") + require.NotContains(t, string(server.Call(0).raw), "[2,5]") _, err = client.Create(t.Context(), testRequest()) require.ErrorContains(t, err, "HTTP 429") @@ -171,9 +175,15 @@ func TestClientRecordsEachCall(t *testing.T) { require.Equal(t, 400, records[0].CachedTokens) require.Equal(t, 7, records[0].OutputTokens) require.Equal(t, quota, records[0].Quota) + require.Equal(t, &[2]int{2, 5}, records[0].Node) + require.Equal(t, len("ok"), records[0].TextBytes) + require.Greater(t, records[0].Seconds, 0.0) require.Empty(t, records[0].Error) require.NotEmpty(t, records[0].Date) + require.Nil(t, records[1].Node) + require.Zero(t, records[1].TextBytes) + require.Equal(t, http.StatusTooManyRequests, records[1].Status) require.Equal(t, quota, records[1].Quota) require.Contains(t, records[1].Error, "HTTP 429") @@ -187,6 +197,24 @@ func TestClientRecordsEachCall(t *testing.T) { require.Equal(t, os.FileMode(0o600), info.Mode().Perm()) } +func TestClientRefusesCallsOverTheLimit(t *testing.T) { + server := newFakeResponses(t) + client := newTestClient(t, server) + client.LimitCalls(2) + + for range 2 { + require.False(t, client.LimitReached()) + _, err := client.Create(t.Context(), testRequest()) + require.NoError(t, err) + } + + require.True(t, client.LimitReached()) + _, err := client.Create(t.Context(), testRequest()) + require.ErrorIs(t, err, errCallLimit) + require.Equal(t, 2, server.Calls()) + require.Len(t, readUsage(t, client.usage.path), 2) +} + func TestClientFailsWhenTheResponseFails(t *testing.T) { testCases := []struct { name string