[MM-13747] Add ability to list users to plugin API (#10102)
* add GetUsers in plugin api * change GetUsers(page int, perPage int) ([]*model.User, *model.AppError) to GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError) * Update GetUsers doc Co-Authored-By: dom3k <szeptweb@gmail.com> * Update doc in plugin/api.go Co-Authored-By: dom3k <szeptweb@gmail.com> * correct database initialization for the test * Update plugin/api.go Co-Authored-By: dom3k <szeptweb@gmail.com>
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
2c3a2e9235
Коммит
2c9cf41dad
@@ -179,6 +179,10 @@ func (api *PluginAPI) DeleteUser(userId string) *model.AppError {
|
||||
return err
|
||||
}
|
||||
|
||||
func (api *PluginAPI) GetUsers(options *model.UserGetOptions) ([]*model.User, *model.AppError) {
|
||||
return api.app.GetUsers(options)
|
||||
}
|
||||
|
||||
func (api *PluginAPI) GetUser(userId string) (*model.User, *model.AppError) {
|
||||
return api.app.GetUser(userId)
|
||||
}
|
||||
|
||||
@@ -47,6 +47,93 @@ func setupPluginApiTest(t *testing.T, pluginCode string, pluginManifest string,
|
||||
app.SetPluginsEnvironment(env)
|
||||
}
|
||||
|
||||
func TestPluginAPIGetUsers(t *testing.T) {
|
||||
th := Setup()
|
||||
defer th.TearDown()
|
||||
api := th.SetupPluginAPI()
|
||||
|
||||
user1, err := th.App.CreateUser(&model.User{
|
||||
Email: strings.ToLower(model.NewId()) + "success+test@example.com",
|
||||
Password: "password",
|
||||
Username: "user1" + model.NewId(),
|
||||
})
|
||||
require.Nil(t, err)
|
||||
defer th.App.PermanentDeleteUser(user1)
|
||||
|
||||
user2, err := th.App.CreateUser(&model.User{
|
||||
Email: strings.ToLower(model.NewId()) + "success+test@example.com",
|
||||
Password: "password",
|
||||
Username: "user2" + model.NewId(),
|
||||
})
|
||||
require.Nil(t, err)
|
||||
defer th.App.PermanentDeleteUser(user2)
|
||||
|
||||
user3, err := th.App.CreateUser(&model.User{
|
||||
Email: strings.ToLower(model.NewId()) + "success+test@example.com",
|
||||
Password: "password",
|
||||
Username: "user3" + model.NewId(),
|
||||
})
|
||||
require.Nil(t, err)
|
||||
defer th.App.PermanentDeleteUser(user3)
|
||||
|
||||
user4, err := th.App.CreateUser(&model.User{
|
||||
Email: strings.ToLower(model.NewId()) + "success+test@example.com",
|
||||
Password: "password",
|
||||
Username: "user4" + model.NewId(),
|
||||
})
|
||||
require.Nil(t, err)
|
||||
defer th.App.PermanentDeleteUser(user4)
|
||||
|
||||
testCases := []struct {
|
||||
Description string
|
||||
Page int
|
||||
PerPage int
|
||||
ExpectedUsers []*model.User
|
||||
}{
|
||||
{
|
||||
"page 0, perPage 0",
|
||||
0,
|
||||
0,
|
||||
[]*model.User{},
|
||||
},
|
||||
{
|
||||
"page 0, perPage 10",
|
||||
0,
|
||||
10,
|
||||
[]*model.User{user1, user2, user3, user4},
|
||||
},
|
||||
{
|
||||
"page 0, perPage 2",
|
||||
0,
|
||||
2,
|
||||
[]*model.User{user1, user2},
|
||||
},
|
||||
{
|
||||
"page 1, perPage 2",
|
||||
1,
|
||||
2,
|
||||
[]*model.User{user3, user4},
|
||||
},
|
||||
{
|
||||
"page 10, perPage 10",
|
||||
10,
|
||||
10,
|
||||
[]*model.User{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
t.Run(testCase.Description, func(t *testing.T) {
|
||||
users, err := api.GetUsers(&model.UserGetOptions{
|
||||
Page: testCase.Page,
|
||||
PerPage: testCase.PerPage,
|
||||
})
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, testCase.ExpectedUsers, users)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPluginAPIGetUsersInTeam(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
|
||||
Ссылка в новой задаче
Block a user