https://mattermost.atlassian.net/browse/MM-52079

```release-note
We upgrade the module version to 8.0. The new module path is github.com/mattermost-server/server/v8.
```


Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Этот коммит содержится в:
Agniva De Sarker
2023-04-18 11:05:28 +05:30
коммит произвёл GitHub
родитель 831ea38f7e
Коммит b200a07881
1534 изменённых файлов: 3778 добавлений и 3853 удалений

4181
server/plugin/plugintest/api.go Обычный файл

Разница между файлами не показана из-за своего большого размера Загрузить разницу

11
server/plugin/plugintest/doc.go Обычный файл
Просмотреть файл

@@ -0,0 +1,11 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// The plugintest package provides mocks that can be used to test plugins.
//
// The mocks are created using testify's mock package:
// https://godoc.org/github.com/stretchr/testify/mock
//
// If you need to import the mock package, you can import it with
// "github.com/mattermost/mattermost-server/server/v8/plugin/plugintest/mock".
package plugintest

402
server/plugin/plugintest/driver.go Обычный файл
Просмотреть файл

@@ -0,0 +1,402 @@
// Code generated by mockery v2.23.2. DO NOT EDIT.
// Regenerate this file using `make plugin-mocks`.
package plugintest
import (
driver "database/sql/driver"
mock "github.com/stretchr/testify/mock"
plugin "github.com/mattermost/mattermost-server/server/v8/plugin"
)
// Driver is an autogenerated mock type for the Driver type
type Driver struct {
mock.Mock
}
// Conn provides a mock function with given fields: isMaster
func (_m *Driver) Conn(isMaster bool) (string, error) {
ret := _m.Called(isMaster)
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func(bool) (string, error)); ok {
return rf(isMaster)
}
if rf, ok := ret.Get(0).(func(bool) string); ok {
r0 = rf(isMaster)
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func(bool) error); ok {
r1 = rf(isMaster)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// ConnClose provides a mock function with given fields: connID
func (_m *Driver) ConnClose(connID string) error {
ret := _m.Called(connID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(connID)
} else {
r0 = ret.Error(0)
}
return r0
}
// ConnExec provides a mock function with given fields: connID, q, args
func (_m *Driver) ConnExec(connID string, q string, args []driver.NamedValue) (plugin.ResultContainer, error) {
ret := _m.Called(connID, q, args)
var r0 plugin.ResultContainer
var r1 error
if rf, ok := ret.Get(0).(func(string, string, []driver.NamedValue) (plugin.ResultContainer, error)); ok {
return rf(connID, q, args)
}
if rf, ok := ret.Get(0).(func(string, string, []driver.NamedValue) plugin.ResultContainer); ok {
r0 = rf(connID, q, args)
} else {
r0 = ret.Get(0).(plugin.ResultContainer)
}
if rf, ok := ret.Get(1).(func(string, string, []driver.NamedValue) error); ok {
r1 = rf(connID, q, args)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// ConnPing provides a mock function with given fields: connID
func (_m *Driver) ConnPing(connID string) error {
ret := _m.Called(connID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(connID)
} else {
r0 = ret.Error(0)
}
return r0
}
// ConnQuery provides a mock function with given fields: connID, q, args
func (_m *Driver) ConnQuery(connID string, q string, args []driver.NamedValue) (string, error) {
ret := _m.Called(connID, q, args)
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func(string, string, []driver.NamedValue) (string, error)); ok {
return rf(connID, q, args)
}
if rf, ok := ret.Get(0).(func(string, string, []driver.NamedValue) string); ok {
r0 = rf(connID, q, args)
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func(string, string, []driver.NamedValue) error); ok {
r1 = rf(connID, q, args)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// RowsClose provides a mock function with given fields: rowsID
func (_m *Driver) RowsClose(rowsID string) error {
ret := _m.Called(rowsID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(rowsID)
} else {
r0 = ret.Error(0)
}
return r0
}
// RowsColumnTypeDatabaseTypeName provides a mock function with given fields: rowsID, index
func (_m *Driver) RowsColumnTypeDatabaseTypeName(rowsID string, index int) string {
ret := _m.Called(rowsID, index)
var r0 string
if rf, ok := ret.Get(0).(func(string, int) string); ok {
r0 = rf(rowsID, index)
} else {
r0 = ret.Get(0).(string)
}
return r0
}
// RowsColumnTypePrecisionScale provides a mock function with given fields: rowsID, index
func (_m *Driver) RowsColumnTypePrecisionScale(rowsID string, index int) (int64, int64, bool) {
ret := _m.Called(rowsID, index)
var r0 int64
var r1 int64
var r2 bool
if rf, ok := ret.Get(0).(func(string, int) (int64, int64, bool)); ok {
return rf(rowsID, index)
}
if rf, ok := ret.Get(0).(func(string, int) int64); ok {
r0 = rf(rowsID, index)
} else {
r0 = ret.Get(0).(int64)
}
if rf, ok := ret.Get(1).(func(string, int) int64); ok {
r1 = rf(rowsID, index)
} else {
r1 = ret.Get(1).(int64)
}
if rf, ok := ret.Get(2).(func(string, int) bool); ok {
r2 = rf(rowsID, index)
} else {
r2 = ret.Get(2).(bool)
}
return r0, r1, r2
}
// RowsColumns provides a mock function with given fields: rowsID
func (_m *Driver) RowsColumns(rowsID string) []string {
ret := _m.Called(rowsID)
var r0 []string
if rf, ok := ret.Get(0).(func(string) []string); ok {
r0 = rf(rowsID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
return r0
}
// RowsHasNextResultSet provides a mock function with given fields: rowsID
func (_m *Driver) RowsHasNextResultSet(rowsID string) bool {
ret := _m.Called(rowsID)
var r0 bool
if rf, ok := ret.Get(0).(func(string) bool); ok {
r0 = rf(rowsID)
} else {
r0 = ret.Get(0).(bool)
}
return r0
}
// RowsNext provides a mock function with given fields: rowsID, dest
func (_m *Driver) RowsNext(rowsID string, dest []driver.Value) error {
ret := _m.Called(rowsID, dest)
var r0 error
if rf, ok := ret.Get(0).(func(string, []driver.Value) error); ok {
r0 = rf(rowsID, dest)
} else {
r0 = ret.Error(0)
}
return r0
}
// RowsNextResultSet provides a mock function with given fields: rowsID
func (_m *Driver) RowsNextResultSet(rowsID string) error {
ret := _m.Called(rowsID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(rowsID)
} else {
r0 = ret.Error(0)
}
return r0
}
// Stmt provides a mock function with given fields: connID, q
func (_m *Driver) Stmt(connID string, q string) (string, error) {
ret := _m.Called(connID, q)
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func(string, string) (string, error)); ok {
return rf(connID, q)
}
if rf, ok := ret.Get(0).(func(string, string) string); ok {
r0 = rf(connID, q)
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func(string, string) error); ok {
r1 = rf(connID, q)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// StmtClose provides a mock function with given fields: stID
func (_m *Driver) StmtClose(stID string) error {
ret := _m.Called(stID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(stID)
} else {
r0 = ret.Error(0)
}
return r0
}
// StmtExec provides a mock function with given fields: stID, args
func (_m *Driver) StmtExec(stID string, args []driver.NamedValue) (plugin.ResultContainer, error) {
ret := _m.Called(stID, args)
var r0 plugin.ResultContainer
var r1 error
if rf, ok := ret.Get(0).(func(string, []driver.NamedValue) (plugin.ResultContainer, error)); ok {
return rf(stID, args)
}
if rf, ok := ret.Get(0).(func(string, []driver.NamedValue) plugin.ResultContainer); ok {
r0 = rf(stID, args)
} else {
r0 = ret.Get(0).(plugin.ResultContainer)
}
if rf, ok := ret.Get(1).(func(string, []driver.NamedValue) error); ok {
r1 = rf(stID, args)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// StmtNumInput provides a mock function with given fields: stID
func (_m *Driver) StmtNumInput(stID string) int {
ret := _m.Called(stID)
var r0 int
if rf, ok := ret.Get(0).(func(string) int); ok {
r0 = rf(stID)
} else {
r0 = ret.Get(0).(int)
}
return r0
}
// StmtQuery provides a mock function with given fields: stID, args
func (_m *Driver) StmtQuery(stID string, args []driver.NamedValue) (string, error) {
ret := _m.Called(stID, args)
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func(string, []driver.NamedValue) (string, error)); ok {
return rf(stID, args)
}
if rf, ok := ret.Get(0).(func(string, []driver.NamedValue) string); ok {
r0 = rf(stID, args)
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func(string, []driver.NamedValue) error); ok {
r1 = rf(stID, args)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// Tx provides a mock function with given fields: connID, opts
func (_m *Driver) Tx(connID string, opts driver.TxOptions) (string, error) {
ret := _m.Called(connID, opts)
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func(string, driver.TxOptions) (string, error)); ok {
return rf(connID, opts)
}
if rf, ok := ret.Get(0).(func(string, driver.TxOptions) string); ok {
r0 = rf(connID, opts)
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func(string, driver.TxOptions) error); ok {
r1 = rf(connID, opts)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// TxCommit provides a mock function with given fields: txID
func (_m *Driver) TxCommit(txID string) error {
ret := _m.Called(txID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(txID)
} else {
r0 = ret.Error(0)
}
return r0
}
// TxRollback provides a mock function with given fields: txID
func (_m *Driver) TxRollback(txID string) error {
ret := _m.Called(txID)
var r0 error
if rf, ok := ret.Get(0).(func(string) error); ok {
r0 = rf(txID)
} else {
r0 = ret.Error(0)
}
return r0
}
type mockConstructorTestingTNewDriver interface {
mock.TestingT
Cleanup(func())
}
// NewDriver creates a new instance of Driver. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewDriver(t mockConstructorTestingTNewDriver) *Driver {
mock := &Driver{}
mock.Mock.Test(t)
t.Cleanup(func() { mock.AssertExpectations(t) })
return mock
}

Просмотреть файл

@@ -0,0 +1,58 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package plugintest_test
import (
"fmt"
io "io"
"net/http"
"net/http/httptest"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/mattermost/mattermost-server/server/v8/model"
"github.com/mattermost/mattermost-server/server/v8/plugin"
"github.com/mattermost/mattermost-server/server/v8/plugin/plugintest"
)
type HelloUserPlugin struct {
plugin.MattermostPlugin
}
func (p *HelloUserPlugin) ServeHTTP(context *plugin.Context, w http.ResponseWriter, r *http.Request) {
userID := r.Header.Get("Mattermost-User-Id")
user, err := p.API.GetUser(userID)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
p.API.LogError(err.Error())
return
}
fmt.Fprintf(w, "Welcome back, %s!", user.Username)
}
func Example() {
t := &testing.T{}
user := &model.User{
Id: model.NewId(),
Username: "billybob",
}
api := &plugintest.API{}
api.On("GetUser", user.Id).Return(user, nil)
defer api.AssertExpectations(t)
p := &HelloUserPlugin{}
p.SetAPI(api)
w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/", nil)
r.Header.Add("Mattermost-User-Id", user.Id)
p.ServeHTTP(&plugin.Context{}, w, r)
body, err := io.ReadAll(w.Result().Body)
require.NoError(t, err)
assert.Equal(t, "Welcome back, billybob!", string(body))
}

504
server/plugin/plugintest/hooks.go Обычный файл
Просмотреть файл

@@ -0,0 +1,504 @@
// Code generated by mockery v2.23.2. DO NOT EDIT.
// Regenerate this file using `make plugin-mocks`.
package plugintest
import (
io "io"
http "net/http"
mock "github.com/stretchr/testify/mock"
model "github.com/mattermost/mattermost-server/server/v8/model"
plugin "github.com/mattermost/mattermost-server/server/v8/plugin"
)
// Hooks is an autogenerated mock type for the Hooks type
type Hooks struct {
mock.Mock
}
// ChannelHasBeenCreated provides a mock function with given fields: c, channel
func (_m *Hooks) ChannelHasBeenCreated(c *plugin.Context, channel *model.Channel) {
_m.Called(c, channel)
}
// ExecuteCommand provides a mock function with given fields: c, args
func (_m *Hooks) ExecuteCommand(c *plugin.Context, args *model.CommandArgs) (*model.CommandResponse, *model.AppError) {
ret := _m.Called(c, args)
var r0 *model.CommandResponse
var r1 *model.AppError
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.CommandArgs) (*model.CommandResponse, *model.AppError)); ok {
return rf(c, args)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.CommandArgs) *model.CommandResponse); ok {
r0 = rf(c, args)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.CommandResponse)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.CommandArgs) *model.AppError); ok {
r1 = rf(c, args)
} else {
if ret.Get(1) != nil {
r1 = ret.Get(1).(*model.AppError)
}
}
return r0, r1
}
// FileWillBeUploaded provides a mock function with given fields: c, info, file, output
func (_m *Hooks) FileWillBeUploaded(c *plugin.Context, info *model.FileInfo, file io.Reader, output io.Writer) (*model.FileInfo, string) {
ret := _m.Called(c, info, file, output)
var r0 *model.FileInfo
var r1 string
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.FileInfo, io.Reader, io.Writer) (*model.FileInfo, string)); ok {
return rf(c, info, file, output)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.FileInfo, io.Reader, io.Writer) *model.FileInfo); ok {
r0 = rf(c, info, file, output)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.FileInfo)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.FileInfo, io.Reader, io.Writer) string); ok {
r1 = rf(c, info, file, output)
} else {
r1 = ret.Get(1).(string)
}
return r0, r1
}
// GetAllCollectionIDsForUser provides a mock function with given fields: c, userID, collectionType
func (_m *Hooks) GetAllCollectionIDsForUser(c *plugin.Context, userID string, collectionType string) ([]string, error) {
ret := _m.Called(c, userID, collectionType)
var r0 []string
var r1 error
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string) ([]string, error)); ok {
return rf(c, userID, collectionType)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string) []string); ok {
r0 = rf(c, userID, collectionType)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, string, string) error); ok {
r1 = rf(c, userID, collectionType)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetAllUserIdsForCollection provides a mock function with given fields: c, collectionType, collectionID
func (_m *Hooks) GetAllUserIdsForCollection(c *plugin.Context, collectionType string, collectionID string) ([]string, error) {
ret := _m.Called(c, collectionType, collectionID)
var r0 []string
var r1 error
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string) ([]string, error)); ok {
return rf(c, collectionType, collectionID)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string) []string); ok {
r0 = rf(c, collectionType, collectionID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, string, string) error); ok {
r1 = rf(c, collectionType, collectionID)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetCollectionMetadataByIds provides a mock function with given fields: c, collectionType, collectionIds
func (_m *Hooks) GetCollectionMetadataByIds(c *plugin.Context, collectionType string, collectionIds []string) (map[string]*model.CollectionMetadata, error) {
ret := _m.Called(c, collectionType, collectionIds)
var r0 map[string]*model.CollectionMetadata
var r1 error
if rf, ok := ret.Get(0).(func(*plugin.Context, string, []string) (map[string]*model.CollectionMetadata, error)); ok {
return rf(c, collectionType, collectionIds)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, string, []string) map[string]*model.CollectionMetadata); ok {
r0 = rf(c, collectionType, collectionIds)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]*model.CollectionMetadata)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, string, []string) error); ok {
r1 = rf(c, collectionType, collectionIds)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetTopicMetadataByIds provides a mock function with given fields: c, topicType, topicIds
func (_m *Hooks) GetTopicMetadataByIds(c *plugin.Context, topicType string, topicIds []string) (map[string]*model.TopicMetadata, error) {
ret := _m.Called(c, topicType, topicIds)
var r0 map[string]*model.TopicMetadata
var r1 error
if rf, ok := ret.Get(0).(func(*plugin.Context, string, []string) (map[string]*model.TopicMetadata, error)); ok {
return rf(c, topicType, topicIds)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, string, []string) map[string]*model.TopicMetadata); ok {
r0 = rf(c, topicType, topicIds)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(map[string]*model.TopicMetadata)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, string, []string) error); ok {
r1 = rf(c, topicType, topicIds)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetTopicRedirect provides a mock function with given fields: c, topicType, topicID
func (_m *Hooks) GetTopicRedirect(c *plugin.Context, topicType string, topicID string) (string, error) {
ret := _m.Called(c, topicType, topicID)
var r0 string
var r1 error
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string) (string, error)); ok {
return rf(c, topicType, topicID)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string) string); ok {
r0 = rf(c, topicType, topicID)
} else {
r0 = ret.Get(0).(string)
}
if rf, ok := ret.Get(1).(func(*plugin.Context, string, string) error); ok {
r1 = rf(c, topicType, topicID)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// Implemented provides a mock function with given fields:
func (_m *Hooks) Implemented() ([]string, error) {
ret := _m.Called()
var r0 []string
var r1 error
if rf, ok := ret.Get(0).(func() ([]string, error)); ok {
return rf()
}
if rf, ok := ret.Get(0).(func() []string); ok {
r0 = rf()
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]string)
}
}
if rf, ok := ret.Get(1).(func() error); ok {
r1 = rf()
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// MessageHasBeenPosted provides a mock function with given fields: c, post
func (_m *Hooks) MessageHasBeenPosted(c *plugin.Context, post *model.Post) {
_m.Called(c, post)
}
// MessageHasBeenUpdated provides a mock function with given fields: c, newPost, oldPost
func (_m *Hooks) MessageHasBeenUpdated(c *plugin.Context, newPost *model.Post, oldPost *model.Post) {
_m.Called(c, newPost, oldPost)
}
// MessageWillBePosted provides a mock function with given fields: c, post
func (_m *Hooks) MessageWillBePosted(c *plugin.Context, post *model.Post) (*model.Post, string) {
ret := _m.Called(c, post)
var r0 *model.Post
var r1 string
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post) (*model.Post, string)); ok {
return rf(c, post)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post) *model.Post); ok {
r0 = rf(c, post)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.Post)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.Post) string); ok {
r1 = rf(c, post)
} else {
r1 = ret.Get(1).(string)
}
return r0, r1
}
// MessageWillBeUpdated provides a mock function with given fields: c, newPost, oldPost
func (_m *Hooks) MessageWillBeUpdated(c *plugin.Context, newPost *model.Post, oldPost *model.Post) (*model.Post, string) {
ret := _m.Called(c, newPost, oldPost)
var r0 *model.Post
var r1 string
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post, *model.Post) (*model.Post, string)); ok {
return rf(c, newPost, oldPost)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.Post, *model.Post) *model.Post); ok {
r0 = rf(c, newPost, oldPost)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*model.Post)
}
}
if rf, ok := ret.Get(1).(func(*plugin.Context, *model.Post, *model.Post) string); ok {
r1 = rf(c, newPost, oldPost)
} else {
r1 = ret.Get(1).(string)
}
return r0, r1
}
// OnActivate provides a mock function with given fields:
func (_m *Hooks) OnActivate() error {
ret := _m.Called()
var r0 error
if rf, ok := ret.Get(0).(func() error); ok {
r0 = rf()
} else {
r0 = ret.Error(0)
}
return r0
}
// OnCloudLimitsUpdated provides a mock function with given fields: limits
func (_m *Hooks) OnCloudLimitsUpdated(limits *model.ProductLimits) {
_m.Called(limits)
}
// OnConfigurationChange provides a mock function with given fields:
func (_m *Hooks) OnConfigurationChange() error {
ret := _m.Called()
var r0 error
if rf, ok := ret.Get(0).(func() error); ok {
r0 = rf()
} else {
r0 = ret.Error(0)
}
return r0
}
// OnDeactivate provides a mock function with given fields:
func (_m *Hooks) OnDeactivate() error {
ret := _m.Called()
var r0 error
if rf, ok := ret.Get(0).(func() error); ok {
r0 = rf()
} else {
r0 = ret.Error(0)
}
return r0
}
// OnInstall provides a mock function with given fields: c, event
func (_m *Hooks) OnInstall(c *plugin.Context, event model.OnInstallEvent) error {
ret := _m.Called(c, event)
var r0 error
if rf, ok := ret.Get(0).(func(*plugin.Context, model.OnInstallEvent) error); ok {
r0 = rf(c, event)
} else {
r0 = ret.Error(0)
}
return r0
}
// OnPluginClusterEvent provides a mock function with given fields: c, ev
func (_m *Hooks) OnPluginClusterEvent(c *plugin.Context, ev model.PluginClusterEvent) {
_m.Called(c, ev)
}
// OnSendDailyTelemetry provides a mock function with given fields:
func (_m *Hooks) OnSendDailyTelemetry() {
_m.Called()
}
// OnWebSocketConnect provides a mock function with given fields: webConnID, userID
func (_m *Hooks) OnWebSocketConnect(webConnID string, userID string) {
_m.Called(webConnID, userID)
}
// OnWebSocketDisconnect provides a mock function with given fields: webConnID, userID
func (_m *Hooks) OnWebSocketDisconnect(webConnID string, userID string) {
_m.Called(webConnID, userID)
}
// ReactionHasBeenAdded provides a mock function with given fields: c, reaction
func (_m *Hooks) ReactionHasBeenAdded(c *plugin.Context, reaction *model.Reaction) {
_m.Called(c, reaction)
}
// ReactionHasBeenRemoved provides a mock function with given fields: c, reaction
func (_m *Hooks) ReactionHasBeenRemoved(c *plugin.Context, reaction *model.Reaction) {
_m.Called(c, reaction)
}
// RunDataRetention provides a mock function with given fields: nowTime, batchSize
func (_m *Hooks) RunDataRetention(nowTime int64, batchSize int64) (int64, error) {
ret := _m.Called(nowTime, batchSize)
var r0 int64
var r1 error
if rf, ok := ret.Get(0).(func(int64, int64) (int64, error)); ok {
return rf(nowTime, batchSize)
}
if rf, ok := ret.Get(0).(func(int64, int64) int64); ok {
r0 = rf(nowTime, batchSize)
} else {
r0 = ret.Get(0).(int64)
}
if rf, ok := ret.Get(1).(func(int64, int64) error); ok {
r1 = rf(nowTime, batchSize)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// ServeHTTP provides a mock function with given fields: c, w, r
func (_m *Hooks) ServeHTTP(c *plugin.Context, w http.ResponseWriter, r *http.Request) {
_m.Called(c, w, r)
}
// UserHasBeenCreated provides a mock function with given fields: c, user
func (_m *Hooks) UserHasBeenCreated(c *plugin.Context, user *model.User) {
_m.Called(c, user)
}
// UserHasJoinedChannel provides a mock function with given fields: c, channelMember, actor
func (_m *Hooks) UserHasJoinedChannel(c *plugin.Context, channelMember *model.ChannelMember, actor *model.User) {
_m.Called(c, channelMember, actor)
}
// UserHasJoinedTeam provides a mock function with given fields: c, teamMember, actor
func (_m *Hooks) UserHasJoinedTeam(c *plugin.Context, teamMember *model.TeamMember, actor *model.User) {
_m.Called(c, teamMember, actor)
}
// UserHasLeftChannel provides a mock function with given fields: c, channelMember, actor
func (_m *Hooks) UserHasLeftChannel(c *plugin.Context, channelMember *model.ChannelMember, actor *model.User) {
_m.Called(c, channelMember, actor)
}
// UserHasLeftTeam provides a mock function with given fields: c, teamMember, actor
func (_m *Hooks) UserHasLeftTeam(c *plugin.Context, teamMember *model.TeamMember, actor *model.User) {
_m.Called(c, teamMember, actor)
}
// UserHasLoggedIn provides a mock function with given fields: c, user
func (_m *Hooks) UserHasLoggedIn(c *plugin.Context, user *model.User) {
_m.Called(c, user)
}
// UserHasPermissionToCollection provides a mock function with given fields: c, userID, collectionType, collectionId, permission
func (_m *Hooks) UserHasPermissionToCollection(c *plugin.Context, userID string, collectionType string, collectionId string, permission *model.Permission) (bool, error) {
ret := _m.Called(c, userID, collectionType, collectionId, permission)
var r0 bool
var r1 error
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string, string, *model.Permission) (bool, error)); ok {
return rf(c, userID, collectionType, collectionId, permission)
}
if rf, ok := ret.Get(0).(func(*plugin.Context, string, string, string, *model.Permission) bool); ok {
r0 = rf(c, userID, collectionType, collectionId, permission)
} else {
r0 = ret.Get(0).(bool)
}
if rf, ok := ret.Get(1).(func(*plugin.Context, string, string, string, *model.Permission) error); ok {
r1 = rf(c, userID, collectionType, collectionId, permission)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// UserWillLogIn provides a mock function with given fields: c, user
func (_m *Hooks) UserWillLogIn(c *plugin.Context, user *model.User) string {
ret := _m.Called(c, user)
var r0 string
if rf, ok := ret.Get(0).(func(*plugin.Context, *model.User) string); ok {
r0 = rf(c, user)
} else {
r0 = ret.Get(0).(string)
}
return r0
}
// WebSocketMessageHasBeenPosted provides a mock function with given fields: webConnID, userID, req
func (_m *Hooks) WebSocketMessageHasBeenPosted(webConnID string, userID string, req *model.WebSocketRequest) {
_m.Called(webConnID, userID, req)
}
type mockConstructorTestingTNewHooks interface {
mock.TestingT
Cleanup(func())
}
// NewHooks creates a new instance of Hooks. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewHooks(t mockConstructorTestingTNewHooks) *Hooks {
mock := &Hooks{}
mock.Mock.Test(t)
t.Cleanup(func() { mock.AssertExpectations(t) })
return mock
}

33
server/plugin/plugintest/mock/mock.go Обычный файл
Просмотреть файл

@@ -0,0 +1,33 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
// This package provides aliases for the contents of "github.com/stretchr/testify/mock". Because
// external packages can't import our vendored dependencies, this is necessary for them to be able
// to fully utilize the plugintest package.
package mock
import (
"github.com/stretchr/testify/mock"
)
const (
Anything = mock.Anything
)
type Arguments = mock.Arguments
type AnythingOfTypeArgument = mock.AnythingOfTypeArgument
type Call = mock.Call
type Mock = mock.Mock
type TestingT = mock.TestingT
func AnythingOfType(t string) AnythingOfTypeArgument {
return mock.AnythingOfType(t)
}
func AssertExpectationsForObjects(t TestingT, testObjects ...any) bool {
return mock.AssertExpectationsForObjects(t, testObjects...)
}
func MatchedBy(fn any) any {
return mock.MatchedBy(fn)
}