From b1d13a2d897147de8290a03e624efe4000dc9aa7 Mon Sep 17 00:00:00 2001 From: Adrian Carolli Date: Thu, 11 Jan 2018 16:30:55 -0500 Subject: [PLT-7793] Add /users/tokens/search endpoint (#8088) * Add /users/tokens/search endpoint + tests * Fix check-style * Unnecessary deletion --- model/client4.go | 10 ++++++++++ model/user_access_token_search.go | 35 ++++++++++++++++++++++++++++++++++ model/user_access_token_search_test.go | 19 ++++++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 model/user_access_token_search.go create mode 100644 model/user_access_token_search_test.go (limited to 'model') diff --git a/model/client4.go b/model/client4.go index 3f3439ebe..88645ec74 100644 --- a/model/client4.go +++ b/model/client4.go @@ -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. diff --git a/model/user_access_token_search.go b/model/user_access_token_search.go new file mode 100644 index 000000000..1b0146edb --- /dev/null +++ b/model/user_access_token_search.go @@ -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 +} diff --git a/model/user_access_token_search_test.go b/model/user_access_token_search_test.go new file mode 100644 index 000000000..15a53f536 --- /dev/null +++ b/model/user_access_token_search_test.go @@ -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") + } +} -- cgit v1.2.3-1-g7c22