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 }