summaryrefslogtreecommitdiffstats
path: root/app/post_test.go
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2018-02-08 10:45:25 -0500
committerHarrison Healey <harrisonmhealey@gmail.com>2018-02-08 10:45:25 -0500
commitd3a0e561c265e32a305cd5c6ed5e80f461d9f4eb (patch)
tree85f148bdc781c488651186bf84f844cf395527ca /app/post_test.go
parent9bf23ece6c247fb04a57127260de4608c433daa5 (diff)
downloadchat-d3a0e561c265e32a305cd5c6ed5e80f461d9f4eb.tar.gz
chat-d3a0e561c265e32a305cd5c6ed5e80f461d9f4eb.tar.bz2
chat-d3a0e561c265e32a305cd5c6ed5e80f461d9f4eb.zip
ICU-669 Ensured all URLs returned from OpenGraph are absolute
Diffstat (limited to 'app/post_test.go')
-rw-r--r--app/post_test.go80
1 files changed, 80 insertions, 0 deletions
diff --git a/app/post_test.go b/app/post_test.go
index 3f3783265..987879a72 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"
@@ -250,6 +252,84 @@ func TestImageProxy(t *testing.T) {
}
}
+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",
+ },
+ "relative URLs": {
+ 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",
+ },
+ "relative URLs with HTTPS": {
+ 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: "",
+ },
+ } {
+ t.Run(name, func(t *testing.T) {
+ og := opengraph.NewOpenGraph()
+ if err := og.ProcessHTML(strings.NewReader(tc.HTML)); err != nil {
+ t.Fatal(err)
+ }
+
+ og = makeOpenGraphURLsAbsolute(og, tc.RequestURL)
+
+ if og.URL != tc.URL {
+ t.Fatalf("incorrect url, expected %v, got %v", tc.URL, og.URL)
+ }
+
+ 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.Fatal("missing image url, expected %v, got nothing", tc.ImageURL)
+ }
+ })
+ }
+}
+
var imageProxyBenchmarkSink *model.Post
func BenchmarkPostWithProxyRemovedFromImageURLs(b *testing.B) {