aboutsummaryrefslogtreecommitdiff
path: root/mediaapi/routing/download_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'mediaapi/routing/download_test.go')
-rw-r--r--mediaapi/routing/download_test.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/mediaapi/routing/download_test.go b/mediaapi/routing/download_test.go
index 21f6bfc2..11368919 100644
--- a/mediaapi/routing/download_test.go
+++ b/mediaapi/routing/download_test.go
@@ -1,8 +1,13 @@
package routing
import (
+ "bytes"
+ "io"
+ "net/http"
+ "net/http/httptest"
"testing"
+ "github.com/matrix-org/dendrite/mediaapi/types"
"github.com/stretchr/testify/assert"
)
@@ -11,3 +16,28 @@ func Test_dispositionFor(t *testing.T) {
assert.Equal(t, "attachment", contentDispositionFor("image/svg"), "image/svg")
assert.Equal(t, "inline", contentDispositionFor("image/jpeg"), "image/jpg")
}
+
+func Test_Multipart(t *testing.T) {
+ r := &downloadRequest{
+ MediaMetadata: &types.MediaMetadata{},
+ }
+ data := bytes.Buffer{}
+ responseBody := "This media is plain text. Maybe somebody used it as a paste bin."
+ data.WriteString(responseBody)
+
+ srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
+ _, err := multipartResponse(w, r, "text/plain", &data)
+ assert.NoError(t, err)
+ }))
+ defer srv.Close()
+
+ resp, err := srv.Client().Get(srv.URL)
+ assert.NoError(t, err)
+ defer resp.Body.Close()
+ // contentLength is always 0, since there's no Content-Length header on the multipart part.
+ err, _, reader := parseMultipartResponse(r, resp, 1000)
+ assert.NoError(t, err)
+ gotResponse, err := io.ReadAll(reader)
+ assert.NoError(t, err)
+ assert.Equal(t, responseBody, string(gotResponse))
+}