refactor(relay): move replay metadata onto request bodies
This commit is contained in:
@@ -216,9 +216,7 @@ func (a *TaskAdaptor) BuildRequestBody(c *gin.Context, info *relaycommon.RelayIn
|
||||
return &buf, nil
|
||||
}
|
||||
|
||||
info.UpstreamRequestBodySize = storage.Size()
|
||||
info.UpstreamRequestGetBody = storage.NewReader
|
||||
return common.ReaderOnly(storage), nil
|
||||
return common.NewReplayableBodyReader(storage), nil
|
||||
}
|
||||
|
||||
// DoRequest delegates to common helper.
|
||||
|
||||
@@ -14,7 +14,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestSoraBuildRequestBodyBindsReplayMetadataForPassThrough(t *testing.T) {
|
||||
func TestSoraBuildRequestBodyReturnsReplayablePassThroughBody(t *testing.T) {
|
||||
payload := []byte("opaque-sora-request-body")
|
||||
c, _ := gin.CreateTestContext(httptest.NewRecorder())
|
||||
c.Request = httptest.NewRequest(http.MethodPost, "/v1/videos", bytes.NewReader(payload))
|
||||
@@ -24,14 +24,15 @@ func TestSoraBuildRequestBodyBindsReplayMetadataForPassThrough(t *testing.T) {
|
||||
info := &relaycommon.RelayInfo{}
|
||||
body, err := (&TaskAdaptor{}).BuildRequestBody(c, info)
|
||||
require.NoError(t, err)
|
||||
replayable, ok := body.(common.ReplayableBody)
|
||||
require.True(t, ok)
|
||||
|
||||
sent, err := io.ReadAll(body)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, payload, sent)
|
||||
assert.EqualValues(t, len(payload), info.UpstreamRequestBodySize)
|
||||
require.NotNil(t, info.UpstreamRequestGetBody)
|
||||
assert.EqualValues(t, len(payload), replayable.Size())
|
||||
|
||||
replayBody, err := info.UpstreamRequestGetBody()
|
||||
replayBody, err := replayable.NewReader()
|
||||
require.NoError(t, err)
|
||||
replay, err := io.ReadAll(replayBody)
|
||||
require.NoError(t, err)
|
||||
|
||||
Reference in New Issue
Block a user