| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package helper
- import (
- "bytes"
- "io"
- "net/http"
- "net/http/httptest"
- "testing"
- "github.com/QuantumNous/new-api/common"
- "github.com/QuantumNous/new-api/dto"
- relaycommon "github.com/QuantumNous/new-api/relay/common"
- "github.com/gin-gonic/gin"
- "github.com/samber/lo"
- "github.com/stretchr/testify/require"
- "github.com/tidwall/gjson"
- )
- func TestResolveIncomingBillingExprRequestInput(t *testing.T) {
- gin.SetMode(gin.TestMode)
- recorder := httptest.NewRecorder()
- ctx, _ := gin.CreateTestContext(recorder)
- ctx.Request = httptest.NewRequest(http.MethodPost, "/v1/chat/completions", nil)
- ctx.Request.Header.Set("Content-Type", "application/json")
- body := []byte(`{"service_tier":"fast"}`)
- ctx.Request.Body = io.NopCloser(bytes.NewReader(body))
- ctx.Set(common.KeyRequestBody, body)
- info := &relaycommon.RelayInfo{
- RequestHeaders: map[string]string{"Content-Type": "application/json"},
- }
- input, err := ResolveIncomingBillingExprRequestInput(ctx, info)
- require.NoError(t, err)
- require.Equal(t, body, input.Body)
- require.Equal(t, "application/json", input.Headers["Content-Type"])
- }
- func TestBuildBillingExprRequestInputFromRequest(t *testing.T) {
- request := &dto.GeneralOpenAIRequest{
- Model: "gemini-3.1-pro-preview",
- Stream: lo.ToPtr(true),
- Messages: []dto.Message{
- {
- Role: "user",
- Content: "hi",
- },
- },
- MaxTokens: lo.ToPtr(uint(3000)),
- }
- input, err := BuildBillingExprRequestInputFromRequest(request, map[string]string{
- "Content-Type": "application/json",
- "X-Test": "1",
- })
- require.NoError(t, err)
- require.Equal(t, "application/json", input.Headers["Content-Type"])
- require.Equal(t, "1", input.Headers["X-Test"])
- require.True(t, gjson.GetBytes(input.Body, "stream").Bool())
- require.Equal(t, "user", gjson.GetBytes(input.Body, "messages.0.role").String())
- require.Equal(t, float64(3000), gjson.GetBytes(input.Body, "max_tokens").Float())
- }
|