diff --git a/app/session.go b/app/session.go index 9d703a68b3..5e29b42880 100644 --- a/app/session.go +++ b/app/session.go @@ -384,16 +384,15 @@ func (a *App) GetUserAccessTokensForUser(userId string, page, perPage int) ([]*m } func (a *App) GetUserAccessToken(tokenId string, sanitize bool) (*model.UserAccessToken, *model.AppError) { - result := <-a.Srv.Store.UserAccessToken().Get(tokenId) - if result.Err != nil { - return nil, result.Err + token, err := a.Srv.Store.UserAccessToken().Get(tokenId) + if err != nil { + return nil, err } - token := result.Data.(*model.UserAccessToken) + if sanitize { token.Token = "" } return token, nil - } func (a *App) SearchUserAccessTokens(term string) ([]*model.UserAccessToken, *model.AppError) { diff --git a/store/sqlstore/user_access_token_store.go b/store/sqlstore/user_access_token_store.go index 76f4a8fa5b..68325c89f4 100644 --- a/store/sqlstore/user_access_token_store.go +++ b/store/sqlstore/user_access_token_store.go @@ -149,20 +149,17 @@ func (s SqlUserAccessTokenStore) deleteTokensByUser(transaction *gorp.Transactio return result } -func (s SqlUserAccessTokenStore) Get(tokenId string) store.StoreChannel { - return store.Do(func(result *store.StoreResult) { - token := model.UserAccessToken{} +func (s SqlUserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *model.AppError) { + token := model.UserAccessToken{} - if err := s.GetReplica().SelectOne(&token, "SELECT * FROM UserAccessTokens WHERE Id = :Id", map[string]interface{}{"Id": tokenId}); err != nil { - if err == sql.ErrNoRows { - result.Err = model.NewAppError("SqlUserAccessTokenStore.Get", "store.sql_user_access_token.get.app_error", nil, err.Error(), http.StatusNotFound) - } else { - result.Err = model.NewAppError("SqlUserAccessTokenStore.Get", "store.sql_user_access_token.get.app_error", nil, err.Error(), http.StatusInternalServerError) - } + if err := s.GetReplica().SelectOne(&token, "SELECT * FROM UserAccessTokens WHERE Id = :Id", map[string]interface{}{"Id": tokenId}); err != nil { + if err == sql.ErrNoRows { + return nil, model.NewAppError("SqlUserAccessTokenStore.Get", "store.sql_user_access_token.get.app_error", nil, err.Error(), http.StatusNotFound) } + return nil, model.NewAppError("SqlUserAccessTokenStore.Get", "store.sql_user_access_token.get.app_error", nil, err.Error(), http.StatusInternalServerError) + } - result.Data = &token - }) + return &token, nil } func (s SqlUserAccessTokenStore) GetAll(offset, limit int) ([]*model.UserAccessToken, *model.AppError) { diff --git a/store/store.go b/store/store.go index 171c6f387d..1ead84f72c 100644 --- a/store/store.go +++ b/store/store.go @@ -518,7 +518,7 @@ type UserAccessTokenStore interface { Save(token *model.UserAccessToken) StoreChannel Delete(tokenId string) StoreChannel DeleteAllForUser(userId string) StoreChannel - Get(tokenId string) StoreChannel + Get(tokenId string) (*model.UserAccessToken, *model.AppError) GetAll(offset int, limit int) ([]*model.UserAccessToken, *model.AppError) GetByToken(tokenString string) StoreChannel GetByUser(userId string, page, perPage int) StoreChannel diff --git a/store/storetest/mocks/UserAccessTokenStore.go b/store/storetest/mocks/UserAccessTokenStore.go index f30492b41c..9102567636 100644 --- a/store/storetest/mocks/UserAccessTokenStore.go +++ b/store/storetest/mocks/UserAccessTokenStore.go @@ -46,19 +46,28 @@ func (_m *UserAccessTokenStore) DeleteAllForUser(userId string) store.StoreChann } // Get provides a mock function with given fields: tokenId -func (_m *UserAccessTokenStore) Get(tokenId string) store.StoreChannel { +func (_m *UserAccessTokenStore) Get(tokenId string) (*model.UserAccessToken, *model.AppError) { ret := _m.Called(tokenId) - var r0 store.StoreChannel - if rf, ok := ret.Get(0).(func(string) store.StoreChannel); ok { + var r0 *model.UserAccessToken + if rf, ok := ret.Get(0).(func(string) *model.UserAccessToken); ok { r0 = rf(tokenId) } else { if ret.Get(0) != nil { - r0 = ret.Get(0).(store.StoreChannel) + r0 = ret.Get(0).(*model.UserAccessToken) } } - return r0 + var r1 *model.AppError + if rf, ok := ret.Get(1).(func(string) *model.AppError); ok { + r1 = rf(tokenId) + } else { + if ret.Get(1) != nil { + r1 = ret.Get(1).(*model.AppError) + } + } + + return r0, r1 } // GetAll provides a mock function with given fields: offset, limit diff --git a/store/storetest/user_access_token_store.go b/store/storetest/user_access_token_store.go index a244abe0dd..292a59d34e 100644 --- a/store/storetest/user_access_token_store.go +++ b/store/storetest/user_access_token_store.go @@ -35,9 +35,9 @@ func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) { t.Fatal(result.Err) } - if result := <-ss.UserAccessToken().Get(uat.Id); result.Err != nil { - t.Fatal(result.Err) - } else if received := result.Data.(*model.UserAccessToken); received.Token != uat.Token { + if result, terr := ss.UserAccessToken().Get(uat.Id); terr != nil { + t.Fatal(terr) + } else if result.Token != uat.Token { t.Fatal("received incorrect token after save") }