From ec506d5ea7504d4e6191c93d22d107b2d5eb9ad2 Mon Sep 17 00:00:00 2001 From: "H. Shay" Date: Tue, 6 Aug 2024 14:20:04 -0700 Subject: [PATCH] add a basic test fetching thumbnail from federation endpoint --- tests/media_thumbnail_test.go | 57 ++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-) diff --git a/tests/media_thumbnail_test.go b/tests/media_thumbnail_test.go index 15f103b7..f03a8a23 100644 --- a/tests/media_thumbnail_test.go +++ b/tests/media_thumbnail_test.go @@ -2,7 +2,15 @@ package tests import ( "bytes" + "context" + "github.com/matrix-org/complement" + "github.com/matrix-org/complement/client" + "github.com/matrix-org/complement/federation" + "github.com/matrix-org/complement/helpers" + "github.com/matrix-org/complement/internal/data" "github.com/matrix-org/complement/runtime" + "github.com/matrix-org/gomatrixserverlib/fclient" + "github.com/matrix-org/gomatrixserverlib/spec" "image/jpeg" "image/png" "io" @@ -10,11 +18,6 @@ import ( "net/url" "strings" "testing" - - "github.com/matrix-org/complement" - "github.com/matrix-org/complement/client" - "github.com/matrix-org/complement/helpers" - "github.com/matrix-org/complement/internal/data" ) // TODO: add JPEG testing @@ -68,6 +71,50 @@ func TestRemotePngThumbnail(t *testing.T) { } } +func TestFederationThumbnail(t *testing.T) { + runtime.SkipIf(t, runtime.Dendrite) + + deployment := complement.Deploy(t, 1) + defer deployment.Destroy(t) + + alice := deployment.Register(t, "hs1", helpers.RegistrationOpts{}) + + srv := federation.NewServer(t, deployment, + federation.HandleKeyRequests(), + ) + cancel := srv.Listen() + defer cancel() + origin := spec.ServerName(srv.ServerName()) + + fileName := "test.png" + contentType := "image/png" + + uri := alice.UploadContent(t, data.LargePng, fileName, contentType) + _, mediaId := client.SplitMxc(uri) + + fedReq := fclient.NewFederationRequest( + "GET", + origin, + "hs1", + "/_matrix/federation/v1/media/thumbnail/"+mediaId+"?method=crop&width=14&height=14&animated=false", + ) + + resp, err := srv.DoFederationRequest(context.Background(), t, deployment, fedReq) + if err != nil { + t.Fatalf("thumbnail request for uploaded file failed: %s", err) + } + if resp.StatusCode != http.StatusOK { + t.Fatalf("thumbnail request for uploaded file failed with status code: %s", resp.StatusCode) + } + + resType := resp.Header.Get("Content-Type") + mimeType := strings.Split(resType, ";")[0] + + if mimeType != "multipart/mixed" { + t.Fatalf("thumbnail request did not return multipart/mixed response, returned %s instead", mimeType) + } +} + func fetchAndValidateThumbnail(t *testing.T, c *client.CSAPI, mxcUri string, authenticated bool) { t.Helper()