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