[PLT-7793] Add /users/tokens/search endpoint (#8088)

* Add /users/tokens/search endpoint + tests

* Fix check-style

* Unnecessary deletion
This commit is contained in:
Adrian Carolli
2018-01-11 16:30:55 -05:00
committed by Joram Wilander
parent 1d9efd0e39
commit b1d13a2d89
11 changed files with 231 additions and 0 deletions

View File

@@ -1092,6 +1092,16 @@ func (c *Client4) RevokeUserAccessToken(tokenId string) (bool, *Response) {
}
}
// SearchUserAccessTokens returns user access tokens matching the provided search term.
func (c *Client4) SearchUserAccessTokens(search *UserAccessTokenSearch) ([]*UserAccessToken, *Response) {
if r, err := c.DoApiPost(c.GetUsersRoute()+"/tokens/search", search.ToJson()); err != nil {
return nil, BuildErrorResponse(r, err)
} else {
defer closeBody(r)
return UserAccessTokenListFromJson(r.Body), BuildResponse(r)
}
}
// DisableUserAccessToken will disable a user access token by id. Must have the
// 'revoke_user_access_token' permission and if disabling for another user, must have the
// 'edit_other_users' permission.

View File

@@ -0,0 +1,35 @@
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package model
import (
"encoding/json"
"io"
)
type UserAccessTokenSearch struct {
Term string `json:"term"`
}
// ToJson convert a UserAccessTokenSearch to json string
func (c *UserAccessTokenSearch) ToJson() string {
b, err := json.Marshal(c)
if err != nil {
return ""
}
return string(b)
}
// UserAccessTokenSearchJson decodes the input and returns a UserAccessTokenSearch
func UserAccessTokenSearchFromJson(data io.Reader) *UserAccessTokenSearch {
decoder := json.NewDecoder(data)
var cs UserAccessTokenSearch
err := decoder.Decode(&cs)
if err == nil {
return &cs
}
return nil
}

View File

@@ -0,0 +1,19 @@
// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package model
import (
"strings"
"testing"
)
func TestUserAccessTokenSearchJson(t *testing.T) {
userAccessTokenSearch := UserAccessTokenSearch{Term: NewId()}
json := userAccessTokenSearch.ToJson()
ruserAccessTokenSearch := UserAccessTokenSearchFromJson(strings.NewReader(json))
if userAccessTokenSearch.Term != ruserAccessTokenSearch.Term {
t.Fatal("Terms do not match")
}
}