summaryrefslogtreecommitdiffstats
path: root/app/plugin_hooks_test.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2018-07-27 05:25:53 -0700
committerJoram Wilander <jwawilander@gmail.com>2018-07-27 08:25:53 -0400
commit026f0152a8fdc81d9d96c9d62321a78ef65d837b (patch)
treef986df6073db16b6ce3ca0bfeb3cfe328960125d /app/plugin_hooks_test.go
parent90e5e279c175b238d58432acb5eb6422ddfe22e7 (diff)
downloadchat-026f0152a8fdc81d9d96c9d62321a78ef65d837b.tar.gz
chat-026f0152a8fdc81d9d96c9d62321a78ef65d837b.tar.bz2
chat-026f0152a8fdc81d9d96c9d62321a78ef65d837b.zip
Adding FileWillBeUploaded plugin hook (#9169)
* Adding file upload hook. * Adding hook test for FileWillBeUploaded * Some debugging fixes. * Fix typo. * Fixing double close * Fix capitalization on docs.
Diffstat (limited to 'app/plugin_hooks_test.go')
-rw-r--r--app/plugin_hooks_test.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/app/plugin_hooks_test.go b/app/plugin_hooks_test.go
index 4b4e657ef..9846d628c 100644
--- a/app/plugin_hooks_test.go
+++ b/app/plugin_hooks_test.go
@@ -4,6 +4,8 @@
package app
import (
+ "bytes"
+ "io"
"io/ioutil"
"os"
"os/exec"
@@ -302,3 +304,69 @@ func TestHookMessageHasBeenUpdated(t *testing.T) {
t.Fatal(err)
}
}
+
+func TestHookFileWillBeUploaded(t *testing.T) {
+ th := Setup().InitBasic()
+ defer th.TearDown()
+
+ var mockAPI plugintest.API
+ mockAPI.On("LoadPluginConfiguration", mock.Anything).Return(nil)
+ mockAPI.On("DeleteUser", "testhook.txt").Return(nil)
+ mockAPI.On("DeleteTeam", "inputfile").Return(nil)
+ SetAppEnvironmentWithPlugins(t,
+ []string{
+ `
+ package main
+
+ import (
+ "io"
+ "bytes"
+ "github.com/mattermost/mattermost-server/plugin"
+ "github.com/mattermost/mattermost-server/model"
+ )
+
+ type MyPlugin struct {
+ plugin.MattermostPlugin
+ }
+
+ func (p *MyPlugin) FileWillBeUploaded(c *plugin.Context, info *model.FileInfo, file io.Reader, output io.Writer) (*model.FileInfo, string) {
+ p.API.DeleteUser(info.Name)
+ var buf bytes.Buffer
+ buf.ReadFrom(file)
+ p.API.DeleteTeam(buf.String())
+
+ outbuf := bytes.NewBufferString("changedtext")
+ io.Copy(output, outbuf)
+ info.Name = "modifiedinfo"
+ return info, ""
+ }
+
+ func main() {
+ plugin.ClientMain(&MyPlugin{})
+ }
+ `}, th.App, func(*model.Manifest) plugin.API { return &mockAPI })
+
+ response, err := th.App.UploadFiles(
+ "noteam",
+ th.BasicChannel.Id,
+ th.BasicUser.Id,
+ []io.ReadCloser{ioutil.NopCloser(bytes.NewBufferString("inputfile"))},
+ []string{"testhook.txt"},
+ []string{},
+ )
+ assert.Nil(t, err)
+ assert.NotNil(t, response)
+ assert.Equal(t, 1, len(response.FileInfos))
+ fileId := response.FileInfos[0].Id
+
+ fileInfo, err := th.App.GetFileInfo(fileId)
+ assert.Nil(t, err)
+ assert.NotNil(t, fileInfo)
+ assert.Equal(t, "modifiedinfo", fileInfo.Name)
+
+ fileReader, err := th.App.FileReader(fileInfo.Path)
+ assert.Nil(t, err)
+ var resultBuf bytes.Buffer
+ io.Copy(&resultBuf, fileReader)
+ assert.Equal(t, "changedtext", resultBuf.String())
+}