91ed4e196a
- Added support for tiered billing expressions in the billing system. - Introduced new types and functions for handling billing expressions, including caching and execution. - Updated existing billing logic to accommodate tiered billing scenarios. - Enhanced request handling to support incoming billing expression requests. - Added tests for tiered billing functionality to ensure correctness.
36 lines
1012 B
Go
36 lines
1012 B
Go
package helper
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
|
|
"github.com/QuantumNous/new-api/common"
|
|
relaycommon "github.com/QuantumNous/new-api/relay/common"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
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"])
|
|
}
|