summaryrefslogtreecommitdiffstats
path: root/app/post_test.go
diff options
context:
space:
mode:
authorGeorge Goldberg <george@gberg.me>2018-02-19 11:19:39 +0000
committerGeorge Goldberg <george@gberg.me>2018-02-19 11:19:39 +0000
commitf8289eb286d00c29859a8df495b957c7b46cb249 (patch)
tree1bc18d6a3a795482c7229786f7ab427fabbcd007 /app/post_test.go
parent8891fa2a5e9e08eb9fa99ec163c47a6e9761a816 (diff)
parent30197584d5a215a3b25bffa79a034ed9e360cf52 (diff)
downloadchat-f8289eb286d00c29859a8df495b957c7b46cb249.tar.gz
chat-f8289eb286d00c29859a8df495b957c7b46cb249.tar.bz2
chat-f8289eb286d00c29859a8df495b957c7b46cb249.zip
Merge branch 'master' into advanced-permissions-phase-1
Diffstat (limited to 'app/post_test.go')
-rw-r--r--app/post_test.go132
1 files changed, 95 insertions, 37 deletions
diff --git a/app/post_test.go b/app/post_test.go
index 207935d58..2e499d3b3 100644
--- a/app/post_test.go
+++ b/app/post_test.go
@@ -8,9 +8,11 @@ import (
"fmt"
"net/http"
"net/http/httptest"
+ "strings"
"testing"
"time"
+ "github.com/dyatlov/go-opengraph/opengraph"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -245,38 +247,27 @@ func TestImageProxy(t *testing.T) {
ImageURL: "http://mydomain.com/myimage",
ProxiedImageURL: "https://127.0.0.1/f8dace906d23689e8d5b12c3cefbedbf7b9b72f5/687474703a2f2f6d79646f6d61696e2e636f6d2f6d79696d616765",
},
- "willnorris/imageproxy": {
- ProxyType: "willnorris/imageproxy",
- ProxyURL: "https://127.0.0.1",
- ProxyOptions: "x1000",
- ImageURL: "http://mydomain.com/myimage",
- ProxiedImageURL: "https://127.0.0.1/x1000/http://mydomain.com/myimage",
- },
- "willnorris/imageproxy_SameSite": {
- ProxyType: "willnorris/imageproxy",
+ "atmos/camo_SameSite": {
+ ProxyType: "atmos/camo",
ProxyURL: "https://127.0.0.1",
+ ProxyOptions: "foo",
ImageURL: "http://mymattermost.com/myimage",
ProxiedImageURL: "http://mymattermost.com/myimage",
},
- "willnorris/imageproxy_PathOnly": {
- ProxyType: "willnorris/imageproxy",
+ "atmos/camo_PathOnly": {
+ ProxyType: "atmos/camo",
ProxyURL: "https://127.0.0.1",
+ ProxyOptions: "foo",
ImageURL: "/myimage",
ProxiedImageURL: "/myimage",
},
- "willnorris/imageproxy_EmptyImageURL": {
- ProxyType: "willnorris/imageproxy",
+ "atmos/camo_EmptyImageURL": {
+ ProxyType: "atmos/camo",
ProxyURL: "https://127.0.0.1",
+ ProxyOptions: "foo",
ImageURL: "",
ProxiedImageURL: "",
},
- "willnorris/imageproxy_WithSigning": {
- ProxyType: "willnorris/imageproxy",
- ProxyURL: "https://127.0.0.1",
- ProxyOptions: "x1000|foo",
- ImageURL: "http://mydomain.com/myimage",
- ProxiedImageURL: "https://127.0.0.1/x1000,sbhHVoG5d60UvnNtGh6Iy6x4PaMmnsh8JfZ7JfErKjGU=/http://mydomain.com/myimage",
- },
} {
t.Run(name, func(t *testing.T) {
th.App.UpdateConfig(func(cfg *model.Config) {
@@ -303,25 +294,92 @@ func TestImageProxy(t *testing.T) {
}
}
-var imageProxyBenchmarkSink *model.Post
-
-func BenchmarkPostWithProxyRemovedFromImageURLs(b *testing.B) {
- th := Setup().InitBasic()
- defer th.TearDown()
-
- th.App.UpdateConfig(func(cfg *model.Config) {
- cfg.ServiceSettings.ImageProxyType = model.NewString("willnorris/imageproxy")
- cfg.ServiceSettings.ImageProxyOptions = model.NewString("x1000|foo")
- cfg.ServiceSettings.ImageProxyURL = model.NewString("https://127.0.0.1")
- })
+func TestMakeOpenGraphURLsAbsolute(t *testing.T) {
+ for name, tc := range map[string]struct {
+ HTML string
+ RequestURL string
+ URL string
+ ImageURL string
+ }{
+ "absolute URLs": {
+ HTML: `
+ <html>
+ <head>
+ <meta property="og:url" content="https://example.com/apps/mattermost">
+ <meta property="og:image" content="https://images.example.com/image.png">
+ </head>
+ </html>`,
+ RequestURL: "https://example.com",
+ URL: "https://example.com/apps/mattermost",
+ ImageURL: "https://images.example.com/image.png",
+ },
+ "URLs starting with /": {
+ HTML: `
+ <html>
+ <head>
+ <meta property="og:url" content="/apps/mattermost">
+ <meta property="og:image" content="/image.png">
+ </head>
+ </html>`,
+ RequestURL: "http://example.com",
+ URL: "http://example.com/apps/mattermost",
+ ImageURL: "http://example.com/image.png",
+ },
+ "HTTPS URLs starting with /": {
+ HTML: `
+ <html>
+ <head>
+ <meta property="og:url" content="/apps/mattermost">
+ <meta property="og:image" content="/image.png">
+ </head>
+ </html>`,
+ RequestURL: "https://example.com",
+ URL: "https://example.com/apps/mattermost",
+ ImageURL: "https://example.com/image.png",
+ },
+ "missing image URL": {
+ HTML: `
+ <html>
+ <head>
+ <meta property="og:url" content="/apps/mattermost">
+ </head>
+ </html>`,
+ RequestURL: "http://example.com",
+ URL: "http://example.com/apps/mattermost",
+ ImageURL: "",
+ },
+ "relative URLs": {
+ HTML: `
+ <html>
+ <head>
+ <meta property="og:url" content="index.html">
+ <meta property="og:image" content="../resources/image.png">
+ </head>
+ </html>`,
+ RequestURL: "http://example.com/content/index.html",
+ URL: "http://example.com/content/index.html",
+ ImageURL: "http://example.com/resources/image.png",
+ },
+ } {
+ t.Run(name, func(t *testing.T) {
+ og := opengraph.NewOpenGraph()
+ if err := og.ProcessHTML(strings.NewReader(tc.HTML)); err != nil {
+ t.Fatal(err)
+ }
- post := &model.Post{
- Message: "![foo](http://mydomain.com/myimage)",
- }
+ makeOpenGraphURLsAbsolute(og, tc.RequestURL)
- b.ResetTimer()
+ if og.URL != tc.URL {
+ t.Fatalf("incorrect url, expected %v, got %v", tc.URL, og.URL)
+ }
- for i := 0; i < b.N; i++ {
- imageProxyBenchmarkSink = th.App.PostWithProxyAddedToImageURLs(post)
+ if len(og.Images) > 0 {
+ if og.Images[0].URL != tc.ImageURL {
+ t.Fatalf("incorrect image url, expected %v, got %v", tc.ImageURL, og.Images[0].URL)
+ }
+ } else if tc.ImageURL != "" {
+ t.Fatalf("missing image url, expected %v, got nothing", tc.ImageURL)
+ }
+ })
}
}