github.com/mattermost/mattermost-server/v5@v5.39.3/store/storetest/user_access_token_store.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package storetest
     5  
     6  import (
     7  	"context"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/require"
    11  
    12  	"github.com/mattermost/mattermost-server/v5/model"
    13  	"github.com/mattermost/mattermost-server/v5/store"
    14  )
    15  
    16  func TestUserAccessTokenStore(t *testing.T, ss store.Store) {
    17  	t.Run("UserAccessTokenSaveGetDelete", func(t *testing.T) { testUserAccessTokenSaveGetDelete(t, ss) })
    18  	t.Run("UserAccessTokenDisableEnable", func(t *testing.T) { testUserAccessTokenDisableEnable(t, ss) })
    19  	t.Run("UserAccessTokenSearch", func(t *testing.T) { testUserAccessTokenSearch(t, ss) })
    20  }
    21  
    22  func testUserAccessTokenSaveGetDelete(t *testing.T, ss store.Store) {
    23  	uat := &model.UserAccessToken{
    24  		Token:       model.NewId(),
    25  		UserId:      model.NewId(),
    26  		Description: "testtoken",
    27  	}
    28  
    29  	s1 := &model.Session{}
    30  	s1.UserId = uat.UserId
    31  	s1.Token = uat.Token
    32  
    33  	s1, err := ss.Session().Save(s1)
    34  	require.NoError(t, err)
    35  
    36  	_, nErr := ss.UserAccessToken().Save(uat)
    37  	require.NoError(t, nErr)
    38  
    39  	result, terr := ss.UserAccessToken().Get(uat.Id)
    40  	require.NoError(t, terr)
    41  	require.Equal(t, result.Token, uat.Token, "received incorrect token after save")
    42  
    43  	received, err2 := ss.UserAccessToken().GetByToken(uat.Token)
    44  	require.NoError(t, err2)
    45  	require.Equal(t, received.Token, uat.Token, "received incorrect token after save")
    46  
    47  	_, nErr = ss.UserAccessToken().GetByToken("notarealtoken")
    48  	require.Error(t, nErr, "should have failed on bad token")
    49  
    50  	received2, err2 := ss.UserAccessToken().GetByUser(uat.UserId, 0, 100)
    51  	require.NoError(t, err2)
    52  	require.Equal(t, 1, len(received2), "received incorrect number of tokens after save")
    53  
    54  	result2, err := ss.UserAccessToken().GetAll(0, 100)
    55  	require.NoError(t, err)
    56  	require.Equal(t, 1, len(result2), "received incorrect number of tokens after save")
    57  
    58  	nErr = ss.UserAccessToken().Delete(uat.Id)
    59  	require.NoError(t, nErr)
    60  
    61  	_, err = ss.Session().Get(context.Background(), s1.Token)
    62  	require.Error(t, err, "should error - session should be deleted")
    63  
    64  	_, nErr = ss.UserAccessToken().GetByToken(s1.Token)
    65  	require.Error(t, nErr, "should error - access token should be deleted")
    66  
    67  	s2 := &model.Session{}
    68  	s2.UserId = uat.UserId
    69  	s2.Token = uat.Token
    70  
    71  	s2, err = ss.Session().Save(s2)
    72  	require.NoError(t, err)
    73  
    74  	_, nErr = ss.UserAccessToken().Save(uat)
    75  	require.NoError(t, nErr)
    76  
    77  	nErr = ss.UserAccessToken().DeleteAllForUser(uat.UserId)
    78  	require.NoError(t, nErr)
    79  
    80  	_, err = ss.Session().Get(context.Background(), s2.Token)
    81  	require.Error(t, err, "should error - session should be deleted")
    82  
    83  	_, nErr = ss.UserAccessToken().GetByToken(s2.Token)
    84  	require.Error(t, nErr, "should error - access token should be deleted")
    85  }
    86  
    87  func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) {
    88  	uat := &model.UserAccessToken{
    89  		Token:       model.NewId(),
    90  		UserId:      model.NewId(),
    91  		Description: "testtoken",
    92  	}
    93  
    94  	s1 := &model.Session{}
    95  	s1.UserId = uat.UserId
    96  	s1.Token = uat.Token
    97  
    98  	s1, err := ss.Session().Save(s1)
    99  	require.NoError(t, err)
   100  
   101  	_, nErr := ss.UserAccessToken().Save(uat)
   102  	require.NoError(t, nErr)
   103  
   104  	nErr = ss.UserAccessToken().UpdateTokenDisable(uat.Id)
   105  	require.NoError(t, nErr)
   106  
   107  	_, err = ss.Session().Get(context.Background(), s1.Token)
   108  	require.Error(t, err, "should error - session should be deleted")
   109  
   110  	s2 := &model.Session{}
   111  	s2.UserId = uat.UserId
   112  	s2.Token = uat.Token
   113  
   114  	s2, err = ss.Session().Save(s2)
   115  	require.NoError(t, err)
   116  
   117  	nErr = ss.UserAccessToken().UpdateTokenEnable(uat.Id)
   118  	require.NoError(t, nErr)
   119  }
   120  
   121  func testUserAccessTokenSearch(t *testing.T, ss store.Store) {
   122  	u1 := model.User{}
   123  	u1.Email = MakeEmail()
   124  	u1.Username = model.NewId()
   125  
   126  	_, err := ss.User().Save(&u1)
   127  	require.NoError(t, err)
   128  
   129  	uat := &model.UserAccessToken{
   130  		Token:       model.NewId(),
   131  		UserId:      u1.Id,
   132  		Description: "testtoken",
   133  	}
   134  
   135  	s1 := &model.Session{}
   136  	s1.UserId = uat.UserId
   137  	s1.Token = uat.Token
   138  
   139  	s1, nErr := ss.Session().Save(s1)
   140  	require.NoError(t, nErr)
   141  
   142  	_, nErr = ss.UserAccessToken().Save(uat)
   143  	require.NoError(t, nErr)
   144  
   145  	received, nErr := ss.UserAccessToken().Search(uat.Id)
   146  	require.NoError(t, nErr)
   147  
   148  	require.Equal(t, 1, len(received), "received incorrect number of tokens after search")
   149  
   150  	received, nErr = ss.UserAccessToken().Search(uat.UserId)
   151  	require.NoError(t, nErr)
   152  	require.Equal(t, 1, len(received), "received incorrect number of tokens after search")
   153  
   154  	received, nErr = ss.UserAccessToken().Search(u1.Username)
   155  	require.NoError(t, nErr)
   156  	require.Equal(t, 1, len(received), "received incorrect number of tokens after search")
   157  }