diff options
author | Chris <ccbrown112@gmail.com> | 2018-01-22 15:32:50 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-22 15:32:50 -0600 |
commit | 599991ea731953f772824ce3ed1e591246aa004f (patch) | |
tree | fca0f556f12e56bdcefa74ac6794dec64e04e3fc /app/post_test.go | |
parent | a8445775351c32f8a12081f60bda2099571b2758 (diff) | |
download | chat-599991ea731953f772824ce3ed1e591246aa004f.tar.gz chat-599991ea731953f772824ce3ed1e591246aa004f.tar.bz2 chat-599991ea731953f772824ce3ed1e591246aa004f.zip |
PLT-3383: image proxy support (#7991)
* image proxy support
* go vet fix, remove mistakenly added coverage file
* fix test compile error
* add validation to config settings and documentation to model functions
* add message_source field to post
Diffstat (limited to 'app/post_test.go')
-rw-r--r-- | app/post_test.go | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/app/post_test.go b/app/post_test.go index 82eac3cd1..9854bb707 100644 --- a/app/post_test.go +++ b/app/post_test.go @@ -185,3 +185,84 @@ func TestPostChannelMentions(t *testing.T) { }, }, result.Props["channel_mentions"]) } + +func TestImageProxy(t *testing.T) { + th := Setup().InitBasic() + defer th.TearDown() + + for name, tc := range map[string]struct { + ProxyType string + ProxyURL string + ProxyOptions string + ImageURL string + ProxiedImageURL string + }{ + "atmos/camo": { + ProxyType: "atmos/camo", + ProxyURL: "https://127.0.0.1", + ProxyOptions: "foo", + 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_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) { + cfg.ServiceSettings.ImageProxyType = model.NewString(tc.ProxyType) + cfg.ServiceSettings.ImageProxyOptions = model.NewString(tc.ProxyOptions) + cfg.ServiceSettings.ImageProxyURL = model.NewString(tc.ProxyURL) + }) + + post := &model.Post{ + Id: model.NewId(), + Message: "![foo](" + tc.ImageURL + ")", + } + + list := model.NewPostList() + list.Posts[post.Id] = post + + assert.Equal(t, "![foo]("+tc.ProxiedImageURL+")", th.App.PostListWithProxyAddedToImageURLs(list).Posts[post.Id].Message) + assert.Equal(t, "![foo]("+tc.ProxiedImageURL+")", th.App.PostWithProxyAddedToImageURLs(post).Message) + + assert.Equal(t, "![foo]("+tc.ImageURL+")", th.App.PostWithProxyRemovedFromImageURLs(post).Message) + post.Message = "![foo](" + tc.ProxiedImageURL + ")" + assert.Equal(t, "![foo]("+tc.ImageURL+")", th.App.PostWithProxyRemovedFromImageURLs(post).Message) + }) + } +} + +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") + }) + + post := &model.Post{ + Message: "![foo](http://mydomain.com/myimage)", + } + + b.ResetTimer() + + for i := 0; i < b.N; i++ { + imageProxyBenchmarkSink = th.App.PostWithProxyAddedToImageURLs(post) + } +} |