github.com/xzl8028/xenia-server@v0.0.0-20190809101854-18450a97da63/store/storetest/user_access_token_store.go (about) 1 // Copyright (c) 2017-present Xenia, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package storetest 5 6 import ( 7 "testing" 8 9 "github.com/xzl8028/xenia-server/model" 10 "github.com/xzl8028/xenia-server/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 if _, err = ss.UserAccessToken().Save(uat); err != nil { 35 t.Fatal(err) 36 } 37 38 if result, terr := ss.UserAccessToken().Get(uat.Id); terr != nil { 39 t.Fatal(terr) 40 } else if result.Token != uat.Token { 41 t.Fatal("received incorrect token after save") 42 } 43 44 if received, err2 := ss.UserAccessToken().GetByToken(uat.Token); err2 != nil { 45 t.Fatal(err2) 46 } else if received.Token != uat.Token { 47 t.Fatal("received incorrect token after save") 48 } 49 50 if _, err = ss.UserAccessToken().GetByToken("notarealtoken"); err == nil { 51 t.Fatal("should have failed on bad token") 52 } 53 54 if received, err2 := ss.UserAccessToken().GetByUser(uat.UserId, 0, 100); err2 != nil { 55 t.Fatal(err2) 56 } else if len(received) != 1 { 57 t.Fatal("received incorrect number of tokens after save") 58 } 59 60 if result, appError := ss.UserAccessToken().GetAll(0, 100); appError != nil { 61 t.Fatal(appError) 62 } else if len(result) != 1 { 63 t.Fatal("received incorrect number of tokens after save") 64 } 65 66 if err = ss.UserAccessToken().Delete(uat.Id); err != nil { 67 t.Fatal(err) 68 } 69 70 if _, err = ss.Session().Get(s1.Token); err == nil { 71 t.Fatal("should error - session should be deleted") 72 } 73 74 if _, err = ss.UserAccessToken().GetByToken(s1.Token); err == nil { 75 t.Fatal("should error - access token should be deleted") 76 } 77 78 s2 := &model.Session{} 79 s2.UserId = uat.UserId 80 s2.Token = uat.Token 81 82 s2, err = ss.Session().Save(s2) 83 require.Nil(t, err) 84 85 if _, err = ss.UserAccessToken().Save(uat); err != nil { 86 t.Fatal(err) 87 } 88 89 if err := ss.UserAccessToken().DeleteAllForUser(uat.UserId); err != nil { 90 t.Fatal(err) 91 } 92 93 if _, err := ss.Session().Get(s2.Token); err == nil { 94 t.Fatal("should error - session should be deleted") 95 } 96 97 if _, err := ss.UserAccessToken().GetByToken(s2.Token); err == nil { 98 t.Fatal("should error - access token should be deleted") 99 } 100 } 101 102 func testUserAccessTokenDisableEnable(t *testing.T, ss store.Store) { 103 uat := &model.UserAccessToken{ 104 Token: model.NewId(), 105 UserId: model.NewId(), 106 Description: "testtoken", 107 } 108 109 s1 := &model.Session{} 110 s1.UserId = uat.UserId 111 s1.Token = uat.Token 112 113 s1, err := ss.Session().Save(s1) 114 require.Nil(t, err) 115 116 if _, err = ss.UserAccessToken().Save(uat); err != nil { 117 t.Fatal(err) 118 } 119 120 if err = ss.UserAccessToken().UpdateTokenDisable(uat.Id); err != nil { 121 t.Fatal(err) 122 } 123 124 if _, err = ss.Session().Get(s1.Token); err == nil { 125 t.Fatal("should error - session should be deleted") 126 } 127 128 s2 := &model.Session{} 129 s2.UserId = uat.UserId 130 s2.Token = uat.Token 131 132 s2, err = ss.Session().Save(s2) 133 require.Nil(t, err) 134 135 if err = ss.UserAccessToken().UpdateTokenEnable(uat.Id); err != nil { 136 t.Fatal(err) 137 } 138 } 139 140 func testUserAccessTokenSearch(t *testing.T, ss store.Store) { 141 u1 := model.User{} 142 u1.Email = MakeEmail() 143 u1.Username = model.NewId() 144 145 store.Must(ss.User().Save(&u1)) 146 147 uat := &model.UserAccessToken{ 148 Token: model.NewId(), 149 UserId: u1.Id, 150 Description: "testtoken", 151 } 152 153 s1 := &model.Session{} 154 s1.UserId = uat.UserId 155 s1.Token = uat.Token 156 157 s1, err := ss.Session().Save(s1) 158 require.Nil(t, err) 159 160 if _, err = ss.UserAccessToken().Save(uat); err != nil { 161 t.Fatal(err) 162 } 163 164 if received, err := ss.UserAccessToken().Search(uat.Id); err != nil { 165 t.Fatal(err) 166 } else if len(received) != 1 { 167 t.Fatal("received incorrect number of tokens after search") 168 } 169 170 if received, err := ss.UserAccessToken().Search(uat.UserId); err != nil { 171 t.Fatal(err) 172 } else if len(received) != 1 { 173 t.Fatal("received incorrect number of tokens after search") 174 } 175 176 if received, err := ss.UserAccessToken().Search(u1.Username); err != nil { 177 t.Fatal(err) 178 } else if len(received) != 1 { 179 t.Fatal("received incorrect number of tokens after search") 180 } 181 }