From f758f9ff3a617dd5939e1e7851fdbe10d03cd5a8 Mon Sep 17 00:00:00 2001 From: Carlos Tadeu Panato Junior Date: Thu, 20 Apr 2017 17:14:15 +0200 Subject: [APIV4] GET /emoji/{emoji_id}/image for apiV4 (#6141) * implement GET /emoji/{emoji_id}/image for apiV4 * update per request --- api4/emoji_test.go | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-) (limited to 'api4/emoji_test.go') diff --git a/api4/emoji_test.go b/api4/emoji_test.go index 23188a3d2..84d808e6d 100644 --- a/api4/emoji_test.go +++ b/api4/emoji_test.go @@ -4,6 +4,9 @@ package api4 import ( + "bytes" + "image" + _ "image/gif" "testing" "github.com/mattermost/platform/model" @@ -199,7 +202,6 @@ func TestGetEmojiList(t *testing.T) { t.Fatalf("should not get a deleted emoji %v", emojis[0].Id) } } - } func TestDeleteEmoji(t *testing.T) { @@ -296,5 +298,123 @@ func TestGetEmoji(t *testing.T) { _, resp = Client.GetEmoji(model.NewId()) CheckInternalErrorStatus(t, resp) +} + +func TestGetEmojiImage(t *testing.T) { + th := Setup().InitBasic() + defer TearDown() + Client := th.Client + + EnableCustomEmoji := *utils.Cfg.ServiceSettings.EnableCustomEmoji + DriverName := utils.Cfg.FileSettings.DriverName + defer func() { + *utils.Cfg.ServiceSettings.EnableCustomEmoji = EnableCustomEmoji + utils.Cfg.FileSettings.DriverName = DriverName + }() + *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + + emoji1 := &model.Emoji{ + CreatorId: th.BasicUser.Id, + Name: model.NewId(), + } + + emoji1, resp := Client.CreateEmoji(emoji1, utils.CreateTestGif(t, 10, 10), "image.gif") + CheckNoError(t, resp) + + *utils.Cfg.ServiceSettings.EnableCustomEmoji = false + + _, resp = Client.GetEmojiImage(emoji1.Id) + CheckNotImplementedStatus(t, resp) + CheckErrorMessage(t, resp, "api.emoji.disabled.app_error") + + utils.Cfg.FileSettings.DriverName = "" + *utils.Cfg.ServiceSettings.EnableCustomEmoji = true + + _, resp = Client.GetEmojiImage(emoji1.Id) + CheckNotImplementedStatus(t, resp) + CheckErrorMessage(t, resp, "api.emoji.storage.app_error") + utils.Cfg.FileSettings.DriverName = DriverName + + emojiImage, resp := Client.GetEmojiImage(emoji1.Id) + CheckNoError(t, resp) + if len(emojiImage) <= 0 { + t.Fatal("should return the image") + } + _, imageType, err := image.DecodeConfig(bytes.NewReader(emojiImage)) + if err != nil { + t.Fatalf("unable to identify received image: %v", err.Error()) + } else if imageType != "gif" { + t.Fatal("should've received gif data") + } + + emoji2 := &model.Emoji{ + CreatorId: th.BasicUser.Id, + Name: model.NewId(), + } + + emoji2, resp = Client.CreateEmoji(emoji2, utils.CreateTestAnimatedGif(t, 10, 10, 10), "image.gif") + CheckNoError(t, resp) + + emojiImage, resp = Client.GetEmojiImage(emoji2.Id) + CheckNoError(t, resp) + if len(emojiImage) <= 0 { + t.Fatal("should return the image") + } + _, imageType, err = image.DecodeConfig(bytes.NewReader(emojiImage)) + if err != nil { + t.Fatalf("unable to identify received image: %v", err.Error()) + } else if imageType != "gif" { + t.Fatal("should've received gif data") + } + + emoji3 := &model.Emoji{ + CreatorId: th.BasicUser.Id, + Name: model.NewId(), + } + emoji3, resp = Client.CreateEmoji(emoji3, utils.CreateTestJpeg(t, 10, 10), "image.jpg") + CheckNoError(t, resp) + + emojiImage, resp = Client.GetEmojiImage(emoji3.Id) + CheckNoError(t, resp) + if len(emojiImage) <= 0 { + t.Fatal("should return the image") + } + _, imageType, err = image.DecodeConfig(bytes.NewReader(emojiImage)) + if err != nil { + t.Fatalf("unable to identify received image: %v", err.Error()) + } else if imageType != "jpeg" { + t.Fatal("should've received gif data") + } + + emoji4 := &model.Emoji{ + CreatorId: th.BasicUser.Id, + Name: model.NewId(), + } + emoji4, resp = Client.CreateEmoji(emoji4, utils.CreateTestPng(t, 10, 10), "image.png") + CheckNoError(t, resp) + + emojiImage, resp = Client.GetEmojiImage(emoji4.Id) + CheckNoError(t, resp) + if len(emojiImage) <= 0 { + t.Fatal("should return the image") + } + _, imageType, err = image.DecodeConfig(bytes.NewReader(emojiImage)) + if err != nil { + t.Fatalf("unable to identify received image: %v", err.Error()) + } else if imageType != "png" { + t.Fatal("should've received gif data") + } + + _, resp = Client.DeleteEmoji(emoji4.Id) + CheckNoError(t, resp) + + _, resp = Client.GetEmojiImage(emoji4.Id) + CheckNotFoundStatus(t, resp) + + _, resp = Client.GetEmojiImage(model.NewId()) + CheckInternalErrorStatus(t, resp) + + _, resp = Client.GetEmojiImage("") + CheckBadRequestStatus(t, resp) } -- cgit v1.2.3-1-g7c22