feat: 算力引擎 Go 后端核心(new-api)
- 统一 OpenAI 兼容 /v1 中继 + 渠道/额度/令牌/流水 - 各领域包:relay 模型网关、model 数据层、controller 管理 API
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"io"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestNewReplayableBodyReaderKeepsStorageLifecycleWithCaller(t *testing.T) {
|
||||
payload := []byte(`{"model":"test-model","input":"hello"}`)
|
||||
storage, err := CreateBodyStorage(payload)
|
||||
require.NoError(t, err)
|
||||
defer storage.Close()
|
||||
|
||||
body := NewReplayableBodyReader(storage)
|
||||
assert.EqualValues(t, len(payload), body.Size())
|
||||
_, exposesCloser := any(body).(io.Closer)
|
||||
assert.False(t, exposesCloser, "the request body must not expose the storage closer")
|
||||
|
||||
req, err := http.NewRequest(http.MethodPost, "https://example.com", body)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, req.Body.Close())
|
||||
|
||||
replayBody, err := body.NewReader()
|
||||
require.NoError(t, err, "closing the HTTP request body must not close the storage")
|
||||
replay, err := io.ReadAll(replayBody)
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, replayBody.Close())
|
||||
assert.Equal(t, payload, replay)
|
||||
|
||||
require.NoError(t, storage.Close())
|
||||
_, err = body.NewReader()
|
||||
require.ErrorIs(t, err, ErrStorageClosed)
|
||||
}
|
||||
Reference in New Issue
Block a user