Files
mattermost/store/storetest/user_access_token_store.go
krjn e3c8c1251f [MM-16490] Migrate UpdateTokenDisable to Sync by default (#11333)
* [MM-16490] Migrate UpdateTokenDisable to Sync by default

* fix: missed conversion of app/session.go
2019-06-21 22:55:23 +08:00

182 lines
4.8 KiB
Go

// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
package storetest
import (
"testing"
"github.com/mattermost/mattermost-server/model"
"github.com/mattermost/mattermost-server/store"
"github.com/stretchr/testify/require"
)
func TestUserAccessTokenStore(t *testing.T, ss store.Store) {
t.Run("UserAccessTokenSaveGetDelete", func(t *testing.T) { testUserAccessTokenSaveGetDelete(t, ss) })
t.Run("UserAccessTokenDisableEnable", func(t *testing.T) { testUserAccessTokenDisableEnable(t, ss) })
t.Run("UserAccessTokenSearch", func(t *testing.T) { testUserAccessTokenSearch(t, ss) })
}
func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
uat := &model.UserAccessToken{
Token: model.NewId(),
UserId: model.NewId(),
Description: "testtoken",
}
s1 := &model.Session{}
s1.UserId = uat.UserId
s1.Token = uat.Token
s1, err := ss.Session().Save(s1)
require.Nil(t, err)
if _, err = ss.UserAccessToken().Save(uat); err != nil {
t.Fatal(err)
}
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")
}
if received, err2 := ss.UserAccessToken().GetByToken(uat.Token); err2 != nil {
t.Fatal(err2)
} else if received.Token != uat.Token {
t.Fatal("received incorrect token after save")
}
if _, err = ss.UserAccessToken().GetByToken("notarealtoken"); err == nil {
t.Fatal("should have failed on bad token")
}
if received, err2 := ss.UserAccessToken().GetByUser(uat.UserId, 0, 100); err2 != nil {
t.Fatal(err2)
} else if len(received) != 1 {
t.Fatal("received incorrect number of tokens after save")
}
if result, appError := ss.UserAccessToken().GetAll(0, 100); appError != nil {
t.Fatal(appError)
} else if len(result) != 1 {
t.Fatal("received incorrect number of tokens after save")
}
if result := <-ss.UserAccessToken().Delete(uat.Id); result.Err != nil {
t.Fatal(result.Err)
}
if _, err = ss.Session().Get(s1.Token); err == nil {
t.Fatal("should error - session should be deleted")
}
if _, err = ss.UserAccessToken().GetByToken(s1.Token); err == nil {
t.Fatal("should error - access token should be deleted")
}
s2 := &model.Session{}
s2.UserId = uat.UserId
s2.Token = uat.Token
s2, err = ss.Session().Save(s2)
require.Nil(t, err)
if _, err = ss.UserAccessToken().Save(uat); err != nil {
t.Fatal(err)
}
if result := <-ss.UserAccessToken().DeleteAllForUser(uat.UserId); result.Err != nil {
t.Fatal(result.Err)
}
if _, err := ss.Session().Get(s2.Token); err == nil {
t.Fatal("should error - session should be deleted")
}
if _, err := ss.UserAccessToken().GetByToken(s2.Token); err == nil {
t.Fatal("should error - access token should be deleted")
}
}
func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) {
uat := &model.UserAccessToken{
Token: model.NewId(),
UserId: model.NewId(),
Description: "testtoken",
}
s1 := &model.Session{}
s1.UserId = uat.UserId
s1.Token = uat.Token
s1, err := ss.Session().Save(s1)
require.Nil(t, err)
if _, err = ss.UserAccessToken().Save(uat); err != nil {
t.Fatal(err)
}
if err = ss.UserAccessToken().UpdateTokenDisable(uat.Id); err != nil {
t.Fatal(err)
}
if _, err = ss.Session().Get(s1.Token); err == nil {
t.Fatal("should error - session should be deleted")
}
s2 := &model.Session{}
s2.UserId = uat.UserId
s2.Token = uat.Token
s2, err = ss.Session().Save(s2)
require.Nil(t, err)
if err := (<-ss.UserAccessToken().UpdateTokenEnable(uat.Id)).Err; err != nil {
t.Fatal(err)
}
}
func testUserAccessTokenSearch(t *testing.T, ss store.Store) {
u1 := model.User{}
u1.Email = MakeEmail()
u1.Username = model.NewId()
store.Must(ss.User().Save(&u1))
uat := &model.UserAccessToken{
Token: model.NewId(),
UserId: u1.Id,
Description: "testtoken",
}
s1 := &model.Session{}
s1.UserId = uat.UserId
s1.Token = uat.Token
s1, err := ss.Session().Save(s1)
require.Nil(t, err)
if _, err = ss.UserAccessToken().Save(uat); err != nil {
t.Fatal(err)
}
if result := <-ss.UserAccessToken().Search(uat.Id); result.Err != nil {
t.Fatal(result.Err)
} else if received := result.Data.([]*model.UserAccessToken); len(received) != 1 {
t.Fatal("received incorrect number of tokens after search")
}
if result := <-ss.UserAccessToken().Search(uat.UserId); result.Err != nil {
t.Fatal(result.Err)
} else if received := result.Data.([]*model.UserAccessToken); len(received) != 1 {
t.Fatal("received incorrect number of tokens after search")
}
if result := <-ss.UserAccessToken().Search(u1.Username); result.Err != nil {
t.Fatal(result.Err)
} else if received := result.Data.([]*model.UserAccessToken); len(received) != 1 {
t.Fatal("received incorrect number of tokens after search")
}
}