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 }